From 8f1c117d63167464a185ed8f9d1619ba06248e79 Mon Sep 17 00:00:00 2001 From: Seun Lanlege Date: Tue, 10 Oct 2023 11:07:40 +0100 Subject: [PATCH] fix solidity tests --- evm/forge/src/abi.rs | 4 +- evm/forge/src/abi/BeefyV1.json | 13185 +++++++++++++++++++++++++ evm/forge/src/abi/HandlerV1.json | 14772 +++++++++++++++++++++++++++++ evm/forge/src/forge.rs | 12 + evm/lib/multi-chain-tokens | 1 - evm/src/modules/TokenFaucet.sol | 2 +- evm/src/modules/TokenGateway.sol | 37 +- 7 files changed, 27989 insertions(+), 24 deletions(-) create mode 100644 evm/forge/src/abi/BeefyV1.json create mode 100644 evm/forge/src/abi/HandlerV1.json delete mode 160000 evm/lib/multi-chain-tokens diff --git a/evm/forge/src/abi.rs b/evm/forge/src/abi.rs index 64a00d549..2d07a70a7 100644 --- a/evm/forge/src/abi.rs +++ b/evm/forge/src/abi.rs @@ -4,8 +4,8 @@ use merkle_mountain_range::{leaf_index_to_mmr_size, leaf_index_to_pos}; use merkle_mountain_range_labs::mmr_position_to_k_index; use primitive_types::H256; -ethers::contract::abigen!(BeefyV1, "../out/BeefyV1.sol/BeefyV1.json",); -ethers::contract::abigen!(HandlerV1, "../out/HandlerV1.sol/HandlerV1.json",); +ethers::contract::abigen!(BeefyV1, "./src/abi/BeefyV1.json",); +ethers::contract::abigen!(HandlerV1, "./src/abi/HandlerV1.json",); impl From for BeefyConsensusProof { fn from(message: ConsensusMessage) -> Self { diff --git a/evm/forge/src/abi/BeefyV1.json b/evm/forge/src/abi/BeefyV1.json new file mode 100644 index 000000000..c0c22ffe4 --- /dev/null +++ b/evm/forge/src/abi/BeefyV1.json @@ -0,0 +1,13185 @@ +{ + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "paraId", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AURA_CONSENSUS_ID", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ISMP_CONSENSUS_ID", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MMR_ROOT_PAYLOAD_ID", + "outputs": [ + { + "internalType": "bytes2", + "name": "", + "type": "bytes2" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SLOT_DURATION", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "latestHeight", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "beefyActivationBlock", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "len", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + } + ], + "internalType": "struct AuthoritySetCommitment", + "name": "currentAuthoritySet", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "len", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + } + ], + "internalType": "struct AuthoritySetCommitment", + "name": "nextAuthoritySet", + "type": "tuple" + } + ], + "internalType": "struct BeefyConsensusState", + "name": "trustedState", + "type": "tuple" + }, + { + "components": [ + { + "components": [ + { + "components": [ + { + "components": [ + { + "components": [ + { + "internalType": "bytes2", + "name": "id", + "type": "bytes2" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct Payload[]", + "name": "payload", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "validatorSetId", + "type": "uint256" + } + ], + "internalType": "struct Commitment", + "name": "commitment", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "authorityIndex", + "type": "uint256" + } + ], + "internalType": "struct Vote[]", + "name": "votes", + "type": "tuple[]" + } + ], + "internalType": "struct SignedCommitment", + "name": "signedCommitment", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "version", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "parentNumber", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "parentHash", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "len", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + } + ], + "internalType": "struct AuthoritySetCommitment", + "name": "nextAuthoritySet", + "type": "tuple" + }, + { + "internalType": "bytes32", + "name": "extra", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "kIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "leafIndex", + "type": "uint256" + } + ], + "internalType": "struct BeefyMmrLeaf", + "name": "latestMmrLeaf", + "type": "tuple" + }, + { + "internalType": "bytes32[]", + "name": "mmrProof", + "type": "bytes32[]" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "k_index", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + } + ], + "internalType": "struct Node[][]", + "name": "proof", + "type": "tuple[][]" + } + ], + "internalType": "struct RelayChainProof", + "name": "relay", + "type": "tuple" + }, + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "header", + "type": "bytes" + } + ], + "internalType": "struct Parachain", + "name": "parachain", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "k_index", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + } + ], + "internalType": "struct Node[][]", + "name": "proof", + "type": "tuple[][]" + } + ], + "internalType": "struct ParachainProof", + "name": "parachain", + "type": "tuple" + } + ], + "internalType": "struct BeefyConsensusProof", + "name": "proof", + "type": "tuple" + } + ], + "name": "verifyConsensus", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "latestHeight", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "beefyActivationBlock", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "len", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + } + ], + "internalType": "struct AuthoritySetCommitment", + "name": "currentAuthoritySet", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "len", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + } + ], + "internalType": "struct AuthoritySetCommitment", + "name": "nextAuthoritySet", + "type": "tuple" + } + ], + "internalType": "struct BeefyConsensusState", + "name": "", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "stateMachineId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "height", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "overlayRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "stateRoot", + "type": "bytes32" + } + ], + "internalType": "struct StateCommitment", + "name": "commitment", + "type": "tuple" + } + ], + "internalType": "struct IntermediateState", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "encodedState", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "encodedProof", + "type": "bytes" + } + ], + "name": "verifyConsensus", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "stateMachineId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "height", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "overlayRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "stateRoot", + "type": "bytes32" + } + ], + "internalType": "struct StateCommitment", + "name": "commitment", + "type": "tuple" + } + ], + "internalType": "struct IntermediateState", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": { + "object": "0x60806040523480156200001157600080fd5b5060405162003d9838038062003d9883398101604081905262000034916200003d565b60005562000057565b6000602082840312156200005057600080fd5b5051919050565b613d3180620000676000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80634e9fdbec146100675780635e399aea146100935780637d755598146100b4578063905c0511146100d5578063af8b91d6146100ec578063babb311814610111575b600080fd5b610075636175726160e01b81565b6040516001600160e01b031990911681526020015b60405180910390f35b6100a66100a1366004612bd4565b61011f565b60405161008a929190612d90565b6100c76100c2366004612dd8565b610164565b60405161008a929190612e8b565b6100de612ee081565b60405190815260200161008a565b6100f8610dad60f31b81565b6040516001600160f01b0319909116815260200161008a565b61007563049534d560e41b81565b610127612443565b61012f6124a6565b60008061014086866000015161025b565b915091506000610154828760200151610751565b92945091925050505b9250929050565b606061016e6124a6565b6000848060200190518101906101849190612f64565b90506000808580602001905181019061019d919061343d565b91509150600080306001600160a01b0316635e399aea866040518060400160405280888152602001878152506040518363ffffffff1660e01b81526004016101e69291906136fe565b6101a060405180830381865afa158015610204573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610228919061385e565b915091508160405160200161023d91906138f9565b60408051808303601f19018152919052999098509650505050505050565b610263612443565b815160208082015151915101518451600092919081116102e75760405162461bcd60e51b815260206004820152603460248201527f636f6e73656e73757320636c69656e7473206f6e6c79206163636570742070726044820152736f6f667320666f72206e6577206865616465727360601b60648201526084015b60405180910390fd5b6102f982876040015160200151610b5f565b80610311575061031182876060015160200151610b5f565b6103695760405162461bcd60e51b8152602060048201526024808201527f5375706572206d616a6f72697479207468726573686f6c64206e6f742072656160448201526318da195960e21b60648201526084016102de565b8451516040808801515190820151148061038b57506060870151516040820151145b6103cf5760405162461bcd60e51b8152602060048201526015602482015274155b9adb9bdddb88185d5d1a1bdc9a5d1e481cd95d605a1b60448201526064016102de565b60408088015151908201518251519114906000805b8281101561048f5784518051610dad60f31b91908390811061040857610408613908565b6020026020010151600001516001600160f01b03191614801561044b5750845180518290811061043a5761043a613908565b602002602001015160200151516020145b1561047d5761047a8560000151828151811061046957610469613908565b602002602001015160200151610b8d565b91505b8061048781613934565b9150506103e4565b50806104dd5760405162461bcd60e51b815260206004820152601760248201527f4d6d7220726f6f742068617368206e6f7420666f756e6400000000000000000060448201526064016102de565b60006104e885610bf5565b8051906020012090506000876001600160401b0381111561050b5761050b612572565b60405190808252806020026020018201604052801561055057816020015b60408051808201909152600080825260208201528152602001906001900390816105295790505b50905060005b8881101561061f5760008c6000015160200151828151811061057a5761057a613908565b602002602001015190506000610594858360000151610d95565b9050604051806040016040528083602001518152602001826040516020016105d4919060609190911b6bffffffffffffffffffffffff1916815260140190565b604051602081830303815290604052805190602001208152508484815181106105ff576105ff613908565b60200260200101819052505050808061061790613934565b915050610556565b5084156106985761063d8c60400151604001518c6060015183610db9565b6106935760405162461bcd60e51b815260206004820152602160248201527f496e76616c69642063757272656e7420617574686f7269746965732070726f6f6044820152603360f91b60648201526084016102de565b6106fb565b6106af8c60600151604001518c6060015183610db9565b6106fb5760405162461bcd60e51b815260206004820152601e60248201527f496e76616c6964206e65787420617574686f7269746965732070726f6f66000060448201526064016102de565b6107068c8c85610dd1565b6060808d01515160208d015190910151511115610735576060808d01805160408f015260208d01519091015190525b5050509288525050505060209290920151608001519293915050565b6107596124a6565b604080516001808252818301909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081610770575050835160005460208201519293509091146107e35760405162461bcd60e51b815260206004820152600e60248201526d155b9adb9bdddb881c185c98525960921b60448201526064016102de565b60006107f28260400151610f68565b905080602001516000036108545760405162461bcd60e51b8152602060048201526024808201527f47656e6573697320626c6f636b2073686f756c64206e6f7420626520696e636c6044820152631d59195960e21b60648201526084016102de565b60008060005b8360800151518110156109d0578360800151818151811061087d5761087d613908565b60200260200101516040015180156108d4575063049534d560e41b6001600160e01b031916846080015182815181106108b8576108b8613908565b602002602001015160600151600001516001600160e01b031916145b1561090a57610907846080015182815181106108f2576108f2613908565b60200260200101516060015160200151610b8d565b92505b8360800151818151811061092057610920613908565b60200260200101516000015180156109775750636175726160e01b6001600160e01b0319168460800151828151811061095b5761095b613908565b602002602001015160200151600001516001600160e01b031916145b156109be5760006109ac8560800151838151811061099757610997613908565b6020026020010151602001516020015161116a565b90506109ba612ee08261394d565b9250505b806109c881613934565b91505061085a565b5080600003610a185760405162461bcd60e51b815260206004820152601460248201527374696d657374616d70206e6f7420666f756e642160601b60448201526064016102de565b604051806040016040528085600001518152602001610a5c8660200151600881811c62ff00ff1663ff00ff009290911b9190911617601081811c91901b1760e01b90565b610a6987604001516111ec565b604051602001610a7a929190613964565b6040516020818303038152906040528051906020012081525085600081518110610aa657610aa6613908565b6020026020010181905250600060405180606001604052808660200151815260200185602001518152602001604051806060016040528085815260200186815260200187604001518152508152509050610b0589896020015188610db9565b610b515760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642070617261636861696e732068656164732070726f6f66000060448201526064016102de565b955050505050505b92915050565b60006003610b6e83600261394d565b610b7891906139ab565b610b839060016139bf565b9092101592915050565b6000602082511015610bed5760405162461bcd60e51b8152602060048201526024808201527f42797465733a3a20746f427974657333323a206461746120697320746f20736860448201526337b93a1760e11b60648201526084016102de565b506020015190565b8051516040805160208101909152600080825260609291905b82811015610cc4578451805182908110610c2a57610c2a613908565b602002602001015160000151604051602001610c5691906001600160f01b031991909116815260020190565b604051602081830303815290604052610c8f86600001518381518110610c7e57610c7e613908565b6020026020010151602001516111ec565b604051602001610ca09291906139d2565b60405160208183030381529060405291508080610cbc90613934565b915050610c0e565b506000610cd083611220565b82604051602001610ce29291906139d2565b60405160208183030381529060405290506000610d248660200151600881811c62ff00ff1663ff00ff009290911b9190911617601081811c91901b1760e01b90565b610d3187604001516114c3565b6040516001600160e01b031990921660208301526001600160c01b0319166024820152602c0160405160208183030381529060405290508181604051602001610d7b9291906139d2565b604051602081830303815290604052945050505050919050565b6000806000610da4858561152d565b91509150610db18161156f565b509392505050565b6000610dc583836116bc565b841490505b9392505050565b6000610de083602001516119ef565b8051906020012090506000610e018560200151856020015160200151611bb7565b610e0c9060016139bf565b60408051600180825281830190925291925060009190816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181610e275790505090506040518060600160405280866020015160a001518152602001866020015160c0015181526020018481525081600081518110610e9457610e94613908565b6020908102919091010152604080860151905163722e206d60e01b815273__$2399d33eab5707eb5118077f9c67419cb4$__9163722e206d91610edf91889186908890600401613a01565b602060405180830381865af4158015610efc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f209190613aad565b610f605760405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21026b6b910283937b7b360791b60448201526064016102de565b505050505050565b6040805160a08101825260008082526020808301829052828401829052606080840183905260808401528351808501909452848452838101829052919291610fba90610fb5908490611bd9565b610b8d565b90506000610fc783611c5a565b90506000610fd9610fb5856020611bd9565b90506000610feb610fb5866020611bd9565b90506000610ff886611c5a565b90506000816001600160401b0381111561101457611014612572565b60405190808252806020026020018201604052801561104d57816020015b61103a6124d9565b8152602001906001900390816110325790505b50905060005b8281101561113b57600061106689611e3f565b90506110706124d9565b60ff821661108457600160c0820152611108565b60031960ff8316016110aa57600160408201526110a08a611edb565b6060820152611108565b60041960ff8316016110d057600160808201526110c68a611edb565b60a0820152611108565b60051960ff8316016110f357600181526110e98a611edb565b6020820152611108565b60071960ff8316016111085760016101008201525b8084848151811061111b5761111b613908565b60200260200101819052505050808061113390613934565b915050611053565b506040805160a08101825296875260208701959095529385019290925260608401525060808201529392505050565b805160009081905b80156111e557611183600182613acf565b61118e90600861394d565b611199906002613bc6565b846111a5600184613acf565b815181106111b5576111b5613908565b01602001516111c7919060f81c61394d565b6111d190836139bf565b9150806111dd81613bd2565b915050611172565b5092915050565b60606111f88251611220565b8260405160200161120a9291906139d2565b6040516020818303038152906040529050919050565b6060604082101561124a576040516001600160f81b031960fa84901b16602082015260210161120a565b61400082101561129d5761127a611266600284901b60016139bf565b600881811b62ffff001691901c60ff161790565b60405160200161120a919060f09190911b6001600160f01b031916815260020190565b6340000000821015611301576112de6112ba600284811b906139bf565b600881811c62ff00ff1663ff00ff009290911b9190911617601081811c91901b1790565b60405160200161120a919060e09190911b6001600160e01b031916815260040190565b600061147561144f8460008190506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008827fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010827fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c1790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020827fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c17905060408177ffffffffffffffff0000000000000000ffffffffffffffff16901b60408277ffffffffffffffff0000000000000000ffffffffffffffff1916901c179050608081901b608082901c179050919050565b60405160200161146191815260200190565b604051602081830303815290604052611f48565b805190915060006002611489600484613acf565b611495911b60036139bf565b905080836040516020016114aa929190613be9565b6040516020818303038152906040529350505050919050565b600065ff000000ff00600883811b91821664ff000000ff9185901c91821617601090811b67ff000000ff0000009390931666ff000000ff00009290921691909117901c17602081811b6bffffffffffffffff000000001691901c63ffffffff161760c01b92915050565b60008082516041036115635760208301516040840151606085015160001a61155787828585611fb5565b9450945050505061015d565b5060009050600261015d565b600081600481111561158357611583613c18565b0361158b5750565b600181600481111561159f5761159f613c18565b036115ec5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016102de565b600281600481111561160057611600613c18565b0361164d5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016102de565b600381600481111561166157611661613c18565b036116b95760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016102de565b50565b604080516000808252602082019092528190816116fb565b60408051808201909152600080825260208201528152602001906001900390816116d45790505b509050611722838560008151811061171557611715613908565b6020026020010151612079565b8460008151811061173557611735613908565b6020908102919091010152835160005b818110156119b757604080516000808252602082019092528161178a565b60408051808201909152600080825260208201528152602001906001900390816117635790505b50905083516000036117b7578682815181106117a8576117a8613908565b602002602001015190506117dd565b6117da8783815181106117cc576117cc613908565b602002602001015185612079565b90505b6117e981516002612285565b6001600160401b0381111561180057611800612572565b60405190808252806020026020018201604052801561184557816020015b604080518082019091526000808252602082015281526020019060019003908161181e5790505b508151909450600090815b818110156119a057816118648260016139bf565b106118d857600084828151811061187d5761187d613908565b602002602001015190506118af85838151811061189c5761189c613908565b60200260200101516000015160026122ad565b8152875181908990869081106118c7576118c7613908565b60200260200101819052505061198e565b604080518082019091526000808252602082015261190185838151811061189c5761189c613908565b815284516119609086908490811061191b5761191b613908565b6020026020010151602001518684600161193591906139bf565b8151811061194557611945613908565b60200260200101516020015160009182526020526040902090565b60208201528751819089908690811061197b5761197b613908565b6020908102919091010152506001909201915b6119996002826139bf565b9050611850565b5050505080806119af90613934565b915050611745565b5081516001146119c657600080fd5b816000815181106119d9576119d9613908565b6020026020010151602001519250505092915050565b606060008260000151604051602001611a1b919060f89190911b6001600160f81b031916815260010190565b604051602081830303815290604052611a598460200151600881811c62ff00ff1663ff00ff009290911b9190911617601081811c91901b1760e01b90565b604051602001611a6a929190613c2e565b60408051601f19818403018152828252858201516020840152925060009101604051602081830303815290604052611aa98560600151600001516114c3565b604051602001611aba929190613c5d565b60405160208183030381529060405290506000611b00856060015160200151600881811c62ff00ff1663ff00ff009290911b9190911617601081811c91901b1760e01b90565b856060015160400151604051602001611b1b91815260200190565b60408051601f1981840301815290829052611b399291602001613964565b60405160208183030381529060405290508282604051602001611b5d9291906139d2565b60408051601f19818403018152828252608088015160208401529183910160408051601f1981840301815290829052611b9992916020016139d2565b60408051601f19818403018152908290526114aa92916020016139d2565b600082600003611bc8575080610b59565b611bd28383613acf565b9050610b59565b6060826000015151828460200151611bf191906139bf565b1115611bfc57600080fd5b81600003611c195750604080516020810190915260008152610b59565b8251602080850151910190600090611c3b90611c3590846139bf565b856122b9565b90508385602001818151611c4f91906139bf565b905250949350505050565b600080611c6683611e3f565b90506000611c75600483613c8c565b905060008160ff16600003611c925750603f600283901c16611e37565b8160ff16600103611cd7576000611ca886611e3f565b9050613fc0600682901b16611cc4603f600287901c1682613cae565b6001600160401b03169250611e37915050565b8160ff16600203611d4a576000611ced86611e3f565b90506000611cfa87611e3f565b90506000611d0788611e3f565b63ffffffff60089490941b61ff001660ff88161760109390931b62ff0000169290921760189290921b63ff000000169190911760021c919091169150611e379050565b8160ff16600303611def576000611d69603f600286901c166004613cce565b905060088160ff161115611dd05760405162461bcd60e51b815260206004820152602860248201527f756e657870656374656420707265666978206465636f64696e6720436f6d706160448201526731ba1e2ab4b73a1f60c11b60648201526084016102de565b611de5611de0878360ff16611bd9565b61116a565b9695505050505050565b60405162461bcd60e51b815260206004820152601a60248201527f436f64652073686f756c6420626520756e726561636861626c6500000000000060448201526064016102de565b949350505050565b805151602082015160009190611e569060016139bf565b1115611e935760405162461bcd60e51b815260206004820152600c60248201526b4f7574206f662072616e676560a01b60448201526064016102de565b60008260000151836020015181518110611eaf57611eaf613908565b602001015160f81c60f81b60f81c9050600183602001818151611ed291906139bf565b90525092915050565b6040805180820190915260008152606060208201526000611f07611f00846004611bd9565b600061230f565b90506000611f1484611c5a565b90506000611f228583611bd9565b604080518082019091526001600160e01b03199094168452602084015250909392505050565b8051606090600080611f5b600184613acf565b90505b848181518110611f7057611f70613908565b01602001516001600160f81b03191615611f8c57809150611f9e565b80611f9681613bd2565b915050611f5e565b50611e37846000611fb08460016139bf565b61236c565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611fec5750600090506003612070565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612040573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661206957600060019250925050612070565b9150600090505b94509492505050565b81518151606091600091829182918261209282846139bf565b90506000816001600160401b038111156120ae576120ae612572565b6040519080825280602002602001820160405280156120f357816020015b60408051808201909152600080825260208201528152602001906001900390816120cc5790505b5090505b838710801561210557508286105b156121da5788868151811061211c5761211c613908565b6020026020010151600001518a888151811061213a5761213a613908565b60200260200101516000015110156121935789878151811061215e5761215e613908565b602002602001015181868151811061217857612178613908565b602090810291909101015260019687019694909401936120f7565b8886815181106121a5576121a5613908565b60200260200101518186815181106121bf576121bf613908565b602090810291909101015260019586019594909401936120f7565b83871015612229578987815181106121f4576121f4613908565b602002602001015181868151811061220e5761220e613908565b602090810291909101015260019687019694909401936121da565b828610156122785788868151811061224357612243613908565b602002602001015181868151811061225d5761225d613908565b60209081029190910101526001958601959490940193612229565b9998505050505050505050565b60008061229283856139ab565b905061229e8385613ce7565b15610dca576001019392505050565b6000610dca82846139ab565b6060816001600160401b038111156122d3576122d3612572565b6040519080825280601f01601f1916602001820160405280156122fd576020820181803683370190505b509050602081016111e58482856123c3565b60008060005b6004811015610db15761232981600861394d565b8561233483876139bf565b8151811061234457612344613908565b01602001516001600160f81b031916901c91909117908061236481613934565b915050612315565b825160609061237b83856139bf565b111561238657600080fd5b816000036123a35750604080516020810190915260008152610dca565b602084016123ba6123b485836139bf565b846122b9565b95945050505050565b602081106123fb57825182526123da6020836139bf565b91506123e76020846139bf565b92506123f4602082613acf565b90506123c3565b6000811561242b576001612410836020613acf565b61241c90610100613bc6565b6124269190613acf565b61242f565b6000195b935183518516941916939093179091525050565b6040518060800160405280600081526020016000815260200161248360405180606001604052806000815260200160008152602001600080191681525090565b815260408051606081018252600080825260208281018290529282015291015290565b60408051606080820183526000808352602080840182905284519283018552818352820181905281840152909182015290565b60405180610120016040528060001515815260200161250960408051808201909152600081526060602082015290565b81526000602082015260400161253060408051808201909152600081526060602082015290565b81526000602082015260400161255760408051808201909152600081526060602082015290565b81526000602082018190526060604083018190529091015290565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156125aa576125aa612572565b60405290565b604080519081016001600160401b03811182821017156125aa576125aa612572565b60405160e081016001600160401b03811182821017156125aa576125aa612572565b604051608081016001600160401b03811182821017156125aa576125aa612572565b604051601f8201601f191681016001600160401b038111828210171561263e5761263e612572565b604052919050565b60006060828403121561265857600080fd5b612660612588565b905081358152602082013560208201526040820135604082015292915050565b60006001600160401b0382111561269957612699612572565b5060051b60200190565b6001600160f01b0319811681146116b957600080fd5b60006001600160401b038211156126d2576126d2612572565b50601f01601f191660200190565b600082601f8301126126f157600080fd5b81356127046126ff826126b9565b612616565b81815284602083860101111561271957600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261274757600080fd5b813560206127576126ff83612680565b82815260059290921b8401810191818101908684111561277657600080fd5b8286015b848110156127f45780356001600160401b038082111561279a5760008081fd5b908801906040828b03601f19018113156127b45760008081fd5b6127bc6125b0565b87840135838111156127ce5760008081fd5b6127dc8d8a838801016126e0565b8252509201358683015250835291830191830161277a565b509695505050505050565b60006040828403121561281157600080fd5b6128196125b0565b905081356001600160401b038082111561283257600080fd5b908301906060828603121561284657600080fd5b61284e612588565b82358281111561285d57600080fd5b8301601f8101871361286e57600080fd5b8035602061287e6126ff83612680565b82815260059290921b8301810191818101908a84111561289d57600080fd5b8285015b8481101561291b578035888111156128b95760008081fd5b86016040818e03601f190112156128d05760008081fd5b6128d86125b0565b858201356128e5816126a3565b815260408201358a8111156128fa5760008081fd5b6129088f88838601016126e0565b82880152508452509183019183016128a1565b5080865250508086013581850152604086013560408501528387528088013595508486111561294957600080fd5b61295589878a01612736565b8188015250505050505092915050565b6000610120828403121561297857600080fd5b6129806125d2565b90508135815260208201356020820152604082013560408201526129a78360608401612646565b606082015260c0820135608082015260e082013560a082015261010082013560c082015292915050565b600082601f8301126129e257600080fd5b813560206129f26126ff83612680565b82815260059290921b84018101918181019086841115612a1157600080fd5b8286015b848110156127f45780358352918301918301612a15565b600082601f830112612a3d57600080fd5b81356020612a4d6126ff83612680565b82815260059290921b84018101918181019086841115612a6c57600080fd5b8286015b848110156127f45780356001600160401b03811115612a8f5760008081fd5b8701603f81018913612aa15760008081fd5b848101356040612ab36126ff83612680565b82815260069290921b8301810191878101908c841115612ad35760008081fd5b938201935b83851015612b135782858e031215612af05760008081fd5b612af86125b0565b85358152898601358a82015282529382019390880190612ad8565b875250505092840192508301612a70565b600060408284031215612b3657600080fd5b612b3e6125b0565b905081356001600160401b0380821115612b5757600080fd5b9083019060608286031215612b6b57600080fd5b612b73612588565b8235815260208301356020820152604083013582811115612b9357600080fd5b612b9f878286016126e0565b60408301525083526020840135915080821115612bbb57600080fd5b50612bc884828501612a2c565b60208301525092915050565b600080828403610120811215612be957600080fd5b61010080821215612bf957600080fd5b612c016125f4565b91508435825260208086013581840152612c1e8760408801612646565b6040840152612c308760a08801612646565b6060840152919350840135906001600160401b039081831115612c5257600080fd5b9185019160408388031215612c6657600080fd5b612c6e6125b0565b833583811115612c7d57600080fd5b8401610180818a031215612c9057600080fd5b612c986125f4565b813585811115612ca757600080fd5b612cb38b8285016127ff565b825250612cc28a858401612965565b8482015261014082013585811115612cd957600080fd5b612ce58b8285016129d1565b60408301525061016082013585811115612cfe57600080fd5b612d0a8b828501612a2c565b6060830152508252508382013583811115612d2457600080fd5b612d3089828701612b24565b8383015250809450505050509250929050565b805182526020808201518184015260408083015180518286015291820151606085015281015160808401525060600151805160a0830152602081015160c08301526040015160e090910152565b6101a08101612d9f8285612d43565b82516101008301526020808401516101208401526040808501518051610140860152918201516101608501520151610180830152610dca565b60008060408385031215612deb57600080fd5b82356001600160401b0380821115612e0257600080fd5b612e0e868387016126e0565b93506020850135915080821115612e2457600080fd5b50612e31858286016126e0565b9150509250929050565b60005b83811015612e56578181015183820152602001612e3e565b50506000910152565b60008151808452612e77816020860160208601612e3b565b601f01601f19169290920160200192915050565b60c081526000612e9e60c0830185612e5f565b9050610dca602083018480518252602080820151818401526040918201518051838501529081015160608401520151608090910152565b600060608284031215612ee757600080fd5b612eef612588565b905081518152602082015160208201526040820151604082015292915050565b60006101008284031215612f2257600080fd5b612f2a6125f4565b90508151815260208201516020820152612f478360408401612ed5565b6040820152612f598360a08401612ed5565b606082015292915050565b60006101008284031215612f7757600080fd5b610dca8383612f0f565b600082601f830112612f9257600080fd5b8151612fa06126ff826126b9565b818152846020838601011115612fb557600080fd5b611e37826020830160208701612e3b565b600082601f830112612fd757600080fd5b81516020612fe76126ff83612680565b82815260059290921b8401810191818101908684111561300657600080fd5b8286015b848110156127f45780516001600160401b038082111561302a5760008081fd5b908801906040828b03601f19018113156130445760008081fd5b61304c6125b0565b878401518381111561305e5760008081fd5b61306c8d8a83880101612f81565b8252509201518683015250835291830191830161300a565b60006040828403121561309657600080fd5b61309e6125b0565b905081516001600160401b03808211156130b757600080fd5b90830190606082860312156130cb57600080fd5b6130d3612588565b8251828111156130e257600080fd5b8301601f810187136130f357600080fd5b805160206131036126ff83612680565b82815260059290921b8301810191818101908a84111561312257600080fd5b8285015b848110156131a05780518881111561313e5760008081fd5b86016040818e03601f190112156131555760008081fd5b61315d6125b0565b8582015161316a816126a3565b815260408201518a81111561317f5760008081fd5b61318d8f8883860101612f81565b8288015250845250918301918301613126565b508086525050808601518185015260408601516040850152838752808801519550848611156131ce57600080fd5b61295589878a01612fc6565b600061012082840312156131ed57600080fd5b6131f56125d2565b905081518152602082015160208201526040820151604082015261321c8360608401612ed5565b606082015260c0820151608082015260e082015160a082015261010082015160c082015292915050565b600082601f83011261325757600080fd5b815160206132676126ff83612680565b82815260059290921b8401810191818101908684111561328657600080fd5b8286015b848110156127f4578051835291830191830161328a565b600082601f8301126132b257600080fd5b815160206132c26126ff83612680565b82815260059290921b840181019181810190868411156132e157600080fd5b8286015b848110156127f45780516001600160401b038111156133045760008081fd5b8701603f810189136133165760008081fd5b8481015160406133286126ff83612680565b82815260069290921b8301810191878101908c8411156133485760008081fd5b938201935b838510156133885782858e0312156133655760008081fd5b61336d6125b0565b85518152898601518a8201528252938201939088019061334d565b8752505050928401925083016132e5565b6000604082840312156133ab57600080fd5b6133b36125b0565b905081516001600160401b03808211156133cc57600080fd5b90830190606082860312156133e057600080fd5b6133e8612588565b825181526020830151602082015260408301518281111561340857600080fd5b61341487828601612f81565b6040830152508352602084015191508082111561343057600080fd5b50612bc8848285016132a1565b6000806040838503121561345057600080fd5b82516001600160401b038082111561346757600080fd5b90840190610180828703121561347c57600080fd5b6134846125f4565b82518281111561349357600080fd5b61349f88828601613084565b8252506134af87602085016131da565b6020820152610140830151828111156134c757600080fd5b6134d388828601613246565b604083015250610160830151828111156134ec57600080fd5b6134f8888286016132a1565b606083015250602086015190945091508082111561351557600080fd5b50612e3185828601613399565b600081518084526020808501808196508360051b8101915082860160005b8581101561358057828403895281516040815181875261356282880182612e5f565b92880151968801969096525098850198935090840190600101613540565b5091979650505050505050565b80518252602081015160208301526040810151604083015260608101516135cb60608401828051825260208082015190830152604090810151910152565b50608081015160c083015260a081015160e083015260c08101516101008301525050565b600081518084526020808501945080840160005b8381101561361f57815187529582019590820190600101613603565b509495945050505050565b600081518084526020808501808196508360051b810191508286016000805b868110156136a3578385038a52825180518087529087019087870190845b8181101561368e578351805184528a01518a84015292890192604090920191600101613667565b50509a87019a95505091850191600101613649565b509298975050505050505050565b6000815160408452805160408501526020810151606085015260408101519050606060808501526136e560a0850182612e5f565b9050602083015184820360208601526123ba828261362a565b600061012061370d8386612d43565b8061010084015283516040808386015281519250610180806101608701528351826102e08801526103808701815160606103208a01528181518084526103a09350838b019150838160051b8c010193506020808401935060005b828110156137b1578c860361039f19018452845180516001600160f01b03191687528201518287018a905261379e8a880182612e5f565b9650509381019392810192600101613767565b50858101516103408d0152878601516103608d0152988901518b85036102df19016103008d0152986137e3858b613522565b99508089015195506137f7878d018761358d565b87890151975061015f199650868c8b03016102a08d01526138188a896135ef565b995060608901519850868c8b03016102c08d01526138368a8a61362a565b9950808d01519850505050505050505061011f1984830301610140850152611de582826136b1565b6000808284036101a081121561387357600080fd5b61387d8585612f0f565b925060a060ff198201121561389157600080fd5b613899612588565b61010085015181526101208501516020820152606061013f19830112156138bf57600080fd5b6138c7612588565b915061014085015182526101608501516020830152610180850151604083015281604082015280925050509250929050565b6101008101610b598284612d43565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016139465761394661391e565b5060010190565b8082028115828204841417610b5957610b5961391e565b6001600160e01b0319831681528151600090613987816004850160208701612e3b565b919091016004019392505050565b634e487b7160e01b600052601260045260246000fd5b6000826139ba576139ba613995565b500490565b80820180821115610b5957610b5961391e565b600083516139e4818460208801612e3b565b8351908301906139f8818360208801612e3b565b01949350505050565b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015613a4257845183529383019391830191600101613a26565b50508481036040860152865180825290820192508187019060005b81811015613a9757613a848584518051825260208082015190830152604090810151910152565b6060949094019391830191600101613a5d565b5050505060609290920192909252949350505050565b600060208284031215613abf57600080fd5b81518015158114610dca57600080fd5b81810381811115610b5957610b5961391e565b600181815b80851115613b1d578160001904821115613b0357613b0361391e565b80851615613b1057918102915b93841c9390800290613ae7565b509250929050565b600082613b3457506001610b59565b81613b4157506000610b59565b8160018114613b575760028114613b6157613b7d565b6001915050610b59565b60ff841115613b7257613b7261391e565b50506001821b610b59565b5060208310610133831016604e8410600b8410161715613ba0575081810a610b59565b613baa8383613ae2565b8060001904821115613bbe57613bbe61391e565b029392505050565b6000610dca8383613b25565b600081613be157613be161391e565b506000190190565b60ff60f81b8360f81b16815260008251613c0a816001850160208701612e3b565b919091016001019392505050565b634e487b7160e01b600052602160045260246000fd5b60008351613c40818460208801612e3b565b6001600160e01b0319939093169190920190815260040192915050565b60008351613c6f818460208801612e3b565b6001600160c01b0319939093169190920190815260080192915050565b600060ff831680613c9f57613c9f613995565b8060ff84160691505092915050565b6001600160401b038181168382160190808211156111e5576111e561391e565b60ff8181168382160190811115610b5957610b5961391e565b600082613cf657613cf6613995565b50069056fea2646970667358221220d20bfac253c2198bb4f2670c538179920eab12667a4fee3856ac14331786021064736f6c63430008110033", + "sourceMap": "2491:8323:49:-:0;;;2941:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2979:7;:16;2491:8323;;14:184:66;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;-1:-1:-1;176:16:66;;14:184;-1:-1:-1;14:184:66:o;:::-;2491:8323:49;;;;;;", + "linkReferences": { + "lib/solidity-merkle-trees/src/MerkleMountainRange.sol": { + "MerkleMountainRange": [ + { + "start": 3866, + "length": 20 + } + ] + } + } + }, + "deployedBytecode": { + "object": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c80634e9fdbec146100675780635e399aea146100935780637d755598146100b4578063905c0511146100d5578063af8b91d6146100ec578063babb311814610111575b600080fd5b610075636175726160e01b81565b6040516001600160e01b031990911681526020015b60405180910390f35b6100a66100a1366004612bd4565b61011f565b60405161008a929190612d90565b6100c76100c2366004612dd8565b610164565b60405161008a929190612e8b565b6100de612ee081565b60405190815260200161008a565b6100f8610dad60f31b81565b6040516001600160f01b0319909116815260200161008a565b61007563049534d560e41b81565b610127612443565b61012f6124a6565b60008061014086866000015161025b565b915091506000610154828760200151610751565b92945091925050505b9250929050565b606061016e6124a6565b6000848060200190518101906101849190612f64565b90506000808580602001905181019061019d919061343d565b91509150600080306001600160a01b0316635e399aea866040518060400160405280888152602001878152506040518363ffffffff1660e01b81526004016101e69291906136fe565b6101a060405180830381865afa158015610204573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610228919061385e565b915091508160405160200161023d91906138f9565b60408051808303601f19018152919052999098509650505050505050565b610263612443565b815160208082015151915101518451600092919081116102e75760405162461bcd60e51b815260206004820152603460248201527f636f6e73656e73757320636c69656e7473206f6e6c79206163636570742070726044820152736f6f667320666f72206e6577206865616465727360601b60648201526084015b60405180910390fd5b6102f982876040015160200151610b5f565b80610311575061031182876060015160200151610b5f565b6103695760405162461bcd60e51b8152602060048201526024808201527f5375706572206d616a6f72697479207468726573686f6c64206e6f742072656160448201526318da195960e21b60648201526084016102de565b8451516040808801515190820151148061038b57506060870151516040820151145b6103cf5760405162461bcd60e51b8152602060048201526015602482015274155b9adb9bdddb88185d5d1a1bdc9a5d1e481cd95d605a1b60448201526064016102de565b60408088015151908201518251519114906000805b8281101561048f5784518051610dad60f31b91908390811061040857610408613908565b6020026020010151600001516001600160f01b03191614801561044b5750845180518290811061043a5761043a613908565b602002602001015160200151516020145b1561047d5761047a8560000151828151811061046957610469613908565b602002602001015160200151610b8d565b91505b8061048781613934565b9150506103e4565b50806104dd5760405162461bcd60e51b815260206004820152601760248201527f4d6d7220726f6f742068617368206e6f7420666f756e6400000000000000000060448201526064016102de565b60006104e885610bf5565b8051906020012090506000876001600160401b0381111561050b5761050b612572565b60405190808252806020026020018201604052801561055057816020015b60408051808201909152600080825260208201528152602001906001900390816105295790505b50905060005b8881101561061f5760008c6000015160200151828151811061057a5761057a613908565b602002602001015190506000610594858360000151610d95565b9050604051806040016040528083602001518152602001826040516020016105d4919060609190911b6bffffffffffffffffffffffff1916815260140190565b604051602081830303815290604052805190602001208152508484815181106105ff576105ff613908565b60200260200101819052505050808061061790613934565b915050610556565b5084156106985761063d8c60400151604001518c6060015183610db9565b6106935760405162461bcd60e51b815260206004820152602160248201527f496e76616c69642063757272656e7420617574686f7269746965732070726f6f6044820152603360f91b60648201526084016102de565b6106fb565b6106af8c60600151604001518c6060015183610db9565b6106fb5760405162461bcd60e51b815260206004820152601e60248201527f496e76616c6964206e65787420617574686f7269746965732070726f6f66000060448201526064016102de565b6107068c8c85610dd1565b6060808d01515160208d015190910151511115610735576060808d01805160408f015260208d01519091015190525b5050509288525050505060209290920151608001519293915050565b6107596124a6565b604080516001808252818301909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081610770575050835160005460208201519293509091146107e35760405162461bcd60e51b815260206004820152600e60248201526d155b9adb9bdddb881c185c98525960921b60448201526064016102de565b60006107f28260400151610f68565b905080602001516000036108545760405162461bcd60e51b8152602060048201526024808201527f47656e6573697320626c6f636b2073686f756c64206e6f7420626520696e636c6044820152631d59195960e21b60648201526084016102de565b60008060005b8360800151518110156109d0578360800151818151811061087d5761087d613908565b60200260200101516040015180156108d4575063049534d560e41b6001600160e01b031916846080015182815181106108b8576108b8613908565b602002602001015160600151600001516001600160e01b031916145b1561090a57610907846080015182815181106108f2576108f2613908565b60200260200101516060015160200151610b8d565b92505b8360800151818151811061092057610920613908565b60200260200101516000015180156109775750636175726160e01b6001600160e01b0319168460800151828151811061095b5761095b613908565b602002602001015160200151600001516001600160e01b031916145b156109be5760006109ac8560800151838151811061099757610997613908565b6020026020010151602001516020015161116a565b90506109ba612ee08261394d565b9250505b806109c881613934565b91505061085a565b5080600003610a185760405162461bcd60e51b815260206004820152601460248201527374696d657374616d70206e6f7420666f756e642160601b60448201526064016102de565b604051806040016040528085600001518152602001610a5c8660200151600881811c62ff00ff1663ff00ff009290911b9190911617601081811c91901b1760e01b90565b610a6987604001516111ec565b604051602001610a7a929190613964565b6040516020818303038152906040528051906020012081525085600081518110610aa657610aa6613908565b6020026020010181905250600060405180606001604052808660200151815260200185602001518152602001604051806060016040528085815260200186815260200187604001518152508152509050610b0589896020015188610db9565b610b515760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642070617261636861696e732068656164732070726f6f66000060448201526064016102de565b955050505050505b92915050565b60006003610b6e83600261394d565b610b7891906139ab565b610b839060016139bf565b9092101592915050565b6000602082511015610bed5760405162461bcd60e51b8152602060048201526024808201527f42797465733a3a20746f427974657333323a206461746120697320746f20736860448201526337b93a1760e11b60648201526084016102de565b506020015190565b8051516040805160208101909152600080825260609291905b82811015610cc4578451805182908110610c2a57610c2a613908565b602002602001015160000151604051602001610c5691906001600160f01b031991909116815260020190565b604051602081830303815290604052610c8f86600001518381518110610c7e57610c7e613908565b6020026020010151602001516111ec565b604051602001610ca09291906139d2565b60405160208183030381529060405291508080610cbc90613934565b915050610c0e565b506000610cd083611220565b82604051602001610ce29291906139d2565b60405160208183030381529060405290506000610d248660200151600881811c62ff00ff1663ff00ff009290911b9190911617601081811c91901b1760e01b90565b610d3187604001516114c3565b6040516001600160e01b031990921660208301526001600160c01b0319166024820152602c0160405160208183030381529060405290508181604051602001610d7b9291906139d2565b604051602081830303815290604052945050505050919050565b6000806000610da4858561152d565b91509150610db18161156f565b509392505050565b6000610dc583836116bc565b841490505b9392505050565b6000610de083602001516119ef565b8051906020012090506000610e018560200151856020015160200151611bb7565b610e0c9060016139bf565b60408051600180825281830190925291925060009190816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181610e275790505090506040518060600160405280866020015160a001518152602001866020015160c0015181526020018481525081600081518110610e9457610e94613908565b6020908102919091010152604080860151905163722e206d60e01b815273__$2399d33eab5707eb5118077f9c67419cb4$__9163722e206d91610edf91889186908890600401613a01565b602060405180830381865af4158015610efc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f209190613aad565b610f605760405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21026b6b910283937b7b360791b60448201526064016102de565b505050505050565b6040805160a08101825260008082526020808301829052828401829052606080840183905260808401528351808501909452848452838101829052919291610fba90610fb5908490611bd9565b610b8d565b90506000610fc783611c5a565b90506000610fd9610fb5856020611bd9565b90506000610feb610fb5866020611bd9565b90506000610ff886611c5a565b90506000816001600160401b0381111561101457611014612572565b60405190808252806020026020018201604052801561104d57816020015b61103a6124d9565b8152602001906001900390816110325790505b50905060005b8281101561113b57600061106689611e3f565b90506110706124d9565b60ff821661108457600160c0820152611108565b60031960ff8316016110aa57600160408201526110a08a611edb565b6060820152611108565b60041960ff8316016110d057600160808201526110c68a611edb565b60a0820152611108565b60051960ff8316016110f357600181526110e98a611edb565b6020820152611108565b60071960ff8316016111085760016101008201525b8084848151811061111b5761111b613908565b60200260200101819052505050808061113390613934565b915050611053565b506040805160a08101825296875260208701959095529385019290925260608401525060808201529392505050565b805160009081905b80156111e557611183600182613acf565b61118e90600861394d565b611199906002613bc6565b846111a5600184613acf565b815181106111b5576111b5613908565b01602001516111c7919060f81c61394d565b6111d190836139bf565b9150806111dd81613bd2565b915050611172565b5092915050565b60606111f88251611220565b8260405160200161120a9291906139d2565b6040516020818303038152906040529050919050565b6060604082101561124a576040516001600160f81b031960fa84901b16602082015260210161120a565b61400082101561129d5761127a611266600284901b60016139bf565b600881811b62ffff001691901c60ff161790565b60405160200161120a919060f09190911b6001600160f01b031916815260020190565b6340000000821015611301576112de6112ba600284811b906139bf565b600881811c62ff00ff1663ff00ff009290911b9190911617601081811c91901b1790565b60405160200161120a919060e09190911b6001600160e01b031916815260040190565b600061147561144f8460008190506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008827fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010827fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c1790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020827fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c17905060408177ffffffffffffffff0000000000000000ffffffffffffffff16901b60408277ffffffffffffffff0000000000000000ffffffffffffffff1916901c179050608081901b608082901c179050919050565b60405160200161146191815260200190565b604051602081830303815290604052611f48565b805190915060006002611489600484613acf565b611495911b60036139bf565b905080836040516020016114aa929190613be9565b6040516020818303038152906040529350505050919050565b600065ff000000ff00600883811b91821664ff000000ff9185901c91821617601090811b67ff000000ff0000009390931666ff000000ff00009290921691909117901c17602081811b6bffffffffffffffff000000001691901c63ffffffff161760c01b92915050565b60008082516041036115635760208301516040840151606085015160001a61155787828585611fb5565b9450945050505061015d565b5060009050600261015d565b600081600481111561158357611583613c18565b0361158b5750565b600181600481111561159f5761159f613c18565b036115ec5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016102de565b600281600481111561160057611600613c18565b0361164d5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016102de565b600381600481111561166157611661613c18565b036116b95760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016102de565b50565b604080516000808252602082019092528190816116fb565b60408051808201909152600080825260208201528152602001906001900390816116d45790505b509050611722838560008151811061171557611715613908565b6020026020010151612079565b8460008151811061173557611735613908565b6020908102919091010152835160005b818110156119b757604080516000808252602082019092528161178a565b60408051808201909152600080825260208201528152602001906001900390816117635790505b50905083516000036117b7578682815181106117a8576117a8613908565b602002602001015190506117dd565b6117da8783815181106117cc576117cc613908565b602002602001015185612079565b90505b6117e981516002612285565b6001600160401b0381111561180057611800612572565b60405190808252806020026020018201604052801561184557816020015b604080518082019091526000808252602082015281526020019060019003908161181e5790505b508151909450600090815b818110156119a057816118648260016139bf565b106118d857600084828151811061187d5761187d613908565b602002602001015190506118af85838151811061189c5761189c613908565b60200260200101516000015160026122ad565b8152875181908990869081106118c7576118c7613908565b60200260200101819052505061198e565b604080518082019091526000808252602082015261190185838151811061189c5761189c613908565b815284516119609086908490811061191b5761191b613908565b6020026020010151602001518684600161193591906139bf565b8151811061194557611945613908565b60200260200101516020015160009182526020526040902090565b60208201528751819089908690811061197b5761197b613908565b6020908102919091010152506001909201915b6119996002826139bf565b9050611850565b5050505080806119af90613934565b915050611745565b5081516001146119c657600080fd5b816000815181106119d9576119d9613908565b6020026020010151602001519250505092915050565b606060008260000151604051602001611a1b919060f89190911b6001600160f81b031916815260010190565b604051602081830303815290604052611a598460200151600881811c62ff00ff1663ff00ff009290911b9190911617601081811c91901b1760e01b90565b604051602001611a6a929190613c2e565b60408051601f19818403018152828252858201516020840152925060009101604051602081830303815290604052611aa98560600151600001516114c3565b604051602001611aba929190613c5d565b60405160208183030381529060405290506000611b00856060015160200151600881811c62ff00ff1663ff00ff009290911b9190911617601081811c91901b1760e01b90565b856060015160400151604051602001611b1b91815260200190565b60408051601f1981840301815290829052611b399291602001613964565b60405160208183030381529060405290508282604051602001611b5d9291906139d2565b60408051601f19818403018152828252608088015160208401529183910160408051601f1981840301815290829052611b9992916020016139d2565b60408051601f19818403018152908290526114aa92916020016139d2565b600082600003611bc8575080610b59565b611bd28383613acf565b9050610b59565b6060826000015151828460200151611bf191906139bf565b1115611bfc57600080fd5b81600003611c195750604080516020810190915260008152610b59565b8251602080850151910190600090611c3b90611c3590846139bf565b856122b9565b90508385602001818151611c4f91906139bf565b905250949350505050565b600080611c6683611e3f565b90506000611c75600483613c8c565b905060008160ff16600003611c925750603f600283901c16611e37565b8160ff16600103611cd7576000611ca886611e3f565b9050613fc0600682901b16611cc4603f600287901c1682613cae565b6001600160401b03169250611e37915050565b8160ff16600203611d4a576000611ced86611e3f565b90506000611cfa87611e3f565b90506000611d0788611e3f565b63ffffffff60089490941b61ff001660ff88161760109390931b62ff0000169290921760189290921b63ff000000169190911760021c919091169150611e379050565b8160ff16600303611def576000611d69603f600286901c166004613cce565b905060088160ff161115611dd05760405162461bcd60e51b815260206004820152602860248201527f756e657870656374656420707265666978206465636f64696e6720436f6d706160448201526731ba1e2ab4b73a1f60c11b60648201526084016102de565b611de5611de0878360ff16611bd9565b61116a565b9695505050505050565b60405162461bcd60e51b815260206004820152601a60248201527f436f64652073686f756c6420626520756e726561636861626c6500000000000060448201526064016102de565b949350505050565b805151602082015160009190611e569060016139bf565b1115611e935760405162461bcd60e51b815260206004820152600c60248201526b4f7574206f662072616e676560a01b60448201526064016102de565b60008260000151836020015181518110611eaf57611eaf613908565b602001015160f81c60f81b60f81c9050600183602001818151611ed291906139bf565b90525092915050565b6040805180820190915260008152606060208201526000611f07611f00846004611bd9565b600061230f565b90506000611f1484611c5a565b90506000611f228583611bd9565b604080518082019091526001600160e01b03199094168452602084015250909392505050565b8051606090600080611f5b600184613acf565b90505b848181518110611f7057611f70613908565b01602001516001600160f81b03191615611f8c57809150611f9e565b80611f9681613bd2565b915050611f5e565b50611e37846000611fb08460016139bf565b61236c565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611fec5750600090506003612070565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612040573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661206957600060019250925050612070565b9150600090505b94509492505050565b81518151606091600091829182918261209282846139bf565b90506000816001600160401b038111156120ae576120ae612572565b6040519080825280602002602001820160405280156120f357816020015b60408051808201909152600080825260208201528152602001906001900390816120cc5790505b5090505b838710801561210557508286105b156121da5788868151811061211c5761211c613908565b6020026020010151600001518a888151811061213a5761213a613908565b60200260200101516000015110156121935789878151811061215e5761215e613908565b602002602001015181868151811061217857612178613908565b602090810291909101015260019687019694909401936120f7565b8886815181106121a5576121a5613908565b60200260200101518186815181106121bf576121bf613908565b602090810291909101015260019586019594909401936120f7565b83871015612229578987815181106121f4576121f4613908565b602002602001015181868151811061220e5761220e613908565b602090810291909101015260019687019694909401936121da565b828610156122785788868151811061224357612243613908565b602002602001015181868151811061225d5761225d613908565b60209081029190910101526001958601959490940193612229565b9998505050505050505050565b60008061229283856139ab565b905061229e8385613ce7565b15610dca576001019392505050565b6000610dca82846139ab565b6060816001600160401b038111156122d3576122d3612572565b6040519080825280601f01601f1916602001820160405280156122fd576020820181803683370190505b509050602081016111e58482856123c3565b60008060005b6004811015610db15761232981600861394d565b8561233483876139bf565b8151811061234457612344613908565b01602001516001600160f81b031916901c91909117908061236481613934565b915050612315565b825160609061237b83856139bf565b111561238657600080fd5b816000036123a35750604080516020810190915260008152610dca565b602084016123ba6123b485836139bf565b846122b9565b95945050505050565b602081106123fb57825182526123da6020836139bf565b91506123e76020846139bf565b92506123f4602082613acf565b90506123c3565b6000811561242b576001612410836020613acf565b61241c90610100613bc6565b6124269190613acf565b61242f565b6000195b935183518516941916939093179091525050565b6040518060800160405280600081526020016000815260200161248360405180606001604052806000815260200160008152602001600080191681525090565b815260408051606081018252600080825260208281018290529282015291015290565b60408051606080820183526000808352602080840182905284519283018552818352820181905281840152909182015290565b60405180610120016040528060001515815260200161250960408051808201909152600081526060602082015290565b81526000602082015260400161253060408051808201909152600081526060602082015290565b81526000602082015260400161255760408051808201909152600081526060602082015290565b81526000602082018190526060604083018190529091015290565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156125aa576125aa612572565b60405290565b604080519081016001600160401b03811182821017156125aa576125aa612572565b60405160e081016001600160401b03811182821017156125aa576125aa612572565b604051608081016001600160401b03811182821017156125aa576125aa612572565b604051601f8201601f191681016001600160401b038111828210171561263e5761263e612572565b604052919050565b60006060828403121561265857600080fd5b612660612588565b905081358152602082013560208201526040820135604082015292915050565b60006001600160401b0382111561269957612699612572565b5060051b60200190565b6001600160f01b0319811681146116b957600080fd5b60006001600160401b038211156126d2576126d2612572565b50601f01601f191660200190565b600082601f8301126126f157600080fd5b81356127046126ff826126b9565b612616565b81815284602083860101111561271957600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261274757600080fd5b813560206127576126ff83612680565b82815260059290921b8401810191818101908684111561277657600080fd5b8286015b848110156127f45780356001600160401b038082111561279a5760008081fd5b908801906040828b03601f19018113156127b45760008081fd5b6127bc6125b0565b87840135838111156127ce5760008081fd5b6127dc8d8a838801016126e0565b8252509201358683015250835291830191830161277a565b509695505050505050565b60006040828403121561281157600080fd5b6128196125b0565b905081356001600160401b038082111561283257600080fd5b908301906060828603121561284657600080fd5b61284e612588565b82358281111561285d57600080fd5b8301601f8101871361286e57600080fd5b8035602061287e6126ff83612680565b82815260059290921b8301810191818101908a84111561289d57600080fd5b8285015b8481101561291b578035888111156128b95760008081fd5b86016040818e03601f190112156128d05760008081fd5b6128d86125b0565b858201356128e5816126a3565b815260408201358a8111156128fa5760008081fd5b6129088f88838601016126e0565b82880152508452509183019183016128a1565b5080865250508086013581850152604086013560408501528387528088013595508486111561294957600080fd5b61295589878a01612736565b8188015250505050505092915050565b6000610120828403121561297857600080fd5b6129806125d2565b90508135815260208201356020820152604082013560408201526129a78360608401612646565b606082015260c0820135608082015260e082013560a082015261010082013560c082015292915050565b600082601f8301126129e257600080fd5b813560206129f26126ff83612680565b82815260059290921b84018101918181019086841115612a1157600080fd5b8286015b848110156127f45780358352918301918301612a15565b600082601f830112612a3d57600080fd5b81356020612a4d6126ff83612680565b82815260059290921b84018101918181019086841115612a6c57600080fd5b8286015b848110156127f45780356001600160401b03811115612a8f5760008081fd5b8701603f81018913612aa15760008081fd5b848101356040612ab36126ff83612680565b82815260069290921b8301810191878101908c841115612ad35760008081fd5b938201935b83851015612b135782858e031215612af05760008081fd5b612af86125b0565b85358152898601358a82015282529382019390880190612ad8565b875250505092840192508301612a70565b600060408284031215612b3657600080fd5b612b3e6125b0565b905081356001600160401b0380821115612b5757600080fd5b9083019060608286031215612b6b57600080fd5b612b73612588565b8235815260208301356020820152604083013582811115612b9357600080fd5b612b9f878286016126e0565b60408301525083526020840135915080821115612bbb57600080fd5b50612bc884828501612a2c565b60208301525092915050565b600080828403610120811215612be957600080fd5b61010080821215612bf957600080fd5b612c016125f4565b91508435825260208086013581840152612c1e8760408801612646565b6040840152612c308760a08801612646565b6060840152919350840135906001600160401b039081831115612c5257600080fd5b9185019160408388031215612c6657600080fd5b612c6e6125b0565b833583811115612c7d57600080fd5b8401610180818a031215612c9057600080fd5b612c986125f4565b813585811115612ca757600080fd5b612cb38b8285016127ff565b825250612cc28a858401612965565b8482015261014082013585811115612cd957600080fd5b612ce58b8285016129d1565b60408301525061016082013585811115612cfe57600080fd5b612d0a8b828501612a2c565b6060830152508252508382013583811115612d2457600080fd5b612d3089828701612b24565b8383015250809450505050509250929050565b805182526020808201518184015260408083015180518286015291820151606085015281015160808401525060600151805160a0830152602081015160c08301526040015160e090910152565b6101a08101612d9f8285612d43565b82516101008301526020808401516101208401526040808501518051610140860152918201516101608501520151610180830152610dca565b60008060408385031215612deb57600080fd5b82356001600160401b0380821115612e0257600080fd5b612e0e868387016126e0565b93506020850135915080821115612e2457600080fd5b50612e31858286016126e0565b9150509250929050565b60005b83811015612e56578181015183820152602001612e3e565b50506000910152565b60008151808452612e77816020860160208601612e3b565b601f01601f19169290920160200192915050565b60c081526000612e9e60c0830185612e5f565b9050610dca602083018480518252602080820151818401526040918201518051838501529081015160608401520151608090910152565b600060608284031215612ee757600080fd5b612eef612588565b905081518152602082015160208201526040820151604082015292915050565b60006101008284031215612f2257600080fd5b612f2a6125f4565b90508151815260208201516020820152612f478360408401612ed5565b6040820152612f598360a08401612ed5565b606082015292915050565b60006101008284031215612f7757600080fd5b610dca8383612f0f565b600082601f830112612f9257600080fd5b8151612fa06126ff826126b9565b818152846020838601011115612fb557600080fd5b611e37826020830160208701612e3b565b600082601f830112612fd757600080fd5b81516020612fe76126ff83612680565b82815260059290921b8401810191818101908684111561300657600080fd5b8286015b848110156127f45780516001600160401b038082111561302a5760008081fd5b908801906040828b03601f19018113156130445760008081fd5b61304c6125b0565b878401518381111561305e5760008081fd5b61306c8d8a83880101612f81565b8252509201518683015250835291830191830161300a565b60006040828403121561309657600080fd5b61309e6125b0565b905081516001600160401b03808211156130b757600080fd5b90830190606082860312156130cb57600080fd5b6130d3612588565b8251828111156130e257600080fd5b8301601f810187136130f357600080fd5b805160206131036126ff83612680565b82815260059290921b8301810191818101908a84111561312257600080fd5b8285015b848110156131a05780518881111561313e5760008081fd5b86016040818e03601f190112156131555760008081fd5b61315d6125b0565b8582015161316a816126a3565b815260408201518a81111561317f5760008081fd5b61318d8f8883860101612f81565b8288015250845250918301918301613126565b508086525050808601518185015260408601516040850152838752808801519550848611156131ce57600080fd5b61295589878a01612fc6565b600061012082840312156131ed57600080fd5b6131f56125d2565b905081518152602082015160208201526040820151604082015261321c8360608401612ed5565b606082015260c0820151608082015260e082015160a082015261010082015160c082015292915050565b600082601f83011261325757600080fd5b815160206132676126ff83612680565b82815260059290921b8401810191818101908684111561328657600080fd5b8286015b848110156127f4578051835291830191830161328a565b600082601f8301126132b257600080fd5b815160206132c26126ff83612680565b82815260059290921b840181019181810190868411156132e157600080fd5b8286015b848110156127f45780516001600160401b038111156133045760008081fd5b8701603f810189136133165760008081fd5b8481015160406133286126ff83612680565b82815260069290921b8301810191878101908c8411156133485760008081fd5b938201935b838510156133885782858e0312156133655760008081fd5b61336d6125b0565b85518152898601518a8201528252938201939088019061334d565b8752505050928401925083016132e5565b6000604082840312156133ab57600080fd5b6133b36125b0565b905081516001600160401b03808211156133cc57600080fd5b90830190606082860312156133e057600080fd5b6133e8612588565b825181526020830151602082015260408301518281111561340857600080fd5b61341487828601612f81565b6040830152508352602084015191508082111561343057600080fd5b50612bc8848285016132a1565b6000806040838503121561345057600080fd5b82516001600160401b038082111561346757600080fd5b90840190610180828703121561347c57600080fd5b6134846125f4565b82518281111561349357600080fd5b61349f88828601613084565b8252506134af87602085016131da565b6020820152610140830151828111156134c757600080fd5b6134d388828601613246565b604083015250610160830151828111156134ec57600080fd5b6134f8888286016132a1565b606083015250602086015190945091508082111561351557600080fd5b50612e3185828601613399565b600081518084526020808501808196508360051b8101915082860160005b8581101561358057828403895281516040815181875261356282880182612e5f565b92880151968801969096525098850198935090840190600101613540565b5091979650505050505050565b80518252602081015160208301526040810151604083015260608101516135cb60608401828051825260208082015190830152604090810151910152565b50608081015160c083015260a081015160e083015260c08101516101008301525050565b600081518084526020808501945080840160005b8381101561361f57815187529582019590820190600101613603565b509495945050505050565b600081518084526020808501808196508360051b810191508286016000805b868110156136a3578385038a52825180518087529087019087870190845b8181101561368e578351805184528a01518a84015292890192604090920191600101613667565b50509a87019a95505091850191600101613649565b509298975050505050505050565b6000815160408452805160408501526020810151606085015260408101519050606060808501526136e560a0850182612e5f565b9050602083015184820360208601526123ba828261362a565b600061012061370d8386612d43565b8061010084015283516040808386015281519250610180806101608701528351826102e08801526103808701815160606103208a01528181518084526103a09350838b019150838160051b8c010193506020808401935060005b828110156137b1578c860361039f19018452845180516001600160f01b03191687528201518287018a905261379e8a880182612e5f565b9650509381019392810192600101613767565b50858101516103408d0152878601516103608d0152988901518b85036102df19016103008d0152986137e3858b613522565b99508089015195506137f7878d018761358d565b87890151975061015f199650868c8b03016102a08d01526138188a896135ef565b995060608901519850868c8b03016102c08d01526138368a8a61362a565b9950808d01519850505050505050505061011f1984830301610140850152611de582826136b1565b6000808284036101a081121561387357600080fd5b61387d8585612f0f565b925060a060ff198201121561389157600080fd5b613899612588565b61010085015181526101208501516020820152606061013f19830112156138bf57600080fd5b6138c7612588565b915061014085015182526101608501516020830152610180850151604083015281604082015280925050509250929050565b6101008101610b598284612d43565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016139465761394661391e565b5060010190565b8082028115828204841417610b5957610b5961391e565b6001600160e01b0319831681528151600090613987816004850160208701612e3b565b919091016004019392505050565b634e487b7160e01b600052601260045260246000fd5b6000826139ba576139ba613995565b500490565b80820180821115610b5957610b5961391e565b600083516139e4818460208801612e3b565b8351908301906139f8818360208801612e3b565b01949350505050565b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015613a4257845183529383019391830191600101613a26565b50508481036040860152865180825290820192508187019060005b81811015613a9757613a848584518051825260208082015190830152604090810151910152565b6060949094019391830191600101613a5d565b5050505060609290920192909252949350505050565b600060208284031215613abf57600080fd5b81518015158114610dca57600080fd5b81810381811115610b5957610b5961391e565b600181815b80851115613b1d578160001904821115613b0357613b0361391e565b80851615613b1057918102915b93841c9390800290613ae7565b509250929050565b600082613b3457506001610b59565b81613b4157506000610b59565b8160018114613b575760028114613b6157613b7d565b6001915050610b59565b60ff841115613b7257613b7261391e565b50506001821b610b59565b5060208310610133831016604e8410600b8410161715613ba0575081810a610b59565b613baa8383613ae2565b8060001904821115613bbe57613bbe61391e565b029392505050565b6000610dca8383613b25565b600081613be157613be161391e565b506000190190565b60ff60f81b8360f81b16815260008251613c0a816001850160208701612e3b565b919091016001019392505050565b634e487b7160e01b600052602160045260246000fd5b60008351613c40818460208801612e3b565b6001600160e01b0319939093169190920190815260040192915050565b60008351613c6f818460208801612e3b565b6001600160c01b0319939093169190920190815260080192915050565b600060ff831680613c9f57613c9f613995565b8060ff84160691505092915050565b6001600160401b038181168382160190808211156111e5576111e561391e565b60ff8181168382160190811115610b5957610b5961391e565b600082613cf657613cf6613995565b50069056fea2646970667358221220d20bfac253c2198bb4f2670c538179920eab12667a4fee3856ac14331786021064736f6c63430008110033", + "sourceMap": "2491:8323:49:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2847:57;;-1:-1:-1;;;2847:57:49;;;;;-1:-1:-1;;;;;;176:33:66;;;158:52;;146:2;131:18;2847:57:49;;;;;;;;3806:558;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;3008:643::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2572:45::-;;2612:5;2572:45;;;;;16599:25:66;;;16587:2;16572:18;2572:45:49;16453:177:66;2663:57:49;;-1:-1:-1;;;2663:57:49;;;;;-1:-1:-1;;;;;;16797:28:66;;;16779:47;;16767:2;16752:18;2663:57:49;16635:197:66;2755:57:49;;-1:-1:-1;;;2755:57:49;;3806:558;3953:26;;:::i;:::-;3981:24;;:::i;:::-;4056:32;4090:17;4111:47;4132:12;4146:5;:11;;;4111:20;:47::i;:::-;4055:103;;;;4224:37;4264:54;4291:9;4302:5;:15;;;4264:26;:54::i;:::-;4337:5;;-1:-1:-1;4224:94:49;;-1:-1:-1;;;3806:558:49;;;;;;:::o;3008:643::-;3121:12;3135:24;;:::i;:::-;3175:41;3230:12;3219:47;;;;;;;;;;;;:::i;:::-;3175:91;;3277:28;3307:31;3365:12;3354:59;;;;;;;;;;;;:::i;:::-;3276:137;;;;3425:35;3462:37;3515:4;-1:-1:-1;;;;;3515:20:49;;3536:14;3552:37;;;;;;;;3572:5;3552:37;;;;3579:9;3552:37;;;3515:75;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3424:166;;;;3620:8;3609:20;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;3609:20:49;;;;;;;3631:12;;-1:-1:-1;3008:643:49;-1:-1:-1;;;;;;;3008:643:49:o;4798:3011::-;4950:26;;:::i;:::-;5029:27;;:33;;;;;:40;5102:38;;:50;;5186:25;;4978:7;;5029:40;5102:50;5171:40;;5163:105;;;;-1:-1:-1;;;5163:105:49;;35567:2:66;5163:105:49;;;35549:21:66;35606:2;35586:18;;;35579:30;35645:34;35625:18;;;35618:62;-1:-1:-1;;;35696:18:66;;;35689:50;35756:19;;5163:105:49;;;;;;;;;5299:84;5327:17;5346:12;:32;;;:36;;;5299:27;:84::i;:::-;:185;;;;5403:81;5431:17;5450:12;:29;;;:33;;;5403:27;:81::i;:::-;5278:268;;;;-1:-1:-1;;;5278:268:49;;35988:2:66;5278:268:49;;;35970:21:66;36027:2;36007:18;;;36000:30;36066:34;36046:18;;;36039:62;-1:-1:-1;;;36117:18:66;;;36110:34;36161:19;;5278:268:49;35786:400:66;5278:268:49;5588:27;;:38;5687:32;;;;;:35;5658:25;;;;:64;;:145;;-1:-1:-1;5771:29:49;;;;:32;5742:25;;;;:61;5658:145;5637:213;;;;-1:-1:-1;;;5637:213:49;;36393:2:66;5637:213:49;;;36375:21:66;36432:2;36412:18;;;36405:30;-1:-1:-1;;;36451:18:66;;;36444:51;36512:18;;5637:213:49;36191:345:66;5637:213:49;5920:32;;;;;:35;5891:25;;;;5988:18;;:25;5891:64;;;5861:27;;6049:248;6073:11;6069:1;:15;6049:248;;;6109:18;;:21;;-1:-1:-1;;;2708:12:49;6109:18;6128:1;;6109:21;;;;;;:::i;:::-;;;;;;;:24;;;-1:-1:-1;;;;;6109:47:49;;;:90;;;;-1:-1:-1;6160:18:49;;:21;;6179:1;;6160:21;;;;;;:::i;:::-;;;;;;;:26;;;:33;6197:2;6160:39;6109:90;6105:182;;;6229:43;6245:10;:18;;;6264:1;6245:21;;;;;;;;:::i;:::-;;;;;;;:26;;;6229:15;:43::i;:::-;6219:53;;6105:182;6086:3;;;;:::i;:::-;;;;6049:248;;;-1:-1:-1;6315:7:49;6307:57;;;;-1:-1:-1;;;6307:57:49;;37147:2:66;6307:57:49;;;37129:21:66;37186:2;37166:18;;;37159:30;37225:25;37205:18;;;37198:53;37268:18;;6307:57:49;36945:347:66;6307:57:49;6375:23;6411:24;6424:10;6411:12;:24::i;:::-;6401:35;;;;;;6375:61;;6446:25;6485:17;-1:-1:-1;;;;;6474:29:49;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;6474:29:49;;;;;;;;;;;;;;;;6446:57;;6556:9;6551:304;6575:17;6571:1;:21;6551:304;;;6613:16;6632:10;:27;;;:33;;;6666:1;6632:36;;;;;;;;:::i;:::-;;;;;;;6613:55;;6682:17;6702:46;6716:15;6733:4;:14;;;6702:13;:46::i;:::-;6682:66;;6779:65;;;;;;;;6784:4;:19;;;6779:65;;;;6832:9;6815:27;;;;;;;37446:2:66;37442:15;;;;-1:-1:-1;;37438:53:66;37426:66;;37517:2;37508:12;;37297:229;6815:27:49;;;;;;;;;;;;;6805:38;;;;;;6779:65;;;6762:11;6774:1;6762:14;;;;;;;;:::i;:::-;;;;;;:82;;;;6599:256;;6594:3;;;;;:::i;:::-;;;;6551:304;;;;6904:22;6900:458;;;6967:98;6996:12;:32;;;:37;;;7035:10;:16;;;7053:11;6967:28;:98::i;:::-;6942:190;;;;-1:-1:-1;;;6942:190:49;;37733:2:66;6942:190:49;;;37715:21:66;37772:2;37752:18;;;37745:30;37811:34;37791:18;;;37784:62;-1:-1:-1;;;37862:18:66;;;37855:31;37903:19;;6942:190:49;37531:397:66;6942:190:49;6900:458;;;7188:95;7217:12;:29;;;:34;;;7253:10;:16;;;7271:11;7188:28;:95::i;:::-;7163:184;;;;-1:-1:-1;;;7163:184:49;;38135:2:66;7163:184:49;;;38117:21:66;38174:2;38154:18;;;38147:30;38213:32;38193:18;;;38186:60;38263:18;;7163:184:49;37933:354:66;7163:184:49;7368:48;7382:12;7396:10;7408:7;7368:13;:48::i;:::-;7478:29;;;;;:32;7431:24;;;;:41;;;;:44;:79;7427:261;;;7561:29;;;;;;7526:32;;;:64;-1:-1:-1;7636:24:49;;;:41;;;;7604:73;;7427:261;-1:-1:-1;;;7698:40:49;;;-1:-1:-1;;;;7771:24:49;;;;;;:30;;;7698:40;;4798:3011;-1:-1:-1;;4798:3011:49:o;8561:1716::-;8691:24;;:::i;:::-;8754:13;;;8765:1;8754:13;;;;;;;;;8731:20;;8754:13;;;;-1:-1:-1;;;;;;;;;;;;;;;;;8754:13:49;;;;;;;;;;;;-1:-1:-1;;8801:15:49;;8777:21;8841:7;8830;;;;8731:36;;-1:-1:-1;8801:15:49;;8830:18;8826:73;;8864:24;;-1:-1:-1;;;8864:24:49;;38494:2:66;8864:24:49;;;38476:21:66;38533:2;38513:18;;;38506:30;-1:-1:-1;;;38552:18:66;;;38545:44;38606:18;;8864:24:49;38292:338:66;8826:73:49;8909:20;8932:31;8951:4;:11;;;8932:18;:31::i;:::-;8909:54;;8981:6;:13;;;8998:1;8981:18;8973:67;;;;-1:-1:-1;;;8973:67:49;;38837:2:66;8973:67:49;;;38819:21:66;38876:2;38856:18;;;38849:30;38915:34;38895:18;;;38888:62;-1:-1:-1;;;38966:18:66;;;38959:34;39010:19;;8973:67:49;38635:400:66;8973:67:49;9099:18;9127:17;9159:9;9154:581;9178:6;:14;;;:21;9174:1;:25;9154:581;;;9224:6;:14;;;9239:1;9224:17;;;;;;;;:::i;:::-;;;;;;;:29;;;:93;;;;;-1:-1:-1;;;;;;;;9257:60:49;;:6;:14;;;9272:1;9257:17;;;;;;;;:::i;:::-;;;;;;;:27;;;:39;;;-1:-1:-1;;;;;9257:60:49;;;9224:93;9220:233;;;9389:49;9405:6;:14;;;9420:1;9405:17;;;;;;;;:::i;:::-;;;;;;;:27;;;:32;;;9389:15;:49::i;:::-;9376:62;;9220:233;9471:6;:14;;;9486:1;9471:17;;;;;;;;:::i;:::-;;;;;;;:30;;;:95;;;;;-1:-1:-1;;;;;;;;9505:61:49;;:6;:14;;;9520:1;9505:17;;;;;;;;:::i;:::-;;;;;;;:28;;;:40;;;-1:-1:-1;;;;;9505:61:49;;;9471:95;9467:258;;;9586:12;9601:59;9626:6;:14;;;9641:1;9626:17;;;;;;;;:::i;:::-;;;;;;;:28;;;:33;;;9601:24;:59::i;:::-;9586:74;-1:-1:-1;9690:20:49;2612:5;9586:74;9690:20;:::i;:::-;9678:32;;9568:157;9467:258;9201:3;;;;:::i;:::-;;;;9154:581;;;;9752:9;9765:1;9752:14;9744:47;;;;-1:-1:-1;;;9744:47:49;;39415:2:66;9744:47:49;;;39397:21:66;39454:2;39434:18;;;39427:30;-1:-1:-1;;;39473:18:66;;;39466:50;39533:18;;9744:47:49;39213:344:66;9744:47:49;9814:150;;;;;;;;9832:4;:10;;;9814:150;;;;9879:36;9906:4;:7;;;7044:1:44;6998:21;;;7029:10;6998:21;7024;;;;;;;;;6997:49;7113:2;7096:7;;;7108;;;7095:21;7724:24;;;7644:111;9879:36:49;9917:35;9940:4;:11;;;9917:22;:35::i;:::-;9866:87;;;;;;;;;:::i;:::-;;;;;;;;;;;;;9856:98;;;;;;9814:150;;;9802:6;9809:1;9802:9;;;;;;;;:::i;:::-;;;;;;:162;;;;9975:37;10027:99;;;;;;;;10045:4;:7;;;10027:99;;;;10054:6;:13;;;10027:99;;;;10069:56;;;;;;;;10085:9;10069:56;;;;10096:10;10069:56;;;;10108:6;:16;;;10069:56;;;10027:99;;;9975:151;;10145:60;10174:9;10185:5;:11;;;10198:6;10145:28;:60::i;:::-;10137:103;;;;-1:-1:-1;;;10137:103:49;;40153:2:66;10137:103:49;;;40135:21:66;40192:2;40172:18;;;40165:30;40231:32;40211:18;;;40204:60;40281:18;;10137:103:49;39951:354:66;10137:103:49;10258:12;-1:-1:-1;;;;;;8561:1716:49;;;;;:::o;10667:145::-;10754:4;10799:1;10786:9;10790:5;10786:1;:9;:::i;:::-;10785:15;;;;:::i;:::-;10784:21;;10804:1;10784:21;:::i;:::-;10777:28;;;;;10667:145;-1:-1:-1;;10667:145:49:o;3778:226:36:-;3839:11;3885:2;3870:4;:11;:17;;3862:66;;;;-1:-1:-1;;;3862:66:36;;40899:2:66;3862:66:36;;;40881:21:66;40938:2;40918:18;;;40911:30;40977:34;40957:18;;;40950:62;-1:-1:-1;;;41028:18:66;;;41021:34;41072:19;;3862:66:36;40697:400:66;3862:66:36;-1:-1:-1;3984:2:36;3974:13;3968:20;;3778:226::o;604:739:50:-;718:18;;:25;780:9;;;;;;;;;697:18;780:9;;;673:12;;718:25;780:9;799:218;823:10;819:1;:14;799:218;;;915:18;;:21;;934:1;;915:21;;;;;;:::i;:::-;;;;;;;:24;;;898:42;;;;;;;-1:-1:-1;;;;;;41241:28:66;;;;41229:41;;41295:1;41286:11;;41102:201;898:42:50;;;;;;;;;;;;;942:50;965:10;:18;;;984:1;965:21;;;;;;;;:::i;:::-;;;;;;;:26;;;942:22;:50::i;:::-;868:138;;;;;;;;;:::i;:::-;;;;;;;;;;;;;854:152;;835:3;;;;;:::i;:::-;;;;799:218;;;;1027:20;1063:40;1092:10;1063:28;:40::i;:::-;1105:11;1050:67;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1027:90;;1128:17;1174:51;1201:10;:22;;;7044:1:44;6998:21;;;7029:10;6998:21;7024;;;;;;;;;6997:49;7113:2;7096:7;;;7108;;;7095:21;7724:24;;;7644:111;1174:51:50;1227:54;1254:10;:25;;;1227:19;:54::i;:::-;1148:143;;-1:-1:-1;;;;;;41970:33:66;;;1148:143:50;;;41958:46:66;-1:-1:-1;;;;;;42033:41:66;42020:11;;;42013:62;42091:12;;1148:143:50;;;;;;;;;;;;1128:163;;1322:7;1331:4;1309:27;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1302:34;;;;;;604:739;;;:::o;3661:227:30:-;3739:7;3759:17;3778:18;3800:27;3811:4;3817:9;3800:10;:27::i;:::-;3758:69;;;;3837:18;3849:5;3837:11;:18::i;:::-;-1:-1:-1;3872:9:30;3661:227;-1:-1:-1;;;3661:227:30:o;966:169:34:-;1069:4;1100:28;1114:5;1121:6;1100:13;:28::i;:::-;1092:4;:36;1085:43;;966:169;;;;;;:::o;7853:595:49:-;8007:12;8032:33;8045:5;:19;;;8032:12;:33::i;:::-;8022:44;;;;;;8007:59;;8076:17;8096:78;8106:12;:33;;;8141:5;:19;;;:32;;;8096:9;:78::i;:::-;:82;;8177:1;8096:82;:::i;:::-;8215:16;;;8229:1;8215:16;;;;;;;;;8076:102;;-1:-1:-1;8189:23:49;;8215:16;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;8215:16:49;;-1:-1:-1;;8215:16:49;;;;;;;;;;;8189:42;;8253:72;;;;;;;;8261:5;:19;;;:26;;;8253:72;;;;8289:5;:19;;;:29;;;8253:72;;;;8320:4;8253:72;;;8241:6;8248:1;8241:9;;;;;;;;:::i;:::-;;;;;;;;;;:84;8385:14;;;;;8344:75;;-1:-1:-1;;;8344:75:49;;:19;;:31;;:75;;8376:7;;8401:6;;8409:9;;8344:75;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8336:105;;;;-1:-1:-1;;;8336:105:49;;43996:2:66;8336:105:49;;;43978:21:66;44035:2;44015:18;;;44008:30;-1:-1:-1;;;44054:18:66;;;44047:47;44111:18;;8336:105:49;43794:341:66;8336:105:49;7997:451;;;7853:595;;;:::o;1993:1495:50:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2110:21:50;;;;;;;;;;;;;;;;;-1:-1:-1;;2110:21:50;2162:38;;2178:21;;2110;;2178:10;:21::i;:::-;2162:15;:38::i;:::-;2141:59;;2210:19;2232:35;2261:5;2232:28;:35::i;:::-;2210:57;;2277:17;2297:38;2313:21;2324:5;2331:2;2313:10;:21::i;2297:38::-;2277:58;;2345:22;2370:38;2386:21;2397:5;2404:2;2386:10;:21::i;2370:38::-;2345:63;;2419:14;2436:35;2465:5;2436:28;:35::i;:::-;2419:52;;2481:23;2520:6;-1:-1:-1;;;;;2507:20:50;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;2481:46;;2543:9;2538:859;2562:6;2558:1;:10;2538:859;;;2589:10;2602:21;2617:5;2602:14;:21::i;:::-;2589:34;;2637:20;;:::i;:::-;2675:25;;;2671:683;;2737:4;2720:14;;;:21;2671:683;;;-1:-1:-1;;2766:29:50;;;;2762:592;;2836:4;2815:18;;;:25;2877:23;2894:5;2877:16;:23::i;:::-;2858:16;;;:42;2762:592;;;-1:-1:-1;;2925:24:50;;;;2921:433;;2985:4;2969:13;;;:20;3021:23;3038:5;3021:16;:23::i;:::-;3007:11;;;:37;2921:433;;;-1:-1:-1;;3069:30:50;;;;3065:289;;3141:4;3119:26;;3183:23;3200:5;3183:16;:23::i;:::-;3163:17;;;:43;3065:289;;;-1:-1:-1;;3231:47:50;;;;3227:127;;3335:4;3298:34;;;:41;3227:127;3380:6;3367:7;3375:1;3367:10;;;;;;;;:::i;:::-;;;;;;:19;;;;2575:822;;2570:3;;;;;:::i;:::-;;;;2538:859;;;-1:-1:-1;3414:67:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3414:67:50;;;;;1993:1495;-1:-1:-1;;;1993:1495:50:o;232:272:44:-;357:11;;297:7;;;;340:135;370:5;;340:135;;456:5;460:1;456;:5;:::i;:::-;451:11;;:1;:11;:::i;:::-;445:18;;:1;:18;:::i;:::-;428:4;433:5;437:1;433;:5;:::i;:::-;428:11;;;;;;;;:::i;:::-;;;;;414:50;;;428:11;;414:50;:::i;:::-;405:59;;:6;:59;:::i;:::-;396:68;-1:-1:-1;377:3:44;;;;:::i;:::-;;;;340:135;;;-1:-1:-1;491:6:44;232:272;-1:-1:-1;;232:272:44:o;7878:158::-;7942:12;7990:31;8008:5;:12;7990:17;:31::i;:::-;8023:5;7973:56;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7966:63;;7878:158;;;:::o;3756:656::-;3817:12;3849:2;3845:1;:6;3841:565;;;3874:31;;-1:-1:-1;;;;;;45929:16:66;;;;45925:36;3874:31:44;;;45913:49:66;45978:11;;3874:31:44;45788:207:66;3841:565:44;3930:7;3926:1;:11;3922:484;;;3977:33;3995:12;4001:1;3996:6;;;4006:1;3995:12;:::i;:::-;7268:1;7263:6;;;;;7252;;;;;7251:19;;7129:148;3977:33;3960:51;;;;;;;46165:3:66;46143:16;;;;-1:-1:-1;;;;;;46139:38:66;46127:51;;46203:1;46194:11;;46000:211;3922:484:44;4036:7;4032:1;:11;4028:378;;;4083:33;4101:12;4107:1;4102:6;;;;4101:12;:::i;:::-;7044:1;6998:21;;;7029:10;6998:21;7024;;;;;;;;;6997:49;7113:2;7096:7;;;7108;;;7095:21;;6875:248;4083:33;4066:51;;;;;;;46381:3:66;46359:16;;;;-1:-1:-1;;;;;;46355:43:66;46343:56;;46424:1;46415:11;;46216:216;4028:378:44;4148:23;4174:55;4214:13;4225:1;4890:9;4915:5;4911:9;;5128:1;5053;5057:66;5053:70;5052:77;;5034:1;4959;4963:66;4959:70;4958:77;;4957:173;4953:177;;5351:2;5276:1;5280:66;5276:70;5275:78;;5256:2;5181:1;5185:66;5181:70;5180:78;;5179:175;5175:179;;5575:2;5500:1;5504:66;5500:70;5499:78;;5480:2;5405:1;5409:66;5405:70;5404:78;;5403:175;5399:179;;5799:2;5724:1;5728:66;5724:70;5723:78;;5704:2;5629:1;-1:-1:-1;;5629:70:44;5628:78;;5627:175;5623:179;;5871:3;5866:1;:8;;5858:3;5853:1;:8;;5852:23;5848:27;;4832:1050;;;;4214:13;4197:31;;;;;;46566:19:66;;46610:2;46601:12;;46437:182;4197:31:44;;;;;;;;;;;;;4174:22;:55::i;:::-;4261:17;;4148:81;;-1:-1:-1;4244:14:44;4330:1;4315:10;4324:1;4261:17;4315:10;:::i;:::-;4313:23;;4314:17;4335:1;4313:23;:::i;:::-;4292:45;;4376:6;4384:10;4359:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4352:43;;;;;3756:656;;;:::o;7527:111::-;7582:6;6762:22;6674:1;6646:29;;;6762:22;;;;6612:29;;;;6762:22;;;;6789:2;6761:30;;;6727:22;;;;;;;;;;;;;;6726:30;;6725:67;6859:2;6854:7;;;;;6842;;;;;6841:21;7607:24;;;7527:111;-1:-1:-1;;7527:111:44:o;2145:730:30:-;2226:7;2235:12;2263:9;:16;2283:2;2263:22;2259:610;;2599:4;2584:20;;2578:27;2648:4;2633:20;;2627:27;2705:4;2690:20;;2684:27;2301:9;2676:36;2746:25;2757:4;2676:36;2578:27;2627;2746:10;:25::i;:::-;2739:32;;;;;;;;;2259:610;-1:-1:-1;2818:1:30;;-1:-1:-1;2822:35:30;2802:56;;570:511;647:20;638:5;:29;;;;;;;;:::i;:::-;;634:441;;570:511;:::o;634:441::-;743:29;734:5;:38;;;;;;;;:::i;:::-;;730:345;;788:34;;-1:-1:-1;;;788:34:30;;47348:2:66;788:34:30;;;47330:21:66;47387:2;47367:18;;;47360:30;47426:26;47406:18;;;47399:54;47470:18;;788:34:30;47146:348:66;730:345:30;852:35;843:5;:44;;;;;;;;:::i;:::-;;839:236;;903:41;;-1:-1:-1;;;903:41:30;;47701:2:66;903:41:30;;;47683:21:66;47740:2;47720:18;;;47713:30;47779:33;47759:18;;;47752:61;47830:18;;903:41:30;47499:355:66;839:236:30;974:30;965:5;:39;;;;;;;;:::i;:::-;;961:114;;1020:44;;-1:-1:-1;;;1020:44:30;;48061:2:66;1020:44:30;;;48043:21:66;48100:2;48080:18;;;48073:30;48139:34;48119:18;;;48112:62;-1:-1:-1;;;48190:18:66;;;48183:32;48232:19;;1020:44:30;47859:398:66;961:114:30;570:511;:::o;2157:1683:34:-;2352:13;;;2248:7;2352:13;;;;;;;;;2248:7;;;2352:13;;;-1:-1:-1;;;;;;;;;;;;;;;;;2352:13:34;;;;;;;;;;;;;;;;2325:40;;2411:27;2421:6;2429:5;2435:1;2429:8;;;;;;;;:::i;:::-;;;;;;;2411:9;:27::i;:::-;2400:5;2406:1;2400:8;;;;;;;;:::i;:::-;;;;;;;;;;:38;2472:12;;2449:20;2494:1211;2528:12;2519:6;:21;2494:1211;;;2596:13;;;2566:27;2596:13;;;;;;;;;2566:27;2596:13;;;-1:-1:-1;;;;;;;;;;;;;;;;;2596:13:34;;;;;;;;;;;;;;;;2566:43;;2628:10;:17;2649:1;2628:22;2624:181;;2686:5;2692:6;2686:13;;;;;;;;:::i;:::-;;;;;;;2670:29;;2624:181;;;2754:36;2764:5;2770:6;2764:13;;;;;;;;:::i;:::-;;;;;;;2779:10;2754:9;:36::i;:::-;2738:52;;2624:181;2843:33;2852:13;:20;2874:1;2843:8;:33::i;:::-;-1:-1:-1;;;;;2832:45:34;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2832:45:34;;;;;;;;;;;;;;;-1:-1:-1;2950:20:34;;2819:58;;-1:-1:-1;2892:9:34;;;2984:711;3016:20;3008:5;:28;2984:711;;;3085:20;3072:9;:5;3080:1;3072:9;:::i;:::-;:33;3068:613;;3129:16;3148:13;3162:5;3148:20;;;;;;;;:::i;:::-;;;;;;;3129:39;;3205:42;3215:13;3229:5;3215:20;;;;;;;;:::i;:::-;;;;;;;:28;;;3245:1;3205:9;:42::i;:::-;3190:57;;3269:13;;3190:4;;3269:10;;3280:1;;3269:13;;;;;;:::i;:::-;;;;;;:20;;;;3107:201;3068:613;;;-1:-1:-1;;;;;;;;;;;;;;;;;3389:42:34;3399:13;3413:5;3399:20;;;;;;;;:::i;3389:42::-;3374:57;;3480:20;;3465:72;;3480:13;;3494:5;;3480:20;;;;;;:::i;:::-;;;;;;;:25;;;3507:13;3521:5;3529:1;3521:9;;;;:::i;:::-;3507:24;;;;;;;;:::i;:::-;;;;;;;:29;;;8091:12;8192:18;;;8230:4;8223:19;8278:4;8263:20;;;8014:285;3465:72;3453:9;;;:84;3559:13;;3453:4;;3559:10;;3570:1;;3559:13;;;;;;:::i;:::-;;;;;;;;;;:20;-1:-1:-1;3637:3:34;;;;;3068:613;3038:10;3047:1;3038:10;;:::i;:::-;;;2984:711;;;;2552:1153;;;2542:8;;;;;:::i;:::-;;;;2494:1211;;;;3774:10;:17;3795:1;3774:22;3766:31;;;;;;3815:10;3826:1;3815:13;;;;;;;;:::i;:::-;;;;;;;:18;;;3808:25;;;;2157:1683;;;;:::o;1349:638:50:-;1414:12;1438:18;1507:4;:12;;;1484:37;;;;;;;45951:3:66;45929:16;;;;-1:-1:-1;;;;;;45925:36:66;45913:49;;45987:1;45978:11;;45788:207;1484:37:50;;;;;;;;;;;;;1523:46;1550:4;:17;;;7044:1:44;6998:21;;;7029:10;6998:21;7024;;;;;;;;;6997:49;7113:2;7096:7;;;7108;;;7095:21;7724:24;;;7644:111;1523:46:50;1471:99;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1471:99:50;;;;;;;;;1640:15;;;;1471:99;1627:29;;46566:19:66;1471:99:50;-1:-1:-1;1580:19:50;;46601:12:66;1627:29:50;;;;;;;;;;;;1658:53;1685:4;:21;;;:24;;;1658:19;:53::i;:::-;1614:98;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1580:132;;1722:18;1769:54;1796:4;:21;;;:25;;;7044:1:44;6998:21;;;7029:10;6998:21;7024;;;;;;;;;6997:49;7113:2;7096:7;;;7108;;;7095:21;7724:24;;;7644:111;1769:54:50;1838:4;:21;;;:26;;;1825:40;;;;;;46566:19:66;;46610:2;46601:12;;46437:182;1825:40:50;;;;-1:-1:-1;;1825:40:50;;;;;;;;;;1743:132;;;1825:40;1743:132;;:::i;:::-;;;;;;;;;;;;;1722:153;;1918:5;1925:6;1905:27;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1905:27:50;;;;;;;;;1967:10;;;;1905:27;1954:24;;46566:19:66;1905:27:50;1947:5;;46601:12:66;1954:24:50;;;-1:-1:-1;;1954:24:50;;;;;;;;;;1934:45;;;1954:24;1934:45;;:::i;:::-;;;;-1:-1:-1;;1934:45:50;;;;;;;;;;1892:88;;;1934:45;1892:88;;:::i;10363:251:49:-;10451:7;10474:15;10493:1;10474:20;10470:138;;-1:-1:-1;10517:12:49;10510:19;;10470:138;10567:30;10582:15;10567:12;:30;:::i;:::-;10560:37;;;;1466:377:36;1539:12;1592:4;:9;;;:16;1585:3;1571:4;:11;;;:17;;;;:::i;:::-;:37;;1563:46;;;;;;1623:3;1630:1;1623:8;1619:48;;-1:-1:-1;1647:9:36;;;;;;;;;-1:-1:-1;1647:9:36;;;;1619:48;1706:9;;1319:2:37;1769:11:36;;;;1288:34:37;;;1676:12:36;;1747:39;;1762:18;;1288:34:37;1762:18:36;:::i;:::-;1782:3;1747:14;:39::i;:::-;1726:60;;1811:3;1796:4;:11;;:18;;;;;;;:::i;:::-;;;-1:-1:-1;1831:5:36;1466:377;-1:-1:-1;;;;1466:377:36:o;566:1496:44:-;639:9;660:7;670:20;685:4;670:14;:20::i;:::-;660:30;-1:-1:-1;723:10:44;736:5;740:1;660:30;736:5;:::i;:::-;723:18;;773:13;800:4;:9;;808:1;800:9;796:1238;;-1:-1:-1;856:6:44;861:1;856:6;;;;796:1238;;;918:4;:9;;926:1;918:9;914:1120;;970:8;981:20;996:4;981:14;:20::i;:::-;970:31;-1:-1:-1;1087:7:44;1093:1;1087:7;;;;1129:11;1134:6;1139:1;1134:6;;;;1087:7;1129:11;:::i;:::-;-1:-1:-1;;;;;1189:9:44;;-1:-1:-1;914:1120:44;;-1:-1:-1;;914:1120:44;;1219:4;:9;;1227:1;1219:9;1215:819;;1279:8;1290:20;1305:4;1290:14;:20::i;:::-;1279:31;;1349:8;1360:20;1375:4;1360:14;:20::i;:::-;1349:31;;1394:8;1405:20;1420:4;1405:14;:20::i;:::-;1465:15;1479:1;1465:15;;;;;;:10;1452:9;;:29;1555:2;1541:16;;;;;;1535:23;;;;1604:2;1590:16;;;;;;1584:23;;;;1629:1;1622:8;1683:11;;;;;-1:-1:-1;1215:819:44;;-1:-1:-1;1215:819:44;;1715:4;:9;;1723:1;1715:9;1711:323;;1786:7;1796:12;1797:6;1802:1;1797:6;;;;1807:1;1796:12;:::i;:::-;1786:22;;1855:1;1850;:6;;;;1842:59;;;;-1:-1:-1;;;1842:59:44;;49979:2:66;1842:59:44;;;49961:21:66;50018:2;49998:18;;;49991:30;50057:34;50037:18;;;50030:62;-1:-1:-1;;;50108:18:66;;;50101:38;50156:19;;1842:59:44;49777:404:66;1842:59:44;1922:34;1936:19;1947:4;1953:1;1936:19;;:10;:19::i;:::-;1922:13;:34::i;:::-;1915:41;566:1496;-1:-1:-1;;;;;;566:1496:44:o;1711:323::-;1987:36;;-1:-1:-1;;;1987:36:44;;50388:2:66;1987:36:44;;;50370:21:66;50427:2;50407:18;;;50400:30;50466:28;50446:18;;;50439:56;50512:18;;1987:36:44;50186:350:66;1711:323:44;2050:5;566:1496;-1:-1:-1;;;;566:1496:44:o;956:269:36:-;1059:9;;:16;1041:11;;;;1020:5;;1059:16;1041:15;;1055:1;1041:15;:::i;:::-;:34;1037:87;;;1091:22;;-1:-1:-1;;;1091:22:36;;50743:2:66;1091:22:36;;;50725:21:66;50782:2;50762:18;;;50755:30;-1:-1:-1;;;50801:18:66;;;50794:42;50853:18;;1091:22:36;50541:336:66;1037:87:36;1134:7;1150:4;:9;;;1160:4;:11;;;1150:22;;;;;;;;:::i;:::-;;;;;;;;;1144:29;;1134:39;;1198:1;1183:4;:11;;:16;;;;;;;:::i;:::-;;;-1:-1:-1;1217:1:36;956:269;-1:-1:-1;;956:269:36:o;3494:308:50:-;-1:-1:-1;;;;;;;;;;;;;;;;;3596:9:50;3608:33;3623:14;3628:5;3635:1;3623:4;:14::i;:::-;3639:1;3608:14;:33::i;:::-;3596:45;;3651:14;3668:35;3697:5;3668:28;:35::i;:::-;3651:52;;3713:17;3733:25;3744:5;3751:6;3733:10;:25::i;:::-;3775:20;;;;;;;;;-1:-1:-1;;;;;;3775:20:50;;;;;;;;;-1:-1:-1;3775:20:50;;3494:308;-1:-1:-1;;;3494:308:50:o;5335:366:36:-;5444:11;;5403:12;;5427:14;;5513:10;5522:1;5444:11;5513:10;:::i;:::-;5501:22;;5496:152;5556:4;5561:1;5556:7;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;5556:7:36;:12;5552:86;;5599:1;5588:12;;5618:5;;5552:86;5533:3;;;;:::i;:::-;;;;5496:152;;;-1:-1:-1;5665:29:36;5672:4;5678:1;5681:12;:8;5692:1;5681:12;:::i;:::-;5665:6;:29::i;5009:1456:30:-;5097:7;;6021:66;6008:79;;6004:161;;;-1:-1:-1;6119:1:30;;-1:-1:-1;6123:30:30;6103:51;;6004:161;6276:24;;;6259:14;6276:24;;;;;;;;;51109:25:66;;;51182:4;51170:17;;51150:18;;;51143:45;;;;51204:18;;;51197:34;;;51247:18;;;51240:34;;;6276:24:30;;51081:19:66;;6276:24:30;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6276:24:30;;-1:-1:-1;;6276:24:30;;;-1:-1:-1;;;;;;;6314:20:30;;6310:101;;6366:1;6370:29;6350:50;;;;;;;6310:101;6429:6;-1:-1:-1;6437:20:30;;-1:-1:-1;5009:1456:30;;;;;;;;:::o;6710:1136:34:-;6940:11;;6983;;6792:13;;6849:9;;;;;;;7022:25;6983:11;6940;7022:25;:::i;:::-;7004:43;;7057:17;7088:7;-1:-1:-1;;;;;7077:19:34;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;7077:19:34;;;;;;;;;;;;;;;;7057:39;;7107:402;7118:11;7114:1;:15;:34;;;;;7137:11;7133:1;:15;7114:34;7107:402;;;7186:4;7191:1;7186:7;;;;;;;;:::i;:::-;;;;;;;:15;;;7168:4;7173:1;7168:7;;;;;;;;:::i;:::-;;;;;;;:15;;;:33;7164:335;;;7230:4;7235:1;7230:7;;;;;;;;:::i;:::-;;;;;;;7221:3;7225:1;7221:6;;;;;;;;:::i;:::-;;;;;;;;;;:16;7287:3;;;;;7312;;;;;7107:402;;7164:335;7381:4;7386:1;7381:7;;;;;;;;:::i;:::-;;;;;;;7372:3;7376:1;7372:6;;;;;;;;:::i;:::-;;;;;;;;;;:16;7438:3;;;;;7463;;;;;7107:402;;;7530:11;7526:1;:15;7519:145;;;7566:4;7571:1;7566:7;;;;;;;;:::i;:::-;;;;;;;7557:3;7561:1;7557:6;;;;;;;;:::i;:::-;;;;;;;;;;:16;7615:3;;;;;7636;;;;;7519:145;;;7685:11;7681:1;:15;7674:145;;;7721:4;7726:1;7721:7;;;;;;;;:::i;:::-;;;;;;;7712:3;7716:1;7712:6;;;;;;;;:::i;:::-;;;;;;;;;;:16;7770:3;;;;;7791;;;;;7674:145;;;7836:3;6710:1136;-1:-1:-1;;;;;;;;;6710:1136:34:o;6218:238::-;6281:7;;6317:5;6321:1;6317;:5;:::i;:::-;6300:22;-1:-1:-1;6336:5:34;6340:1;6336;:5;:::i;:::-;:10;6332:94;;6400:1;6390:11;6443:6;6218:238;-1:-1:-1;;;6218:238:34:o;6110:102::-;6174:7;6200:5;6204:1;6200;:5;:::i;1588:265:37:-;1655:16;1699:3;-1:-1:-1;;;;;1689:14:37;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1689:14:37;-1:-1:-1;1683:20:37;-1:-1:-1;1801:2:37;1770:34;;1823:23;1828:4;1770:34;1842:3;1823:4;:23::i;4462:247:36:-;4538:6;4556:10;4582:9;4577:106;4601:1;4597;:5;4577:106;;;4666:5;:1;4670;4666:5;:::i;:::-;4637:4;4642:10;4651:1;4642:6;:10;:::i;:::-;4637:16;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;4637:16:36;4630:42;;4623:49;;;;;4604:3;;;;:::i;:::-;;;;4577:106;;2616:319;2759:11;;2707:12;;2739:16;2752:3;2739:10;:16;:::i;:::-;:31;;2731:40;;;;;;2785:3;2792:1;2785:8;2781:48;;-1:-1:-1;2809:9:36;;;;;;;;;-1:-1:-1;2809:9:36;;;;2781:48;1319:2:37;1288:34;;2890:38:36;2905:17;2912:10;1288:34:37;2905:17:36;:::i;:::-;2924:3;2890:14;:38::i;:::-;2883:45;2616:319;-1:-1:-1;;;;;2616:319:36:o;2368:687:37:-;122:2;2503:3;:16;2496:193;;2593:10;;2580:24;;2631:17;122:2;2587:4;2631:17;:::i;:::-;;-1:-1:-1;2662:16:37;122:2;2662:16;;:::i;:::-;;-1:-1:-1;2521:16:37;122:2;2521:16;;:::i;:::-;;;2496:193;;;2731:12;2758:8;;:108;;2865:1;2846:15;2858:3;122:2;2846:15;:::i;:::-;2838:24;;:3;:24;:::i;:::-;:28;;;;:::i;:::-;2758:108;;;-1:-1:-1;;2758:108:37;2918:10;;2973:11;;2969:22;;2930:9;;2914:26;3017:21;;;;3004:35;;;-1:-1:-1;;2368:687:37:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;221:127:66:-;282:10;277:3;273:20;270:1;263:31;313:4;310:1;303:15;337:4;334:1;327:15;353:253;425:2;419:9;467:4;455:17;;-1:-1:-1;;;;;487:34:66;;523:22;;;484:62;481:88;;;549:18;;:::i;:::-;585:2;578:22;353:253;:::o;611:257::-;683:4;677:11;;;715:17;;-1:-1:-1;;;;;747:34:66;;783:22;;;744:62;741:88;;;809:18;;:::i;873:253::-;945:2;939:9;987:4;975:17;;-1:-1:-1;;;;;1007:34:66;;1043:22;;;1004:62;1001:88;;;1069:18;;:::i;1131:253::-;1203:2;1197:9;1245:4;1233:17;;-1:-1:-1;;;;;1265:34:66;;1301:22;;;1262:62;1259:88;;;1327:18;;:::i;1645:275::-;1716:2;1710:9;1781:2;1762:13;;-1:-1:-1;;1758:27:66;1746:40;;-1:-1:-1;;;;;1801:34:66;;1837:22;;;1798:62;1795:88;;;1863:18;;:::i;:::-;1899:2;1892:22;1645:275;;-1:-1:-1;1645:275:66:o;1925:362::-;1994:5;2042:4;2030:9;2025:3;2021:19;2017:30;2014:50;;;2060:1;2057;2050:12;2014:50;2082:22;;:::i;:::-;2073:31;;2140:9;2127:23;2120:5;2113:38;2211:2;2200:9;2196:18;2183:32;2178:2;2171:5;2167:14;2160:56;2276:2;2265:9;2261:18;2248:32;2243:2;2236:5;2232:14;2225:56;1925:362;;;;:::o;2292:190::-;2359:4;-1:-1:-1;;;;;2384:6:66;2381:30;2378:56;;;2414:18;;:::i;:::-;-1:-1:-1;2459:1:66;2455:14;2471:4;2451:25;;2292:190::o;2487:126::-;-1:-1:-1;;;;;;2561:27:66;;2551:38;;2541:66;;2603:1;2600;2593:12;2618:186;2666:4;-1:-1:-1;;;;;2691:6:66;2688:30;2685:56;;;2721:18;;:::i;:::-;-1:-1:-1;2787:2:66;2766:15;-1:-1:-1;;2762:29:66;2793:4;2758:40;;2618:186::o;2809:462::-;2851:5;2904:3;2897:4;2889:6;2885:17;2881:27;2871:55;;2922:1;2919;2912:12;2871:55;2958:6;2945:20;2989:48;3005:31;3033:2;3005:31;:::i;:::-;2989:48;:::i;:::-;3062:2;3053:7;3046:19;3108:3;3101:4;3096:2;3088:6;3084:15;3080:26;3077:35;3074:55;;;3125:1;3122;3115:12;3074:55;3190:2;3183:4;3175:6;3171:17;3164:4;3155:7;3151:18;3138:55;3238:1;3213:16;;;3231:4;3209:27;3202:38;;;;3217:7;2809:462;-1:-1:-1;;;2809:462:66:o;3276:1445::-;3334:5;3387:3;3380:4;3372:6;3368:17;3364:27;3354:55;;3405:1;3402;3395:12;3354:55;3441:6;3428:20;3467:4;3491:67;3507:50;3554:2;3507:50;:::i;3491:67::-;3592:15;;;3678:1;3674:10;;;;3662:23;;3658:32;;;3623:12;;;;3702:15;;;3699:35;;;3730:1;3727;3720:12;3699:35;3766:2;3758:6;3754:15;3778:914;3794:6;3789:3;3786:15;3778:914;;;3880:3;3867:17;-1:-1:-1;;;;;3957:2:66;3944:11;3941:19;3938:109;;;4001:1;4030:2;4026;4019:14;3938:109;4070:24;;;;4117:4;4145:12;;;-1:-1:-1;;4141:26:66;4137:35;-1:-1:-1;4134:125:66;;;4213:1;4242:2;4238;4231:14;4134:125;4285:22;;:::i;:::-;4357:2;4353;4349:11;4336:25;4390:2;4380:8;4377:16;4374:106;;;4434:1;4463:2;4459;4452:14;4374:106;4507:49;4552:3;4547:2;4536:8;4532:2;4528:17;4524:26;4507:49;:::i;:::-;4493:64;;-1:-1:-1;4606:11:66;;4593:25;4577:14;;;4570:49;-1:-1:-1;4632:18:66;;4670:12;;;;3811;;3778:914;;;-1:-1:-1;4710:5:66;3276:1445;-1:-1:-1;;;;;;3276:1445:66:o;4726:2301::-;4789:5;4837:4;4825:9;4820:3;4816:19;4812:30;4809:50;;;4855:1;4852;4845:12;4809:50;4877:22;;:::i;:::-;4868:31;;4935:9;4922:23;-1:-1:-1;;;;;5005:2:66;4997:6;4994:14;4991:34;;;5021:1;5018;5011:12;4991:34;5044:22;;;;5096:4;5082:12;;;5078:23;5075:43;;;5114:1;5111;5104:12;5075:43;5142:22;;:::i;:::-;5202:2;5189:16;5230:2;5220:8;5217:16;5214:36;;;5246:1;5243;5236:12;5214:36;5269:17;;5317:4;5309:13;;5305:23;-1:-1:-1;5295:51:66;;5342:1;5339;5332:12;5295:51;5378:2;5365:16;5400:4;5424:67;5440:50;5487:2;5440:50;:::i;5424:67::-;5525:15;;;5607:1;5603:10;;;;5595:19;;5591:28;;;5556:12;;;;5631:15;;;5628:35;;;5659:1;5656;5649:12;5628:35;5691:2;5687;5683:11;5703:934;5719:6;5714:3;5711:15;5703:934;;;5805:3;5792:17;5841:2;5828:11;5825:19;5822:109;;;5885:1;5914:2;5910;5903:14;5822:109;5954:20;;6022:4;5998:12;;;-1:-1:-1;;5994:26:66;5990:37;5987:127;;;6068:1;6097:2;6093;6086:14;5987:127;6142:22;;:::i;:::-;6213:2;6209;6205:11;6192:25;6230:32;6254:7;6230:32;:::i;:::-;6275:24;;6349:4;6341:13;;6328:27;6371:16;;;6368:106;;;6428:1;6457:2;6453;6446:14;6368:106;6512:49;6557:3;6552:2;6541:8;6537:2;6533:17;6529:26;6512:49;:::i;:::-;6494:16;;;6487:75;-1:-1:-1;6575:20:66;;-1:-1:-1;6615:12:66;;;;5736;;5703:934;;;5707:3;6662:5;6653:7;6646:22;;;6723:2;6719;6715:11;6702:25;6697:2;6688:7;6684:16;6677:51;6785:4;6781:2;6777:13;6764:27;6757:4;6748:7;6744:18;6737:55;6815:7;6808:5;6801:22;6876:2;6865:9;6861:18;6848:32;6832:48;;6905:2;6895:8;6892:16;6889:36;;;6921:1;6918;6911:12;6889:36;6957:63;7016:3;7005:8;6994:9;6990:24;6957:63;:::i;:::-;6952:2;6945:5;6941:14;6934:87;;;;;;;4726:2301;;;;:::o;7032:656::-;7091:5;7139:6;7127:9;7122:3;7118:19;7114:32;7111:52;;;7159:1;7156;7149:12;7111:52;7181:22;;:::i;:::-;7172:31;;7239:9;7226:23;7219:5;7212:38;7310:2;7299:9;7295:18;7282:32;7277:2;7270:5;7266:14;7259:56;7375:2;7364:9;7360:18;7347:32;7342:2;7335:5;7331:14;7324:56;7412:65;7473:3;7468:2;7457:9;7453:18;7412:65;:::i;:::-;7407:2;7400:5;7396:14;7389:89;7540:3;7529:9;7525:19;7512:33;7505:4;7498:5;7494:16;7487:59;7608:4;7597:9;7593:20;7580:34;7573:4;7566:5;7562:16;7555:60;7676:3;7665:9;7661:19;7648:33;7642:3;7635:5;7631:15;7624:58;7032:656;;;;:::o;7693:669::-;7747:5;7800:3;7793:4;7785:6;7781:17;7777:27;7767:55;;7818:1;7815;7808:12;7767:55;7854:6;7841:20;7880:4;7904:67;7920:50;7967:2;7920:50;:::i;7904:67::-;8005:15;;;8091:1;8087:10;;;;8075:23;;8071:32;;;8036:12;;;;8115:15;;;8112:35;;;8143:1;8140;8133:12;8112:35;8179:2;8171:6;8167:15;8191:142;8207:6;8202:3;8199:15;8191:142;;;8273:17;;8261:30;;8311:12;;;;8224;;8191:142;;8367:2008;8435:5;8488:3;8481:4;8473:6;8469:17;8465:27;8455:55;;8506:1;8503;8496:12;8455:55;8542:6;8529:20;8568:4;8592:67;8608:50;8655:2;8608:50;:::i;8592:67::-;8693:15;;;8779:1;8775:10;;;;8763:23;;8759:32;;;8724:12;;;;8803:15;;;8800:35;;;8831:1;8828;8821:12;8800:35;8867:2;8859:6;8855:15;8879:1467;8895:6;8890:3;8887:15;8879:1467;;;8981:3;8968:17;-1:-1:-1;;;;;9004:11:66;9001:35;8998:125;;;9077:1;9106:2;9102;9095:14;8998:125;9146:24;;9205:2;9197:11;;9193:21;-1:-1:-1;9183:119:66;;9256:1;9285:2;9281;9274:14;9183:119;9346:2;9342;9338:11;9325:25;9373:4;9403:67;9419:50;9466:2;9419:50;:::i;9403:67::-;9514:17;;;9612:1;9608:10;;;;9600:19;;9596:28;;;9553:14;;;;9640:17;;;9637:107;;;9698:1;9727:2;9723;9716:14;9637:107;9770:11;;;;9794:479;9812:8;9805:5;9802:19;9794:479;;;9904:2;9896:5;9891:3;9887:15;9883:24;9880:130;;;9956:1;9989:2;9985;9978:14;9880:130;10040:22;;:::i;:::-;10093:19;;10079:34;;10166:14;;;10153:28;10137:14;;;10130:52;10199:20;;9833:14;;;;10245;;;;9794:479;;;10286:18;;-1:-1:-1;;;10324:12:66;;;;-1:-1:-1;8912:12:66;;8879:1467;;10380:957;10441:5;10489:4;10477:9;10472:3;10468:19;10464:30;10461:50;;;10507:1;10504;10497:12;10461:50;10529:22;;:::i;:::-;10520:31;;10587:9;10574:23;-1:-1:-1;;;;;10657:2:66;10649:6;10646:14;10643:34;;;10673:1;10670;10663:12;10643:34;10696:22;;;;10748:4;10734:12;;;10730:23;10727:43;;;10766:1;10763;10756:12;10727:43;10794:22;;:::i;:::-;10854:2;10841:16;10832:7;10825:33;10913:2;10909;10905:11;10892:25;10887:2;10878:7;10874:16;10867:51;10964:4;10960:2;10956:13;10943:27;10995:2;10985:8;10982:16;10979:36;;;11011:1;11008;11001:12;10979:36;11051:40;11087:3;11076:8;11072:2;11068:17;11051:40;:::i;:::-;11044:4;11031:18;;11024:68;-1:-1:-1;11101:22:66;;11176:2;11161:18;;11148:32;;-1:-1:-1;11192:16:66;;;11189:36;;;11221:1;11218;11211:12;11189:36;;11257:73;11326:3;11315:8;11304:9;11300:24;11257:73;:::i;:::-;11252:2;11245:5;11241:14;11234:97;;10380:957;;;;:::o;11342:2128::-;11486:6;11494;11538:9;11529:7;11525:23;11568:3;11564:2;11560:12;11557:32;;;11585:1;11582;11575:12;11557:32;11608:6;11634:2;11630;11626:11;11623:31;;;11650:1;11647;11640:12;11623:31;11676:22;;:::i;:::-;11663:35;;11734:9;11721:23;11714:5;11707:38;11764:2;11826;11815:9;11811:18;11798:32;11793:2;11786:5;11782:14;11775:56;11863:69;11924:7;11919:2;11908:9;11904:18;11863:69;:::i;:::-;11858:2;11851:5;11847:14;11840:93;11967:70;12029:7;12023:3;12012:9;12008:19;11967:70;:::i;:::-;11960:4;11949:16;;11942:96;11953:5;;-1:-1:-1;12098:18:66;;12085:32;;-1:-1:-1;;;;;12136:18:66;12166:14;;;12163:34;;;12193:1;12190;12183:12;12163:34;12216:22;;;;12272:2;12254:16;;;12250:25;12247:45;;;12288:1;12285;12278:12;12247:45;12316:22;;:::i;:::-;12376:2;12363:16;12404:2;12394:8;12391:16;12388:36;;;12420:1;12417;12410:12;12388:36;12443:17;;12494:6;12476:16;;;12472:29;12469:49;;;12514:1;12511;12504:12;12469:49;12542:22;;:::i;:::-;12602:2;12589:16;12630:2;12620:8;12617:16;12614:36;;;12646:1;12643;12636:12;12614:36;12675:62;12729:7;12718:8;12714:2;12710:17;12675:62;:::i;:::-;12666:7;12659:79;;12772:52;12816:7;12811:2;12807;12803:11;12772:52;:::i;:::-;12767:2;12758:7;12754:16;12747:78;12871:3;12867:2;12863:12;12850:26;12901:2;12891:8;12888:16;12885:36;;;12917:1;12914;12907:12;12885:36;12955:56;13003:7;12992:8;12988:2;12984:17;12955:56;:::i;:::-;12950:2;12941:7;12937:16;12930:82;;13058:3;13054:2;13050:12;13037:26;13088:2;13078:8;13075:16;13072:36;;;13104:1;13101;13094:12;13072:36;13144:70;13206:7;13195:8;13191:2;13187:17;13144:70;:::i;:::-;13137:4;13124:18;;13117:98;-1:-1:-1;13224:24:66;;-1:-1:-1;13286:11:66;;;13273:25;13310:16;;;13307:36;;;13339:1;13336;13329:12;13307:36;13377:60;13429:7;13418:8;13414:2;13410:17;13377:60;:::i;:::-;13372:2;13363:7;13359:16;13352:86;;13457:7;13447:17;;;;;;11342:2128;;;;;:::o;13699:426::-;13784:12;;13772:25;;13846:4;13835:16;;;13829:23;13813:14;;;13806:47;13899:4;13888:16;;;13882:23;13563:12;;13969:14;;;13551:25;13614:16;;;13608:23;13592:14;;;13585:47;13670:16;;13664:23;13648:14;;;13641:47;-1:-1:-1;14032:4:66;14021:16;14015:23;13563:12;;14113:4;14104:14;;13551:25;13625:4;13614:16;;13608:23;13592:14;;;13585:47;13681:4;13670:16;13664:23;13648:14;;;;13641:47;13699:426::o;14520:458::-;14830:3;14815:19;;14843:56;14819:9;14881:6;14843:56;:::i;:::-;14213:12;;14967:3;14952:19;;14201:25;14275:4;14264:16;;;14258:23;14242:14;;;14235:47;14328:4;14317:16;;;14311:23;14366:19;;14350:14;;;14343:43;14422:23;;;14416:30;14402:12;;;14395:52;14484:23;14478:30;14463:13;;;14456:53;14908:64;14130:385;14983:539;15069:6;15077;15130:2;15118:9;15109:7;15105:23;15101:32;15098:52;;;15146:1;15143;15136:12;15098:52;15186:9;15173:23;-1:-1:-1;;;;;15256:2:66;15248:6;15245:14;15242:34;;;15272:1;15269;15262:12;15242:34;15295:49;15336:7;15327:6;15316:9;15312:22;15295:49;:::i;:::-;15285:59;;15397:2;15386:9;15382:18;15369:32;15353:48;;15426:2;15416:8;15413:16;15410:36;;;15442:1;15439;15432:12;15410:36;;15465:51;15508:7;15497:8;15486:9;15482:24;15465:51;:::i;:::-;15455:61;;;14983:539;;;;;:::o;15527:250::-;15612:1;15622:113;15636:6;15633:1;15630:13;15622:113;;;15712:11;;;15706:18;15693:11;;;15686:39;15658:2;15651:10;15622:113;;;-1:-1:-1;;15769:1:66;15751:16;;15744:27;15527:250::o;15782:270::-;15823:3;15861:5;15855:12;15888:6;15883:3;15876:19;15904:76;15973:6;15966:4;15961:3;15957:14;15950:4;15943:5;15939:16;15904:76;:::i;:::-;16034:2;16013:15;-1:-1:-1;;16009:29:66;16000:39;;;;16041:4;15996:50;;15782:270;-1:-1:-1;;15782:270:66:o;16057:391::-;16304:3;16293:9;16286:22;16267:4;16325:45;16365:3;16354:9;16350:19;16342:6;16325:45;:::i;:::-;16317:53;;16379:63;16438:2;16427:9;16423:18;16415:6;14213:12;;14201:25;;14275:4;14264:16;;;14258:23;14242:14;;;14235:47;14328:4;14317:16;;;14311:23;14366:19;;14350:14;;;14343:43;14422:23;;;14416:30;14411:2;14402:12;;14395:52;14484:23;14478:30;14472:3;14463:13;;;14456:53;14130:385;16837:352;16917:5;16965:4;16953:9;16948:3;16944:19;16940:30;16937:50;;;16983:1;16980;16973:12;16937:50;17005:22;;:::i;:::-;16996:31;;17056:9;17050:16;17043:5;17036:31;17120:2;17109:9;17105:18;17099:25;17094:2;17087:5;17083:14;17076:49;17178:2;17167:9;17163:18;17157:25;17152:2;17145:5;17141:14;17134:49;16837:352;;;;:::o;17194:514::-;17271:5;17319:6;17307:9;17302:3;17298:19;17294:32;17291:52;;;17339:1;17336;17329:12;17291:52;17361:22;;:::i;:::-;17352:31;;17412:9;17406:16;17399:5;17392:31;17476:2;17465:9;17461:18;17455:25;17450:2;17443:5;17439:14;17432:49;17513:76;17585:3;17580:2;17569:9;17565:18;17513:76;:::i;:::-;17508:2;17501:5;17497:14;17490:100;17624:77;17697:3;17691;17680:9;17676:19;17624:77;:::i;:::-;17617:4;17610:5;17606:16;17599:103;17194:514;;;;:::o;17713:275::-;17821:6;17874:3;17862:9;17853:7;17849:23;17845:33;17842:53;;;17891:1;17888;17881:12;17842:53;17914:68;17974:7;17963:9;17914:68;:::i;17993:441::-;18046:5;18099:3;18092:4;18084:6;18080:17;18076:27;18066:55;;18117:1;18114;18107:12;18066:55;18146:6;18140:13;18177:48;18193:31;18221:2;18193:31;:::i;18177:48::-;18250:2;18241:7;18234:19;18296:3;18289:4;18284:2;18276:6;18272:15;18268:26;18265:35;18262:55;;;18313:1;18310;18303:12;18262:55;18326:77;18400:2;18393:4;18384:7;18380:18;18373:4;18365:6;18361:17;18326:77;:::i;18439:1439::-;18508:5;18561:3;18554:4;18546:6;18542:17;18538:27;18528:55;;18579:1;18576;18569:12;18528:55;18608:6;18602:13;18634:4;18658:67;18674:50;18721:2;18674:50;:::i;18658:67::-;18759:15;;;18845:1;18841:10;;;;18829:23;;18825:32;;;18790:12;;;;18869:15;;;18866:35;;;18897:1;18894;18887:12;18866:35;18933:2;18925:6;18921:15;18945:904;18961:6;18956:3;18953:15;18945:904;;;19040:3;19034:10;-1:-1:-1;;;;;19117:2:66;19104:11;19101:19;19098:109;;;19161:1;19190:2;19186;19179:14;19098:109;19230:24;;;;19277:4;19305:12;;;-1:-1:-1;;19301:26:66;19297:35;-1:-1:-1;19294:125:66;;;19373:1;19402:2;19398;19391:14;19294:125;19445:22;;:::i;:::-;19510:2;19506;19502:11;19496:18;19543:2;19533:8;19530:16;19527:106;;;19587:1;19616:2;19612;19605:14;19527:106;19660:60;19716:3;19711:2;19700:8;19696:2;19692:17;19688:26;19660:60;:::i;:::-;19646:75;;-1:-1:-1;19763:11:66;;19757:18;19741:14;;;19734:42;-1:-1:-1;19789:18:66;;19827:12;;;;18978;;18945:904;;19883:2271;19957:5;20005:4;19993:9;19988:3;19984:19;19980:30;19977:50;;;20023:1;20020;20013:12;19977:50;20045:22;;:::i;:::-;20036:31;;20096:9;20090:16;-1:-1:-1;;;;;20166:2:66;20158:6;20155:14;20152:34;;;20182:1;20179;20172:12;20152:34;20205:22;;;;20257:4;20243:12;;;20239:23;20236:43;;;20275:1;20272;20265:12;20236:43;20303:22;;:::i;:::-;20356:2;20350:9;20384:2;20374:8;20371:16;20368:36;;;20400:1;20397;20390:12;20368:36;20423:17;;20471:4;20463:13;;20459:23;-1:-1:-1;20449:51:66;;20496:1;20493;20486:12;20449:51;20525:2;20519:9;20547:4;20571:67;20587:50;20634:2;20587:50;:::i;20571:67::-;20672:15;;;20754:1;20750:10;;;;20742:19;;20738:28;;;20703:12;;;;20778:15;;;20775:35;;;20806:1;20803;20796:12;20775:35;20838:2;20834;20830:11;20850:924;20866:6;20861:3;20858:15;20850:924;;;20945:3;20939:10;20981:2;20968:11;20965:19;20962:109;;;21025:1;21054:2;21050;21043:14;20962:109;21094:20;;21162:4;21138:12;;;-1:-1:-1;;21134:26:66;21130:37;21127:127;;;21208:1;21237:2;21233;21226:14;21127:127;21282:22;;:::i;:::-;21346:2;21342;21338:11;21332:18;21363:32;21387:7;21363:32;:::i;:::-;21408:24;;21475:4;21467:13;;21461:20;21497:16;;;21494:106;;;21554:1;21583:2;21579;21572:14;21494:106;21638:60;21694:3;21689:2;21678:8;21674:2;21670:17;21666:26;21638:60;:::i;:::-;21620:16;;;21613:86;-1:-1:-1;21712:20:66;;-1:-1:-1;21752:12:66;;;;20883;;20850:924;;;20854:3;21799:5;21790:7;21783:22;;;21853:2;21849;21845:11;21839:18;21834:2;21825:7;21821:16;21814:44;21908:4;21904:2;21900:13;21894:20;21887:4;21878:7;21874:18;21867:48;21938:7;21931:5;21924:22;21992:2;21981:9;21977:18;21971:25;21955:41;;22021:2;22011:8;22008:16;22005:36;;;22037:1;22034;22027:12;22005:36;22073:74;22143:3;22132:8;22121:9;22117:24;22073:74;:::i;22159:636::-;22229:5;22277:6;22265:9;22260:3;22256:19;22252:32;22249:52;;;22297:1;22294;22287:12;22249:52;22319:22;;:::i;:::-;22310:31;;22370:9;22364:16;22357:5;22350:31;22434:2;22423:9;22419:18;22413:25;22408:2;22401:5;22397:14;22390:49;22492:2;22481:9;22477:18;22471:25;22466:2;22459:5;22455:14;22448:49;22529:76;22601:3;22596:2;22585:9;22581:18;22529:76;:::i;:::-;22524:2;22517:5;22513:14;22506:100;22661:3;22650:9;22646:19;22640:26;22633:4;22626:5;22622:16;22615:52;22722:4;22711:9;22707:20;22701:27;22694:4;22687:5;22683:16;22676:53;22783:3;22772:9;22768:19;22762:26;22756:3;22749:5;22745:15;22738:51;22159:636;;;;:::o;22800:666::-;22865:5;22918:3;22911:4;22903:6;22899:17;22895:27;22885:55;;22936:1;22933;22926:12;22885:55;22965:6;22959:13;22991:4;23015:67;23031:50;23078:2;23031:50;:::i;23015:67::-;23116:15;;;23202:1;23198:10;;;;23186:23;;23182:32;;;23147:12;;;;23226:15;;;23223:35;;;23254:1;23251;23244:12;23223:35;23290:2;23282:6;23278:15;23302:135;23318:6;23313:3;23310:15;23302:135;;;23384:10;;23372:23;;23415:12;;;;23335;;23302:135;;23471:1984;23550:5;23603:3;23596:4;23588:6;23584:17;23580:27;23570:55;;23621:1;23618;23611:12;23570:55;23650:6;23644:13;23676:4;23700:67;23716:50;23763:2;23716:50;:::i;23700:67::-;23801:15;;;23887:1;23883:10;;;;23871:23;;23867:32;;;23832:12;;;;23911:15;;;23908:35;;;23939:1;23936;23929:12;23908:35;23975:2;23967:6;23963:15;23987:1439;24003:6;23998:3;23995:15;23987:1439;;;24082:3;24076:10;-1:-1:-1;;;;;24105:11:66;24102:35;24099:125;;;24178:1;24207:2;24203;24196:14;24099:125;24247:24;;24306:2;24298:11;;24294:21;-1:-1:-1;24284:119:66;;24357:1;24386:2;24382;24375:14;24284:119;24440:2;24436;24432:11;24426:18;24467:4;24497:67;24513:50;24560:2;24513:50;:::i;24497:67::-;24608:17;;;24706:1;24702:10;;;;24694:19;;24690:28;;;24647:14;;;;24734:17;;;24731:107;;;24792:1;24821:2;24817;24810:14;24731:107;24864:11;;;;24888:465;24906:8;24899:5;24896:19;24888:465;;;24998:2;24990:5;24985:3;24981:15;24977:24;24974:130;;;25050:1;25083:2;25079;25072:14;24974:130;25134:22;;:::i;:::-;25187:12;;25173:27;;25246:14;;;25240:21;25224:14;;;25217:45;25279:20;;24927:14;;;;25325;;;;24888:465;;;25366:18;;-1:-1:-1;;;25404:12:66;;;;-1:-1:-1;24020:12:66;;23987:1439;;25460:955;25532:5;25580:4;25568:9;25563:3;25559:19;25555:30;25552:50;;;25598:1;25595;25588:12;25552:50;25620:22;;:::i;:::-;25611:31;;25671:9;25665:16;-1:-1:-1;;;;;25741:2:66;25733:6;25730:14;25727:34;;;25757:1;25754;25747:12;25727:34;25780:22;;;;25832:4;25818:12;;;25814:23;25811:43;;;25850:1;25847;25840:12;25811:43;25878:22;;:::i;:::-;25931:2;25925:9;25916:7;25909:26;25983:2;25979;25975:11;25969:18;25964:2;25955:7;25951:16;25944:44;26027:4;26023:2;26019:13;26013:20;26058:2;26048:8;26045:16;26042:36;;;26074:1;26071;26064:12;26042:36;26114:51;26161:3;26150:8;26146:2;26142:17;26114:51;:::i;:::-;26107:4;26094:18;;26087:79;-1:-1:-1;26175:22:66;;26243:2;26228:18;;26222:25;;-1:-1:-1;26259:16:66;;;26256:36;;;26288:1;26285;26278:12;26256:36;;26324:84;26404:3;26393:8;26382:9;26378:24;26324:84;:::i;26420:1377::-;26566:6;26574;26627:2;26615:9;26606:7;26602:23;26598:32;26595:52;;;26643:1;26640;26633:12;26595:52;26676:9;26670:16;-1:-1:-1;;;;;26746:2:66;26738:6;26735:14;26732:34;;;26762:1;26759;26752:12;26732:34;26785:22;;;;26841:6;26823:16;;;26819:29;26816:49;;;26861:1;26858;26851:12;26816:49;26887:22;;:::i;:::-;26940:2;26934:9;26968:2;26958:8;26955:16;26952:36;;;26984:1;26981;26974:12;26952:36;27011:73;27076:7;27065:8;27061:2;27057:17;27011:73;:::i;:::-;27004:5;26997:88;;27117:63;27172:7;27167:2;27163;27159:11;27117:63;:::i;:::-;27112:2;27105:5;27101:14;27094:87;27220:3;27216:2;27212:12;27206:19;27250:2;27240:8;27237:16;27234:36;;;27266:1;27263;27256:12;27234:36;27302:67;27361:7;27350:8;27346:2;27342:17;27302:67;:::i;:::-;27297:2;27290:5;27286:14;27279:91;;27409:3;27405:2;27401:12;27395:19;27439:2;27429:8;27426:16;27423:36;;;27455:1;27452;27445:12;27423:36;27493:81;27566:7;27555:8;27551:2;27547:17;27493:81;:::i;:::-;27486:4;27475:16;;27468:107;-1:-1:-1;27645:2:66;27630:18;;27624:25;27479:5;;-1:-1:-1;27624:25:66;-1:-1:-1;27661:16:66;;;27658:36;;;27690:1;27687;27680:12;27658:36;;27713:78;27783:7;27772:8;27761:9;27757:24;27713:78;:::i;27802:849::-;27859:3;27897:5;27891:12;27924:6;27919:3;27912:19;27950:4;27991:2;27986:3;27982:12;28016:11;28043;28036:18;;28093:6;28090:1;28086:14;28079:5;28075:26;28063:38;;28135:2;28128:5;28124:14;28156:1;28166:459;28180:6;28177:1;28174:13;28166:459;;;28251:5;28245:4;28241:16;28236:3;28229:29;28287:6;28281:13;28317:4;28360:2;28354:9;28389:2;28383:4;28376:16;28419:45;28460:2;28454:4;28450:13;28436:12;28419:45;:::i;:::-;28505:11;;;28499:18;28484:13;;;28477:41;;;;-1:-1:-1;28603:12:66;;;;28405:59;-1:-1:-1;28568:15:66;;;;28202:1;28195:9;28166:459;;;-1:-1:-1;28641:4:66;;27802:849;-1:-1:-1;;;;;;;27802:849:66:o;28656:510::-;28740:5;28734:12;28729:3;28722:25;28796:4;28789:5;28785:16;28779:23;28772:4;28767:3;28763:14;28756:47;28852:4;28845:5;28841:16;28835:23;28828:4;28823:3;28819:14;28812:47;28905:4;28898:5;28894:16;28888:23;28920:70;28984:4;28979:3;28975:14;28961:12;13563;;13551:25;;13625:4;13614:16;;;13608:23;13592:14;;;13585:47;13681:4;13670:16;;;13664:23;13648:14;;13641:47;13475:219;28920:70;;29039:4;29032:5;29028:16;29022:23;29015:4;29010:3;29006:14;28999:47;29095:4;29088:5;29084:16;29078:23;29071:4;29066:3;29062:14;29055:47;29153:4;29146:5;29142:16;29136:23;29127:6;29122:3;29118:16;29111:49;28656:510;;:::o;29171:435::-;29224:3;29262:5;29256:12;29289:6;29284:3;29277:19;29315:4;29344:2;29339:3;29335:12;29328:19;;29381:2;29374:5;29370:14;29402:1;29412:169;29426:6;29423:1;29420:13;29412:169;;;29487:13;;29475:26;;29521:12;;;;29556:15;;;;29448:1;29441:9;29412:169;;;-1:-1:-1;29597:3:66;;29171:435;-1:-1:-1;;;;;29171:435:66:o;29611:1183::-;29678:3;29716:5;29710:12;29743:6;29738:3;29731:19;29769:4;29810:2;29805:3;29801:12;29835:11;29862;29855:18;;29912:6;29909:1;29905:14;29898:5;29894:26;29882:38;;29954:2;29947:5;29943:14;29975:1;29996;30006:762;30022:6;30017:3;30014:15;30006:762;;;30087:16;;;30075:29;;30127:13;;30199:9;;30221:22;;;30307:11;;;;30265:13;;;;30342:1;30356:306;30372:8;30367:3;30364:17;30356:306;;;30445:15;;30491:9;;30477:24;;30547:11;;30541:18;30525:14;;;30518:42;30631:17;;;;30597:4;30586:16;;;;30400:1;30391:11;30356:306;;;-1:-1:-1;;30746:12:66;;;;30683:5;-1:-1:-1;;30711:15:66;;;;30048:1;30039:11;30006:762;;;-1:-1:-1;30784:4:66;;29611:1183;-1:-1:-1;;;;;;;;29611:1183:66:o;30799:603::-;30856:3;30900:5;30894:12;30927:4;30922:3;30915:17;30970:12;30964:19;30957:4;30952:3;30948:14;30941:43;31040:4;31026:12;31022:23;31016:30;31009:4;31004:3;31000:14;30993:54;31102:4;31088:12;31084:23;31078:30;31056:52;;31139:4;31133:3;31128;31124:13;31117:27;31166:47;31208:3;31203;31199:13;31183:14;31166:47;:::i;:::-;31153:60;;31261:4;31254:5;31250:16;31244:23;31310:3;31303:5;31299:15;31292:4;31287:3;31283:14;31276:39;31331:65;31390:5;31374:14;31331:65;:::i;31407:2758::-;31679:4;31708:3;31720:56;31766:9;31758:6;31720:56;:::i;:::-;31813:2;31807:3;31796:9;31792:19;31785:31;31851:6;31845:13;31877:4;31917:2;31912;31901:9;31897:18;31890:30;31957:12;31951:19;31929:41;;31989:6;32032:2;32026:3;32015:9;32011:19;32004:31;32072:14;32066:21;32124:2;32118:3;32107:9;32103:19;32096:31;32165:3;32154:9;32150:19;32206:14;32200:21;32258:4;32252:3;32241:9;32237:19;32230:33;32283:6;32318:14;32312:21;32357:6;32349;32342:22;32383:3;32373:13;;32417:2;32406:9;32402:18;32395:25;;32479:2;32469:6;32466:1;32462:14;32451:9;32447:30;32443:39;32429:53;;32501:4;32548:2;32532:14;32528:23;32514:37;;32569:1;32579:454;32593:6;32590:1;32587:13;32579:454;;;32658:22;;;-1:-1:-1;;32654:37:66;32642:50;;32715:13;;32760:9;;-1:-1:-1;;;;;;32756:31:66;32741:47;;32829:11;;32823:18;32861:15;;;32854:27;;;32904:49;32937:15;;;32823:18;32904:49;:::i;:::-;32894:59;-1:-1:-1;;32976:15:66;;;;33011:12;;;;32615:1;32608:9;32579:454;;;-1:-1:-1;33076:23:66;;;33070:30;33064:3;33049:19;;33042:59;33144:23;;;33138:30;33132:3;33117:19;;33110:59;33206:23;;;33200:30;33271:22;;;-1:-1:-1;;33267:37:66;33261:3;33246:19;;33239:66;33200:30;33325:56;33275:6;33200:30;33325:56;:::i;:::-;33314:67;;33436:2;33422:12;33418:21;33412:28;33390:50;;33449:66;33511:2;33500:9;33496:18;33480:14;33449:66;:::i;:::-;33570:2;33556:12;33552:21;33546:28;33524:50;;33597:3;33593:8;33583:18;;33663:2;33651:9;33646:3;33642:19;33638:28;33632:3;33621:9;33617:19;33610:57;33690:49;33735:3;33719:14;33690:49;:::i;:::-;33676:63;;33794:4;33780:12;33776:23;33770:30;33748:52;;33865:2;33853:9;33845:6;33841:22;33837:31;33831:3;33820:9;33816:19;33809:60;33891:66;33950:6;33934:14;33891:66;:::i;:::-;33878:79;;34006:2;33998:6;33994:15;33988:22;33966:44;;;;;;;;;;34081:3;34077:8;34065:9;34058:5;34054:21;34050:36;34041:6;34030:9;34026:22;34019:68;34104:55;34153:5;34137:14;34104:55;:::i;34170:900::-;34323:6;34331;34375:9;34366:7;34362:23;34405:3;34401:2;34397:12;34394:32;;;34422:1;34419;34412:12;34394:32;34445:68;34505:7;34494:9;34445:68;:::i;:::-;34435:78;-1:-1:-1;34548:4:66;-1:-1:-1;;34529:17:66;;34525:28;34522:48;;;34566:1;34563;34556:12;34522:48;34592:22;;:::i;:::-;34658:3;34643:19;;34637:26;34623:41;;34717:3;34702:19;;34696:26;34691:2;34680:14;;34673:50;34758:4;-1:-1:-1;;34739:17:66;;34735:28;34732:48;;;34776:1;34773;34766:12;34732:48;34804:22;;:::i;:::-;34789:37;;34872:3;34861:9;34857:19;34851:26;34842:7;34835:43;34933:3;34922:9;34918:19;34912:26;34907:2;34898:7;34894:16;34887:52;34994:3;34983:9;34979:19;34973:26;34968:2;34959:7;34955:16;34948:52;35032:7;35027:2;35020:5;35016:14;35009:31;35059:5;35049:15;;;;34170:900;;;;;:::o;35075:285::-;35285:3;35270:19;;35298:56;35274:9;35336:6;35298:56;:::i;36541:127::-;36602:10;36597:3;36593:20;36590:1;36583:31;36633:4;36630:1;36623:15;36657:4;36654:1;36647:15;36673:127;36734:10;36729:3;36725:20;36722:1;36715:31;36765:4;36762:1;36755:15;36789:4;36786:1;36779:15;36805:135;36844:3;36865:17;;;36862:43;;36885:18;;:::i;:::-;-1:-1:-1;36932:1:66;36921:13;;36805:135::o;39040:168::-;39113:9;;;39144;;39161:15;;;39155:22;;39141:37;39131:71;;39182:18;;:::i;39562:384::-;-1:-1:-1;;;;;;39747:33:66;;39735:46;;39804:13;;39717:3;;39826:74;39804:13;39889:1;39880:11;;39873:4;39861:17;;39826:74;:::i;:::-;39920:16;;;;39938:1;39916:24;;39562:384;-1:-1:-1;;;39562:384:66:o;40310:127::-;40371:10;40366:3;40362:20;40359:1;40352:31;40402:4;40399:1;40392:15;40426:4;40423:1;40416:15;40442:120;40482:1;40508;40498:35;;40513:18;;:::i;:::-;-1:-1:-1;40547:9:66;;40442:120::o;40567:125::-;40632:9;;;40653:10;;;40650:36;;;40666:18;;:::i;41308:492::-;41483:3;41521:6;41515:13;41537:66;41596:6;41591:3;41584:4;41576:6;41572:17;41537:66;:::i;:::-;41666:13;;41625:16;;;;41688:70;41666:13;41625:16;41735:4;41723:17;;41688:70;:::i;:::-;41774:20;;41308:492;-1:-1:-1;;;;41308:492:66:o;42114:1393::-;42450:4;42498:3;42487:9;42483:19;42529:6;42518:9;42511:25;42555:2;42593:3;42588:2;42577:9;42573:18;42566:31;42617:6;42652;42646:13;42683:6;42675;42668:22;42721:3;42710:9;42706:19;42699:26;;42760:2;42752:6;42748:15;42734:29;;42781:1;42791:169;42805:6;42802:1;42799:13;42791:169;;;42866:13;;42854:26;;42935:15;;;;42900:12;;;;42827:1;42820:9;42791:169;;;-1:-1:-1;;42996:19:66;;;42991:2;42976:18;;42969:47;43066:13;;43088:21;;;43127:12;;;;-1:-1:-1;43164:15:66;;;;43199:1;43209:225;43225:8;43220:3;43217:17;43209:225;;;43280:64;43338:5;43327:8;43321:15;13563:12;;13551:25;;13625:4;13614:16;;;13608:23;13592:14;;;13585:47;13681:4;13670:16;;;13664:23;13648:14;;13641:47;13475:219;43280:64;43377:4;43366:16;;;;;43407:17;;;;43253:1;43244:11;43209:225;;;-1:-1:-1;;;;43487:4:66;43472:20;;;;43465:36;;;;43451:5;42114:1393;-1:-1:-1;;;;42114:1393:66:o;43512:277::-;43579:6;43632:2;43620:9;43611:7;43607:23;43603:32;43600:52;;;43648:1;43645;43638:12;43600:52;43680:9;43674:16;43733:5;43726:13;43719:21;43712:5;43709:32;43699:60;;43755:1;43752;43745:12;44140:128;44207:9;;;44228:11;;;44225:37;;;44242:18;;:::i;44273:422::-;44362:1;44405:5;44362:1;44419:270;44440:7;44430:8;44427:21;44419:270;;;44499:4;44495:1;44491:6;44487:17;44481:4;44478:27;44475:53;;;44508:18;;:::i;:::-;44558:7;44548:8;44544:22;44541:55;;;44578:16;;;;44541:55;44657:22;;;;44617:15;;;;44419:270;;;44423:3;44273:422;;;;;:::o;44700:806::-;44749:5;44779:8;44769:80;;-1:-1:-1;44820:1:66;44834:5;;44769:80;44868:4;44858:76;;-1:-1:-1;44905:1:66;44919:5;;44858:76;44950:4;44968:1;44963:59;;;;45036:1;45031:130;;;;44943:218;;44963:59;44993:1;44984:10;;45007:5;;;45031:130;45068:3;45058:8;45055:17;45052:43;;;45075:18;;:::i;:::-;-1:-1:-1;;45131:1:66;45117:16;;45146:5;;44943:218;;45245:2;45235:8;45232:16;45226:3;45220:4;45217:13;45213:36;45207:2;45197:8;45194:16;45189:2;45183:4;45180:12;45176:35;45173:77;45170:159;;;-1:-1:-1;45282:19:66;;;45314:5;;45170:159;45361:34;45386:8;45380:4;45361:34;:::i;:::-;45431:6;45427:1;45423:6;45419:19;45410:7;45407:32;45404:58;;;45442:18;;:::i;:::-;45480:20;;44700:806;-1:-1:-1;;;44700:806:66:o;45511:131::-;45571:5;45600:36;45627:8;45621:4;45600:36;:::i;45647:136::-;45686:3;45714:5;45704:39;;45723:18;;:::i;:::-;-1:-1:-1;;;45759:18:66;;45647:136::o;46624:385::-;46838:3;46833;46829:13;46820:6;46815:3;46811:16;46807:36;46802:3;46795:49;46777:3;46873:6;46867:13;46889:74;46956:6;46952:1;46947:3;46943:11;46936:4;46928:6;46924:17;46889:74;:::i;:::-;46983:16;;;;47001:1;46979:24;;46624:385;-1:-1:-1;;;46624:385:66:o;47014:127::-;47075:10;47070:3;47066:20;47063:1;47056:31;47106:4;47103:1;47096:15;47130:4;47127:1;47120:15;48262:405;48417:3;48455:6;48449:13;48471:66;48530:6;48525:3;48518:4;48510:6;48506:17;48471:66;:::i;:::-;-1:-1:-1;;;;;;48598:33:66;;;;48559:16;;;;48584:48;;;48659:1;48648:13;;48262:405;-1:-1:-1;;48262:405:66:o;48859:413::-;49014:3;49052:6;49046:13;49068:66;49127:6;49122:3;49115:4;49107:6;49103:17;49068:66;:::i;:::-;-1:-1:-1;;;;;;49195:41:66;;;;49156:16;;;;49181:56;;;49264:1;49253:13;;48859:413;-1:-1:-1;;48859:413:66:o;49277:157::-;49307:1;49341:4;49338:1;49334:12;49365:3;49355:37;;49372:18;;:::i;:::-;49424:3;49417:4;49414:1;49410:12;49406:22;49401:27;;;49277:157;;;;:::o;49439:180::-;-1:-1:-1;;;;;49544:10:66;;;49556;;;49540:27;;49579:11;;;49576:37;;;49593:18;;:::i;49624:148::-;49712:4;49691:12;;;49705;;;49687:31;;49730:13;;49727:39;;;49746:18;;:::i;51285:112::-;51317:1;51343;51333:35;;51348:18;;:::i;:::-;-1:-1:-1;51382:9:66;;51285:112::o", + "linkReferences": { + "lib/solidity-merkle-trees/src/MerkleMountainRange.sol": { + "MerkleMountainRange": [ + { + "start": 3763, + "length": 20 + } + ] + } + } + }, + "methodIdentifiers": { + "AURA_CONSENSUS_ID()": "4e9fdbec", + "ISMP_CONSENSUS_ID()": "babb3118", + "MMR_ROOT_PAYLOAD_ID()": "af8b91d6", + "SLOT_DURATION()": "905c0511", + "verifyConsensus((uint256,uint256,(uint256,uint256,bytes32),(uint256,uint256,bytes32)),(((((bytes2,bytes)[],uint256,uint256),(bytes,uint256)[]),(uint256,uint256,bytes32,(uint256,uint256,bytes32),bytes32,uint256,uint256),bytes32[],(uint256,bytes32)[][]),((uint256,uint256,bytes),(uint256,bytes32)[][])))": "5e399aea", + "verifyConsensus(bytes,bytes)": "7d755598" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"paraId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AURA_CONSENSUS_ID\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ISMP_CONSENSUS_ID\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MMR_ROOT_PAYLOAD_ID\",\"outputs\":[{\"internalType\":\"bytes2\",\"name\":\"\",\"type\":\"bytes2\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLOT_DURATION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"latestHeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"beefyActivationBlock\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"len\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"internalType\":\"struct AuthoritySetCommitment\",\"name\":\"currentAuthoritySet\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"len\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"internalType\":\"struct AuthoritySetCommitment\",\"name\":\"nextAuthoritySet\",\"type\":\"tuple\"}],\"internalType\":\"struct BeefyConsensusState\",\"name\":\"trustedState\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes2\",\"name\":\"id\",\"type\":\"bytes2\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct Payload[]\",\"name\":\"payload\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"validatorSetId\",\"type\":\"uint256\"}],\"internalType\":\"struct Commitment\",\"name\":\"commitment\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"authorityIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct Vote[]\",\"name\":\"votes\",\"type\":\"tuple[]\"}],\"internalType\":\"struct SignedCommitment\",\"name\":\"signedCommitment\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"parentNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"len\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"internalType\":\"struct AuthoritySetCommitment\",\"name\":\"nextAuthoritySet\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"extra\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"kIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"leafIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct BeefyMmrLeaf\",\"name\":\"latestMmrLeaf\",\"type\":\"tuple\"},{\"internalType\":\"bytes32[]\",\"name\":\"mmrProof\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"k_index\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"internalType\":\"struct Node[][]\",\"name\":\"proof\",\"type\":\"tuple[][]\"}],\"internalType\":\"struct RelayChainProof\",\"name\":\"relay\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"header\",\"type\":\"bytes\"}],\"internalType\":\"struct Parachain\",\"name\":\"parachain\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"k_index\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"internalType\":\"struct Node[][]\",\"name\":\"proof\",\"type\":\"tuple[][]\"}],\"internalType\":\"struct ParachainProof\",\"name\":\"parachain\",\"type\":\"tuple\"}],\"internalType\":\"struct BeefyConsensusProof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"name\":\"verifyConsensus\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"latestHeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"beefyActivationBlock\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"len\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"internalType\":\"struct AuthoritySetCommitment\",\"name\":\"currentAuthoritySet\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"len\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"internalType\":\"struct AuthoritySetCommitment\",\"name\":\"nextAuthoritySet\",\"type\":\"tuple\"}],\"internalType\":\"struct BeefyConsensusState\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stateMachineId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"overlayRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"}],\"internalType\":\"struct StateCommitment\",\"name\":\"commitment\",\"type\":\"tuple\"}],\"internalType\":\"struct IntermediateState\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedState\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"encodedProof\",\"type\":\"bytes\"}],\"name\":\"verifyConsensus\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stateMachineId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"overlayRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"}],\"internalType\":\"struct StateCommitment\",\"name\":\"commitment\",\"type\":\"tuple\"}],\"internalType\":\"struct IntermediateState\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"AURA_CONSENSUS_ID()\":{\"notice\":\"ConsensusID for aura\"},\"ISMP_CONSENSUS_ID()\":{\"notice\":\"ChainId for ethereum\"},\"MMR_ROOT_PAYLOAD_ID()\":{\"notice\":\"The PayloadId for the mmr root.\"},\"SLOT_DURATION()\":{\"notice\":\"Slot duration in milliseconds\"},\"verifyConsensus((uint256,uint256,(uint256,uint256,bytes32),(uint256,uint256,bytes32)),(((((bytes2,bytes)[],uint256,uint256),(bytes,uint256)[]),(uint256,uint256,bytes32,(uint256,uint256,bytes32),bytes32,uint256,uint256),bytes32[],(uint256,bytes32)[][]),((uint256,uint256,bytes),(uint256,bytes32)[][])))\":{\"notice\":\"Verify the consensus proof and return the new trusted consensus state and any intermediate states finalized by this consensus proof.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/beefy/BeefyV1.sol\":\"BeefyV1\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":ismp-solidity/=lib/ismp-solidity/\",\":ismp/=lib/ismp-solidity/src/\",\":multichain-token/=lib/multichain-native-tokens/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solidity-merkle-trees/=lib/solidity-merkle-trees/src/\"]},\"sources\":{\"lib/ismp-solidity/src/interfaces/IConsensusClient.sol\":{\"keccak256\":\"0x2be700e8c2c819144057e55622f3dac0a50763332aae22fba3fe90a0571028da\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://e5b3e8d9a1e94252bcad307fb0ecb5e25401bcd01de9f5e5bab5fe2e53e167d8\",\"dweb:/ipfs/QmQf5Famyv2uBfmrKH2eGo8LvTBsaqjh3o8Fxry7EP9Xwb\"]},\"lib/ismp-solidity/src/interfaces/StateMachine.sol\":{\"keccak256\":\"0xe999a117a275624d4ca4c6bcdad53e0d365d5f1a556e46bf39cd695f5034e6ca\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0dc87653aa1ea514aaf3924d37139f72e3abdcd8876b3ad97396e4e11b5eb961\",\"dweb:/ipfs/QmYY1LyMVKAjvVXmcyotz9QVYycHkmUyduRRXGRT8Unqgo\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f\",\"dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x809bc3edb4bcbef8263fa616c1b60ee0004b50a8a1bfa164d8f57fd31f520c58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b93a1e39a4a19eba1600b92c96f435442db88cac91e315c8291547a2a7bcfe2\",\"dweb:/ipfs/QmTm34KVe6uZBZwq8dZDNWwPcm24qBJdxqL3rPxBJ4LrMv\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c\",\"dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7\",\"dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6\"]},\"lib/solidity-merkle-trees/src/MerkleMountainRange.sol\":{\"keccak256\":\"0x867f348fc7fce6f1e5cc5d41968389f7a832d99acddf9a544297e6ab27b9d823\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://27a91f509bc1d4b171d11722f30b35f5a8c456d42f07692865418a7fdb50a69a\",\"dweb:/ipfs/QmTKLoX2CV1Fo6nJo4f4ycdiUaw1y4FzpdqXHKkoVdG4BP\"]},\"lib/solidity-merkle-trees/src/MerkleMultiProof.sol\":{\"keccak256\":\"0x71a97fc3f97c50ac429f1109176f5eaffc34b4d1f291bb58da61baa8cdc348e0\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://f964717f4577e7081a23f6301058c461854151d156aae33beaa39588aba8ef8e\",\"dweb:/ipfs/QmbsadFursZrYUK6a3m55N5P5mZ2hWAtDpFsMZqoU2EV5L\"]},\"lib/solidity-merkle-trees/src/MerklePatricia.sol\":{\"keccak256\":\"0x452857f8e6c5b5878402bba1805bf4c3aef01c6c8f949dd72d20e07df8952bfc\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://c1007fe97775e37c9b6084e0ac98b249e7746ca531a04265291b0c57002f67b4\",\"dweb:/ipfs/QmYiqp6MHoGWgZAHvKjKBphczJY3t4zDuV9M4V1UzuC8ML\"]},\"lib/solidity-merkle-trees/src/trie/Bytes.sol\":{\"keccak256\":\"0x03ffca5abeb3f2665997059af505a8225f881c3d375dddfdef77e6d3aac67db8\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://d3a4e7d650143dbb64a61e492260e50053de9b89536d05c8007c43b25602f610\",\"dweb:/ipfs/QmbdyvPcHgcZsL4Sk2dS7s86qARePDyhcRPj5xtBko6e3t\"]},\"lib/solidity-merkle-trees/src/trie/Memory.sol\":{\"keccak256\":\"0x6d309ea24fca1313f1ac6ed57e31a94c44276006e233c46c7cf35e2ddcb88856\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://d2283a501d235201e1a18bb046ad713ce49dcaf287ae09d10025c786ab326648\",\"dweb:/ipfs/QmPNvWGoCTu8MwMco6qjfW4RcwrJJKJhxQtfCEbeyB9rx2\"]},\"lib/solidity-merkle-trees/src/trie/NibbleSlice.sol\":{\"keccak256\":\"0x284ad5142dfe57d2a67de0c3787469367821926488d04e532adc71108c48a07b\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://c1bf96fdff2fc0db8500261bc89f480cd09b38355750203f15f95f1bd3000392\",\"dweb:/ipfs/QmUd9iTH7U5pyezYqJVpET2es3uhjQmeGToEWywHUjXuNM\"]},\"lib/solidity-merkle-trees/src/trie/Node.sol\":{\"keccak256\":\"0x5e1b5dd46013b706ac86627c8a21a52a43ef151060479208abe0b6802e8c19b5\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://9b43ab483ff79c2fa9165b678b86a838bbf6fa60092cfe8e8d55023af0488c3d\",\"dweb:/ipfs/QmT8Sy3HoAc9xY6C6gPK3s5SsJJgYztGGUpin7g54GeRcB\"]},\"lib/solidity-merkle-trees/src/trie/Option.sol\":{\"keccak256\":\"0xd5b67f9fd3218d507923147eacc9d209f55ad211e9c7258a07d7bc2c4db386b0\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://6c134fcc01f84820fdea93e747b3f2a5ee47bac6eda2c43504e87201229cbc4f\",\"dweb:/ipfs/QmX1fQ32tyaR9EReyUbCfcSKGHzoEN88GPbwdwNAJQyVfL\"]},\"lib/solidity-merkle-trees/src/trie/TrieDB.sol\":{\"keccak256\":\"0xcf56409c430ebf1053edb199120c2961f0380b9fe93a36ccb5369e004dcafd64\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://5bdad30e72f8f29ba030db27881a08d63486544fb50abc99fa5a08902d7ad04a\",\"dweb:/ipfs/QmQAoC1G6SXdGzVuLUt6pDbnaWJyGcUzWwpVbrwN4eCmdn\"]},\"lib/solidity-merkle-trees/src/trie/ethereum/EthereumTrieDB.sol\":{\"keccak256\":\"0xc64596f6d1c23f153efe19c62f0f2631ba92e6ac0f67ca57d93c2c75af98b6cf\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://a95680e75f6ef869d81708f05e67bf6a34f6c4c0d91e189b57a314bdc1e61c03\",\"dweb:/ipfs/QmSuKZdDbjTGcUW6kVJ1Ghzb7zh3RdpdJpde5izk7fmZek\"]},\"lib/solidity-merkle-trees/src/trie/ethereum/RLPReader.sol\":{\"keccak256\":\"0xb8f4d1c02840086b3a9e81df93eebb120a40168681c119bee3f4c9849404538c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://96e41baf205786170f910596dd8aea91615c0a98bfb9771967f64f34b99bd8ca\",\"dweb:/ipfs/QmVqAFeCLzNhEM8yJoed2reQoGK1EiE72BVPyvgESEhgsm\"]},\"lib/solidity-merkle-trees/src/trie/substrate/ScaleCodec.sol\":{\"keccak256\":\"0x6fcfb3f4bb5ae07ab71aa9cf84bb19a8dda129a6f7ac8a35ae915858c4ef1a0f\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://2bbfb7e76afac849b15ba3285e73e463f85f2533c5ad9c1d40b35271359d2f7c\",\"dweb:/ipfs/QmWRgZRa4C32VMZnFLzUVTpqVggYD3wfPoiA5PtgHTiEve\"]},\"lib/solidity-merkle-trees/src/trie/substrate/SubstrateTrieDB.sol\":{\"keccak256\":\"0x01545b72eb381d0ec25de0155126efa429301f39f8854a41ed36811fb5d94069\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://ab7079de5a4f4af78fd0be8d90215787431711b0b7d2d9f6aefa7ed4db3a5f76\",\"dweb:/ipfs/QmNaSdtRNs3A5aUmT7ZbWmDU5sRE6iKsMPVc3EzHZFYhDB\"]},\"src/beefy/BeefyV1.sol\":{\"keccak256\":\"0xc0eb8db6877f82975c8cebac772d378e15ba27589d1052e2e484a3d48ba861ad\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://e17d34d33e3afab86b4e9199b70477e9bc65f06e96302046f0cac25beaafcaf3\",\"dweb:/ipfs/QmXEK783wT4ahbQmmJcG9FxwTZe8bVjFygxQEcKTKCiSo1\"]},\"src/beefy/Codec.sol\":{\"keccak256\":\"0xe855c673e246e31a79993f989ee4eee8661393784ab19abc60fcc0e33844fe91\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4d64a09ef5ae022ebf5f8dc29ca4d155c6b268a000904e20ad127469209b654e\",\"dweb:/ipfs/QmWtZzP8du44tpqRPAZY7vBYdqze51CgmeHTHJZeybcPyM\"]},\"src/beefy/Header.sol\":{\"keccak256\":\"0x262a776004145ef98344ba3951c7d37b8a125ba7c1de176a43f3aaa3d1a8c904\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://93de6b9f9e56997dda7ae5f0641a0e663d86cb98d3260b1589bdbed3196fb252\",\"dweb:/ipfs/QmQ4ePYXp166pcHVziK8JEJ7FznLMDrR3YkmTobicc8DEA\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.17+commit.8df45f5f" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "paraId", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "AURA_CONSENSUS_ID", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "ISMP_CONSENSUS_ID", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "MMR_ROOT_PAYLOAD_ID", + "outputs": [ + { + "internalType": "bytes2", + "name": "", + "type": "bytes2" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "SLOT_DURATION", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "struct BeefyConsensusState", + "name": "trustedState", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "latestHeight", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "beefyActivationBlock", + "type": "uint256" + }, + { + "internalType": "struct AuthoritySetCommitment", + "name": "currentAuthoritySet", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "len", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + } + ] + }, + { + "internalType": "struct AuthoritySetCommitment", + "name": "nextAuthoritySet", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "len", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + } + ] + } + ] + }, + { + "internalType": "struct BeefyConsensusProof", + "name": "proof", + "type": "tuple", + "components": [ + { + "internalType": "struct RelayChainProof", + "name": "relay", + "type": "tuple", + "components": [ + { + "internalType": "struct SignedCommitment", + "name": "signedCommitment", + "type": "tuple", + "components": [ + { + "internalType": "struct Commitment", + "name": "commitment", + "type": "tuple", + "components": [ + { + "internalType": "struct Payload[]", + "name": "payload", + "type": "tuple[]", + "components": [ + { + "internalType": "bytes2", + "name": "id", + "type": "bytes2" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ] + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "validatorSetId", + "type": "uint256" + } + ] + }, + { + "internalType": "struct Vote[]", + "name": "votes", + "type": "tuple[]", + "components": [ + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "authorityIndex", + "type": "uint256" + } + ] + } + ] + }, + { + "internalType": "struct BeefyMmrLeaf", + "name": "latestMmrLeaf", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "version", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "parentNumber", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "parentHash", + "type": "bytes32" + }, + { + "internalType": "struct AuthoritySetCommitment", + "name": "nextAuthoritySet", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "len", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + } + ] + }, + { + "internalType": "bytes32", + "name": "extra", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "kIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "leafIndex", + "type": "uint256" + } + ] + }, + { + "internalType": "bytes32[]", + "name": "mmrProof", + "type": "bytes32[]" + }, + { + "internalType": "struct Node[][]", + "name": "proof", + "type": "tuple[][]", + "components": [ + { + "internalType": "uint256", + "name": "k_index", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + } + ] + } + ] + }, + { + "internalType": "struct ParachainProof", + "name": "parachain", + "type": "tuple", + "components": [ + { + "internalType": "struct Parachain", + "name": "parachain", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "header", + "type": "bytes" + } + ] + }, + { + "internalType": "struct Node[][]", + "name": "proof", + "type": "tuple[][]", + "components": [ + { + "internalType": "uint256", + "name": "k_index", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + } + ] + } + ] + } + ] + } + ], + "stateMutability": "view", + "type": "function", + "name": "verifyConsensus", + "outputs": [ + { + "internalType": "struct BeefyConsensusState", + "name": "", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "latestHeight", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "beefyActivationBlock", + "type": "uint256" + }, + { + "internalType": "struct AuthoritySetCommitment", + "name": "currentAuthoritySet", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "len", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + } + ] + }, + { + "internalType": "struct AuthoritySetCommitment", + "name": "nextAuthoritySet", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "len", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + } + ] + } + ] + }, + { + "internalType": "struct IntermediateState", + "name": "", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "stateMachineId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "height", + "type": "uint256" + }, + { + "internalType": "struct StateCommitment", + "name": "commitment", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "overlayRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "stateRoot", + "type": "bytes32" + } + ] + } + ] + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "encodedState", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "encodedProof", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "verifyConsensus", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "struct IntermediateState", + "name": "", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "stateMachineId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "height", + "type": "uint256" + }, + { + "internalType": "struct StateCommitment", + "name": "commitment", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "overlayRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "stateRoot", + "type": "bytes32" + } + ] + } + ] + } + ] + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "AURA_CONSENSUS_ID()": { + "notice": "ConsensusID for aura" + }, + "ISMP_CONSENSUS_ID()": { + "notice": "ChainId for ethereum" + }, + "MMR_ROOT_PAYLOAD_ID()": { + "notice": "The PayloadId for the mmr root." + }, + "SLOT_DURATION()": { + "notice": "Slot duration in milliseconds" + }, + "verifyConsensus((uint256,uint256,(uint256,uint256,bytes32),(uint256,uint256,bytes32)),(((((bytes2,bytes)[],uint256,uint256),(bytes,uint256)[]),(uint256,uint256,bytes32,(uint256,uint256,bytes32),bytes32,uint256,uint256),bytes32[],(uint256,bytes32)[][]),((uint256,uint256,bytes),(uint256,bytes32)[][])))": { + "notice": "Verify the consensus proof and return the new trusted consensus state and any intermediate states finalized by this consensus proof." + } + }, + "version": 1 + } + }, + "settings": { + "remappings": [ + "ds-test/=lib/forge-std/lib/ds-test/src/", + "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", + "forge-std/=lib/forge-std/src/", + "ismp-solidity/=lib/ismp-solidity/", + "ismp/=lib/ismp-solidity/src/", + "multichain-token/=lib/multichain-native-tokens/src/", + "openzeppelin-contracts/=lib/openzeppelin-contracts/", + "openzeppelin/=lib/openzeppelin-contracts/contracts/", + "solidity-merkle-trees/=lib/solidity-merkle-trees/src/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "src/beefy/BeefyV1.sol": "BeefyV1" + }, + "libraries": {} + }, + "sources": { + "lib/ismp-solidity/src/interfaces/IConsensusClient.sol": { + "keccak256": "0x2be700e8c2c819144057e55622f3dac0a50763332aae22fba3fe90a0571028da", + "urls": [ + "bzz-raw://e5b3e8d9a1e94252bcad307fb0ecb5e25401bcd01de9f5e5bab5fe2e53e167d8", + "dweb:/ipfs/QmQf5Famyv2uBfmrKH2eGo8LvTBsaqjh3o8Fxry7EP9Xwb" + ], + "license": "UNLICENSED" + }, + "lib/ismp-solidity/src/interfaces/StateMachine.sol": { + "keccak256": "0xe999a117a275624d4ca4c6bcdad53e0d365d5f1a556e46bf39cd695f5034e6ca", + "urls": [ + "bzz-raw://0dc87653aa1ea514aaf3924d37139f72e3abdcd8876b3ad97396e4e11b5eb961", + "dweb:/ipfs/QmYY1LyMVKAjvVXmcyotz9QVYycHkmUyduRRXGRT8Unqgo" + ], + "license": "UNLICENSED" + }, + "lib/openzeppelin-contracts/contracts/utils/Strings.sol": { + "keccak256": "0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0", + "urls": [ + "bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f", + "dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol": { + "keccak256": "0x809bc3edb4bcbef8263fa616c1b60ee0004b50a8a1bfa164d8f57fd31f520c58", + "urls": [ + "bzz-raw://8b93a1e39a4a19eba1600b92c96f435442db88cac91e315c8291547a2a7bcfe2", + "dweb:/ipfs/QmTm34KVe6uZBZwq8dZDNWwPcm24qBJdxqL3rPxBJ4LrMv" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/math/Math.sol": { + "keccak256": "0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3", + "urls": [ + "bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c", + "dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol": { + "keccak256": "0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc", + "urls": [ + "bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7", + "dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6" + ], + "license": "MIT" + }, + "lib/solidity-merkle-trees/src/MerkleMountainRange.sol": { + "keccak256": "0x867f348fc7fce6f1e5cc5d41968389f7a832d99acddf9a544297e6ab27b9d823", + "urls": [ + "bzz-raw://27a91f509bc1d4b171d11722f30b35f5a8c456d42f07692865418a7fdb50a69a", + "dweb:/ipfs/QmTKLoX2CV1Fo6nJo4f4ycdiUaw1y4FzpdqXHKkoVdG4BP" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/MerkleMultiProof.sol": { + "keccak256": "0x71a97fc3f97c50ac429f1109176f5eaffc34b4d1f291bb58da61baa8cdc348e0", + "urls": [ + "bzz-raw://f964717f4577e7081a23f6301058c461854151d156aae33beaa39588aba8ef8e", + "dweb:/ipfs/QmbsadFursZrYUK6a3m55N5P5mZ2hWAtDpFsMZqoU2EV5L" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/MerklePatricia.sol": { + "keccak256": "0x452857f8e6c5b5878402bba1805bf4c3aef01c6c8f949dd72d20e07df8952bfc", + "urls": [ + "bzz-raw://c1007fe97775e37c9b6084e0ac98b249e7746ca531a04265291b0c57002f67b4", + "dweb:/ipfs/QmYiqp6MHoGWgZAHvKjKBphczJY3t4zDuV9M4V1UzuC8ML" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/trie/Bytes.sol": { + "keccak256": "0x03ffca5abeb3f2665997059af505a8225f881c3d375dddfdef77e6d3aac67db8", + "urls": [ + "bzz-raw://d3a4e7d650143dbb64a61e492260e50053de9b89536d05c8007c43b25602f610", + "dweb:/ipfs/QmbdyvPcHgcZsL4Sk2dS7s86qARePDyhcRPj5xtBko6e3t" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/trie/Memory.sol": { + "keccak256": "0x6d309ea24fca1313f1ac6ed57e31a94c44276006e233c46c7cf35e2ddcb88856", + "urls": [ + "bzz-raw://d2283a501d235201e1a18bb046ad713ce49dcaf287ae09d10025c786ab326648", + "dweb:/ipfs/QmPNvWGoCTu8MwMco6qjfW4RcwrJJKJhxQtfCEbeyB9rx2" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/trie/NibbleSlice.sol": { + "keccak256": "0x284ad5142dfe57d2a67de0c3787469367821926488d04e532adc71108c48a07b", + "urls": [ + "bzz-raw://c1bf96fdff2fc0db8500261bc89f480cd09b38355750203f15f95f1bd3000392", + "dweb:/ipfs/QmUd9iTH7U5pyezYqJVpET2es3uhjQmeGToEWywHUjXuNM" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/trie/Node.sol": { + "keccak256": "0x5e1b5dd46013b706ac86627c8a21a52a43ef151060479208abe0b6802e8c19b5", + "urls": [ + "bzz-raw://9b43ab483ff79c2fa9165b678b86a838bbf6fa60092cfe8e8d55023af0488c3d", + "dweb:/ipfs/QmT8Sy3HoAc9xY6C6gPK3s5SsJJgYztGGUpin7g54GeRcB" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/trie/Option.sol": { + "keccak256": "0xd5b67f9fd3218d507923147eacc9d209f55ad211e9c7258a07d7bc2c4db386b0", + "urls": [ + "bzz-raw://6c134fcc01f84820fdea93e747b3f2a5ee47bac6eda2c43504e87201229cbc4f", + "dweb:/ipfs/QmX1fQ32tyaR9EReyUbCfcSKGHzoEN88GPbwdwNAJQyVfL" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/trie/TrieDB.sol": { + "keccak256": "0xcf56409c430ebf1053edb199120c2961f0380b9fe93a36ccb5369e004dcafd64", + "urls": [ + "bzz-raw://5bdad30e72f8f29ba030db27881a08d63486544fb50abc99fa5a08902d7ad04a", + "dweb:/ipfs/QmQAoC1G6SXdGzVuLUt6pDbnaWJyGcUzWwpVbrwN4eCmdn" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/trie/ethereum/EthereumTrieDB.sol": { + "keccak256": "0xc64596f6d1c23f153efe19c62f0f2631ba92e6ac0f67ca57d93c2c75af98b6cf", + "urls": [ + "bzz-raw://a95680e75f6ef869d81708f05e67bf6a34f6c4c0d91e189b57a314bdc1e61c03", + "dweb:/ipfs/QmSuKZdDbjTGcUW6kVJ1Ghzb7zh3RdpdJpde5izk7fmZek" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/trie/ethereum/RLPReader.sol": { + "keccak256": "0xb8f4d1c02840086b3a9e81df93eebb120a40168681c119bee3f4c9849404538c", + "urls": [ + "bzz-raw://96e41baf205786170f910596dd8aea91615c0a98bfb9771967f64f34b99bd8ca", + "dweb:/ipfs/QmVqAFeCLzNhEM8yJoed2reQoGK1EiE72BVPyvgESEhgsm" + ], + "license": "Apache-2.0" + }, + "lib/solidity-merkle-trees/src/trie/substrate/ScaleCodec.sol": { + "keccak256": "0x6fcfb3f4bb5ae07ab71aa9cf84bb19a8dda129a6f7ac8a35ae915858c4ef1a0f", + "urls": [ + "bzz-raw://2bbfb7e76afac849b15ba3285e73e463f85f2533c5ad9c1d40b35271359d2f7c", + "dweb:/ipfs/QmWRgZRa4C32VMZnFLzUVTpqVggYD3wfPoiA5PtgHTiEve" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/trie/substrate/SubstrateTrieDB.sol": { + "keccak256": "0x01545b72eb381d0ec25de0155126efa429301f39f8854a41ed36811fb5d94069", + "urls": [ + "bzz-raw://ab7079de5a4f4af78fd0be8d90215787431711b0b7d2d9f6aefa7ed4db3a5f76", + "dweb:/ipfs/QmNaSdtRNs3A5aUmT7ZbWmDU5sRE6iKsMPVc3EzHZFYhDB" + ], + "license": "Apache2" + }, + "src/beefy/BeefyV1.sol": { + "keccak256": "0xc0eb8db6877f82975c8cebac772d378e15ba27589d1052e2e484a3d48ba861ad", + "urls": [ + "bzz-raw://e17d34d33e3afab86b4e9199b70477e9bc65f06e96302046f0cac25beaafcaf3", + "dweb:/ipfs/QmXEK783wT4ahbQmmJcG9FxwTZe8bVjFygxQEcKTKCiSo1" + ], + "license": "UNLICENSED" + }, + "src/beefy/Codec.sol": { + "keccak256": "0xe855c673e246e31a79993f989ee4eee8661393784ab19abc60fcc0e33844fe91", + "urls": [ + "bzz-raw://4d64a09ef5ae022ebf5f8dc29ca4d155c6b268a000904e20ad127469209b654e", + "dweb:/ipfs/QmWtZzP8du44tpqRPAZY7vBYdqze51CgmeHTHJZeybcPyM" + ], + "license": "UNLICENSED" + }, + "src/beefy/Header.sol": { + "keccak256": "0x262a776004145ef98344ba3951c7d37b8a125ba7c1de176a43f3aaa3d1a8c904", + "urls": [ + "bzz-raw://93de6b9f9e56997dda7ae5f0641a0e663d86cb98d3260b1589bdbed3196fb252", + "dweb:/ipfs/QmQ4ePYXp166pcHVziK8JEJ7FznLMDrR3YkmTobicc8DEA" + ], + "license": "UNLICENSED" + } + }, + "version": 1 + }, + "ast": { + "absolutePath": "src/beefy/BeefyV1.sol", + "id": 58245, + "exportedSymbols": { + "AuthoritySetCommitment": [ + 57392 + ], + "BeefyConsensusProof": [ + 57490 + ], + "BeefyConsensusState": [ + 57382 + ], + "BeefyMmrLeaf": [ + 57435 + ], + "BeefyV1": [ + 58244 + ], + "Branch": [ + 51859 + ], + "ByteSlice": [ + 50547 + ], + "Bytes": [ + 51191 + ], + "Codec": [ + 58968 + ], + "Commitment": [ + 57406 + ], + "ConsensusMessage": [ + 57494 + ], + "Digest": [ + 58997 + ], + "DigestItem": [ + 58975 + ], + "ECDSA": [ + 47004 + ], + "EthereumTrieDB": [ + 52585 + ], + "Extension": [ + 51850 + ], + "Header": [ + 59010 + ], + "IConsensusClient": [ + 45374 + ], + "IntermediateState": [ + 45360 + ], + "Iterator": [ + 47992 + ], + "Leaf": [ + 51889 + ], + "Math": [ + 47870 + ], + "Memory": [ + 51352 + ], + "MerkleMountainRange": [ + 49035 + ], + "MerkleMultiProof": [ + 49805 + ], + "MerklePatricia": [ + 50538 + ], + "MmrLeaf": [ + 47986 + ], + "NibbleSlice": [ + 51359 + ], + "NibbleSliceOps": [ + 51808 + ], + "NibbledBranch": [ + 51871 + ], + "Node": [ + 49043 + ], + "NodeHandle": [ + 51843 + ], + "NodeHandleOption": [ + 51882 + ], + "NodeKind": [ + 51834 + ], + "Option": [ + 51926 + ], + "Parachain": [ + 57474 + ], + "ParachainProof": [ + 57483 + ], + "PartialBeefyMmrLeaf": [ + 57445 + ], + "Payload": [ + 57397 + ], + "RLPReader": [ + 53393 + ], + "RelayChainProof": [ + 57464 + ], + "ScaleCodec": [ + 54317 + ], + "SignedCommitment": [ + 57419 + ], + "SignedMath": [ + 47975 + ], + "StateCommitment": [ + 45347 + ], + "StateMachine": [ + 46188 + ], + "StateMachineHeight": [ + 45352 + ], + "StorageValue": [ + 49818 + ], + "Strings": [ + 46638 + ], + "SubstrateTrieDB": [ + 55105 + ], + "TrieDB": [ + 52102 + ], + "TrieNode": [ + 51894 + ], + "ValueOption": [ + 51876 + ], + "Vote": [ + 57411 + ] + }, + "nodeType": "SourceUnit", + "src": "39:10776:49", + "nodes": [ + { + "id": 57358, + "nodeType": "PragmaDirective", + "src": "39:23:49", + "nodes": [], + "literals": [ + "solidity", + "0.8", + ".17" + ] + }, + { + "id": 57359, + "nodeType": "ImportDirective", + "src": "64:21:49", + "nodes": [], + "absolutePath": "src/beefy/Codec.sol", + "file": "./Codec.sol", + "nameLocation": "-1:-1:-1", + "scope": 58245, + "sourceUnit": 58969, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 57360, + "nodeType": "ImportDirective", + "src": "86:42:49", + "nodes": [], + "absolutePath": "lib/ismp-solidity/src/interfaces/StateMachine.sol", + "file": "ismp/interfaces/StateMachine.sol", + "nameLocation": "-1:-1:-1", + "scope": 58245, + "sourceUnit": 46189, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 57361, + "nodeType": "ImportDirective", + "src": "129:46:49", + "nodes": [], + "absolutePath": "lib/ismp-solidity/src/interfaces/IConsensusClient.sol", + "file": "ismp/interfaces/IConsensusClient.sol", + "nameLocation": "-1:-1:-1", + "scope": 58245, + "sourceUnit": 45375, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 57362, + "nodeType": "ImportDirective", + "src": "177:52:49", + "nodes": [], + "absolutePath": "lib/solidity-merkle-trees/src/MerkleMultiProof.sol", + "file": "solidity-merkle-trees/MerkleMultiProof.sol", + "nameLocation": "-1:-1:-1", + "scope": 58245, + "sourceUnit": 49806, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 57363, + "nodeType": "ImportDirective", + "src": "230:55:49", + "nodes": [], + "absolutePath": "lib/solidity-merkle-trees/src/MerkleMountainRange.sol", + "file": "solidity-merkle-trees/MerkleMountainRange.sol", + "nameLocation": "-1:-1:-1", + "scope": 58245, + "sourceUnit": 49036, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 57364, + "nodeType": "ImportDirective", + "src": "286:50:49", + "nodes": [], + "absolutePath": "lib/solidity-merkle-trees/src/MerklePatricia.sol", + "file": "solidity-merkle-trees/MerklePatricia.sol", + "nameLocation": "-1:-1:-1", + "scope": 58245, + "sourceUnit": 50539, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 57365, + "nodeType": "ImportDirective", + "src": "337:61:49", + "nodes": [], + "absolutePath": "lib/solidity-merkle-trees/src/trie/substrate/ScaleCodec.sol", + "file": "solidity-merkle-trees/trie/substrate/ScaleCodec.sol", + "nameLocation": "-1:-1:-1", + "scope": 58245, + "sourceUnit": 54318, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 57366, + "nodeType": "ImportDirective", + "src": "399:46:49", + "nodes": [], + "absolutePath": "lib/solidity-merkle-trees/src/trie/Bytes.sol", + "file": "solidity-merkle-trees/trie/Bytes.sol", + "nameLocation": "-1:-1:-1", + "scope": 58245, + "sourceUnit": 51192, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 57367, + "nodeType": "ImportDirective", + "src": "446:51:49", + "nodes": [], + "absolutePath": "lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol", + "file": "openzeppelin/utils/cryptography/ECDSA.sol", + "nameLocation": "-1:-1:-1", + "scope": 58245, + "sourceUnit": 47005, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 57382, + "nodeType": "StructDefinition", + "src": "499:467:49", + "nodes": [], + "canonicalName": "BeefyConsensusState", + "members": [ + { + "constant": false, + "id": 57370, + "mutability": "mutable", + "name": "latestHeight", + "nameLocation": "590:12:49", + "nodeType": "VariableDeclaration", + "scope": 57382, + "src": "582:20:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57369, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "582:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57373, + "mutability": "mutable", + "name": "beefyActivationBlock", + "nameLocation": "769:20:49", + "nodeType": "VariableDeclaration", + "scope": 57382, + "src": "761:28:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57372, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "761:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57377, + "mutability": "mutable", + "name": "currentAuthoritySet", + "nameLocation": "860:19:49", + "nodeType": "VariableDeclaration", + "scope": 57382, + "src": "837:42:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_storage_ptr", + "typeString": "struct AuthoritySetCommitment" + }, + "typeName": { + "id": 57376, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57375, + "name": "AuthoritySetCommitment", + "nameLocations": [ + "837:22:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57392, + "src": "837:22:49" + }, + "referencedDeclaration": 57392, + "src": "837:22:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_storage_ptr", + "typeString": "struct AuthoritySetCommitment" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57381, + "mutability": "mutable", + "name": "nextAuthoritySet", + "nameLocation": "947:16:49", + "nodeType": "VariableDeclaration", + "scope": 57382, + "src": "924:39:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_storage_ptr", + "typeString": "struct AuthoritySetCommitment" + }, + "typeName": { + "id": 57380, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57379, + "name": "AuthoritySetCommitment", + "nameLocations": [ + "924:22:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57392, + "src": "924:22:49" + }, + "referencedDeclaration": 57392, + "src": "924:22:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_storage_ptr", + "typeString": "struct AuthoritySetCommitment" + } + }, + "visibility": "internal" + } + ], + "name": "BeefyConsensusState", + "nameLocation": "506:19:49", + "scope": 58245, + "visibility": "public" + }, + { + "id": 57392, + "nodeType": "StructDefinition", + "src": "968:204:49", + "nodes": [], + "canonicalName": "AuthoritySetCommitment", + "members": [ + { + "constant": false, + "id": 57385, + "mutability": "mutable", + "name": "id", + "nameLocation": "1035:2:49", + "nodeType": "VariableDeclaration", + "scope": 57392, + "src": "1027:10:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57384, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1027:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57388, + "mutability": "mutable", + "name": "len", + "nameLocation": "1092:3:49", + "nodeType": "VariableDeclaration", + "scope": 57392, + "src": "1084:11:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57387, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1084:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57391, + "mutability": "mutable", + "name": "root", + "nameLocation": "1165:4:49", + "nodeType": "VariableDeclaration", + "scope": 57392, + "src": "1157:12:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 57390, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1157:7:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "name": "AuthoritySetCommitment", + "nameLocation": "975:22:49", + "scope": 58245, + "visibility": "public" + }, + { + "id": 57397, + "nodeType": "StructDefinition", + "src": "1174:49:49", + "nodes": [], + "canonicalName": "Payload", + "members": [ + { + "constant": false, + "id": 57394, + "mutability": "mutable", + "name": "id", + "nameLocation": "1202:2:49", + "nodeType": "VariableDeclaration", + "scope": 57397, + "src": "1195:9:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes2", + "typeString": "bytes2" + }, + "typeName": { + "id": 57393, + "name": "bytes2", + "nodeType": "ElementaryTypeName", + "src": "1195:6:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes2", + "typeString": "bytes2" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57396, + "mutability": "mutable", + "name": "data", + "nameLocation": "1216:4:49", + "nodeType": "VariableDeclaration", + "scope": 57397, + "src": "1210:10:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 57395, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1210:5:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "name": "Payload", + "nameLocation": "1181:7:49", + "scope": 58245, + "visibility": "public" + }, + { + "id": 57406, + "nodeType": "StructDefinition", + "src": "1225:97:49", + "nodes": [], + "canonicalName": "Commitment", + "members": [ + { + "constant": false, + "id": 57401, + "mutability": "mutable", + "name": "payload", + "nameLocation": "1259:7:49", + "nodeType": "VariableDeclaration", + "scope": 57406, + "src": "1249:17:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Payload_$57397_storage_$dyn_storage_ptr", + "typeString": "struct Payload[]" + }, + "typeName": { + "baseType": { + "id": 57399, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57398, + "name": "Payload", + "nameLocations": [ + "1249:7:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57397, + "src": "1249:7:49" + }, + "referencedDeclaration": 57397, + "src": "1249:7:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Payload_$57397_storage_ptr", + "typeString": "struct Payload" + } + }, + "id": 57400, + "nodeType": "ArrayTypeName", + "src": "1249:9:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Payload_$57397_storage_$dyn_storage_ptr", + "typeString": "struct Payload[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57403, + "mutability": "mutable", + "name": "blockNumber", + "nameLocation": "1280:11:49", + "nodeType": "VariableDeclaration", + "scope": 57406, + "src": "1272:19:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57402, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1272:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57405, + "mutability": "mutable", + "name": "validatorSetId", + "nameLocation": "1305:14:49", + "nodeType": "VariableDeclaration", + "scope": 57406, + "src": "1297:22:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57404, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1297:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "Commitment", + "nameLocation": "1232:10:49", + "scope": 58245, + "visibility": "public" + }, + { + "id": 57411, + "nodeType": "StructDefinition", + "src": "1324:64:49", + "nodes": [], + "canonicalName": "Vote", + "members": [ + { + "constant": false, + "id": 57408, + "mutability": "mutable", + "name": "signature", + "nameLocation": "1348:9:49", + "nodeType": "VariableDeclaration", + "scope": 57411, + "src": "1342:15:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 57407, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1342:5:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57410, + "mutability": "mutable", + "name": "authorityIndex", + "nameLocation": "1371:14:49", + "nodeType": "VariableDeclaration", + "scope": 57411, + "src": "1363:22:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57409, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1363:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "Vote", + "nameLocation": "1331:4:49", + "scope": 58245, + "visibility": "public" + }, + { + "id": 57419, + "nodeType": "StructDefinition", + "src": "1390:72:49", + "nodes": [], + "canonicalName": "SignedCommitment", + "members": [ + { + "constant": false, + "id": 57414, + "mutability": "mutable", + "name": "commitment", + "nameLocation": "1431:10:49", + "nodeType": "VariableDeclaration", + "scope": 57419, + "src": "1420:21:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Commitment_$57406_storage_ptr", + "typeString": "struct Commitment" + }, + "typeName": { + "id": 57413, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57412, + "name": "Commitment", + "nameLocations": [ + "1420:10:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57406, + "src": "1420:10:49" + }, + "referencedDeclaration": 57406, + "src": "1420:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Commitment_$57406_storage_ptr", + "typeString": "struct Commitment" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57418, + "mutability": "mutable", + "name": "votes", + "nameLocation": "1454:5:49", + "nodeType": "VariableDeclaration", + "scope": 57419, + "src": "1447:12:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Vote_$57411_storage_$dyn_storage_ptr", + "typeString": "struct Vote[]" + }, + "typeName": { + "baseType": { + "id": 57416, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57415, + "name": "Vote", + "nameLocations": [ + "1447:4:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57411, + "src": "1447:4:49" + }, + "referencedDeclaration": 57411, + "src": "1447:4:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Vote_$57411_storage_ptr", + "typeString": "struct Vote" + } + }, + "id": 57417, + "nodeType": "ArrayTypeName", + "src": "1447:6:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Vote_$57411_storage_$dyn_storage_ptr", + "typeString": "struct Vote[]" + } + }, + "visibility": "internal" + } + ], + "name": "SignedCommitment", + "nameLocation": "1397:16:49", + "scope": 58245, + "visibility": "public" + }, + { + "id": 57435, + "nodeType": "StructDefinition", + "src": "1464:201:49", + "nodes": [], + "canonicalName": "BeefyMmrLeaf", + "members": [ + { + "constant": false, + "id": 57421, + "mutability": "mutable", + "name": "version", + "nameLocation": "1498:7:49", + "nodeType": "VariableDeclaration", + "scope": 57435, + "src": "1490:15:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57420, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1490:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57423, + "mutability": "mutable", + "name": "parentNumber", + "nameLocation": "1519:12:49", + "nodeType": "VariableDeclaration", + "scope": 57435, + "src": "1511:20:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57422, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1511:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57425, + "mutability": "mutable", + "name": "parentHash", + "nameLocation": "1545:10:49", + "nodeType": "VariableDeclaration", + "scope": 57435, + "src": "1537:18:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 57424, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1537:7:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57428, + "mutability": "mutable", + "name": "nextAuthoritySet", + "nameLocation": "1584:16:49", + "nodeType": "VariableDeclaration", + "scope": 57435, + "src": "1561:39:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_storage_ptr", + "typeString": "struct AuthoritySetCommitment" + }, + "typeName": { + "id": 57427, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57426, + "name": "AuthoritySetCommitment", + "nameLocations": [ + "1561:22:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57392, + "src": "1561:22:49" + }, + "referencedDeclaration": 57392, + "src": "1561:22:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_storage_ptr", + "typeString": "struct AuthoritySetCommitment" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57430, + "mutability": "mutable", + "name": "extra", + "nameLocation": "1614:5:49", + "nodeType": "VariableDeclaration", + "scope": 57435, + "src": "1606:13:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 57429, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1606:7:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57432, + "mutability": "mutable", + "name": "kIndex", + "nameLocation": "1633:6:49", + "nodeType": "VariableDeclaration", + "scope": 57435, + "src": "1625:14:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57431, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1625:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57434, + "mutability": "mutable", + "name": "leafIndex", + "nameLocation": "1653:9:49", + "nodeType": "VariableDeclaration", + "scope": 57435, + "src": "1645:17:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57433, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1645:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "BeefyMmrLeaf", + "nameLocation": "1471:12:49", + "scope": 58245, + "visibility": "public" + }, + { + "id": 57445, + "nodeType": "StructDefinition", + "src": "1667:146:49", + "nodes": [], + "canonicalName": "PartialBeefyMmrLeaf", + "members": [ + { + "constant": false, + "id": 57437, + "mutability": "mutable", + "name": "version", + "nameLocation": "1708:7:49", + "nodeType": "VariableDeclaration", + "scope": 57445, + "src": "1700:15:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57436, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1700:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57439, + "mutability": "mutable", + "name": "parentNumber", + "nameLocation": "1729:12:49", + "nodeType": "VariableDeclaration", + "scope": 57445, + "src": "1721:20:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57438, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1721:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57441, + "mutability": "mutable", + "name": "parentHash", + "nameLocation": "1755:10:49", + "nodeType": "VariableDeclaration", + "scope": 57445, + "src": "1747:18:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 57440, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1747:7:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57444, + "mutability": "mutable", + "name": "nextAuthoritySet", + "nameLocation": "1794:16:49", + "nodeType": "VariableDeclaration", + "scope": 57445, + "src": "1771:39:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_storage_ptr", + "typeString": "struct AuthoritySetCommitment" + }, + "typeName": { + "id": 57443, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57442, + "name": "AuthoritySetCommitment", + "nameLocations": [ + "1771:22:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57392, + "src": "1771:22:49" + }, + "referencedDeclaration": 57392, + "src": "1771:22:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_storage_ptr", + "typeString": "struct AuthoritySetCommitment" + } + }, + "visibility": "internal" + } + ], + "name": "PartialBeefyMmrLeaf", + "nameLocation": "1674:19:49", + "scope": 58245, + "visibility": "public" + }, + { + "id": 57464, + "nodeType": "StructDefinition", + "src": "1815:292:49", + "nodes": [], + "canonicalName": "RelayChainProof", + "members": [ + { + "constant": false, + "id": 57449, + "mutability": "mutable", + "name": "signedCommitment", + "nameLocation": "1887:16:49", + "nodeType": "VariableDeclaration", + "scope": 57464, + "src": "1870:33:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignedCommitment_$57419_storage_ptr", + "typeString": "struct SignedCommitment" + }, + "typeName": { + "id": 57448, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57447, + "name": "SignedCommitment", + "nameLocations": [ + "1870:16:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57419, + "src": "1870:16:49" + }, + "referencedDeclaration": 57419, + "src": "1870:16:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignedCommitment_$57419_storage_ptr", + "typeString": "struct SignedCommitment" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57453, + "mutability": "mutable", + "name": "latestMmrLeaf", + "nameLocation": "1955:13:49", + "nodeType": "VariableDeclaration", + "scope": 57464, + "src": "1942:26:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyMmrLeaf_$57435_storage_ptr", + "typeString": "struct BeefyMmrLeaf" + }, + "typeName": { + "id": 57452, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57451, + "name": "BeefyMmrLeaf", + "nameLocations": [ + "1942:12:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57435, + "src": "1942:12:49" + }, + "referencedDeclaration": 57435, + "src": "1942:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyMmrLeaf_$57435_storage_ptr", + "typeString": "struct BeefyMmrLeaf" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57457, + "mutability": "mutable", + "name": "mmrProof", + "nameLocation": "2022:8:49", + "nodeType": "VariableDeclaration", + "scope": 57464, + "src": "2012:18:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 57455, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2012:7:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 57456, + "nodeType": "ArrayTypeName", + "src": "2012:9:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57463, + "mutability": "mutable", + "name": "proof", + "nameLocation": "2099:5:49", + "nodeType": "VariableDeclaration", + "scope": 57464, + "src": "2090:14:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_array$_t_struct$_Node_$49043_storage_$dyn_storage_$dyn_storage_ptr", + "typeString": "struct Node[][]" + }, + "typeName": { + "baseType": { + "baseType": { + "id": 57460, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57459, + "name": "Node", + "nameLocations": [ + "2090:4:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49043, + "src": "2090:4:49" + }, + "referencedDeclaration": 49043, + "src": "2090:4:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$49043_storage_ptr", + "typeString": "struct Node" + } + }, + "id": 57461, + "nodeType": "ArrayTypeName", + "src": "2090:6:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Node_$49043_storage_$dyn_storage_ptr", + "typeString": "struct Node[]" + } + }, + "id": 57462, + "nodeType": "ArrayTypeName", + "src": "2090:8:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_array$_t_struct$_Node_$49043_storage_$dyn_storage_$dyn_storage_ptr", + "typeString": "struct Node[][]" + } + }, + "visibility": "internal" + } + ], + "name": "RelayChainProof", + "nameLocation": "1822:15:49", + "scope": 58245, + "visibility": "public" + }, + { + "id": 57474, + "nodeType": "StructDefinition", + "src": "2109:159:49", + "nodes": [], + "canonicalName": "Parachain", + "members": [ + { + "constant": false, + "id": 57467, + "mutability": "mutable", + "name": "index", + "nameLocation": "2176:5:49", + "nodeType": "VariableDeclaration", + "scope": 57474, + "src": "2168:13:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57466, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2168:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57470, + "mutability": "mutable", + "name": "id", + "nameLocation": "2216:2:49", + "nodeType": "VariableDeclaration", + "scope": 57474, + "src": "2208:10:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57469, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2208:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57473, + "mutability": "mutable", + "name": "header", + "nameLocation": "2259:6:49", + "nodeType": "VariableDeclaration", + "scope": 57474, + "src": "2253:12:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 57472, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2253:5:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "name": "Parachain", + "nameLocation": "2116:9:49", + "scope": 58245, + "visibility": "public" + }, + { + "id": 57483, + "nodeType": "StructDefinition", + "src": "2270:70:49", + "nodes": [], + "canonicalName": "ParachainProof", + "members": [ + { + "constant": false, + "id": 57477, + "mutability": "mutable", + "name": "parachain", + "nameLocation": "2308:9:49", + "nodeType": "VariableDeclaration", + "scope": 57483, + "src": "2298:19:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parachain_$57474_storage_ptr", + "typeString": "struct Parachain" + }, + "typeName": { + "id": 57476, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57475, + "name": "Parachain", + "nameLocations": [ + "2298:9:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57474, + "src": "2298:9:49" + }, + "referencedDeclaration": 57474, + "src": "2298:9:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parachain_$57474_storage_ptr", + "typeString": "struct Parachain" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57482, + "mutability": "mutable", + "name": "proof", + "nameLocation": "2332:5:49", + "nodeType": "VariableDeclaration", + "scope": 57483, + "src": "2323:14:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_array$_t_struct$_Node_$49043_storage_$dyn_storage_$dyn_storage_ptr", + "typeString": "struct Node[][]" + }, + "typeName": { + "baseType": { + "baseType": { + "id": 57479, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57478, + "name": "Node", + "nameLocations": [ + "2323:4:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49043, + "src": "2323:4:49" + }, + "referencedDeclaration": 49043, + "src": "2323:4:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$49043_storage_ptr", + "typeString": "struct Node" + } + }, + "id": 57480, + "nodeType": "ArrayTypeName", + "src": "2323:6:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Node_$49043_storage_$dyn_storage_ptr", + "typeString": "struct Node[]" + } + }, + "id": 57481, + "nodeType": "ArrayTypeName", + "src": "2323:8:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_array$_t_struct$_Node_$49043_storage_$dyn_storage_$dyn_storage_ptr", + "typeString": "struct Node[][]" + } + }, + "visibility": "internal" + } + ], + "name": "ParachainProof", + "nameLocation": "2277:14:49", + "scope": 58245, + "visibility": "public" + }, + { + "id": 57490, + "nodeType": "StructDefinition", + "src": "2342:87:49", + "nodes": [], + "canonicalName": "BeefyConsensusProof", + "members": [ + { + "constant": false, + "id": 57486, + "mutability": "mutable", + "name": "relay", + "nameLocation": "2391:5:49", + "nodeType": "VariableDeclaration", + "scope": 57490, + "src": "2375:21:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_storage_ptr", + "typeString": "struct RelayChainProof" + }, + "typeName": { + "id": 57485, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57484, + "name": "RelayChainProof", + "nameLocations": [ + "2375:15:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57464, + "src": "2375:15:49" + }, + "referencedDeclaration": 57464, + "src": "2375:15:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_storage_ptr", + "typeString": "struct RelayChainProof" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57489, + "mutability": "mutable", + "name": "parachain", + "nameLocation": "2417:9:49", + "nodeType": "VariableDeclaration", + "scope": 57490, + "src": "2402:24:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParachainProof_$57483_storage_ptr", + "typeString": "struct ParachainProof" + }, + "typeName": { + "id": 57488, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57487, + "name": "ParachainProof", + "nameLocations": [ + "2402:14:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57483, + "src": "2402:14:49" + }, + "referencedDeclaration": 57483, + "src": "2402:14:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParachainProof_$57483_storage_ptr", + "typeString": "struct ParachainProof" + } + }, + "visibility": "internal" + } + ], + "name": "BeefyConsensusProof", + "nameLocation": "2349:19:49", + "scope": 58245, + "visibility": "public" + }, + { + "id": 57494, + "nodeType": "StructDefinition", + "src": "2431:58:49", + "nodes": [], + "canonicalName": "ConsensusMessage", + "members": [ + { + "constant": false, + "id": 57493, + "mutability": "mutable", + "name": "proof", + "nameLocation": "2481:5:49", + "nodeType": "VariableDeclaration", + "scope": 57494, + "src": "2461:25:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusProof_$57490_storage_ptr", + "typeString": "struct BeefyConsensusProof" + }, + "typeName": { + "id": 57492, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57491, + "name": "BeefyConsensusProof", + "nameLocations": [ + "2461:19:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57490, + "src": "2461:19:49" + }, + "referencedDeclaration": 57490, + "src": "2461:19:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusProof_$57490_storage_ptr", + "typeString": "struct BeefyConsensusProof" + } + }, + "visibility": "internal" + } + ], + "name": "ConsensusMessage", + "nameLocation": "2438:16:49", + "scope": 58245, + "visibility": "public" + }, + { + "id": 58244, + "nodeType": "ContractDefinition", + "src": "2491:8323:49", + "nodes": [ + { + "id": 57500, + "nodeType": "VariableDeclaration", + "src": "2572:45:49", + "nodes": [], + "constant": true, + "documentation": { + "id": 57497, + "nodeType": "StructuredDocumentation", + "src": "2534:33:49", + "text": "Slot duration in milliseconds" + }, + "functionSelector": "905c0511", + "mutability": "constant", + "name": "SLOT_DURATION", + "nameLocation": "2596:13:49", + "scope": 58244, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57498, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2572:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3132303030", + "id": 57499, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2612:5:49", + "typeDescriptions": { + "typeIdentifier": "t_rational_12000_by_1", + "typeString": "int_const 12000" + }, + "value": "12000" + }, + "visibility": "public" + }, + { + "id": 57507, + "nodeType": "VariableDeclaration", + "src": "2663:57:49", + "nodes": [], + "constant": true, + "documentation": { + "id": 57501, + "nodeType": "StructuredDocumentation", + "src": "2623:35:49", + "text": "The PayloadId for the mmr root." + }, + "functionSelector": "af8b91d6", + "mutability": "constant", + "name": "MMR_ROOT_PAYLOAD_ID", + "nameLocation": "2686:19:49", + "scope": 58244, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes2", + "typeString": "bytes2" + }, + "typeName": { + "id": 57502, + "name": "bytes2", + "nodeType": "ElementaryTypeName", + "src": "2663:6:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes2", + "typeString": "bytes2" + } + }, + "value": { + "arguments": [ + { + "hexValue": "6d68", + "id": 57505, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2715:4:49", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c272cfafc32c3006284c607888060ab1d95fd1e4c38c914de5733a1802097ab9", + "typeString": "literal_string \"mh\"" + }, + "value": "mh" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c272cfafc32c3006284c607888060ab1d95fd1e4c38c914de5733a1802097ab9", + "typeString": "literal_string \"mh\"" + } + ], + "id": 57504, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2708:6:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes2_$", + "typeString": "type(bytes2)" + }, + "typeName": { + "id": 57503, + "name": "bytes2", + "nodeType": "ElementaryTypeName", + "src": "2708:6:49", + "typeDescriptions": {} + } + }, + "id": 57506, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2708:12:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes2", + "typeString": "bytes2" + } + }, + "visibility": "public" + }, + { + "id": 57514, + "nodeType": "VariableDeclaration", + "src": "2755:57:49", + "nodes": [], + "constant": true, + "documentation": { + "id": 57508, + "nodeType": "StructuredDocumentation", + "src": "2726:24:49", + "text": "ChainId for ethereum" + }, + "functionSelector": "babb3118", + "mutability": "constant", + "name": "ISMP_CONSENSUS_ID", + "nameLocation": "2778:17:49", + "scope": 58244, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 57509, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "2755:6:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "arguments": [ + { + "hexValue": "49534d50", + "id": 57512, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2805:6:49", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_38d77dedb523a1dec8128a5ae07f9904c583f20fdfb3e2d1160e53bb2c3427f1", + "typeString": "literal_string \"ISMP\"" + }, + "value": "ISMP" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_38d77dedb523a1dec8128a5ae07f9904c583f20fdfb3e2d1160e53bb2c3427f1", + "typeString": "literal_string \"ISMP\"" + } + ], + "id": 57511, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2798:6:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes4_$", + "typeString": "type(bytes4)" + }, + "typeName": { + "id": 57510, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "2798:6:49", + "typeDescriptions": {} + } + }, + "id": 57513, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2798:14:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "public" + }, + { + "id": 57521, + "nodeType": "VariableDeclaration", + "src": "2847:57:49", + "nodes": [], + "constant": true, + "documentation": { + "id": 57515, + "nodeType": "StructuredDocumentation", + "src": "2818:24:49", + "text": "ConsensusID for aura" + }, + "functionSelector": "4e9fdbec", + "mutability": "constant", + "name": "AURA_CONSENSUS_ID", + "nameLocation": "2870:17:49", + "scope": 58244, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 57516, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "2847:6:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "arguments": [ + { + "hexValue": "61757261", + "id": 57519, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2897:6:49", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a4b4020ae62dd6be388cb42ecee9d321188df83bddff6cc1011b59f7006d91f2", + "typeString": "literal_string \"aura\"" + }, + "value": "aura" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_a4b4020ae62dd6be388cb42ecee9d321188df83bddff6cc1011b59f7006d91f2", + "typeString": "literal_string \"aura\"" + } + ], + "id": 57518, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2890:6:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes4_$", + "typeString": "type(bytes4)" + }, + "typeName": { + "id": 57517, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "2890:6:49", + "typeDescriptions": {} + } + }, + "id": 57520, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2890:14:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "public" + }, + { + "id": 57523, + "nodeType": "VariableDeclaration", + "src": "2911:23:49", + "nodes": [], + "constant": false, + "mutability": "mutable", + "name": "_paraId", + "nameLocation": "2927:7:49", + "scope": 58244, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57522, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2911:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "private" + }, + { + "id": 57533, + "nodeType": "FunctionDefinition", + "src": "2941:61:49", + "nodes": [], + "body": { + "id": 57532, + "nodeType": "Block", + "src": "2969:33:49", + "nodes": [], + "statements": [ + { + "expression": { + "id": 57530, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 57528, + "name": "_paraId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57523, + "src": "2979:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 57529, + "name": "paraId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57525, + "src": "2989:6:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2979:16:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 57531, + "nodeType": "ExpressionStatement", + "src": "2979:16:49" + } + ] + }, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "parameters": { + "id": 57526, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 57525, + "mutability": "mutable", + "name": "paraId", + "nameLocation": "2961:6:49", + "nodeType": "VariableDeclaration", + "scope": 57533, + "src": "2953:14:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57524, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2953:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2952:16:49" + }, + "returnParameters": { + "id": 57527, + "nodeType": "ParameterList", + "parameters": [], + "src": "2969:0:49" + }, + "scope": 58244, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 57592, + "nodeType": "FunctionDefinition", + "src": "3008:643:49", + "nodes": [], + "body": { + "id": 57591, + "nodeType": "Block", + "src": "3165:486:49", + "nodes": [], + "statements": [ + { + "assignments": [ + 57547 + ], + "declarations": [ + { + "constant": false, + "id": 57547, + "mutability": "mutable", + "name": "consensusState", + "nameLocation": "3202:14:49", + "nodeType": "VariableDeclaration", + "scope": 57591, + "src": "3175:41:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState" + }, + "typeName": { + "id": 57546, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57545, + "name": "BeefyConsensusState", + "nameLocations": [ + "3175:19:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57382, + "src": "3175:19:49" + }, + "referencedDeclaration": 57382, + "src": "3175:19:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_storage_ptr", + "typeString": "struct BeefyConsensusState" + } + }, + "visibility": "internal" + } + ], + "id": 57554, + "initialValue": { + "arguments": [ + { + "id": 57550, + "name": "encodedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57535, + "src": "3230:12:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 57551, + "name": "BeefyConsensusState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57382, + "src": "3245:19:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_BeefyConsensusState_$57382_storage_ptr_$", + "typeString": "type(struct BeefyConsensusState storage pointer)" + } + } + ], + "id": 57552, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3244:21:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_BeefyConsensusState_$57382_storage_ptr_$", + "typeString": "type(struct BeefyConsensusState storage pointer)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_struct$_BeefyConsensusState_$57382_storage_ptr_$", + "typeString": "type(struct BeefyConsensusState storage pointer)" + } + ], + "expression": { + "id": 57548, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3219:3:49", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 57549, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3223:6:49", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "3219:10:49", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 57553, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3219:47:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3175:91:49" + }, + { + "assignments": [ + 57557, + 57560 + ], + "declarations": [ + { + "constant": false, + "id": 57557, + "mutability": "mutable", + "name": "relay", + "nameLocation": "3300:5:49", + "nodeType": "VariableDeclaration", + "scope": 57591, + "src": "3277:28:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof" + }, + "typeName": { + "id": 57556, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57555, + "name": "RelayChainProof", + "nameLocations": [ + "3277:15:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57464, + "src": "3277:15:49" + }, + "referencedDeclaration": 57464, + "src": "3277:15:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_storage_ptr", + "typeString": "struct RelayChainProof" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57560, + "mutability": "mutable", + "name": "parachain", + "nameLocation": "3329:9:49", + "nodeType": "VariableDeclaration", + "scope": 57591, + "src": "3307:31:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParachainProof_$57483_memory_ptr", + "typeString": "struct ParachainProof" + }, + "typeName": { + "id": 57559, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57558, + "name": "ParachainProof", + "nameLocations": [ + "3307:14:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57483, + "src": "3307:14:49" + }, + "referencedDeclaration": 57483, + "src": "3307:14:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParachainProof_$57483_storage_ptr", + "typeString": "struct ParachainProof" + } + }, + "visibility": "internal" + } + ], + "id": 57568, + "initialValue": { + "arguments": [ + { + "id": 57563, + "name": "encodedProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57537, + "src": "3365:12:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 57564, + "name": "RelayChainProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57464, + "src": "3380:15:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_RelayChainProof_$57464_storage_ptr_$", + "typeString": "type(struct RelayChainProof storage pointer)" + } + }, + { + "id": 57565, + "name": "ParachainProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57483, + "src": "3397:14:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_ParachainProof_$57483_storage_ptr_$", + "typeString": "type(struct ParachainProof storage pointer)" + } + } + ], + "id": 57566, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3379:33:49", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_type$_t_struct$_RelayChainProof_$57464_storage_ptr_$_$_t_type$_t_struct$_ParachainProof_$57483_storage_ptr_$_$", + "typeString": "tuple(type(struct RelayChainProof storage pointer),type(struct ParachainProof storage pointer))" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_tuple$_t_type$_t_struct$_RelayChainProof_$57464_storage_ptr_$_$_t_type$_t_struct$_ParachainProof_$57483_storage_ptr_$_$", + "typeString": "tuple(type(struct RelayChainProof storage pointer),type(struct ParachainProof storage pointer))" + } + ], + "expression": { + "id": 57561, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3354:3:49", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 57562, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3358:6:49", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "3354:10:49", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 57567, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3354:59:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_struct$_RelayChainProof_$57464_memory_ptr_$_t_struct$_ParachainProof_$57483_memory_ptr_$", + "typeString": "tuple(struct RelayChainProof memory,struct ParachainProof memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3276:137:49" + }, + { + "assignments": [ + 57571, + 57574 + ], + "declarations": [ + { + "constant": false, + "id": 57571, + "mutability": "mutable", + "name": "newState", + "nameLocation": "3452:8:49", + "nodeType": "VariableDeclaration", + "scope": 57591, + "src": "3425:35:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState" + }, + "typeName": { + "id": 57570, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57569, + "name": "BeefyConsensusState", + "nameLocations": [ + "3425:19:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57382, + "src": "3425:19:49" + }, + "referencedDeclaration": 57382, + "src": "3425:19:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_storage_ptr", + "typeString": "struct BeefyConsensusState" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57574, + "mutability": "mutable", + "name": "intermediate", + "nameLocation": "3487:12:49", + "nodeType": "VariableDeclaration", + "scope": 57591, + "src": "3462:37:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_memory_ptr", + "typeString": "struct IntermediateState" + }, + "typeName": { + "id": 57573, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57572, + "name": "IntermediateState", + "nameLocations": [ + "3462:17:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45360, + "src": "3462:17:49" + }, + "referencedDeclaration": 45360, + "src": "3462:17:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_storage_ptr", + "typeString": "struct IntermediateState" + } + }, + "visibility": "internal" + } + ], + "id": 57583, + "initialValue": { + "arguments": [ + { + "id": 57577, + "name": "consensusState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57547, + "src": "3536:14:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + { + "arguments": [ + { + "id": 57579, + "name": "relay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57557, + "src": "3572:5:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + } + }, + { + "id": 57580, + "name": "parachain", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57560, + "src": "3579:9:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParachainProof_$57483_memory_ptr", + "typeString": "struct ParachainProof memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + }, + { + "typeIdentifier": "t_struct$_ParachainProof_$57483_memory_ptr", + "typeString": "struct ParachainProof memory" + } + ], + "id": 57578, + "name": "BeefyConsensusProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57490, + "src": "3552:19:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_BeefyConsensusProof_$57490_storage_ptr_$", + "typeString": "type(struct BeefyConsensusProof storage pointer)" + } + }, + "id": 57581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3552:37:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusProof_$57490_memory_ptr", + "typeString": "struct BeefyConsensusProof memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + }, + { + "typeIdentifier": "t_struct$_BeefyConsensusProof_$57490_memory_ptr", + "typeString": "struct BeefyConsensusProof memory" + } + ], + "expression": { + "id": 57575, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "3515:4:49", + "typeDescriptions": { + "typeIdentifier": "t_contract$_BeefyV1_$58244", + "typeString": "contract BeefyV1" + } + }, + "id": 57576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3520:15:49", + "memberName": "verifyConsensus", + "nodeType": "MemberAccess", + "referencedDeclaration": 57633, + "src": "3515:20:49", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_struct$_BeefyConsensusState_$57382_memory_ptr_$_t_struct$_BeefyConsensusProof_$57490_memory_ptr_$returns$_t_struct$_BeefyConsensusState_$57382_memory_ptr_$_t_struct$_IntermediateState_$45360_memory_ptr_$", + "typeString": "function (struct BeefyConsensusState memory,struct BeefyConsensusProof memory) view external returns (struct BeefyConsensusState memory,struct IntermediateState memory)" + } + }, + "id": 57582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3515:75:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_struct$_BeefyConsensusState_$57382_memory_ptr_$_t_struct$_IntermediateState_$45360_memory_ptr_$", + "typeString": "tuple(struct BeefyConsensusState memory,struct IntermediateState memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3424:166:49" + }, + { + "expression": { + "components": [ + { + "arguments": [ + { + "id": 57586, + "name": "newState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57571, + "src": "3620:8:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + ], + "expression": { + "id": 57584, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3609:3:49", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 57585, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3613:6:49", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "3609:10:49", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 57587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3609:20:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 57588, + "name": "intermediate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57574, + "src": "3631:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_memory_ptr", + "typeString": "struct IntermediateState memory" + } + } + ], + "id": 57589, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3608:36:49", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_struct$_IntermediateState_$45360_memory_ptr_$", + "typeString": "tuple(bytes memory,struct IntermediateState memory)" + } + }, + "functionReturnParameters": 57544, + "id": 57590, + "nodeType": "Return", + "src": "3601:43:49" + } + ] + }, + "baseFunctions": [ + 45373 + ], + "functionSelector": "7d755598", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "verifyConsensus", + "nameLocation": "3017:15:49", + "parameters": { + "id": 57538, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 57535, + "mutability": "mutable", + "name": "encodedState", + "nameLocation": "3046:12:49", + "nodeType": "VariableDeclaration", + "scope": 57592, + "src": "3033:25:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 57534, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3033:5:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57537, + "mutability": "mutable", + "name": "encodedProof", + "nameLocation": "3073:12:49", + "nodeType": "VariableDeclaration", + "scope": 57592, + "src": "3060:25:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 57536, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3060:5:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3032:54:49" + }, + "returnParameters": { + "id": 57544, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 57540, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 57592, + "src": "3121:12:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 57539, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3121:5:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57543, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 57592, + "src": "3135:24:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_memory_ptr", + "typeString": "struct IntermediateState" + }, + "typeName": { + "id": 57542, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57541, + "name": "IntermediateState", + "nameLocations": [ + "3135:17:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45360, + "src": "3135:17:49" + }, + "referencedDeclaration": 45360, + "src": "3135:17:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_storage_ptr", + "typeString": "struct IntermediateState" + } + }, + "visibility": "internal" + } + ], + "src": "3120:40:49" + }, + "scope": 58244, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 57633, + "nodeType": "FunctionDefinition", + "src": "3806:558:49", + "nodes": [], + "body": { + "id": 57632, + "nodeType": "Block", + "src": "4011:353:49", + "nodes": [], + "statements": [ + { + "assignments": [ + 57610, + 57612 + ], + "declarations": [ + { + "constant": false, + "id": 57610, + "mutability": "mutable", + "name": "state", + "nameLocation": "4083:5:49", + "nodeType": "VariableDeclaration", + "scope": 57632, + "src": "4056:32:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState" + }, + "typeName": { + "id": 57609, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57608, + "name": "BeefyConsensusState", + "nameLocations": [ + "4056:19:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57382, + "src": "4056:19:49" + }, + "referencedDeclaration": 57382, + "src": "4056:19:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_storage_ptr", + "typeString": "struct BeefyConsensusState" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57612, + "mutability": "mutable", + "name": "headsRoot", + "nameLocation": "4098:9:49", + "nodeType": "VariableDeclaration", + "scope": 57632, + "src": "4090:17:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 57611, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4090:7:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 57618, + "initialValue": { + "arguments": [ + { + "id": 57614, + "name": "trustedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57596, + "src": "4132:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + { + "expression": { + "id": 57615, + "name": "proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57599, + "src": "4146:5:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusProof_$57490_memory_ptr", + "typeString": "struct BeefyConsensusProof memory" + } + }, + "id": 57616, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4152:5:49", + "memberName": "relay", + "nodeType": "MemberAccess", + "referencedDeclaration": 57486, + "src": "4146:11:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + }, + { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + } + ], + "id": 57613, + "name": "verifyMmrUpdateProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57920, + "src": "4111:20:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_BeefyConsensusState_$57382_memory_ptr_$_t_struct$_RelayChainProof_$57464_memory_ptr_$returns$_t_struct$_BeefyConsensusState_$57382_memory_ptr_$_t_bytes32_$", + "typeString": "function (struct BeefyConsensusState memory,struct RelayChainProof memory) pure returns (struct BeefyConsensusState memory,bytes32)" + } + }, + "id": 57617, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4111:47:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_struct$_BeefyConsensusState_$57382_memory_ptr_$_t_bytes32_$", + "typeString": "tuple(struct BeefyConsensusState memory,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4055:103:49" + }, + { + "assignments": [ + 57621 + ], + "declarations": [ + { + "constant": false, + "id": 57621, + "mutability": "mutable", + "name": "intermediate", + "nameLocation": "4249:12:49", + "nodeType": "VariableDeclaration", + "scope": 57632, + "src": "4224:37:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_memory_ptr", + "typeString": "struct IntermediateState" + }, + "typeName": { + "id": 57620, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57619, + "name": "IntermediateState", + "nameLocations": [ + "4224:17:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45360, + "src": "4224:17:49" + }, + "referencedDeclaration": 45360, + "src": "4224:17:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_storage_ptr", + "typeString": "struct IntermediateState" + } + }, + "visibility": "internal" + } + ], + "id": 57627, + "initialValue": { + "arguments": [ + { + "id": 57623, + "name": "headsRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57612, + "src": "4291:9:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 57624, + "name": "proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57599, + "src": "4302:5:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusProof_$57490_memory_ptr", + "typeString": "struct BeefyConsensusProof memory" + } + }, + "id": 57625, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4308:9:49", + "memberName": "parachain", + "nodeType": "MemberAccess", + "referencedDeclaration": 57489, + "src": "4302:15:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParachainProof_$57483_memory_ptr", + "typeString": "struct ParachainProof memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_struct$_ParachainProof_$57483_memory_ptr", + "typeString": "struct ParachainProof memory" + } + ], + "id": 57622, + "name": "verifyParachainHeaderProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58197, + "src": "4264:26:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_struct$_ParachainProof_$57483_memory_ptr_$returns$_t_struct$_IntermediateState_$45360_memory_ptr_$", + "typeString": "function (bytes32,struct ParachainProof memory) view returns (struct IntermediateState memory)" + } + }, + "id": 57626, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4264:54:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_memory_ptr", + "typeString": "struct IntermediateState memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4224:94:49" + }, + { + "expression": { + "components": [ + { + "id": 57628, + "name": "state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57610, + "src": "4337:5:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + { + "id": 57629, + "name": "intermediate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57621, + "src": "4344:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_memory_ptr", + "typeString": "struct IntermediateState memory" + } + } + ], + "id": 57630, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4336:21:49", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_struct$_BeefyConsensusState_$57382_memory_ptr_$_t_struct$_IntermediateState_$45360_memory_ptr_$", + "typeString": "tuple(struct BeefyConsensusState memory,struct IntermediateState memory)" + } + }, + "functionReturnParameters": 57607, + "id": 57631, + "nodeType": "Return", + "src": "4329:28:49" + } + ] + }, + "documentation": { + "id": 57593, + "nodeType": "StructuredDocumentation", + "src": "3657:144:49", + "text": "Verify the consensus proof and return the new trusted consensus state and any intermediate states finalized\n by this consensus proof." + }, + "functionSelector": "5e399aea", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "verifyConsensus", + "nameLocation": "3815:15:49", + "parameters": { + "id": 57600, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 57596, + "mutability": "mutable", + "name": "trustedState", + "nameLocation": "3858:12:49", + "nodeType": "VariableDeclaration", + "scope": 57633, + "src": "3831:39:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState" + }, + "typeName": { + "id": 57595, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57594, + "name": "BeefyConsensusState", + "nameLocations": [ + "3831:19:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57382, + "src": "3831:19:49" + }, + "referencedDeclaration": 57382, + "src": "3831:19:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_storage_ptr", + "typeString": "struct BeefyConsensusState" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57599, + "mutability": "mutable", + "name": "proof", + "nameLocation": "3899:5:49", + "nodeType": "VariableDeclaration", + "scope": 57633, + "src": "3872:32:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusProof_$57490_memory_ptr", + "typeString": "struct BeefyConsensusProof" + }, + "typeName": { + "id": 57598, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57597, + "name": "BeefyConsensusProof", + "nameLocations": [ + "3872:19:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57490, + "src": "3872:19:49" + }, + "referencedDeclaration": 57490, + "src": "3872:19:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusProof_$57490_storage_ptr", + "typeString": "struct BeefyConsensusProof" + } + }, + "visibility": "internal" + } + ], + "src": "3830:75:49" + }, + "returnParameters": { + "id": 57607, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 57603, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 57633, + "src": "3953:26:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState" + }, + "typeName": { + "id": 57602, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57601, + "name": "BeefyConsensusState", + "nameLocations": [ + "3953:19:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57382, + "src": "3953:19:49" + }, + "referencedDeclaration": 57382, + "src": "3953:19:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_storage_ptr", + "typeString": "struct BeefyConsensusState" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57606, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 57633, + "src": "3981:24:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_memory_ptr", + "typeString": "struct IntermediateState" + }, + "typeName": { + "id": 57605, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57604, + "name": "IntermediateState", + "nameLocations": [ + "3981:17:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45360, + "src": "3981:17:49" + }, + "referencedDeclaration": 45360, + "src": "3981:17:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_storage_ptr", + "typeString": "struct IntermediateState" + } + }, + "visibility": "internal" + } + ], + "src": "3952:54:49" + }, + "scope": 58244, + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "id": 57920, + "nodeType": "FunctionDefinition", + "src": "4798:3011:49", + "nodes": [], + "body": { + "id": 57919, + "nodeType": "Block", + "src": "4991:2818:49", + "nodes": [], + "statements": [ + { + "assignments": [ + 57649 + ], + "declarations": [ + { + "constant": false, + "id": 57649, + "mutability": "mutable", + "name": "signatures_length", + "nameLocation": "5009:17:49", + "nodeType": "VariableDeclaration", + "scope": 57919, + "src": "5001:25:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57648, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5001:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 57654, + "initialValue": { + "expression": { + "expression": { + "expression": { + "id": 57650, + "name": "relayProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57640, + "src": "5029:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + } + }, + "id": 57651, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5040:16:49", + "memberName": "signedCommitment", + "nodeType": "MemberAccess", + "referencedDeclaration": 57449, + "src": "5029:27:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignedCommitment_$57419_memory_ptr", + "typeString": "struct SignedCommitment memory" + } + }, + "id": 57652, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5057:5:49", + "memberName": "votes", + "nodeType": "MemberAccess", + "referencedDeclaration": 57418, + "src": "5029:33:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Vote_$57411_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Vote memory[] memory" + } + }, + "id": 57653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5063:6:49", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "5029:40:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5001:68:49" + }, + { + "assignments": [ + 57656 + ], + "declarations": [ + { + "constant": false, + "id": 57656, + "mutability": "mutable", + "name": "latestHeight", + "nameLocation": "5087:12:49", + "nodeType": "VariableDeclaration", + "scope": 57919, + "src": "5079:20:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57655, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5079:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 57661, + "initialValue": { + "expression": { + "expression": { + "expression": { + "id": 57657, + "name": "relayProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57640, + "src": "5102:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + } + }, + "id": 57658, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5113:16:49", + "memberName": "signedCommitment", + "nodeType": "MemberAccess", + "referencedDeclaration": 57449, + "src": "5102:27:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignedCommitment_$57419_memory_ptr", + "typeString": "struct SignedCommitment memory" + } + }, + "id": 57659, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5130:10:49", + "memberName": "commitment", + "nodeType": "MemberAccess", + "referencedDeclaration": 57414, + "src": "5102:38:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Commitment_$57406_memory_ptr", + "typeString": "struct Commitment memory" + } + }, + "id": 57660, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5141:11:49", + "memberName": "blockNumber", + "nodeType": "MemberAccess", + "referencedDeclaration": 57403, + "src": "5102:50:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5079:73:49" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 57663, + "name": "latestHeight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57656, + "src": "5171:12:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 57664, + "name": "trustedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57637, + "src": "5186:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + "id": 57665, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5199:12:49", + "memberName": "latestHeight", + "nodeType": "MemberAccess", + "referencedDeclaration": 57370, + "src": "5186:25:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5171:40:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "636f6e73656e73757320636c69656e7473206f6e6c79206163636570742070726f6f667320666f72206e65772068656164657273", + "id": 57667, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5213:54:49", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_20ae10a3e75afa6779efe3986ec47cf449c331e896e0091bf30c183dee607d8a", + "typeString": "literal_string \"consensus clients only accept proofs for new headers\"" + }, + "value": "consensus clients only accept proofs for new headers" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_20ae10a3e75afa6779efe3986ec47cf449c331e896e0091bf30c183dee607d8a", + "typeString": "literal_string \"consensus clients only accept proofs for new headers\"" + } + ], + "id": 57662, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5163:7:49", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 57668, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5163:105:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57669, + "nodeType": "ExpressionStatement", + "src": "5163:105:49" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 57683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 57672, + "name": "signatures_length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57649, + "src": "5327:17:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "expression": { + "id": 57673, + "name": "trustedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57637, + "src": "5346:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + "id": 57674, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5359:19:49", + "memberName": "currentAuthoritySet", + "nodeType": "MemberAccess", + "referencedDeclaration": 57377, + "src": "5346:32:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_memory_ptr", + "typeString": "struct AuthoritySetCommitment memory" + } + }, + "id": 57675, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5379:3:49", + "memberName": "len", + "nodeType": "MemberAccess", + "referencedDeclaration": 57388, + "src": "5346:36:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 57671, + "name": "checkParticipationThreshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58243, + "src": "5299:27:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256,uint256) pure returns (bool)" + } + }, + "id": 57676, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5299:84:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "arguments": [ + { + "id": 57678, + "name": "signatures_length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57649, + "src": "5431:17:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "expression": { + "id": 57679, + "name": "trustedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57637, + "src": "5450:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + "id": 57680, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5463:16:49", + "memberName": "nextAuthoritySet", + "nodeType": "MemberAccess", + "referencedDeclaration": 57381, + "src": "5450:29:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_memory_ptr", + "typeString": "struct AuthoritySetCommitment memory" + } + }, + "id": 57681, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5480:3:49", + "memberName": "len", + "nodeType": "MemberAccess", + "referencedDeclaration": 57388, + "src": "5450:33:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 57677, + "name": "checkParticipationThreshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58243, + "src": "5403:27:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256,uint256) pure returns (bool)" + } + }, + "id": 57682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5403:81:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5299:185:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "5375706572206d616a6f72697479207468726573686f6c64206e6f742072656163686564", + "id": 57684, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5498:38:49", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_718bec4a0db58190091f05a867c5e0b576fa6685e317fcaac46d0c9887b1f216", + "typeString": "literal_string \"Super majority threshold not reached\"" + }, + "value": "Super majority threshold not reached" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_718bec4a0db58190091f05a867c5e0b576fa6685e317fcaac46d0c9887b1f216", + "typeString": "literal_string \"Super majority threshold not reached\"" + } + ], + "id": 57670, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5278:7:49", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 57685, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5278:268:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57686, + "nodeType": "ExpressionStatement", + "src": "5278:268:49" + }, + { + "assignments": [ + 57689 + ], + "declarations": [ + { + "constant": false, + "id": 57689, + "mutability": "mutable", + "name": "commitment", + "nameLocation": "5575:10:49", + "nodeType": "VariableDeclaration", + "scope": 57919, + "src": "5557:28:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Commitment_$57406_memory_ptr", + "typeString": "struct Commitment" + }, + "typeName": { + "id": 57688, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57687, + "name": "Commitment", + "nameLocations": [ + "5557:10:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57406, + "src": "5557:10:49" + }, + "referencedDeclaration": 57406, + "src": "5557:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Commitment_$57406_storage_ptr", + "typeString": "struct Commitment" + } + }, + "visibility": "internal" + } + ], + "id": 57693, + "initialValue": { + "expression": { + "expression": { + "id": 57690, + "name": "relayProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57640, + "src": "5588:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + } + }, + "id": 57691, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5599:16:49", + "memberName": "signedCommitment", + "nodeType": "MemberAccess", + "referencedDeclaration": 57449, + "src": "5588:27:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignedCommitment_$57419_memory_ptr", + "typeString": "struct SignedCommitment memory" + } + }, + "id": 57692, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5616:10:49", + "memberName": "commitment", + "nodeType": "MemberAccess", + "referencedDeclaration": 57414, + "src": "5588:38:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Commitment_$57406_memory_ptr", + "typeString": "struct Commitment memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5557:69:49" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 57707, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 57695, + "name": "commitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57689, + "src": "5658:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Commitment_$57406_memory_ptr", + "typeString": "struct Commitment memory" + } + }, + "id": 57696, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5669:14:49", + "memberName": "validatorSetId", + "nodeType": "MemberAccess", + "referencedDeclaration": 57405, + "src": "5658:25:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "expression": { + "id": 57697, + "name": "trustedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57637, + "src": "5687:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + "id": 57698, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5700:19:49", + "memberName": "currentAuthoritySet", + "nodeType": "MemberAccess", + "referencedDeclaration": 57377, + "src": "5687:32:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_memory_ptr", + "typeString": "struct AuthoritySetCommitment memory" + } + }, + "id": 57699, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5720:2:49", + "memberName": "id", + "nodeType": "MemberAccess", + "referencedDeclaration": 57385, + "src": "5687:35:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5658:64:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 57701, + "name": "commitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57689, + "src": "5742:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Commitment_$57406_memory_ptr", + "typeString": "struct Commitment memory" + } + }, + "id": 57702, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5753:14:49", + "memberName": "validatorSetId", + "nodeType": "MemberAccess", + "referencedDeclaration": 57405, + "src": "5742:25:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "expression": { + "id": 57703, + "name": "trustedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57637, + "src": "5771:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + "id": 57704, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5784:16:49", + "memberName": "nextAuthoritySet", + "nodeType": "MemberAccess", + "referencedDeclaration": 57381, + "src": "5771:29:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_memory_ptr", + "typeString": "struct AuthoritySetCommitment memory" + } + }, + "id": 57705, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5801:2:49", + "memberName": "id", + "nodeType": "MemberAccess", + "referencedDeclaration": 57385, + "src": "5771:32:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5742:61:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5658:145:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "556e6b6e6f776e20617574686f7269747920736574", + "id": 57708, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5817:23:49", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_85138eb7183e676022ecaca0f5c99a8131c652851827f09f4ec938798897a322", + "typeString": "literal_string \"Unknown authority set\"" + }, + "value": "Unknown authority set" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_85138eb7183e676022ecaca0f5c99a8131c652851827f09f4ec938798897a322", + "typeString": "literal_string \"Unknown authority set\"" + } + ], + "id": 57694, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5637:7:49", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 57709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5637:213:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57710, + "nodeType": "ExpressionStatement", + "src": "5637:213:49" + }, + { + "assignments": [ + 57712 + ], + "declarations": [ + { + "constant": false, + "id": 57712, + "mutability": "mutable", + "name": "is_current_authorities", + "nameLocation": "5866:22:49", + "nodeType": "VariableDeclaration", + "scope": 57919, + "src": "5861:27:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 57711, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5861:4:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 57719, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57718, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 57713, + "name": "commitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57689, + "src": "5891:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Commitment_$57406_memory_ptr", + "typeString": "struct Commitment memory" + } + }, + "id": 57714, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5902:14:49", + "memberName": "validatorSetId", + "nodeType": "MemberAccess", + "referencedDeclaration": 57405, + "src": "5891:25:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "expression": { + "id": 57715, + "name": "trustedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57637, + "src": "5920:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + "id": 57716, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5933:19:49", + "memberName": "currentAuthoritySet", + "nodeType": "MemberAccess", + "referencedDeclaration": 57377, + "src": "5920:32:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_memory_ptr", + "typeString": "struct AuthoritySetCommitment memory" + } + }, + "id": 57717, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5953:2:49", + "memberName": "id", + "nodeType": "MemberAccess", + "referencedDeclaration": 57385, + "src": "5920:35:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5891:64:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5861:94:49" + }, + { + "assignments": [ + 57721 + ], + "declarations": [ + { + "constant": false, + "id": 57721, + "mutability": "mutable", + "name": "payload_len", + "nameLocation": "5974:11:49", + "nodeType": "VariableDeclaration", + "scope": 57919, + "src": "5966:19:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57720, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5966:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 57725, + "initialValue": { + "expression": { + "expression": { + "id": 57722, + "name": "commitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57689, + "src": "5988:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Commitment_$57406_memory_ptr", + "typeString": "struct Commitment memory" + } + }, + "id": 57723, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5999:7:49", + "memberName": "payload", + "nodeType": "MemberAccess", + "referencedDeclaration": 57401, + "src": "5988:18:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Payload_$57397_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Payload memory[] memory" + } + }, + "id": 57724, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6007:6:49", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "5988:25:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5966:47:49" + }, + { + "assignments": [ + 57727 + ], + "declarations": [ + { + "constant": false, + "id": 57727, + "mutability": "mutable", + "name": "mmrRoot", + "nameLocation": "6031:7:49", + "nodeType": "VariableDeclaration", + "scope": 57919, + "src": "6023:15:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 57726, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6023:7:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 57728, + "nodeType": "VariableDeclarationStatement", + "src": "6023:15:49" + }, + { + "body": { + "id": 57768, + "nodeType": "Block", + "src": "6091:206:49", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 57754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bytes2", + "typeString": "bytes2" + }, + "id": 57745, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "baseExpression": { + "expression": { + "id": 57739, + "name": "commitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57689, + "src": "6109:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Commitment_$57406_memory_ptr", + "typeString": "struct Commitment memory" + } + }, + "id": 57740, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6120:7:49", + "memberName": "payload", + "nodeType": "MemberAccess", + "referencedDeclaration": 57401, + "src": "6109:18:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Payload_$57397_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Payload memory[] memory" + } + }, + "id": 57742, + "indexExpression": { + "id": 57741, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57730, + "src": "6128:1:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6109:21:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Payload_$57397_memory_ptr", + "typeString": "struct Payload memory" + } + }, + "id": 57743, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6131:2:49", + "memberName": "id", + "nodeType": "MemberAccess", + "referencedDeclaration": 57394, + "src": "6109:24:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes2", + "typeString": "bytes2" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 57744, + "name": "MMR_ROOT_PAYLOAD_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57507, + "src": "6137:19:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes2", + "typeString": "bytes2" + } + }, + "src": "6109:47:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57753, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "baseExpression": { + "expression": { + "id": 57746, + "name": "commitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57689, + "src": "6160:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Commitment_$57406_memory_ptr", + "typeString": "struct Commitment memory" + } + }, + "id": 57747, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6171:7:49", + "memberName": "payload", + "nodeType": "MemberAccess", + "referencedDeclaration": 57401, + "src": "6160:18:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Payload_$57397_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Payload memory[] memory" + } + }, + "id": 57749, + "indexExpression": { + "id": 57748, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57730, + "src": "6179:1:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6160:21:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Payload_$57397_memory_ptr", + "typeString": "struct Payload memory" + } + }, + "id": 57750, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6182:4:49", + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": 57396, + "src": "6160:26:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 57751, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6187:6:49", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "6160:33:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "3332", + "id": 57752, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6197:2:49", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "6160:39:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "6109:90:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 57767, + "nodeType": "IfStatement", + "src": "6105:182:49", + "trueBody": { + "id": 57766, + "nodeType": "Block", + "src": "6201:86:49", + "statements": [ + { + "expression": { + "id": 57764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 57755, + "name": "mmrRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57727, + "src": "6219:7:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "baseExpression": { + "expression": { + "id": 57758, + "name": "commitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57689, + "src": "6245:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Commitment_$57406_memory_ptr", + "typeString": "struct Commitment memory" + } + }, + "id": 57759, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6256:7:49", + "memberName": "payload", + "nodeType": "MemberAccess", + "referencedDeclaration": 57401, + "src": "6245:18:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Payload_$57397_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Payload memory[] memory" + } + }, + "id": 57761, + "indexExpression": { + "id": 57760, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57730, + "src": "6264:1:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6245:21:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Payload_$57397_memory_ptr", + "typeString": "struct Payload memory" + } + }, + "id": 57762, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6267:4:49", + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": 57396, + "src": "6245:26:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 57756, + "name": "Bytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 51191, + "src": "6229:5:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Bytes_$51191_$", + "typeString": "type(library Bytes)" + } + }, + "id": 57757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6235:9:49", + "memberName": "toBytes32", + "nodeType": "MemberAccess", + "referencedDeclaration": 50869, + "src": "6229:15:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 57763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6229:43:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "6219:53:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 57765, + "nodeType": "ExpressionStatement", + "src": "6219:53:49" + } + ] + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57735, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 57733, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57730, + "src": "6069:1:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 57734, + "name": "payload_len", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57721, + "src": "6073:11:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6069:15:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 57769, + "initializationExpression": { + "assignments": [ + 57730 + ], + "declarations": [ + { + "constant": false, + "id": 57730, + "mutability": "mutable", + "name": "i", + "nameLocation": "6062:1:49", + "nodeType": "VariableDeclaration", + "scope": 57769, + "src": "6054:9:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57729, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6054:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 57732, + "initialValue": { + "hexValue": "30", + "id": 57731, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6066:1:49", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "6054:13:49" + }, + "loopExpression": { + "expression": { + "id": 57737, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "6086:3:49", + "subExpression": { + "id": 57736, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57730, + "src": "6086:1:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 57738, + "nodeType": "ExpressionStatement", + "src": "6086:3:49" + }, + "nodeType": "ForStatement", + "src": "6049:248:49" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 57776, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 57771, + "name": "mmrRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57727, + "src": "6315:7:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 57774, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6334:1:49", + "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": 57773, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6326:7:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 57772, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6326:7:49", + "typeDescriptions": {} + } + }, + "id": 57775, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6326:10:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "6315:21:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4d6d7220726f6f742068617368206e6f7420666f756e64", + "id": 57777, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6338:25:49", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f85b45fc9c42440e0b58ea97df3333abad81ec11c7f50158fd67032b15591a47", + "typeString": "literal_string \"Mmr root hash not found\"" + }, + "value": "Mmr root hash not found" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f85b45fc9c42440e0b58ea97df3333abad81ec11c7f50158fd67032b15591a47", + "typeString": "literal_string \"Mmr root hash not found\"" + } + ], + "id": 57770, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6307:7:49", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 57778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6307:57:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57779, + "nodeType": "ExpressionStatement", + "src": "6307:57:49" + }, + { + "assignments": [ + 57781 + ], + "declarations": [ + { + "constant": false, + "id": 57781, + "mutability": "mutable", + "name": "commitment_hash", + "nameLocation": "6383:15:49", + "nodeType": "VariableDeclaration", + "scope": 57919, + "src": "6375:23:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 57780, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6375:7:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 57788, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 57785, + "name": "commitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57689, + "src": "6424:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Commitment_$57406_memory_ptr", + "typeString": "struct Commitment memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Commitment_$57406_memory_ptr", + "typeString": "struct Commitment memory" + } + ], + "expression": { + "id": 57783, + "name": "Codec", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58968, + "src": "6411:5:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Codec_$58968_$", + "typeString": "type(library Codec)" + } + }, + "id": 57784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6417:6:49", + "memberName": "Encode", + "nodeType": "MemberAccess", + "referencedDeclaration": 58366, + "src": "6411:12:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Commitment_$57406_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (struct Commitment memory) pure returns (bytes memory)" + } + }, + "id": 57786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6411:24:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 57782, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "6401:9:49", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 57787, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6401:35:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6375:61:49" + }, + { + "assignments": [ + 57793 + ], + "declarations": [ + { + "constant": false, + "id": 57793, + "mutability": "mutable", + "name": "authorities", + "nameLocation": "6460:11:49", + "nodeType": "VariableDeclaration", + "scope": 57919, + "src": "6446:25:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Node[]" + }, + "typeName": { + "baseType": { + "id": 57791, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57790, + "name": "Node", + "nameLocations": [ + "6446:4:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49043, + "src": "6446:4:49" + }, + "referencedDeclaration": 49043, + "src": "6446:4:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$49043_storage_ptr", + "typeString": "struct Node" + } + }, + "id": 57792, + "nodeType": "ArrayTypeName", + "src": "6446:6:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Node_$49043_storage_$dyn_storage_ptr", + "typeString": "struct Node[]" + } + }, + "visibility": "internal" + } + ], + "id": 57800, + "initialValue": { + "arguments": [ + { + "id": 57798, + "name": "signatures_length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57649, + "src": "6485:17:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 57797, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "6474:10:49", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (struct Node memory[] memory)" + }, + "typeName": { + "baseType": { + "id": 57795, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57794, + "name": "Node", + "nameLocations": [ + "6478:4:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49043, + "src": "6478:4:49" + }, + "referencedDeclaration": 49043, + "src": "6478:4:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$49043_storage_ptr", + "typeString": "struct Node" + } + }, + "id": 57796, + "nodeType": "ArrayTypeName", + "src": "6478:6:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Node_$49043_storage_$dyn_storage_ptr", + "typeString": "struct Node[]" + } + } + }, + "id": 57799, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6474:29:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Node memory[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6446:57:49" + }, + { + "body": { + "id": 57844, + "nodeType": "Block", + "src": "6599:256:49", + "statements": [ + { + "assignments": [ + 57813 + ], + "declarations": [ + { + "constant": false, + "id": 57813, + "mutability": "mutable", + "name": "vote", + "nameLocation": "6625:4:49", + "nodeType": "VariableDeclaration", + "scope": 57844, + "src": "6613:16:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Vote_$57411_memory_ptr", + "typeString": "struct Vote" + }, + "typeName": { + "id": 57812, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57811, + "name": "Vote", + "nameLocations": [ + "6613:4:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57411, + "src": "6613:4:49" + }, + "referencedDeclaration": 57411, + "src": "6613:4:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Vote_$57411_storage_ptr", + "typeString": "struct Vote" + } + }, + "visibility": "internal" + } + ], + "id": 57819, + "initialValue": { + "baseExpression": { + "expression": { + "expression": { + "id": 57814, + "name": "relayProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57640, + "src": "6632:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + } + }, + "id": 57815, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6643:16:49", + "memberName": "signedCommitment", + "nodeType": "MemberAccess", + "referencedDeclaration": 57449, + "src": "6632:27:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignedCommitment_$57419_memory_ptr", + "typeString": "struct SignedCommitment memory" + } + }, + "id": 57816, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6660:5:49", + "memberName": "votes", + "nodeType": "MemberAccess", + "referencedDeclaration": 57418, + "src": "6632:33:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Vote_$57411_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Vote memory[] memory" + } + }, + "id": 57818, + "indexExpression": { + "id": 57817, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57802, + "src": "6666:1:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6632:36:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Vote_$57411_memory_ptr", + "typeString": "struct Vote memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6613:55:49" + }, + { + "assignments": [ + 57821 + ], + "declarations": [ + { + "constant": false, + "id": 57821, + "mutability": "mutable", + "name": "authority", + "nameLocation": "6690:9:49", + "nodeType": "VariableDeclaration", + "scope": 57844, + "src": "6682:17:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 57820, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6682:7:49", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 57828, + "initialValue": { + "arguments": [ + { + "id": 57824, + "name": "commitment_hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57781, + "src": "6716:15:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 57825, + "name": "vote", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57813, + "src": "6733:4:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Vote_$57411_memory_ptr", + "typeString": "struct Vote memory" + } + }, + "id": 57826, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6738:9:49", + "memberName": "signature", + "nodeType": "MemberAccess", + "referencedDeclaration": 57408, + "src": "6733:14:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 57822, + "name": "ECDSA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47004, + "src": "6702:5:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ECDSA_$47004_$", + "typeString": "type(library ECDSA)" + } + }, + "id": 57823, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6708:7:49", + "memberName": "recover", + "nodeType": "MemberAccess", + "referencedDeclaration": 46765, + "src": "6702:13:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (bytes32,bytes memory) pure returns (address)" + } + }, + "id": 57827, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6702:46:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6682:66:49" + }, + { + "expression": { + "id": 57842, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 57829, + "name": "authorities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57793, + "src": "6762:11:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Node memory[] memory" + } + }, + "id": 57831, + "indexExpression": { + "id": 57830, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57802, + "src": "6774:1:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6762:14:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$49043_memory_ptr", + "typeString": "struct Node memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "id": 57833, + "name": "vote", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57813, + "src": "6784:4:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Vote_$57411_memory_ptr", + "typeString": "struct Vote memory" + } + }, + "id": 57834, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6789:14:49", + "memberName": "authorityIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 57410, + "src": "6784:19:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "id": 57838, + "name": "authority", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57821, + "src": "6832:9:49", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 57836, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "6815:3:49", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 57837, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6819:12:49", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "6815:16:49", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 57839, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6815:27:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 57835, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "6805:9:49", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 57840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6805:38:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 57832, + "name": "Node", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49043, + "src": "6779:4:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_Node_$49043_storage_ptr_$", + "typeString": "type(struct Node storage pointer)" + } + }, + "id": 57841, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6779:65:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$49043_memory_ptr", + "typeString": "struct Node memory" + } + }, + "src": "6762:82:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$49043_memory_ptr", + "typeString": "struct Node memory" + } + }, + "id": 57843, + "nodeType": "ExpressionStatement", + "src": "6762:82:49" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57807, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 57805, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57802, + "src": "6571:1:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 57806, + "name": "signatures_length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57649, + "src": "6575:17:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6571:21:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 57845, + "initializationExpression": { + "assignments": [ + 57802 + ], + "declarations": [ + { + "constant": false, + "id": 57802, + "mutability": "mutable", + "name": "i", + "nameLocation": "6564:1:49", + "nodeType": "VariableDeclaration", + "scope": 57845, + "src": "6556:9:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57801, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6556:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 57804, + "initialValue": { + "hexValue": "30", + "id": 57803, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6568:1:49", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "6556:13:49" + }, + "loopExpression": { + "expression": { + "id": 57809, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "6594:3:49", + "subExpression": { + "id": 57808, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57802, + "src": "6594:1:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 57810, + "nodeType": "ExpressionStatement", + "src": "6594:3:49" + }, + "nodeType": "ForStatement", + "src": "6551:304:49" + }, + { + "condition": { + "id": 57846, + "name": "is_current_authorities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57712, + "src": "6904:22:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 57874, + "nodeType": "Block", + "src": "7149:209:49", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "expression": { + "id": 57864, + "name": "trustedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57637, + "src": "7217:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + "id": 57865, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7230:16:49", + "memberName": "nextAuthoritySet", + "nodeType": "MemberAccess", + "referencedDeclaration": 57381, + "src": "7217:29:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_memory_ptr", + "typeString": "struct AuthoritySetCommitment memory" + } + }, + "id": 57866, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7247:4:49", + "memberName": "root", + "nodeType": "MemberAccess", + "referencedDeclaration": 57391, + "src": "7217:34:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 57867, + "name": "relayProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57640, + "src": "7253:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + } + }, + "id": 57868, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7264:5:49", + "memberName": "proof", + "nodeType": "MemberAccess", + "referencedDeclaration": 57463, + "src": "7253:16:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Node memory[] memory[] memory" + } + }, + { + "id": 57869, + "name": "authorities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57793, + "src": "7271:11:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Node memory[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Node memory[] memory[] memory" + }, + { + "typeIdentifier": "t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Node memory[] memory" + } + ], + "expression": { + "id": 57862, + "name": "MerkleMultiProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49805, + "src": "7188:16:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MerkleMultiProof_$49805_$", + "typeString": "type(library MerkleMultiProof)" + } + }, + "id": 57863, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7205:11:49", + "memberName": "VerifyProof", + "nodeType": "MemberAccess", + "referencedDeclaration": 49069, + "src": "7188:28:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_array$_t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,struct Node memory[] memory[] memory,struct Node memory[] memory) pure returns (bool)" + } + }, + "id": 57870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7188:95:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "496e76616c6964206e65787420617574686f7269746965732070726f6f66", + "id": 57871, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7301:32:49", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_351215bf03b0ec969e47c532d8107b195bcf002d184289ae7aeca47373b19605", + "typeString": "literal_string \"Invalid next authorities proof\"" + }, + "value": "Invalid next authorities proof" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_351215bf03b0ec969e47c532d8107b195bcf002d184289ae7aeca47373b19605", + "typeString": "literal_string \"Invalid next authorities proof\"" + } + ], + "id": 57861, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7163:7:49", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 57872, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7163:184:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57873, + "nodeType": "ExpressionStatement", + "src": "7163:184:49" + } + ] + }, + "id": 57875, + "nodeType": "IfStatement", + "src": "6900:458:49", + "trueBody": { + "id": 57860, + "nodeType": "Block", + "src": "6928:215:49", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "expression": { + "id": 57850, + "name": "trustedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57637, + "src": "6996:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + "id": 57851, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7009:19:49", + "memberName": "currentAuthoritySet", + "nodeType": "MemberAccess", + "referencedDeclaration": 57377, + "src": "6996:32:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_memory_ptr", + "typeString": "struct AuthoritySetCommitment memory" + } + }, + "id": 57852, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7029:4:49", + "memberName": "root", + "nodeType": "MemberAccess", + "referencedDeclaration": 57391, + "src": "6996:37:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 57853, + "name": "relayProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57640, + "src": "7035:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + } + }, + "id": 57854, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7046:5:49", + "memberName": "proof", + "nodeType": "MemberAccess", + "referencedDeclaration": 57463, + "src": "7035:16:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Node memory[] memory[] memory" + } + }, + { + "id": 57855, + "name": "authorities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57793, + "src": "7053:11:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Node memory[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Node memory[] memory[] memory" + }, + { + "typeIdentifier": "t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Node memory[] memory" + } + ], + "expression": { + "id": 57848, + "name": "MerkleMultiProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49805, + "src": "6967:16:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MerkleMultiProof_$49805_$", + "typeString": "type(library MerkleMultiProof)" + } + }, + "id": 57849, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6984:11:49", + "memberName": "VerifyProof", + "nodeType": "MemberAccess", + "referencedDeclaration": 49069, + "src": "6967:28:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_array$_t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,struct Node memory[] memory[] memory,struct Node memory[] memory) pure returns (bool)" + } + }, + "id": 57856, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6967:98:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "496e76616c69642063757272656e7420617574686f7269746965732070726f6f66", + "id": 57857, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7083:35:49", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a89a4f966f9e8a191ff9aac270a1bf6c51b751c1c14a698ced12332360e4e703", + "typeString": "literal_string \"Invalid current authorities proof\"" + }, + "value": "Invalid current authorities proof" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a89a4f966f9e8a191ff9aac270a1bf6c51b751c1c14a698ced12332360e4e703", + "typeString": "literal_string \"Invalid current authorities proof\"" + } + ], + "id": 57847, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6942:7:49", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 57858, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6942:190:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57859, + "nodeType": "ExpressionStatement", + "src": "6942:190:49" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 57877, + "name": "trustedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57637, + "src": "7382:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + { + "id": 57878, + "name": "relayProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57640, + "src": "7396:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + } + }, + { + "id": 57879, + "name": "mmrRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57727, + "src": "7408:7:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + }, + { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 57876, + "name": "verifyMmrLeaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57993, + "src": "7368:13:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_BeefyConsensusState_$57382_memory_ptr_$_t_struct$_RelayChainProof_$57464_memory_ptr_$_t_bytes32_$returns$__$", + "typeString": "function (struct BeefyConsensusState memory,struct RelayChainProof memory,bytes32) pure" + } + }, + "id": 57880, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7368:48:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57881, + "nodeType": "ExpressionStatement", + "src": "7368:48:49" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57889, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "expression": { + "id": 57882, + "name": "relayProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57640, + "src": "7431:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + } + }, + "id": 57883, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7442:13:49", + "memberName": "latestMmrLeaf", + "nodeType": "MemberAccess", + "referencedDeclaration": 57453, + "src": "7431:24:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyMmrLeaf_$57435_memory_ptr", + "typeString": "struct BeefyMmrLeaf memory" + } + }, + "id": 57884, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7456:16:49", + "memberName": "nextAuthoritySet", + "nodeType": "MemberAccess", + "referencedDeclaration": 57428, + "src": "7431:41:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_memory_ptr", + "typeString": "struct AuthoritySetCommitment memory" + } + }, + "id": 57885, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7473:2:49", + "memberName": "id", + "nodeType": "MemberAccess", + "referencedDeclaration": 57385, + "src": "7431:44:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "expression": { + "id": 57886, + "name": "trustedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57637, + "src": "7478:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + "id": 57887, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7491:16:49", + "memberName": "nextAuthoritySet", + "nodeType": "MemberAccess", + "referencedDeclaration": 57381, + "src": "7478:29:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_memory_ptr", + "typeString": "struct AuthoritySetCommitment memory" + } + }, + "id": 57888, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7508:2:49", + "memberName": "id", + "nodeType": "MemberAccess", + "referencedDeclaration": 57385, + "src": "7478:32:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7431:79:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 57906, + "nodeType": "IfStatement", + "src": "7427:261:49", + "trueBody": { + "id": 57905, + "nodeType": "Block", + "src": "7512:176:49", + "statements": [ + { + "expression": { + "id": 57895, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 57890, + "name": "trustedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57637, + "src": "7526:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + "id": 57892, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "7539:19:49", + "memberName": "currentAuthoritySet", + "nodeType": "MemberAccess", + "referencedDeclaration": 57377, + "src": "7526:32:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_memory_ptr", + "typeString": "struct AuthoritySetCommitment memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 57893, + "name": "trustedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57637, + "src": "7561:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + "id": 57894, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7574:16:49", + "memberName": "nextAuthoritySet", + "nodeType": "MemberAccess", + "referencedDeclaration": 57381, + "src": "7561:29:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_memory_ptr", + "typeString": "struct AuthoritySetCommitment memory" + } + }, + "src": "7526:64:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_memory_ptr", + "typeString": "struct AuthoritySetCommitment memory" + } + }, + "id": 57896, + "nodeType": "ExpressionStatement", + "src": "7526:64:49" + }, + { + "expression": { + "id": 57903, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 57897, + "name": "trustedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57637, + "src": "7604:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + "id": 57899, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "7617:16:49", + "memberName": "nextAuthoritySet", + "nodeType": "MemberAccess", + "referencedDeclaration": 57381, + "src": "7604:29:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_memory_ptr", + "typeString": "struct AuthoritySetCommitment memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "expression": { + "id": 57900, + "name": "relayProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57640, + "src": "7636:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + } + }, + "id": 57901, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7647:13:49", + "memberName": "latestMmrLeaf", + "nodeType": "MemberAccess", + "referencedDeclaration": 57453, + "src": "7636:24:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyMmrLeaf_$57435_memory_ptr", + "typeString": "struct BeefyMmrLeaf memory" + } + }, + "id": 57902, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7661:16:49", + "memberName": "nextAuthoritySet", + "nodeType": "MemberAccess", + "referencedDeclaration": 57428, + "src": "7636:41:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_memory_ptr", + "typeString": "struct AuthoritySetCommitment memory" + } + }, + "src": "7604:73:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_memory_ptr", + "typeString": "struct AuthoritySetCommitment memory" + } + }, + "id": 57904, + "nodeType": "ExpressionStatement", + "src": "7604:73:49" + } + ] + } + }, + { + "expression": { + "id": 57911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 57907, + "name": "trustedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57637, + "src": "7698:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + "id": 57909, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "7711:12:49", + "memberName": "latestHeight", + "nodeType": "MemberAccess", + "referencedDeclaration": 57370, + "src": "7698:25:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 57910, + "name": "latestHeight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57656, + "src": "7726:12:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7698:40:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 57912, + "nodeType": "ExpressionStatement", + "src": "7698:40:49" + }, + { + "expression": { + "components": [ + { + "id": 57913, + "name": "trustedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57637, + "src": "7757:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + { + "expression": { + "expression": { + "id": 57914, + "name": "relayProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57640, + "src": "7771:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + } + }, + "id": 57915, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7782:13:49", + "memberName": "latestMmrLeaf", + "nodeType": "MemberAccess", + "referencedDeclaration": 57453, + "src": "7771:24:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyMmrLeaf_$57435_memory_ptr", + "typeString": "struct BeefyMmrLeaf memory" + } + }, + "id": 57916, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7796:5:49", + "memberName": "extra", + "nodeType": "MemberAccess", + "referencedDeclaration": 57430, + "src": "7771:30:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 57917, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7756:46:49", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_struct$_BeefyConsensusState_$57382_memory_ptr_$_t_bytes32_$", + "typeString": "tuple(struct BeefyConsensusState memory,bytes32)" + } + }, + "functionReturnParameters": 57647, + "id": 57918, + "nodeType": "Return", + "src": "7749:53:49" + } + ] + }, + "documentation": { + "id": 57634, + "nodeType": "StructuredDocumentation", + "src": "4370:423:49", + "text": "Verifies a new Mmmr root update, the relay chain accumulates its blocks into a merkle mountain range tree\n which light clients can use as a source for log_2(n) ancestry proofs. This new mmr root hash is signed by\n the relay chain authority set and we can verify the membership of the authorities who signed this new root\n using a merkle multi proof and a merkle commitment to the total authorities." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "verifyMmrUpdateProof", + "nameLocation": "4807:20:49", + "parameters": { + "id": 57641, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 57637, + "mutability": "mutable", + "name": "trustedState", + "nameLocation": "4855:12:49", + "nodeType": "VariableDeclaration", + "scope": 57920, + "src": "4828:39:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState" + }, + "typeName": { + "id": 57636, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57635, + "name": "BeefyConsensusState", + "nameLocations": [ + "4828:19:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57382, + "src": "4828:19:49" + }, + "referencedDeclaration": 57382, + "src": "4828:19:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_storage_ptr", + "typeString": "struct BeefyConsensusState" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57640, + "mutability": "mutable", + "name": "relayProof", + "nameLocation": "4892:10:49", + "nodeType": "VariableDeclaration", + "scope": 57920, + "src": "4869:33:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof" + }, + "typeName": { + "id": 57639, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57638, + "name": "RelayChainProof", + "nameLocations": [ + "4869:15:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57464, + "src": "4869:15:49" + }, + "referencedDeclaration": 57464, + "src": "4869:15:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_storage_ptr", + "typeString": "struct RelayChainProof" + } + }, + "visibility": "internal" + } + ], + "src": "4827:76:49" + }, + "returnParameters": { + "id": 57647, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 57644, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 57920, + "src": "4950:26:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState" + }, + "typeName": { + "id": 57643, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57642, + "name": "BeefyConsensusState", + "nameLocations": [ + "4950:19:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57382, + "src": "4950:19:49" + }, + "referencedDeclaration": 57382, + "src": "4950:19:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_storage_ptr", + "typeString": "struct BeefyConsensusState" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57646, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 57920, + "src": "4978:7:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 57645, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4978:7:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4949:37:49" + }, + "scope": 58244, + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "id": 57993, + "nodeType": "FunctionDefinition", + "src": "7853:595:49", + "nodes": [], + "body": { + "id": 57992, + "nodeType": "Block", + "src": "7997:451:49", + "nodes": [], + "statements": [ + { + "assignments": [ + 57933 + ], + "declarations": [ + { + "constant": false, + "id": 57933, + "mutability": "mutable", + "name": "hash", + "nameLocation": "8015:4:49", + "nodeType": "VariableDeclaration", + "scope": 57992, + "src": "8007:12:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 57932, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8007:7:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 57941, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 57937, + "name": "relay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57927, + "src": "8045:5:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + } + }, + "id": 57938, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8051:13:49", + "memberName": "latestMmrLeaf", + "nodeType": "MemberAccess", + "referencedDeclaration": 57453, + "src": "8045:19:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyMmrLeaf_$57435_memory_ptr", + "typeString": "struct BeefyMmrLeaf memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_BeefyMmrLeaf_$57435_memory_ptr", + "typeString": "struct BeefyMmrLeaf memory" + } + ], + "expression": { + "id": 57935, + "name": "Codec", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58968, + "src": "8032:5:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Codec_$58968_$", + "typeString": "type(library Codec)" + } + }, + "id": 57936, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8038:6:49", + "memberName": "Encode", + "nodeType": "MemberAccess", + "referencedDeclaration": 58465, + "src": "8032:12:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_BeefyMmrLeaf_$57435_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (struct BeefyMmrLeaf memory) pure returns (bytes memory)" + } + }, + "id": 57939, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8032:33:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 57934, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "8022:9:49", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 57940, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8022:44:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8007:59:49" + }, + { + "assignments": [ + 57943 + ], + "declarations": [ + { + "constant": false, + "id": 57943, + "mutability": "mutable", + "name": "leafCount", + "nameLocation": "8084:9:49", + "nodeType": "VariableDeclaration", + "scope": 57992, + "src": "8076:17:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57942, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8076:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 57953, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57952, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "id": 57945, + "name": "trustedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57924, + "src": "8106:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + "id": 57946, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8119:20:49", + "memberName": "beefyActivationBlock", + "nodeType": "MemberAccess", + "referencedDeclaration": 57373, + "src": "8106:33:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "expression": { + "id": 57947, + "name": "relay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57927, + "src": "8141:5:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + } + }, + "id": 57948, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8147:13:49", + "memberName": "latestMmrLeaf", + "nodeType": "MemberAccess", + "referencedDeclaration": 57453, + "src": "8141:19:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyMmrLeaf_$57435_memory_ptr", + "typeString": "struct BeefyMmrLeaf memory" + } + }, + "id": 57949, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8161:12:49", + "memberName": "parentNumber", + "nodeType": "MemberAccess", + "referencedDeclaration": 57423, + "src": "8141:32:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 57944, + "name": "leafIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58220, + "src": "8096:9:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 57950, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8096:78:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 57951, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8177:1:49", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "8096:82:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8076:102:49" + }, + { + "assignments": [ + 57958 + ], + "declarations": [ + { + "constant": false, + "id": 57958, + "mutability": "mutable", + "name": "leaves", + "nameLocation": "8206:6:49", + "nodeType": "VariableDeclaration", + "scope": 57992, + "src": "8189:23:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$47986_memory_ptr_$dyn_memory_ptr", + "typeString": "struct MmrLeaf[]" + }, + "typeName": { + "baseType": { + "id": 57956, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57955, + "name": "MmrLeaf", + "nameLocations": [ + "8189:7:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 47986, + "src": "8189:7:49" + }, + "referencedDeclaration": 47986, + "src": "8189:7:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MmrLeaf_$47986_storage_ptr", + "typeString": "struct MmrLeaf" + } + }, + "id": 57957, + "nodeType": "ArrayTypeName", + "src": "8189:9:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$47986_storage_$dyn_storage_ptr", + "typeString": "struct MmrLeaf[]" + } + }, + "visibility": "internal" + } + ], + "id": 57965, + "initialValue": { + "arguments": [ + { + "hexValue": "31", + "id": 57963, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8229:1:49", + "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": 57962, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "8215:13:49", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_MmrLeaf_$47986_memory_ptr_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (struct MmrLeaf memory[] memory)" + }, + "typeName": { + "baseType": { + "id": 57960, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57959, + "name": "MmrLeaf", + "nameLocations": [ + "8219:7:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 47986, + "src": "8219:7:49" + }, + "referencedDeclaration": 47986, + "src": "8219:7:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MmrLeaf_$47986_storage_ptr", + "typeString": "struct MmrLeaf" + } + }, + "id": 57961, + "nodeType": "ArrayTypeName", + "src": "8219:9:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$47986_storage_$dyn_storage_ptr", + "typeString": "struct MmrLeaf[]" + } + } + }, + "id": 57964, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8215:16:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$47986_memory_ptr_$dyn_memory_ptr", + "typeString": "struct MmrLeaf memory[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8189:42:49" + }, + { + "expression": { + "id": 57978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 57966, + "name": "leaves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57958, + "src": "8241:6:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$47986_memory_ptr_$dyn_memory_ptr", + "typeString": "struct MmrLeaf memory[] memory" + } + }, + "id": 57968, + "indexExpression": { + "hexValue": "30", + "id": 57967, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8248:1:49", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8241:9:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MmrLeaf_$47986_memory_ptr", + "typeString": "struct MmrLeaf memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "expression": { + "id": 57970, + "name": "relay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57927, + "src": "8261:5:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + } + }, + "id": 57971, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8267:13:49", + "memberName": "latestMmrLeaf", + "nodeType": "MemberAccess", + "referencedDeclaration": 57453, + "src": "8261:19:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyMmrLeaf_$57435_memory_ptr", + "typeString": "struct BeefyMmrLeaf memory" + } + }, + "id": 57972, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8281:6:49", + "memberName": "kIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 57432, + "src": "8261:26:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "expression": { + "id": 57973, + "name": "relay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57927, + "src": "8289:5:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + } + }, + "id": 57974, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8295:13:49", + "memberName": "latestMmrLeaf", + "nodeType": "MemberAccess", + "referencedDeclaration": 57453, + "src": "8289:19:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyMmrLeaf_$57435_memory_ptr", + "typeString": "struct BeefyMmrLeaf memory" + } + }, + "id": 57975, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8309:9:49", + "memberName": "leafIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 57434, + "src": "8289:29:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 57976, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57933, + "src": "8320:4:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 57969, + "name": "MmrLeaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47986, + "src": "8253:7:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_MmrLeaf_$47986_storage_ptr_$", + "typeString": "type(struct MmrLeaf storage pointer)" + } + }, + "id": 57977, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8253:72:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_MmrLeaf_$47986_memory_ptr", + "typeString": "struct MmrLeaf memory" + } + }, + "src": "8241:84:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MmrLeaf_$47986_memory_ptr", + "typeString": "struct MmrLeaf memory" + } + }, + "id": 57979, + "nodeType": "ExpressionStatement", + "src": "8241:84:49" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 57983, + "name": "mmrRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57929, + "src": "8376:7:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 57984, + "name": "relay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57927, + "src": "8385:5:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + } + }, + "id": 57985, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8391:8:49", + "memberName": "mmrProof", + "nodeType": "MemberAccess", + "referencedDeclaration": 57457, + "src": "8385:14:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + { + "id": 57986, + "name": "leaves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57958, + "src": "8401:6:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$47986_memory_ptr_$dyn_memory_ptr", + "typeString": "struct MmrLeaf memory[] memory" + } + }, + { + "id": 57987, + "name": "leafCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57943, + "src": "8409:9:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + }, + { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$47986_memory_ptr_$dyn_memory_ptr", + "typeString": "struct MmrLeaf memory[] memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 57981, + "name": "MerkleMountainRange", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49035, + "src": "8344:19:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MerkleMountainRange_$49035_$", + "typeString": "type(library MerkleMountainRange)" + } + }, + "id": 57982, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8364:11:49", + "memberName": "VerifyProof", + "nodeType": "MemberAccess", + "referencedDeclaration": 48019, + "src": "8344:31:49", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_bytes32_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_struct$_MmrLeaf_$47986_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes32[] memory,struct MmrLeaf memory[] memory,uint256) pure returns (bool)" + } + }, + "id": 57988, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8344:75:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "496e76616c6964204d6d722050726f6f66", + "id": 57989, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8421:19:49", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2bbb2c09e28047a7dbf50f4fb7f8a81eb1c8c14de832949b9c670eeb6cd55770", + "typeString": "literal_string \"Invalid Mmr Proof\"" + }, + "value": "Invalid Mmr Proof" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2bbb2c09e28047a7dbf50f4fb7f8a81eb1c8c14de832949b9c670eeb6cd55770", + "typeString": "literal_string \"Invalid Mmr Proof\"" + } + ], + "id": 57980, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "8336:7:49", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 57990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8336:105:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57991, + "nodeType": "ExpressionStatement", + "src": "8336:105:49" + } + ] + }, + "documentation": { + "id": 57921, + "nodeType": "StructuredDocumentation", + "src": "7815:33:49", + "text": "Stack too deep, sigh solidity" + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "verifyMmrLeaf", + "nameLocation": "7862:13:49", + "parameters": { + "id": 57930, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 57924, + "mutability": "mutable", + "name": "trustedState", + "nameLocation": "7903:12:49", + "nodeType": "VariableDeclaration", + "scope": 57993, + "src": "7876:39:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState" + }, + "typeName": { + "id": 57923, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57922, + "name": "BeefyConsensusState", + "nameLocations": [ + "7876:19:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57382, + "src": "7876:19:49" + }, + "referencedDeclaration": 57382, + "src": "7876:19:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_storage_ptr", + "typeString": "struct BeefyConsensusState" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57927, + "mutability": "mutable", + "name": "relay", + "nameLocation": "7940:5:49", + "nodeType": "VariableDeclaration", + "scope": 57993, + "src": "7917:28:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof" + }, + "typeName": { + "id": 57926, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57925, + "name": "RelayChainProof", + "nameLocations": [ + "7917:15:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57464, + "src": "7917:15:49" + }, + "referencedDeclaration": 57464, + "src": "7917:15:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_storage_ptr", + "typeString": "struct RelayChainProof" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57929, + "mutability": "mutable", + "name": "mmrRoot", + "nameLocation": "7955:7:49", + "nodeType": "VariableDeclaration", + "scope": 57993, + "src": "7947:15:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 57928, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7947:7:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "7875:88:49" + }, + "returnParameters": { + "id": 57931, + "nodeType": "ParameterList", + "parameters": [], + "src": "7997:0:49" + }, + "scope": 58244, + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "id": 58197, + "nodeType": "FunctionDefinition", + "src": "8561:1716:49", + "nodes": [], + "body": { + "id": 58196, + "nodeType": "Block", + "src": "8721:1556:49", + "nodes": [], + "statements": [ + { + "assignments": [ + 58009 + ], + "declarations": [ + { + "constant": false, + "id": 58009, + "mutability": "mutable", + "name": "leaves", + "nameLocation": "8745:6:49", + "nodeType": "VariableDeclaration", + "scope": 58196, + "src": "8731:20:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Node[]" + }, + "typeName": { + "baseType": { + "id": 58007, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58006, + "name": "Node", + "nameLocations": [ + "8731:4:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49043, + "src": "8731:4:49" + }, + "referencedDeclaration": 49043, + "src": "8731:4:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$49043_storage_ptr", + "typeString": "struct Node" + } + }, + "id": 58008, + "nodeType": "ArrayTypeName", + "src": "8731:6:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Node_$49043_storage_$dyn_storage_ptr", + "typeString": "struct Node[]" + } + }, + "visibility": "internal" + } + ], + "id": 58016, + "initialValue": { + "arguments": [ + { + "hexValue": "31", + "id": 58014, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8765:1:49", + "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": 58013, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "8754:10:49", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (struct Node memory[] memory)" + }, + "typeName": { + "baseType": { + "id": 58011, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58010, + "name": "Node", + "nameLocations": [ + "8758:4:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49043, + "src": "8758:4:49" + }, + "referencedDeclaration": 49043, + "src": "8758:4:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$49043_storage_ptr", + "typeString": "struct Node" + } + }, + "id": 58012, + "nodeType": "ArrayTypeName", + "src": "8758:6:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Node_$49043_storage_$dyn_storage_ptr", + "typeString": "struct Node[]" + } + } + }, + "id": 58015, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8754:13:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Node memory[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8731:36:49" + }, + { + "assignments": [ + 58019 + ], + "declarations": [ + { + "constant": false, + "id": 58019, + "mutability": "mutable", + "name": "para", + "nameLocation": "8794:4:49", + "nodeType": "VariableDeclaration", + "scope": 58196, + "src": "8777:21:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parachain_$57474_memory_ptr", + "typeString": "struct Parachain" + }, + "typeName": { + "id": 58018, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58017, + "name": "Parachain", + "nameLocations": [ + "8777:9:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57474, + "src": "8777:9:49" + }, + "referencedDeclaration": 57474, + "src": "8777:9:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parachain_$57474_storage_ptr", + "typeString": "struct Parachain" + } + }, + "visibility": "internal" + } + ], + "id": 58022, + "initialValue": { + "expression": { + "id": 58020, + "name": "proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57999, + "src": "8801:5:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParachainProof_$57483_memory_ptr", + "typeString": "struct ParachainProof memory" + } + }, + "id": 58021, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8807:9:49", + "memberName": "parachain", + "nodeType": "MemberAccess", + "referencedDeclaration": 57477, + "src": "8801:15:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parachain_$57474_memory_ptr", + "typeString": "struct Parachain memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8777:39:49" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58026, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 58023, + "name": "para", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58019, + "src": "8830:4:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parachain_$57474_memory_ptr", + "typeString": "struct Parachain memory" + } + }, + "id": 58024, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8835:2:49", + "memberName": "id", + "nodeType": "MemberAccess", + "referencedDeclaration": 57470, + "src": "8830:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 58025, + "name": "_paraId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57523, + "src": "8841:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8830:18:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 58032, + "nodeType": "IfStatement", + "src": "8826:73:49", + "trueBody": { + "id": 58031, + "nodeType": "Block", + "src": "8850:49:49", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "556e6b6e6f776e20706172614964", + "id": 58028, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8871:16:49", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9f20dabc1079979935e6b023042a04ee01fec2cc5913c0a770bdf48173dd43b0", + "typeString": "literal_string \"Unknown paraId\"" + }, + "value": "Unknown paraId" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_9f20dabc1079979935e6b023042a04ee01fec2cc5913c0a770bdf48173dd43b0", + "typeString": "literal_string \"Unknown paraId\"" + } + ], + "id": 58027, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "8864:6:49", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 58029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8864:24:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58030, + "nodeType": "ExpressionStatement", + "src": "8864:24:49" + } + ] + } + }, + { + "assignments": [ + 58035 + ], + "declarations": [ + { + "constant": false, + "id": 58035, + "mutability": "mutable", + "name": "header", + "nameLocation": "8923:6:49", + "nodeType": "VariableDeclaration", + "scope": 58196, + "src": "8909:20:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Header_$59010_memory_ptr", + "typeString": "struct Header" + }, + "typeName": { + "id": 58034, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58033, + "name": "Header", + "nameLocations": [ + "8909:6:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 59010, + "src": "8909:6:49" + }, + "referencedDeclaration": 59010, + "src": "8909:6:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Header_$59010_storage_ptr", + "typeString": "struct Header" + } + }, + "visibility": "internal" + } + ], + "id": 58041, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 58038, + "name": "para", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58019, + "src": "8951:4:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parachain_$57474_memory_ptr", + "typeString": "struct Parachain memory" + } + }, + "id": 58039, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8956:6:49", + "memberName": "header", + "nodeType": "MemberAccess", + "referencedDeclaration": 57473, + "src": "8951:11:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 58036, + "name": "Codec", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58968, + "src": "8932:5:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Codec_$58968_$", + "typeString": "type(library Codec)" + } + }, + "id": 58037, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8938:12:49", + "memberName": "DecodeHeader", + "nodeType": "MemberAccess", + "referencedDeclaration": 58657, + "src": "8932:18:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_struct$_Header_$59010_memory_ptr_$", + "typeString": "function (bytes memory) pure returns (struct Header memory)" + } + }, + "id": 58040, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8932:31:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_Header_$59010_memory_ptr", + "typeString": "struct Header memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8909:54:49" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58046, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 58043, + "name": "header", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58035, + "src": "8981:6:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Header_$59010_memory_ptr", + "typeString": "struct Header memory" + } + }, + "id": 58044, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8988:6:49", + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": 59001, + "src": "8981:13:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 58045, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8998:1:49", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8981:18:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "47656e6573697320626c6f636b2073686f756c64206e6f7420626520696e636c75646564", + "id": 58047, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9001:38:49", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9af7c094aeeabc375a360ac9adb5ac74d54b464117d01ecb49f0ed7c3b81a60b", + "typeString": "literal_string \"Genesis block should not be included\"" + }, + "value": "Genesis block should not be included" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9af7c094aeeabc375a360ac9adb5ac74d54b464117d01ecb49f0ed7c3b81a60b", + "typeString": "literal_string \"Genesis block should not be included\"" + } + ], + "id": 58042, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "8973:7:49", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58048, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8973:67:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58049, + "nodeType": "ExpressionStatement", + "src": "8973:67:49" + }, + { + "assignments": [ + 58051 + ], + "declarations": [ + { + "constant": false, + "id": 58051, + "mutability": "mutable", + "name": "commitment", + "nameLocation": "9107:10:49", + "nodeType": "VariableDeclaration", + "scope": 58196, + "src": "9099:18:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 58050, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9099:7:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 58052, + "nodeType": "VariableDeclarationStatement", + "src": "9099:18:49" + }, + { + "assignments": [ + 58054 + ], + "declarations": [ + { + "constant": false, + "id": 58054, + "mutability": "mutable", + "name": "timestamp", + "nameLocation": "9135:9:49", + "nodeType": "VariableDeclaration", + "scope": 58196, + "src": "9127:17:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58053, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9127:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 58055, + "nodeType": "VariableDeclarationStatement", + "src": "9127:17:49" + }, + { + "body": { + "id": 58130, + "nodeType": "Block", + "src": "9206:529:49", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 58081, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "baseExpression": { + "expression": { + "id": 58068, + "name": "header", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58035, + "src": "9224:6:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Header_$59010_memory_ptr", + "typeString": "struct Header memory" + } + }, + "id": 58069, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9231:7:49", + "memberName": "digests", + "nodeType": "MemberAccess", + "referencedDeclaration": 59009, + "src": "9224:14:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Digest_$58997_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Digest memory[] memory" + } + }, + "id": 58071, + "indexExpression": { + "id": 58070, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58057, + "src": "9239:1:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9224:17:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Digest_$58997_memory_ptr", + "typeString": "struct Digest memory" + } + }, + "id": 58072, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9242:11:49", + "memberName": "isConsensus", + "nodeType": "MemberAccess", + "referencedDeclaration": 58982, + "src": "9224:29:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 58080, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "baseExpression": { + "expression": { + "id": 58073, + "name": "header", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58035, + "src": "9257:6:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Header_$59010_memory_ptr", + "typeString": "struct Header memory" + } + }, + "id": 58074, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9264:7:49", + "memberName": "digests", + "nodeType": "MemberAccess", + "referencedDeclaration": 59009, + "src": "9257:14:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Digest_$58997_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Digest memory[] memory" + } + }, + "id": 58076, + "indexExpression": { + "id": 58075, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58057, + "src": "9272:1:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9257:17:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Digest_$58997_memory_ptr", + "typeString": "struct Digest memory" + } + }, + "id": 58077, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9275:9:49", + "memberName": "consensus", + "nodeType": "MemberAccess", + "referencedDeclaration": 58985, + "src": "9257:27:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DigestItem_$58975_memory_ptr", + "typeString": "struct DigestItem memory" + } + }, + "id": 58078, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9285:11:49", + "memberName": "consensusId", + "nodeType": "MemberAccess", + "referencedDeclaration": 58972, + "src": "9257:39:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 58079, + "name": "ISMP_CONSENSUS_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57514, + "src": "9300:17:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "9257:60:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "9224:93:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 58095, + "nodeType": "IfStatement", + "src": "9220:233:49", + "trueBody": { + "id": 58094, + "nodeType": "Block", + "src": "9319:134:49", + "statements": [ + { + "expression": { + "id": 58092, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 58082, + "name": "commitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58051, + "src": "9376:10:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "expression": { + "baseExpression": { + "expression": { + "id": 58085, + "name": "header", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58035, + "src": "9405:6:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Header_$59010_memory_ptr", + "typeString": "struct Header memory" + } + }, + "id": 58086, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9412:7:49", + "memberName": "digests", + "nodeType": "MemberAccess", + "referencedDeclaration": 59009, + "src": "9405:14:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Digest_$58997_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Digest memory[] memory" + } + }, + "id": 58088, + "indexExpression": { + "id": 58087, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58057, + "src": "9420:1:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9405:17:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Digest_$58997_memory_ptr", + "typeString": "struct Digest memory" + } + }, + "id": 58089, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9423:9:49", + "memberName": "consensus", + "nodeType": "MemberAccess", + "referencedDeclaration": 58985, + "src": "9405:27:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DigestItem_$58975_memory_ptr", + "typeString": "struct DigestItem memory" + } + }, + "id": 58090, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9433:4:49", + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": 58974, + "src": "9405:32:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 58083, + "name": "Bytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 51191, + "src": "9389:5:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Bytes_$51191_$", + "typeString": "type(library Bytes)" + } + }, + "id": 58084, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9395:9:49", + "memberName": "toBytes32", + "nodeType": "MemberAccess", + "referencedDeclaration": 50869, + "src": "9389:15:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 58091, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9389:49:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "9376:62:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 58093, + "nodeType": "ExpressionStatement", + "src": "9376:62:49" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 58109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "baseExpression": { + "expression": { + "id": 58096, + "name": "header", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58035, + "src": "9471:6:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Header_$59010_memory_ptr", + "typeString": "struct Header memory" + } + }, + "id": 58097, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9478:7:49", + "memberName": "digests", + "nodeType": "MemberAccess", + "referencedDeclaration": 59009, + "src": "9471:14:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Digest_$58997_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Digest memory[] memory" + } + }, + "id": 58099, + "indexExpression": { + "id": 58098, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58057, + "src": "9486:1:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9471:17:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Digest_$58997_memory_ptr", + "typeString": "struct Digest memory" + } + }, + "id": 58100, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9489:12:49", + "memberName": "isPreRuntime", + "nodeType": "MemberAccess", + "referencedDeclaration": 58977, + "src": "9471:30:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 58108, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "baseExpression": { + "expression": { + "id": 58101, + "name": "header", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58035, + "src": "9505:6:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Header_$59010_memory_ptr", + "typeString": "struct Header memory" + } + }, + "id": 58102, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9512:7:49", + "memberName": "digests", + "nodeType": "MemberAccess", + "referencedDeclaration": 59009, + "src": "9505:14:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Digest_$58997_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Digest memory[] memory" + } + }, + "id": 58104, + "indexExpression": { + "id": 58103, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58057, + "src": "9520:1:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9505:17:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Digest_$58997_memory_ptr", + "typeString": "struct Digest memory" + } + }, + "id": 58105, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9523:10:49", + "memberName": "preruntime", + "nodeType": "MemberAccess", + "referencedDeclaration": 58980, + "src": "9505:28:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DigestItem_$58975_memory_ptr", + "typeString": "struct DigestItem memory" + } + }, + "id": 58106, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9534:11:49", + "memberName": "consensusId", + "nodeType": "MemberAccess", + "referencedDeclaration": 58972, + "src": "9505:40:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 58107, + "name": "AURA_CONSENSUS_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57521, + "src": "9549:17:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "9505:61:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "9471:95:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 58129, + "nodeType": "IfStatement", + "src": "9467:258:49", + "trueBody": { + "id": 58128, + "nodeType": "Block", + "src": "9568:157:49", + "statements": [ + { + "assignments": [ + 58111 + ], + "declarations": [ + { + "constant": false, + "id": 58111, + "mutability": "mutable", + "name": "slot", + "nameLocation": "9594:4:49", + "nodeType": "VariableDeclaration", + "scope": 58128, + "src": "9586:12:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58110, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9586:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 58121, + "initialValue": { + "arguments": [ + { + "expression": { + "expression": { + "baseExpression": { + "expression": { + "id": 58114, + "name": "header", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58035, + "src": "9626:6:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Header_$59010_memory_ptr", + "typeString": "struct Header memory" + } + }, + "id": 58115, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9633:7:49", + "memberName": "digests", + "nodeType": "MemberAccess", + "referencedDeclaration": 59009, + "src": "9626:14:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Digest_$58997_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Digest memory[] memory" + } + }, + "id": 58117, + "indexExpression": { + "id": 58116, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58057, + "src": "9641:1:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9626:17:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Digest_$58997_memory_ptr", + "typeString": "struct Digest memory" + } + }, + "id": 58118, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9644:10:49", + "memberName": "preruntime", + "nodeType": "MemberAccess", + "referencedDeclaration": 58980, + "src": "9626:28:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DigestItem_$58975_memory_ptr", + "typeString": "struct DigestItem memory" + } + }, + "id": 58119, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9655:4:49", + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": 58974, + "src": "9626:33:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 58112, + "name": "ScaleCodec", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 54317, + "src": "9601:10:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ScaleCodec_$54317_$", + "typeString": "type(library ScaleCodec)" + } + }, + "id": 58113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9612:13:49", + "memberName": "decodeUint256", + "nodeType": "MemberAccess", + "referencedDeclaration": 53451, + "src": "9601:24:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (bytes memory) pure returns (uint256)" + } + }, + "id": 58120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9601:59:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9586:74:49" + }, + { + "expression": { + "id": 58126, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 58122, + "name": "timestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58054, + "src": "9678:9:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 58123, + "name": "slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58111, + "src": "9690:4:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 58124, + "name": "SLOT_DURATION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57500, + "src": "9697:13:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9690:20:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9678:32:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 58127, + "nodeType": "ExpressionStatement", + "src": "9678:32:49" + } + ] + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 58060, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58057, + "src": "9174:1:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "expression": { + "id": 58061, + "name": "header", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58035, + "src": "9178:6:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Header_$59010_memory_ptr", + "typeString": "struct Header memory" + } + }, + "id": 58062, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9185:7:49", + "memberName": "digests", + "nodeType": "MemberAccess", + "referencedDeclaration": 59009, + "src": "9178:14:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Digest_$58997_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Digest memory[] memory" + } + }, + "id": 58063, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9193:6:49", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "9178:21:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9174:25:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 58131, + "initializationExpression": { + "assignments": [ + 58057 + ], + "declarations": [ + { + "constant": false, + "id": 58057, + "mutability": "mutable", + "name": "j", + "nameLocation": "9167:1:49", + "nodeType": "VariableDeclaration", + "scope": 58131, + "src": "9159:9:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58056, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9159:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 58059, + "initialValue": { + "hexValue": "30", + "id": 58058, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9171:1:49", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "9159:13:49" + }, + "loopExpression": { + "expression": { + "id": 58066, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "9201:3:49", + "subExpression": { + "id": 58065, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58057, + "src": "9201:1:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 58067, + "nodeType": "ExpressionStatement", + "src": "9201:3:49" + }, + "nodeType": "ForStatement", + "src": "9154:581:49" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58135, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 58133, + "name": "timestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58054, + "src": "9752:9:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 58134, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9765:1:49", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9752:14:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "74696d657374616d70206e6f7420666f756e6421", + "id": 58136, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9768:22:49", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9cfee08cd968873fafd45f0f97e173a4e35aa1b08034ae611658469c3b5c6960", + "typeString": "literal_string \"timestamp not found!\"" + }, + "value": "timestamp not found!" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9cfee08cd968873fafd45f0f97e173a4e35aa1b08034ae611658469c3b5c6960", + "typeString": "literal_string \"timestamp not found!\"" + } + ], + "id": 58132, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "9744:7:49", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58137, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9744:47:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58138, + "nodeType": "ExpressionStatement", + "src": "9744:47:49" + }, + { + "expression": { + "id": 58165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 58139, + "name": "leaves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58009, + "src": "9802:6:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Node memory[] memory" + } + }, + "id": 58141, + "indexExpression": { + "hexValue": "30", + "id": 58140, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9809:1:49", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9802:9:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$49043_memory_ptr", + "typeString": "struct Node memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "id": 58143, + "name": "para", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58019, + "src": "9832:4:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parachain_$57474_memory_ptr", + "typeString": "struct Parachain memory" + } + }, + "id": 58144, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9837:5:49", + "memberName": "index", + "nodeType": "MemberAccess", + "referencedDeclaration": 57467, + "src": "9832:10:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 58153, + "name": "para", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58019, + "src": "9906:4:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parachain_$57474_memory_ptr", + "typeString": "struct Parachain memory" + } + }, + "id": 58154, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9911:2:49", + "memberName": "id", + "nodeType": "MemberAccess", + "referencedDeclaration": 57470, + "src": "9906:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 58152, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9899:6:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint32_$", + "typeString": "type(uint32)" + }, + "typeName": { + "id": 58151, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "9899:6:49", + "typeDescriptions": {} + } + }, + "id": 58155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9899:15:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "expression": { + "id": 58149, + "name": "ScaleCodec", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 54317, + "src": "9879:10:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ScaleCodec_$54317_$", + "typeString": "type(library ScaleCodec)" + } + }, + "id": 58150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9890:8:49", + "memberName": "encode32", + "nodeType": "MemberAccess", + "referencedDeclaration": 54284, + "src": "9879:19:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint32_$returns$_t_bytes4_$", + "typeString": "function (uint32) pure returns (bytes4)" + } + }, + "id": 58156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9879:36:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "arguments": [ + { + "expression": { + "id": 58159, + "name": "para", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58019, + "src": "9940:4:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parachain_$57474_memory_ptr", + "typeString": "struct Parachain memory" + } + }, + "id": 58160, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9945:6:49", + "memberName": "header", + "nodeType": "MemberAccess", + "referencedDeclaration": 57473, + "src": "9940:11:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 58157, + "name": "ScaleCodec", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 54317, + "src": "9917:10:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ScaleCodec_$54317_$", + "typeString": "type(library ScaleCodec)" + } + }, + "id": 58158, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9928:11:49", + "memberName": "encodeBytes", + "nodeType": "MemberAccess", + "referencedDeclaration": 54316, + "src": "9917:22:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) pure returns (bytes memory)" + } + }, + "id": 58161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9917:35:49", + "tryCall": false, + "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": 58147, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9866:5:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 58146, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9866:5:49", + "typeDescriptions": {} + } + }, + "id": 58148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9872:6:49", + "memberName": "concat", + "nodeType": "MemberAccess", + "src": "9866:12:49", + "typeDescriptions": { + "typeIdentifier": "t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 58162, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9866:87:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 58145, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "9856:9:49", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 58163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9856:98:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 58142, + "name": "Node", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49043, + "src": "9814:4:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_Node_$49043_storage_ptr_$", + "typeString": "type(struct Node storage pointer)" + } + }, + "id": 58164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9814:150:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$49043_memory_ptr", + "typeString": "struct Node memory" + } + }, + "src": "9802:162:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$49043_memory_ptr", + "typeString": "struct Node memory" + } + }, + "id": 58166, + "nodeType": "ExpressionStatement", + "src": "9802:162:49" + }, + { + "assignments": [ + 58169 + ], + "declarations": [ + { + "constant": false, + "id": 58169, + "mutability": "mutable", + "name": "intermediate", + "nameLocation": "10000:12:49", + "nodeType": "VariableDeclaration", + "scope": 58196, + "src": "9975:37:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_memory_ptr", + "typeString": "struct IntermediateState" + }, + "typeName": { + "id": 58168, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58167, + "name": "IntermediateState", + "nameLocations": [ + "9975:17:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45360, + "src": "9975:17:49" + }, + "referencedDeclaration": 45360, + "src": "9975:17:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_storage_ptr", + "typeString": "struct IntermediateState" + } + }, + "visibility": "internal" + } + ], + "id": 58182, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 58171, + "name": "para", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58019, + "src": "10045:4:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parachain_$57474_memory_ptr", + "typeString": "struct Parachain memory" + } + }, + "id": 58172, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10050:2:49", + "memberName": "id", + "nodeType": "MemberAccess", + "referencedDeclaration": 57470, + "src": "10045:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 58173, + "name": "header", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58035, + "src": "10054:6:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Header_$59010_memory_ptr", + "typeString": "struct Header memory" + } + }, + "id": 58174, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10061:6:49", + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": 59001, + "src": "10054:13:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 58176, + "name": "timestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58054, + "src": "10085:9:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 58177, + "name": "commitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58051, + "src": "10096:10:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 58178, + "name": "header", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58035, + "src": "10108:6:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Header_$59010_memory_ptr", + "typeString": "struct Header memory" + } + }, + "id": 58179, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10115:9:49", + "memberName": "stateRoot", + "nodeType": "MemberAccess", + "referencedDeclaration": 59003, + "src": "10108:16:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 58175, + "name": "StateCommitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45347, + "src": "10069:15:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_StateCommitment_$45347_storage_ptr_$", + "typeString": "type(struct StateCommitment storage pointer)" + } + }, + "id": 58180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10069:56:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateCommitment_$45347_memory_ptr", + "typeString": "struct StateCommitment memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_struct$_StateCommitment_$45347_memory_ptr", + "typeString": "struct StateCommitment memory" + } + ], + "id": 58170, + "name": "IntermediateState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45360, + "src": "10027:17:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_IntermediateState_$45360_storage_ptr_$", + "typeString": "type(struct IntermediateState storage pointer)" + } + }, + "id": 58181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10027:99:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_memory_ptr", + "typeString": "struct IntermediateState memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9975:151:49" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 58186, + "name": "headsRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57996, + "src": "10174:9:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 58187, + "name": "proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57999, + "src": "10185:5:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParachainProof_$57483_memory_ptr", + "typeString": "struct ParachainProof memory" + } + }, + "id": 58188, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10191:5:49", + "memberName": "proof", + "nodeType": "MemberAccess", + "referencedDeclaration": 57482, + "src": "10185:11:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Node memory[] memory[] memory" + } + }, + { + "id": 58189, + "name": "leaves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58009, + "src": "10198:6:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Node memory[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Node memory[] memory[] memory" + }, + { + "typeIdentifier": "t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Node memory[] memory" + } + ], + "expression": { + "id": 58184, + "name": "MerkleMultiProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49805, + "src": "10145:16:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MerkleMultiProof_$49805_$", + "typeString": "type(library MerkleMultiProof)" + } + }, + "id": 58185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10162:11:49", + "memberName": "VerifyProof", + "nodeType": "MemberAccess", + "referencedDeclaration": 49069, + "src": "10145:28:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_array$_t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,struct Node memory[] memory[] memory,struct Node memory[] memory) pure returns (bool)" + } + }, + "id": 58190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10145:60:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "496e76616c69642070617261636861696e732068656164732070726f6f66", + "id": 58191, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10207:32:49", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3ea235ebff98b15d4c2bd1501f2018125feb0c921df3813efe38f7b4647f78fd", + "typeString": "literal_string \"Invalid parachains heads proof\"" + }, + "value": "Invalid parachains heads proof" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3ea235ebff98b15d4c2bd1501f2018125feb0c921df3813efe38f7b4647f78fd", + "typeString": "literal_string \"Invalid parachains heads proof\"" + } + ], + "id": 58183, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "10137:7:49", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10137:103:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58193, + "nodeType": "ExpressionStatement", + "src": "10137:103:49" + }, + { + "expression": { + "id": 58194, + "name": "intermediate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58169, + "src": "10258:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_memory_ptr", + "typeString": "struct IntermediateState memory" + } + }, + "functionReturnParameters": 58004, + "id": 58195, + "nodeType": "Return", + "src": "10251:19:49" + } + ] + }, + "documentation": { + "id": 57994, + "nodeType": "StructuredDocumentation", + "src": "8454:102:49", + "text": "Verifies that some parachain header has been finalized, given the current trusted consensus state." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "verifyParachainHeaderProof", + "nameLocation": "8570:26:49", + "parameters": { + "id": 58000, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 57996, + "mutability": "mutable", + "name": "headsRoot", + "nameLocation": "8605:9:49", + "nodeType": "VariableDeclaration", + "scope": 58197, + "src": "8597:17:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 57995, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8597:7:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57999, + "mutability": "mutable", + "name": "proof", + "nameLocation": "8638:5:49", + "nodeType": "VariableDeclaration", + "scope": 58197, + "src": "8616:27:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParachainProof_$57483_memory_ptr", + "typeString": "struct ParachainProof" + }, + "typeName": { + "id": 57998, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57997, + "name": "ParachainProof", + "nameLocations": [ + "8616:14:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57483, + "src": "8616:14:49" + }, + "referencedDeclaration": 57483, + "src": "8616:14:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParachainProof_$57483_storage_ptr", + "typeString": "struct ParachainProof" + } + }, + "visibility": "internal" + } + ], + "src": "8596:48:49" + }, + "returnParameters": { + "id": 58004, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58003, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 58197, + "src": "8691:24:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_memory_ptr", + "typeString": "struct IntermediateState" + }, + "typeName": { + "id": 58002, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58001, + "name": "IntermediateState", + "nameLocations": [ + "8691:17:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45360, + "src": "8691:17:49" + }, + "referencedDeclaration": 45360, + "src": "8691:17:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_storage_ptr", + "typeString": "struct IntermediateState" + } + }, + "visibility": "internal" + } + ], + "src": "8690:26:49" + }, + "scope": 58244, + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "id": 58220, + "nodeType": "FunctionDefinition", + "src": "10363:251:49", + "nodes": [], + "body": { + "id": 58219, + "nodeType": "Block", + "src": "10460:154:49", + "nodes": [], + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58209, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 58207, + "name": "activationBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58200, + "src": "10474:15:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 58208, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10493:1:49", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10474:20:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 58217, + "nodeType": "Block", + "src": "10546:62:49", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 58213, + "name": "parentNumber", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58202, + "src": "10567:12:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 58214, + "name": "activationBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58200, + "src": "10582:15:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10567:30:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 58206, + "id": 58216, + "nodeType": "Return", + "src": "10560:37:49" + } + ] + }, + "id": 58218, + "nodeType": "IfStatement", + "src": "10470:138:49", + "trueBody": { + "id": 58212, + "nodeType": "Block", + "src": "10496:44:49", + "statements": [ + { + "expression": { + "id": 58210, + "name": "parentNumber", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58202, + "src": "10517:12:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 58206, + "id": 58211, + "nodeType": "Return", + "src": "10510:19:49" + } + ] + } + } + ] + }, + "documentation": { + "id": 58198, + "nodeType": "StructuredDocumentation", + "src": "10283:75:49", + "text": "Calculates the mmr leaf index for a block whose parent number is given." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "leafIndex", + "nameLocation": "10372:9:49", + "parameters": { + "id": 58203, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58200, + "mutability": "mutable", + "name": "activationBlock", + "nameLocation": "10390:15:49", + "nodeType": "VariableDeclaration", + "scope": 58220, + "src": "10382:23:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58199, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10382:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 58202, + "mutability": "mutable", + "name": "parentNumber", + "nameLocation": "10415:12:49", + "nodeType": "VariableDeclaration", + "scope": 58220, + "src": "10407:20:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58201, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10407:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10381:47:49" + }, + "returnParameters": { + "id": 58206, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58205, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 58220, + "src": "10451:7:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58204, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10451:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10450:9:49" + }, + "scope": 58244, + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "id": 58243, + "nodeType": "FunctionDefinition", + "src": "10667:145:49", + "nodes": [], + "body": { + "id": 58242, + "nodeType": "Block", + "src": "10760:52:49", + "nodes": [], + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 58230, + "name": "len", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58223, + "src": "10777:3:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58236, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58233, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 58231, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10786:1:49", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 58232, + "name": "total", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58225, + "src": "10790:5:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10786:9:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 58234, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10785:11:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "33", + "id": 58235, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10799:1:49", + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "src": "10785:15:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 58237, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10784:17:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 58238, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10804:1:49", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "10784:21:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10777:28:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 58229, + "id": 58241, + "nodeType": "Return", + "src": "10770:35:49" + } + ] + }, + "documentation": { + "id": 58221, + "nodeType": "StructuredDocumentation", + "src": "10620:42:49", + "text": "Check for supermajority participation." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "checkParticipationThreshold", + "nameLocation": "10676:27:49", + "parameters": { + "id": 58226, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58223, + "mutability": "mutable", + "name": "len", + "nameLocation": "10712:3:49", + "nodeType": "VariableDeclaration", + "scope": 58243, + "src": "10704:11:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58222, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10704:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 58225, + "mutability": "mutable", + "name": "total", + "nameLocation": "10725:5:49", + "nodeType": "VariableDeclaration", + "scope": 58243, + "src": "10717:13:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58224, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10717:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10703:28:49" + }, + "returnParameters": { + "id": 58229, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58228, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 58243, + "src": "10754:4:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 58227, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "10754:4:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "10753:6:49" + }, + "scope": 58244, + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + } + ], + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 57495, + "name": "IConsensusClient", + "nameLocations": [ + "2511:16:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45374, + "src": "2511:16:49" + }, + "id": 57496, + "nodeType": "InheritanceSpecifier", + "src": "2511:16:49" + } + ], + "canonicalName": "BeefyV1", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "linearizedBaseContracts": [ + 58244, + 45374 + ], + "name": "BeefyV1", + "nameLocation": "2500:7:49", + "scope": 58245, + "usedErrors": [] + } + ], + "license": "UNLICENSED" + }, + "id": 49 +} \ No newline at end of file diff --git a/evm/forge/src/abi/HandlerV1.json b/evm/forge/src/abi/HandlerV1.json new file mode 100644 index 000000000..b4c3c9056 --- /dev/null +++ b/evm/forge/src/abi/HandlerV1.json @@ -0,0 +1,14772 @@ +{ + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "stateMachineId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "height", + "type": "uint256" + } + ], + "name": "StateMachineUpdated", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "contract IIsmpHost", + "name": "host", + "type": "address" + }, + { + "internalType": "bytes", + "name": "proof", + "type": "bytes" + } + ], + "name": "handleConsensus", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IIsmpHost", + "name": "host", + "type": "address" + }, + { + "components": [ + { + "internalType": "bytes[]", + "name": "proof", + "type": "bytes[]" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "stateMachineId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "height", + "type": "uint256" + } + ], + "internalType": "struct StateMachineHeight", + "name": "height", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "bytes", + "name": "source", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "dest", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "from", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "timeoutTimestamp", + "type": "uint64" + }, + { + "internalType": "bytes[]", + "name": "keys", + "type": "bytes[]" + }, + { + "internalType": "uint64", + "name": "height", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "gaslimit", + "type": "uint64" + } + ], + "internalType": "struct GetRequest[]", + "name": "requests", + "type": "tuple[]" + } + ], + "internalType": "struct GetResponseMessage", + "name": "message", + "type": "tuple" + } + ], + "name": "handleGetResponses", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IIsmpHost", + "name": "host", + "type": "address" + }, + { + "components": [ + { + "components": [ + { + "internalType": "bytes", + "name": "source", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "dest", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "from", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "timeoutTimestamp", + "type": "uint64" + }, + { + "internalType": "bytes[]", + "name": "keys", + "type": "bytes[]" + }, + { + "internalType": "uint64", + "name": "height", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "gaslimit", + "type": "uint64" + } + ], + "internalType": "struct GetRequest[]", + "name": "timeouts", + "type": "tuple[]" + } + ], + "internalType": "struct GetTimeoutMessage", + "name": "message", + "type": "tuple" + } + ], + "name": "handleGetTimeouts", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IIsmpHost", + "name": "host", + "type": "address" + }, + { + "components": [ + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "stateMachineId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "height", + "type": "uint256" + } + ], + "internalType": "struct StateMachineHeight", + "name": "height", + "type": "tuple" + }, + { + "internalType": "bytes32[]", + "name": "multiproof", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "leafCount", + "type": "uint256" + } + ], + "internalType": "struct Proof", + "name": "proof", + "type": "tuple" + }, + { + "components": [ + { + "components": [ + { + "internalType": "bytes", + "name": "source", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "dest", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "from", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "to", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "timeoutTimestamp", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "body", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "gaslimit", + "type": "uint64" + } + ], + "internalType": "struct PostRequest", + "name": "request", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "kIndex", + "type": "uint256" + } + ], + "internalType": "struct PostRequestLeaf[]", + "name": "requests", + "type": "tuple[]" + } + ], + "internalType": "struct PostRequestMessage", + "name": "request", + "type": "tuple" + } + ], + "name": "handlePostRequests", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IIsmpHost", + "name": "host", + "type": "address" + }, + { + "components": [ + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "stateMachineId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "height", + "type": "uint256" + } + ], + "internalType": "struct StateMachineHeight", + "name": "height", + "type": "tuple" + }, + { + "internalType": "bytes32[]", + "name": "multiproof", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "leafCount", + "type": "uint256" + } + ], + "internalType": "struct Proof", + "name": "proof", + "type": "tuple" + }, + { + "components": [ + { + "components": [ + { + "components": [ + { + "internalType": "bytes", + "name": "source", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "dest", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "from", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "to", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "timeoutTimestamp", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "body", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "gaslimit", + "type": "uint64" + } + ], + "internalType": "struct PostRequest", + "name": "request", + "type": "tuple" + }, + { + "internalType": "bytes", + "name": "response", + "type": "bytes" + } + ], + "internalType": "struct PostResponse", + "name": "response", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "kIndex", + "type": "uint256" + } + ], + "internalType": "struct PostResponseLeaf[]", + "name": "responses", + "type": "tuple[]" + } + ], + "internalType": "struct PostResponseMessage", + "name": "response", + "type": "tuple" + } + ], + "name": "handlePostResponses", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IIsmpHost", + "name": "host", + "type": "address" + }, + { + "components": [ + { + "components": [ + { + "internalType": "bytes", + "name": "source", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "dest", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "from", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "to", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "timeoutTimestamp", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "body", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "gaslimit", + "type": "uint64" + } + ], + "internalType": "struct PostRequest[]", + "name": "timeouts", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "stateMachineId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "height", + "type": "uint256" + } + ], + "internalType": "struct StateMachineHeight", + "name": "height", + "type": "tuple" + }, + { + "internalType": "bytes[]", + "name": "proof", + "type": "bytes[]" + } + ], + "internalType": "struct PostTimeoutMessage", + "name": "message", + "type": "tuple" + } + ], + "name": "handlePostTimeouts", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": { + "object": "0x608060405234801561001057600080fd5b50614031806100206000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806320d71c7a14610067578063873ce1ce1461007c578063ac269bd61461008f578063bb1689be146100a2578063d95e4fbb146100b5578063fda626c3146100c8575b600080fd5b61007a610075366004612cdb565b6100db565b005b61007a61008a3660046130b4565b610819565b61007a61009d36600461316b565b610f43565b61007a6100b0366004613202565b6111e7565b61007a6100c3366004613251565b611a82565b61007a6100d6366004613378565b611f43565b81806001600160a01b031663054f7d9c6040518163ffffffff1660e01b81526004016020604051808303816000875af115801561011c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014091906134d8565b156101665760405162461bcd60e51b815260040161015d90613501565b60405180910390fd5b815151604051631a880a9360e01b81526000916001600160a01b03861691631a880a93916101969160040161352b565b6020604051808303816000875af11580156101b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d99190613542565b846001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610219573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061023d9190613542565b6102479190613571565b9050836001600160a01b031663f3f480d96040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610289573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ad9190613542565b81116102cb5760405162461bcd60e51b815260040161015d90613584565b6020830151516000816001600160401b038111156102eb576102eb612972565b60405190808252806020026020018201604052801561033657816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816103095790505b50905060005b828110156105f95760008660200151828151811061035c5761035c6135c7565b602002602001015190506103db886001600160a01b031663f437bc596040518163ffffffff1660e01b81526004016000604051808303816000875af11580156103a9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103d1919081019061364e565b8251515190612698565b6104365760405162461bcd60e51b815260206004820152602660248201527f4948616e646c65723a20496e76616c696420726573706f6e73652064657374696044820152653730ba34b7b760d11b606482015260840161015d565b805151600090610445906126ca565b604051630da2fd1960e21b8152600481018290529091506001600160a01b038a169063368bf464906024016020604051808303816000875af115801561048f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b391906134d8565b6104cf5760405162461bcd60e51b815260040161015d90613682565b60006104de8360000151612721565b604051632211f1dd60e01b8152600481018290529091506001600160a01b038b1690632211f1dd906024016020604051808303816000875af1158015610528573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054c91906134d8565b156105a35760405162461bcd60e51b815260206004820152602160248201527f4948616e646c65723a204475706c696361746520506f737420726573706f6e736044820152606560f81b606482015260840161015d565b60405180606001604052808460400151815260200184602001518152602001828152508585815181106105d8576105d86135c7565b602002602001018190525050505080806105f1906136b9565b91505061033c565b5084515160405163a70a8c4760e01b81526000916001600160a01b0389169163a70a8c479161062a9160040161352b565b6060604051808303816000875af1158015610649573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066d919061370c565b602001519050806106905760405162461bcd60e51b815260040161015d90613728565b85516020810151604091820151915163722e206d60e01b815273__$2399d33eab5707eb5118077f9c67419cb4$__9263722e206d926106d59286928891600401613769565b602060405180830381865af41580156106f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071691906134d8565b61076c5760405162461bcd60e51b815260206004820152602160248201527f4948616e646c65723a20496e76616c696420726573706f6e73652070726f6f666044820152607360f81b606482015260840161015d565b60005b8381101561080f5760008760200151828151811061078f5761078f6135c7565b60200260200101519050886001600160a01b0316638cf66b9282600001516040518263ffffffff1660e01b81526004016107c99190613916565b600060405180830381600087803b1580156107e357600080fd5b505af11580156107f7573d6000803e3d6000fd5b50505050508080610807906136b9565b91505061076f565b5050505050505050565b81806001600160a01b031663054f7d9c6040518163ffffffff1660e01b81526004016020604051808303816000875af115801561085a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087e91906134d8565b1561089b5760405162461bcd60e51b815260040161015d90613501565b6020820151604051631a880a9360e01b81526000916001600160a01b03861691631a880a93916108cd9160040161352b565b6020604051808303816000875af11580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109109190613542565b846001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610950573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109749190613542565b61097e9190613571565b9050836001600160a01b031663f3f480d96040518163ffffffff1660e01b81526004016020604051808303816000875af11580156109c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e49190613542565b8111610a025760405162461bcd60e51b815260040161015d90613584565b602083015160405163a70a8c4760e01b81526000916001600160a01b0387169163a70a8c4791610a349160040161352b565b6060604051808303816000875af1158015610a53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a77919061370c565b604081015190915080610a9c5760405162461bcd60e51b815260040161015d90613728565b604085015151855160005b82811015610f3857600088604001518281518110610ac757610ac76135c7565b60200260200101519050610b448a6001600160a01b031663f437bc596040518163ffffffff1660e01b81526004016000604051808303816000875af1158015610b14573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b3c919081019061364e565b825190612698565b610ba35760405162461bcd60e51b815260206004820152602a60248201527f4948616e646c65723a20496e76616c69642047455420726573706f6e7365206460448201526932b9ba34b730ba34b7b760b11b606482015260840161015d565b6000610bae82612764565b604051630da2fd1960e21b8152600481018290529091506001600160a01b038c169063368bf464906024016020604051808303816000875af1158015610bf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1c91906134d8565b610c685760405162461bcd60e51b815260206004820152601d60248201527f4948616e646c65723a20556e6b6e6f776e204745542072657175657374000000604482015260640161015d565b60808201516001600160401b03161580610cf157508a6001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610cbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce19190613542565b82608001516001600160401b0316115b610d3d5760405162461bcd60e51b815260206004820152601f60248201527f4948616e646c65723a2047455420726571756573742074696d6564206f757400604482015260640161015d565b600073__$3557184f57f01f44bdc1609b323054fd0c$__6355028f6f88878660a0015186604051602001610d7391815260200190565b6040516020818303038152906040526040518563ffffffff1660e01b8152600401610da194939291906139a4565b600060405180830381865af4158015610dbe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610de691908101906139ee565b60408051808201909152848152602081018290529091506001600160a01b038d16632211f1dd610e1583612836565b6040518263ffffffff1660e01b8152600401610e3391815260200190565b6020604051808303816000875af1158015610e52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7691906134d8565b15610ec35760405162461bcd60e51b815260206004820181905260248201527f4948616e646c65723a204475706c69636174652047455420726573706f6e7365604482015260640161015d565b60405163f073609160e01b81526001600160a01b038e169063f073609190610eef908490600401613bcb565b600060405180830381600087803b158015610f0957600080fd5b505af1158015610f1d573d6000803e3d6000fd5b50505050505050508080610f30906136b9565b915050610aa7565b505050505050505050565b81806001600160a01b031663054f7d9c6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610f84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa891906134d8565b15610fc55760405162461bcd60e51b815260040161015d90613501565b81515160005b818110156111e057600084600001518281518110610feb57610feb6135c7565b60200260200101519050600061100082612764565b604051630da2fd1960e21b8152600481018290529091506001600160a01b0388169063368bf464906024016020604051808303816000875af115801561104a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106e91906134d8565b61108a5760405162461bcd60e51b815260040161015d90613682565b60808201516001600160401b031615801590611115575081608001516001600160401b0316876001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156110ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111139190613542565b115b61116d5760405162461bcd60e51b815260206004820152602360248201527f4948616e646c65723a204745542072657175657374206e6f742074696d6564206044820152621bdd5d60ea1b606482015260840161015d565b6040516384566a5d60e01b81526001600160a01b038816906384566a5d90611199908590600401613c71565b600060405180830381600087803b1580156111b357600080fd5b505af11580156111c7573d6000803e3d6000fd5b50505050505080806111d8906136b9565b915050610fcb565b5050505050565b81806001600160a01b031663054f7d9c6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611228573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124c91906134d8565b156112695760405162461bcd60e51b815260040161015d90613501565b826001600160a01b031663f3f480d96040518163ffffffff1660e01b81526004016020604051808303816000875af11580156112a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112cd9190613542565b836001600160a01b0316639a8425bc6040518163ffffffff1660e01b81526004016020604051808303816000875af115801561130d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113319190613542565b846001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611371573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113959190613542565b61139f9190613571565b116113bc5760405162461bcd60e51b815260040161015d90613584565b826001600160a01b031663d40784c76040518163ffffffff1660e01b81526004016020604051808303816000875af11580156113fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114209190613542565b836001600160a01b0316639a8425bc6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611460573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114849190613542565b846001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156114c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e89190613542565b6114f29190613571565b10806115725750826001600160a01b031663f851a4406040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611539573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155d9190613c84565b6001600160a01b0316336001600160a01b0316145b61158e5760405162461bcd60e51b815260040161015d90613584565b600080846001600160a01b0316632476132b6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156115d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f59190613c84565b6001600160a01b0316637d755598866001600160a01b031663bbad99d46040518163ffffffff1660e01b81526004016000604051808303816000875af1158015611643573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261166b919081019061364e565b866040518363ffffffff1660e01b8152600401611689929190613ca1565b6000604051808303816000875af11580156116a8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116d09190810190613ccf565b604051630b4974cf60e41b815291935091506001600160a01b0386169063b4974cf090611701908590600401613d51565b600060405180830381600087803b15801561171b57600080fd5b505af115801561172f573d6000803e3d6000fd5b50505050846001600160a01b031663d860cb47866001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611782573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a69190613542565b6040518263ffffffff1660e01b81526004016117c491815260200190565b600060405180830381600087803b1580156117de57600080fd5b505af11580156117f2573d6000803e3d6000fd5b50505050846001600160a01b03166356b655976040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611836573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185a9190613542565b816020015111156111e05760408051808201825282518152602080840151818301908152848401518451632acf7f4f60e11b81528451600482015291516024830152805160448301529182015160648201529201516084830152906001600160a01b0387169063559efe9e9060a401600060405180830381600087803b1580156118e357600080fd5b505af11580156118f7573d6000803e3d6000fd5b50505050856001600160a01b03166314863dcb82886001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af115801561194b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196f9190613542565b6040516001600160e01b031960e085901b1681528251600482015260209092015160248301526044820152606401600060405180830381600087803b1580156119b757600080fd5b505af11580156119cb573d6000803e3d6000fd5b505050602082015160405163a0756ecd60e01b81526001600160a01b038916925063a0756ecd91611a029160040190815260200190565b600060405180830381600087803b158015611a1c57600080fd5b505af1158015611a30573d6000803e3d6000fd5b5050825160208401516040517ff12a80290a43822c9acabb2a766d41728f06fe4c0497e4a7bb3f54292e4cb0da9450611a729350918252602082015260400190565b60405180910390a1505050505050565b81806001600160a01b031663054f7d9c6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611ac3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae791906134d8565b15611b045760405162461bcd60e51b815260040161015d90613501565b602082015160405163a70a8c4760e01b81526000916001600160a01b0386169163a70a8c4791611b369160040161352b565b6060604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b79919061370c565b83515190915060005b81811015611f3b57600085600001518281518110611ba257611ba26135c7565b602002602001015190508060a001516001600160401b0316600014158015611bda57508060a001516001600160401b03168460000151115b611c1e5760405162461bcd60e51b815260206004820152601560248201527414995c5d595cdd081b9bdd081d1a5b5959081bdd5d605a1b604482015260640161015d565b6000611c29826126ca565b604051630da2fd1960e21b8152600481018290529091506001600160a01b0389169063368bf464906024016020604051808303816000875af1158015611c73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9791906134d8565b611cb35760405162461bcd60e51b815260040161015d90613682565b604080516001808252818301909252600091816020015b6060815260200190600190039081611cca57505060408051808201825260208082527f103895530afb23bb607661426d55eb8b0484aecefe882c3ce64e6f82507f715a818301528251908101869052929350910160408051601f1981840301815290829052611d3c9291602001613d64565b604051602081830303815290604052818581518110611d5d57611d5d6135c7565b6020026020010181905250600073__$3557184f57f01f44bdc1609b323054fd0c$__631475ff4588604001518b60400151856040518463ffffffff1660e01b8152600401611dad93929190613d93565b600060405180830381865af4158015611dca573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611df291908101906139ee565b600081518110611e0457611e046135c7565b60200260200101519050611e6060006001600160401b03811115611e2a57611e2a612972565b6040519080825280601f01601f191660200182016040528015611e54576020820181803683370190505b50602083015190612698565b611ebb5760405162461bcd60e51b815260206004820152602660248201527f4948616e646c65723a20496e76616c6964206e6f6e2d6d656d6265727368697060448201526510383937b7b360d11b606482015260840161015d565b6040805160208101825285815290516312dde20360e11b81526001600160a01b038c16916325bbc40691611ef29190600401613dc8565b600060405180830381600087803b158015611f0c57600080fd5b505af1158015611f20573d6000803e3d6000fd5b50505050505050508080611f33906136b9565b915050611b82565b505050505050565b81806001600160a01b031663054f7d9c6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611f84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa891906134d8565b15611fc55760405162461bcd60e51b815260040161015d90613501565b815151604051631a880a9360e01b81526000916001600160a01b03861691631a880a9391611ff59160040161352b565b6020604051808303816000875af1158015612014573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120389190613542565b846001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015612078573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209c9190613542565b6120a69190613571565b9050836001600160a01b031663f3f480d96040518163ffffffff1660e01b81526004016020604051808303816000875af11580156120e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210c9190613542565b811161212a5760405162461bcd60e51b815260040161015d90613584565b6020830151516000816001600160401b0381111561214a5761214a612972565b60405190808252806020026020018201604052801561219557816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816121685790505b50905060005b8281101561248c576000866020015182815181106121bb576121bb6135c7565b6020026020010151905061223c886001600160a01b031663f437bc596040518163ffffffff1660e01b81526004016000604051808303816000875af1158015612208573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612230919081019061364e565b82516020015190612698565b6122965760405162461bcd60e51b815260206004820152602560248201527f4948616e646c65723a20496e76616c696420726571756573742064657374696e60448201526430ba34b7b760d91b606482015260840161015d565b805160a001516001600160401b031615806123215750876001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156122ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123109190613542565b815160a001516001600160401b0316115b61236d5760405162461bcd60e51b815260206004820152601b60248201527f4948616e646c65723a20526571756573742074696d6564206f75740000000000604482015260640161015d565b600061237c82600001516126ca565b604051630cb33d1f60e11b8152600481018290529091506001600160a01b038a16906319667a3e906024016020604051808303816000875af11580156123c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ea91906134d8565b156124375760405162461bcd60e51b815260206004820152601b60248201527f4948616e646c65723a204475706c696361746520726571756573740000000000604482015260640161015d565b604051806060016040528083604001518152602001836020015181526020018281525084848151811061246c5761246c6135c7565b602002602001018190525050508080612484906136b9565b91505061219b565b5084515160405163a70a8c4760e01b81526000916001600160a01b0389169163a70a8c47916124bd9160040161352b565b6060604051808303816000875af11580156124dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612500919061370c565b602001519050806125235760405162461bcd60e51b815260040161015d90613728565b85516020810151604091820151915163722e206d60e01b815273__$2399d33eab5707eb5118077f9c67419cb4$__9263722e206d926125689286928891600401613769565b602060405180830381865af4158015612585573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a991906134d8565b6125f55760405162461bcd60e51b815260206004820181905260248201527f4948616e646c65723a20496e76616c696420726571756573742070726f6f6673604482015260640161015d565b60005b8381101561080f57600087602001518281518110612618576126186135c7565b60200260200101519050886001600160a01b0316633b8c2bf782600001516040518263ffffffff1660e01b81526004016126529190613de3565b600060405180830381600087803b15801561266c57600080fd5b505af1158015612680573d6000803e3d6000fd5b50505050508080612690906136b9565b9150506125f8565b600081518351146126ab575060006126c4565b825160208381018281209186019283209091145b925050505b92915050565b805160208083015160408085015160a08601516060870151608088015160c089015160e08a01519551600099612704999098979101613df6565b604051602081830303815290604052805190602001209050919050565b8051805160208083015160408085015160a086015160c08701516060880151608090980151868a0151945160009961270499989596949593949093909101613e9e565b6040805160208101909152600080825260a083015151909190825b818110156127db57828560a00151828151811061279e5761279e6135c7565b60200260200101516040516020016127b7929190613d64565b604051602081830303815290604052925080806127d3906136b9565b91505061277f565b508360000151846020015185604001518660c0015187608001518860600151878a60e00151604051602001612817989796959493929190613f4c565b6040516020818303038152906040528051906020012092505050919050565b600080826000015160a001516040516020016128529190613fe8565b60408051601f19818403018152828252855180516020828101519483015160c08401516080850151606086015160e0909601519699506000986128a49895979596939592949193928b92909101613f4c565b60408051601f1981840301815291905260208501515190915060005b81811015612949576000866020015182815181106128e0576128e06135c7565b602002602001015190508381600001518260200151604051602001612906929190613d64565b60408051601f19818403018152908290526129249291602001613d64565b6040516020818303038152906040529350508080612941906136b9565b9150506128c0565b505080516020909101209392505050565b6001600160a01b038116811461296f57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156129aa576129aa612972565b60405290565b604051606081016001600160401b03811182821017156129aa576129aa612972565b60405161010081016001600160401b03811182821017156129aa576129aa612972565b604051601f8201601f191681016001600160401b0381118282101715612a1d57612a1d612972565b604052919050565b600060408284031215612a3757600080fd5b612a3f612988565b9050813581526020820135602082015292915050565b60006001600160401b03821115612a6e57612a6e612972565b5060051b60200190565b600060808284031215612a8a57600080fd5b612a926129b0565b9050612a9e8383612a25565b815260408201356001600160401b03811115612ab957600080fd5b8201601f81018413612aca57600080fd5b80356020612adf612ada83612a55565b6129f5565b82815260059290921b83018101918181019087841115612afe57600080fd5b938201935b83851015612b1c57843582529382019390820190612b03565b808387015250505050506060820135604082015292915050565b60006001600160401b03821115612b4f57612b4f612972565b50601f01601f191660200190565b600082601f830112612b6e57600080fd5b8135612b7c612ada82612b36565b818152846020838601011115612b9157600080fd5b816020850160208301376000918101602001919091529392505050565b80356001600160401b0381168114612bc557600080fd5b919050565b60006101008284031215612bdd57600080fd5b612be56129d2565b905081356001600160401b0380821115612bfe57600080fd5b612c0a85838601612b5d565b83526020840135915080821115612c2057600080fd5b612c2c85838601612b5d565b6020840152612c3d60408501612bae565b60408401526060840135915080821115612c5657600080fd5b612c6285838601612b5d565b60608401526080840135915080821115612c7b57600080fd5b612c8785838601612b5d565b6080840152612c9860a08501612bae565b60a084015260c0840135915080821115612cb157600080fd5b50612cbe84828501612b5d565b60c083015250612cd060e08301612bae565b60e082015292915050565b60008060408385031215612cee57600080fd5b612cf8833561295a565b823591506001600160401b038060208501351115612d1557600080fd5b6020840135840160408187031215612d2c57600080fd5b612d34612988565b8282351115612d4257600080fd5b612d4f8783358401612a78565b81528260208301351115612d6257600080fd5b60208201358201915086601f830112612d7a57600080fd5b612d87612ada8335612a55565b82358082526020808301929160051b850101891015612da557600080fd5b602084015b6020853560051b860101811015612e9b578581351115612dc957600080fd5b601f196060823587018c0382011215612de157600080fd5b612de96129b0565b8760208435890101351115612dfd57600080fd5b823587016020810135016040818e0384011215612e1957600080fd5b612e21612988565b92508860208201351115612e3457600080fd5b612e468d602080840135840101612bca565b83528860408201351115612e5957600080fd5b612e6c8d60206040840135840101612b5d565b602084810191909152928252506040833588018181013583850152606001359082015284529283019201612daa565b506020830152509396939550929350505050565b600082601f830112612ec057600080fd5b81356020612ed0612ada83612a55565b82815260059290921b84018101918181019086841115612eef57600080fd5b8286015b84811015612f2e5780356001600160401b03811115612f125760008081fd5b612f208986838b0101612b5d565b845250918301918301612ef3565b509695505050505050565b600082601f830112612f4a57600080fd5b81356020612f5a612ada83612a55565b82815260059290921b84018101918181019086841115612f7957600080fd5b8286015b84811015612f2e5780356001600160401b0380821115612f9d5760008081fd5b90880190610100828b03601f1901811315612fb85760008081fd5b612fc06129d2565b8784013583811115612fd25760008081fd5b612fe08d8a83880101612b5d565b82525060408085013584811115612ff75760008081fd5b6130058e8b83890101612b5d565b8a840152506060613017818701612bae565b828401526080915081860135858111156130315760008081fd5b61303f8f8c838a0101612b5d565b82850152505060a0613052818701612bae565b8284015260c09150818601358581111561306c5760008081fd5b61307a8f8c838a0101612eaf565b82850152505060e0935061308f848601612bae565b9082015261309e848301612bae565b9281019290925250845250918301918301612f7d565b600080604083850312156130c757600080fd5b82356130d28161295a565b915060208301356001600160401b03808211156130ee57600080fd5b908401906080828703121561310257600080fd5b61310a6129b0565b82358281111561311957600080fd5b61312588828601612eaf565b8252506131358760208501612a25565b602082015260608301358281111561314c57600080fd5b61315888828601612f39565b6040830152508093505050509250929050565b6000806040838503121561317e57600080fd5b82356131898161295a565b915060208301356001600160401b03808211156131a557600080fd5b90840190602082870312156131b957600080fd5b6040516020810181811083821117156131d4576131d4612972565b6040528235828111156131e657600080fd5b6131f288828601612f39565b8252508093505050509250929050565b6000806040838503121561321557600080fd5b82356132208161295a565b915060208301356001600160401b0381111561323b57600080fd5b61324785828601612b5d565b9150509250929050565b6000806040838503121561326457600080fd5b823561326f8161295a565b91506020838101356001600160401b038082111561328c57600080fd5b90850190608082880312156132a057600080fd5b6132a86129b0565b8235828111156132b757600080fd5b8301601f810189136132c857600080fd5b80356132d6612ada82612a55565b81815260059190911b8201860190868101908b8311156132f557600080fd5b8784015b8381101561332d578035878111156133115760008081fd5b61331f8e8b83890101612bca565b8452509188019188016132f9565b508085525050505061334188858501612a25565b84820152606083013593508184111561335957600080fd5b61336588858501612eaf565b6040820152809450505050509250929050565b6000806040838503121561338b57600080fd5b82356133968161295a565b91506020838101356001600160401b03808211156133b357600080fd5b90850190604082880312156133c757600080fd5b6133cf612988565b8235828111156133de57600080fd5b6133ea89828601612a78565b82525083830135828111156133fe57600080fd5b80840193505087601f84011261341357600080fd5b8235613421612ada82612a55565b81815260059190911b8401850190858101908a83111561344057600080fd5b8686015b838110156134c15780358681111561345b57600080fd5b87016060818e03601f190112156134725760008081fd5b61347a6129b0565b898201358881111561348c5760008081fd5b61349a8f8c83860101612bca565b8252506040828101358b830152606090920135918101919091528352918701918701613444565b508087850152505050809450505050509250929050565b6000602082840312156134ea57600080fd5b815180151581146134fa57600080fd5b9392505050565b60208082526010908201526f24a430b7323632b91d10333937bd32b760811b604082015260600190565b8151815260208083015190820152604081016126c4565b60006020828403121561355457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156126c4576126c461355b565b60208082526023908201527f4948616e646c65723a207374696c6c20696e206368616c6c656e6765207065726040820152621a5bd960ea1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60005b838110156135f85781810151838201526020016135e0565b50506000910152565b600082601f83011261361257600080fd5b8151613620612ada82612b36565b81815284602083860101111561363557600080fd5b6136468260208301602087016135dd565b949350505050565b60006020828403121561366057600080fd5b81516001600160401b0381111561367657600080fd5b61364684828501613601565b60208082526019908201527f4948616e646c65723a20556e6b6e6f776e207265717565737400000000000000604082015260600190565b6000600182016136cb576136cb61355b565b5060010190565b6000606082840312156136e457600080fd5b6136ec6129b0565b905081518152602082015160208201526040820151604082015292915050565b60006060828403121561371e57600080fd5b6134fa83836136d2565b60208082526021908201527f4948616e646c65723a2050726f6f6620686569676874206e6f7420666f756e646040820152602160f81b606082015260800190565b600060808201868352602060808185015281875180845260a086019150828901935060005b818110156137aa5784518352938301939183019160010161378e565b505060409250848103838601528087518083528383019150838901925060005b818110156137f957835180518452858101518685015286015186840152928401926060909201916001016137ca565b50508094505050505082606083015295945050505050565b600081518084526138298160208601602086016135dd565b601f01601f19169290920160200192915050565b6000610100825181855261385382860182613811565b9150506020830151848203602086015261386d8282613811565b915050604083015161388a60408601826001600160401b03169052565b50606083015184820360608601526138a28282613811565b915050608083015184820360808601526138bc8282613811565b91505060a08301516138d960a08601826001600160401b03169052565b5060c083015184820360c08601526138f18282613811565b91505060e083015161390e60e08601826001600160401b03169052565b509392505050565b602081526000825160406020840152613932606084018261383d565b90506020840151601f198483030160408501526126bf8282613811565b600081518084526020808501808196508360051b8101915082860160005b85811015613997578284038952613985848351613811565b9885019893509084019060010161396d565b5091979650505050505050565b8481526080602082015260006139bd608083018661394f565b82810360408401526139cf818661394f565b905082810360608401526139e38185613811565b979650505050505050565b60006020808385031215613a0157600080fd5b82516001600160401b0380821115613a1857600080fd5b818501915085601f830112613a2c57600080fd5b8151613a3a612ada82612a55565b81815260059190911b83018401908481019088831115613a5957600080fd5b8585015b83811015613aec57805185811115613a755760008081fd5b86016040818c03601f1901811315613a8d5760008081fd5b613a95612988565b8983015188811115613aa75760008081fd5b613ab58e8c83870101613601565b825250908201519087821115613acb5760008081fd5b613ad98d8b84860101613601565b818b015285525050918601918601613a5d565b5098975050505050505050565b60006101008251818552613b0f82860182613811565b91505060208301518482036020860152613b298282613811565b9150506040830151613b4660408601826001600160401b03169052565b5060608301518482036060860152613b5e8282613811565b9150506080830151613b7b60808601826001600160401b03169052565b5060a083015184820360a0860152613b93828261394f565b91505060c0830151613bb060c08601826001600160401b03169052565b5060e083015161390e60e08601826001600160401b03169052565b60006020808352835160408083860152613be86060860183613af9565b83870151601f1987830381018489015281518084529294509085019184860190600581901b8601870160005b82811015613c62578488830301845285518051888452613c3689850182613811565b918b0151848303858d0152919050613c4e8183613811565b978b0197958b019593505050600101613c14565b509a9950505050505050505050565b6020815260006134fa6020830184613af9565b600060208284031215613c9657600080fd5b81516134fa8161295a565b604081526000613cb46040830185613811565b8281036020840152613cc68185613811565b95945050505050565b60008082840360c0811215613ce357600080fd5b83516001600160401b03811115613cf957600080fd5b613d0586828701613601565b93505060a0601f1982011215613d1a57600080fd5b50613d236129b0565b6020840151815260408401516020820152613d4185606086016136d2565b6040820152809150509250929050565b6020815260006134fa6020830184613811565b60008351613d768184602088016135dd565b835190830190613d8a8183602088016135dd565b01949350505050565b838152606060208201526000613dac606083018561394f565b8281036040840152613dbe818561394f565b9695505050505050565b6020815260008251602080840152613646604084018261383d565b6020815260006134fa602083018461383d565b60008951613e08818460208e016135dd565b895190830190613e1c818360208e016135dd565b60c08a811b6001600160c01b03199081169390920192835289901b811660088301528751613e51816010850160208c016135dd565b8751920191613e67816010850160208b016135dd565b8651920191613e7d816010850160208a016135dd565b60c09590951b16930160108101939093525050601801979650505050505050565b600089516020613eb18285838f016135dd565b8a5191840191613ec48184848f016135dd565b60c08b811b6001600160c01b0319908116949092019384528a901b1660088301528751613ef78160108501848c016135dd565b8751920191613f0c8160108501848b016135dd565b8651920191613f218160108501848a016135dd565b8551920191613f3681601085018489016135dd565b919091016010019b9a5050505050505050505050565b60008951613f5e818460208e016135dd565b895190830190613f72818360208e016135dd565b60c08a811b6001600160c01b03199081169390920192835289811b8216600884015288901b811660108301528651613fb1816018850160208b016135dd565b8651920191613fc7816018850160208a016135dd565b60c09590951b16930160188101939093525050602001979650505050505050565b6020815260006134fa602083018461394f56fea2646970667358221220d48e8c1a6adeaba192c5a08e1f358c3cc2d259772f75677b2ad3497183a6f65464736f6c63430008110033", + "sourceMap": "340:9661:58:-:0;;;;;;;;;;;;;;;;;;;", + "linkReferences": { + "lib/solidity-merkle-trees/src/MerkleMountainRange.sol": { + "MerkleMountainRange": [ + { + "start": 1739, + "length": 20 + }, + { + "start": 9566, + "length": 20 + } + ] + }, + "lib/solidity-merkle-trees/src/MerklePatricia.sol": { + "MerklePatricia": [ + { + "start": 3425, + "length": 20 + }, + { + "start": 7564, + "length": 20 + } + ] + } + } + }, + "deployedBytecode": { + "object": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c806320d71c7a14610067578063873ce1ce1461007c578063ac269bd61461008f578063bb1689be146100a2578063d95e4fbb146100b5578063fda626c3146100c8575b600080fd5b61007a610075366004612cdb565b6100db565b005b61007a61008a3660046130b4565b610819565b61007a61009d36600461316b565b610f43565b61007a6100b0366004613202565b6111e7565b61007a6100c3366004613251565b611a82565b61007a6100d6366004613378565b611f43565b81806001600160a01b031663054f7d9c6040518163ffffffff1660e01b81526004016020604051808303816000875af115801561011c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014091906134d8565b156101665760405162461bcd60e51b815260040161015d90613501565b60405180910390fd5b815151604051631a880a9360e01b81526000916001600160a01b03861691631a880a93916101969160040161352b565b6020604051808303816000875af11580156101b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d99190613542565b846001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610219573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061023d9190613542565b6102479190613571565b9050836001600160a01b031663f3f480d96040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610289573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ad9190613542565b81116102cb5760405162461bcd60e51b815260040161015d90613584565b6020830151516000816001600160401b038111156102eb576102eb612972565b60405190808252806020026020018201604052801561033657816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816103095790505b50905060005b828110156105f95760008660200151828151811061035c5761035c6135c7565b602002602001015190506103db886001600160a01b031663f437bc596040518163ffffffff1660e01b81526004016000604051808303816000875af11580156103a9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103d1919081019061364e565b8251515190612698565b6104365760405162461bcd60e51b815260206004820152602660248201527f4948616e646c65723a20496e76616c696420726573706f6e73652064657374696044820152653730ba34b7b760d11b606482015260840161015d565b805151600090610445906126ca565b604051630da2fd1960e21b8152600481018290529091506001600160a01b038a169063368bf464906024016020604051808303816000875af115801561048f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b391906134d8565b6104cf5760405162461bcd60e51b815260040161015d90613682565b60006104de8360000151612721565b604051632211f1dd60e01b8152600481018290529091506001600160a01b038b1690632211f1dd906024016020604051808303816000875af1158015610528573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054c91906134d8565b156105a35760405162461bcd60e51b815260206004820152602160248201527f4948616e646c65723a204475706c696361746520506f737420726573706f6e736044820152606560f81b606482015260840161015d565b60405180606001604052808460400151815260200184602001518152602001828152508585815181106105d8576105d86135c7565b602002602001018190525050505080806105f1906136b9565b91505061033c565b5084515160405163a70a8c4760e01b81526000916001600160a01b0389169163a70a8c479161062a9160040161352b565b6060604051808303816000875af1158015610649573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066d919061370c565b602001519050806106905760405162461bcd60e51b815260040161015d90613728565b85516020810151604091820151915163722e206d60e01b815273__$2399d33eab5707eb5118077f9c67419cb4$__9263722e206d926106d59286928891600401613769565b602060405180830381865af41580156106f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071691906134d8565b61076c5760405162461bcd60e51b815260206004820152602160248201527f4948616e646c65723a20496e76616c696420726573706f6e73652070726f6f666044820152607360f81b606482015260840161015d565b60005b8381101561080f5760008760200151828151811061078f5761078f6135c7565b60200260200101519050886001600160a01b0316638cf66b9282600001516040518263ffffffff1660e01b81526004016107c99190613916565b600060405180830381600087803b1580156107e357600080fd5b505af11580156107f7573d6000803e3d6000fd5b50505050508080610807906136b9565b91505061076f565b5050505050505050565b81806001600160a01b031663054f7d9c6040518163ffffffff1660e01b81526004016020604051808303816000875af115801561085a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087e91906134d8565b1561089b5760405162461bcd60e51b815260040161015d90613501565b6020820151604051631a880a9360e01b81526000916001600160a01b03861691631a880a93916108cd9160040161352b565b6020604051808303816000875af11580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109109190613542565b846001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610950573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109749190613542565b61097e9190613571565b9050836001600160a01b031663f3f480d96040518163ffffffff1660e01b81526004016020604051808303816000875af11580156109c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e49190613542565b8111610a025760405162461bcd60e51b815260040161015d90613584565b602083015160405163a70a8c4760e01b81526000916001600160a01b0387169163a70a8c4791610a349160040161352b565b6060604051808303816000875af1158015610a53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a77919061370c565b604081015190915080610a9c5760405162461bcd60e51b815260040161015d90613728565b604085015151855160005b82811015610f3857600088604001518281518110610ac757610ac76135c7565b60200260200101519050610b448a6001600160a01b031663f437bc596040518163ffffffff1660e01b81526004016000604051808303816000875af1158015610b14573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b3c919081019061364e565b825190612698565b610ba35760405162461bcd60e51b815260206004820152602a60248201527f4948616e646c65723a20496e76616c69642047455420726573706f6e7365206460448201526932b9ba34b730ba34b7b760b11b606482015260840161015d565b6000610bae82612764565b604051630da2fd1960e21b8152600481018290529091506001600160a01b038c169063368bf464906024016020604051808303816000875af1158015610bf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1c91906134d8565b610c685760405162461bcd60e51b815260206004820152601d60248201527f4948616e646c65723a20556e6b6e6f776e204745542072657175657374000000604482015260640161015d565b60808201516001600160401b03161580610cf157508a6001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610cbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce19190613542565b82608001516001600160401b0316115b610d3d5760405162461bcd60e51b815260206004820152601f60248201527f4948616e646c65723a2047455420726571756573742074696d6564206f757400604482015260640161015d565b600073__$3557184f57f01f44bdc1609b323054fd0c$__6355028f6f88878660a0015186604051602001610d7391815260200190565b6040516020818303038152906040526040518563ffffffff1660e01b8152600401610da194939291906139a4565b600060405180830381865af4158015610dbe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610de691908101906139ee565b60408051808201909152848152602081018290529091506001600160a01b038d16632211f1dd610e1583612836565b6040518263ffffffff1660e01b8152600401610e3391815260200190565b6020604051808303816000875af1158015610e52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7691906134d8565b15610ec35760405162461bcd60e51b815260206004820181905260248201527f4948616e646c65723a204475706c69636174652047455420726573706f6e7365604482015260640161015d565b60405163f073609160e01b81526001600160a01b038e169063f073609190610eef908490600401613bcb565b600060405180830381600087803b158015610f0957600080fd5b505af1158015610f1d573d6000803e3d6000fd5b50505050505050508080610f30906136b9565b915050610aa7565b505050505050505050565b81806001600160a01b031663054f7d9c6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610f84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa891906134d8565b15610fc55760405162461bcd60e51b815260040161015d90613501565b81515160005b818110156111e057600084600001518281518110610feb57610feb6135c7565b60200260200101519050600061100082612764565b604051630da2fd1960e21b8152600481018290529091506001600160a01b0388169063368bf464906024016020604051808303816000875af115801561104a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106e91906134d8565b61108a5760405162461bcd60e51b815260040161015d90613682565b60808201516001600160401b031615801590611115575081608001516001600160401b0316876001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156110ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111139190613542565b115b61116d5760405162461bcd60e51b815260206004820152602360248201527f4948616e646c65723a204745542072657175657374206e6f742074696d6564206044820152621bdd5d60ea1b606482015260840161015d565b6040516384566a5d60e01b81526001600160a01b038816906384566a5d90611199908590600401613c71565b600060405180830381600087803b1580156111b357600080fd5b505af11580156111c7573d6000803e3d6000fd5b50505050505080806111d8906136b9565b915050610fcb565b5050505050565b81806001600160a01b031663054f7d9c6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611228573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124c91906134d8565b156112695760405162461bcd60e51b815260040161015d90613501565b826001600160a01b031663f3f480d96040518163ffffffff1660e01b81526004016020604051808303816000875af11580156112a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112cd9190613542565b836001600160a01b0316639a8425bc6040518163ffffffff1660e01b81526004016020604051808303816000875af115801561130d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113319190613542565b846001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611371573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113959190613542565b61139f9190613571565b116113bc5760405162461bcd60e51b815260040161015d90613584565b826001600160a01b031663d40784c76040518163ffffffff1660e01b81526004016020604051808303816000875af11580156113fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114209190613542565b836001600160a01b0316639a8425bc6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611460573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114849190613542565b846001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156114c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e89190613542565b6114f29190613571565b10806115725750826001600160a01b031663f851a4406040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611539573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155d9190613c84565b6001600160a01b0316336001600160a01b0316145b61158e5760405162461bcd60e51b815260040161015d90613584565b600080846001600160a01b0316632476132b6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156115d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f59190613c84565b6001600160a01b0316637d755598866001600160a01b031663bbad99d46040518163ffffffff1660e01b81526004016000604051808303816000875af1158015611643573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261166b919081019061364e565b866040518363ffffffff1660e01b8152600401611689929190613ca1565b6000604051808303816000875af11580156116a8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116d09190810190613ccf565b604051630b4974cf60e41b815291935091506001600160a01b0386169063b4974cf090611701908590600401613d51565b600060405180830381600087803b15801561171b57600080fd5b505af115801561172f573d6000803e3d6000fd5b50505050846001600160a01b031663d860cb47866001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611782573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a69190613542565b6040518263ffffffff1660e01b81526004016117c491815260200190565b600060405180830381600087803b1580156117de57600080fd5b505af11580156117f2573d6000803e3d6000fd5b50505050846001600160a01b03166356b655976040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611836573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185a9190613542565b816020015111156111e05760408051808201825282518152602080840151818301908152848401518451632acf7f4f60e11b81528451600482015291516024830152805160448301529182015160648201529201516084830152906001600160a01b0387169063559efe9e9060a401600060405180830381600087803b1580156118e357600080fd5b505af11580156118f7573d6000803e3d6000fd5b50505050856001600160a01b03166314863dcb82886001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af115801561194b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196f9190613542565b6040516001600160e01b031960e085901b1681528251600482015260209092015160248301526044820152606401600060405180830381600087803b1580156119b757600080fd5b505af11580156119cb573d6000803e3d6000fd5b505050602082015160405163a0756ecd60e01b81526001600160a01b038916925063a0756ecd91611a029160040190815260200190565b600060405180830381600087803b158015611a1c57600080fd5b505af1158015611a30573d6000803e3d6000fd5b5050825160208401516040517ff12a80290a43822c9acabb2a766d41728f06fe4c0497e4a7bb3f54292e4cb0da9450611a729350918252602082015260400190565b60405180910390a1505050505050565b81806001600160a01b031663054f7d9c6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611ac3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae791906134d8565b15611b045760405162461bcd60e51b815260040161015d90613501565b602082015160405163a70a8c4760e01b81526000916001600160a01b0386169163a70a8c4791611b369160040161352b565b6060604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b79919061370c565b83515190915060005b81811015611f3b57600085600001518281518110611ba257611ba26135c7565b602002602001015190508060a001516001600160401b0316600014158015611bda57508060a001516001600160401b03168460000151115b611c1e5760405162461bcd60e51b815260206004820152601560248201527414995c5d595cdd081b9bdd081d1a5b5959081bdd5d605a1b604482015260640161015d565b6000611c29826126ca565b604051630da2fd1960e21b8152600481018290529091506001600160a01b0389169063368bf464906024016020604051808303816000875af1158015611c73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9791906134d8565b611cb35760405162461bcd60e51b815260040161015d90613682565b604080516001808252818301909252600091816020015b6060815260200190600190039081611cca57505060408051808201825260208082527f103895530afb23bb607661426d55eb8b0484aecefe882c3ce64e6f82507f715a818301528251908101869052929350910160408051601f1981840301815290829052611d3c9291602001613d64565b604051602081830303815290604052818581518110611d5d57611d5d6135c7565b6020026020010181905250600073__$3557184f57f01f44bdc1609b323054fd0c$__631475ff4588604001518b60400151856040518463ffffffff1660e01b8152600401611dad93929190613d93565b600060405180830381865af4158015611dca573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611df291908101906139ee565b600081518110611e0457611e046135c7565b60200260200101519050611e6060006001600160401b03811115611e2a57611e2a612972565b6040519080825280601f01601f191660200182016040528015611e54576020820181803683370190505b50602083015190612698565b611ebb5760405162461bcd60e51b815260206004820152602660248201527f4948616e646c65723a20496e76616c6964206e6f6e2d6d656d6265727368697060448201526510383937b7b360d11b606482015260840161015d565b6040805160208101825285815290516312dde20360e11b81526001600160a01b038c16916325bbc40691611ef29190600401613dc8565b600060405180830381600087803b158015611f0c57600080fd5b505af1158015611f20573d6000803e3d6000fd5b50505050505050508080611f33906136b9565b915050611b82565b505050505050565b81806001600160a01b031663054f7d9c6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611f84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa891906134d8565b15611fc55760405162461bcd60e51b815260040161015d90613501565b815151604051631a880a9360e01b81526000916001600160a01b03861691631a880a9391611ff59160040161352b565b6020604051808303816000875af1158015612014573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120389190613542565b846001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015612078573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209c9190613542565b6120a69190613571565b9050836001600160a01b031663f3f480d96040518163ffffffff1660e01b81526004016020604051808303816000875af11580156120e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210c9190613542565b811161212a5760405162461bcd60e51b815260040161015d90613584565b6020830151516000816001600160401b0381111561214a5761214a612972565b60405190808252806020026020018201604052801561219557816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816121685790505b50905060005b8281101561248c576000866020015182815181106121bb576121bb6135c7565b6020026020010151905061223c886001600160a01b031663f437bc596040518163ffffffff1660e01b81526004016000604051808303816000875af1158015612208573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612230919081019061364e565b82516020015190612698565b6122965760405162461bcd60e51b815260206004820152602560248201527f4948616e646c65723a20496e76616c696420726571756573742064657374696e60448201526430ba34b7b760d91b606482015260840161015d565b805160a001516001600160401b031615806123215750876001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156122ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123109190613542565b815160a001516001600160401b0316115b61236d5760405162461bcd60e51b815260206004820152601b60248201527f4948616e646c65723a20526571756573742074696d6564206f75740000000000604482015260640161015d565b600061237c82600001516126ca565b604051630cb33d1f60e11b8152600481018290529091506001600160a01b038a16906319667a3e906024016020604051808303816000875af11580156123c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ea91906134d8565b156124375760405162461bcd60e51b815260206004820152601b60248201527f4948616e646c65723a204475706c696361746520726571756573740000000000604482015260640161015d565b604051806060016040528083604001518152602001836020015181526020018281525084848151811061246c5761246c6135c7565b602002602001018190525050508080612484906136b9565b91505061219b565b5084515160405163a70a8c4760e01b81526000916001600160a01b0389169163a70a8c47916124bd9160040161352b565b6060604051808303816000875af11580156124dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612500919061370c565b602001519050806125235760405162461bcd60e51b815260040161015d90613728565b85516020810151604091820151915163722e206d60e01b815273__$2399d33eab5707eb5118077f9c67419cb4$__9263722e206d926125689286928891600401613769565b602060405180830381865af4158015612585573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a991906134d8565b6125f55760405162461bcd60e51b815260206004820181905260248201527f4948616e646c65723a20496e76616c696420726571756573742070726f6f6673604482015260640161015d565b60005b8381101561080f57600087602001518281518110612618576126186135c7565b60200260200101519050886001600160a01b0316633b8c2bf782600001516040518263ffffffff1660e01b81526004016126529190613de3565b600060405180830381600087803b15801561266c57600080fd5b505af1158015612680573d6000803e3d6000fd5b50505050508080612690906136b9565b9150506125f8565b600081518351146126ab575060006126c4565b825160208381018281209186019283209091145b925050505b92915050565b805160208083015160408085015160a08601516060870151608088015160c089015160e08a01519551600099612704999098979101613df6565b604051602081830303815290604052805190602001209050919050565b8051805160208083015160408085015160a086015160c08701516060880151608090980151868a0151945160009961270499989596949593949093909101613e9e565b6040805160208101909152600080825260a083015151909190825b818110156127db57828560a00151828151811061279e5761279e6135c7565b60200260200101516040516020016127b7929190613d64565b604051602081830303815290604052925080806127d3906136b9565b91505061277f565b508360000151846020015185604001518660c0015187608001518860600151878a60e00151604051602001612817989796959493929190613f4c565b6040516020818303038152906040528051906020012092505050919050565b600080826000015160a001516040516020016128529190613fe8565b60408051601f19818403018152828252855180516020828101519483015160c08401516080850151606086015160e0909601519699506000986128a49895979596939592949193928b92909101613f4c565b60408051601f1981840301815291905260208501515190915060005b81811015612949576000866020015182815181106128e0576128e06135c7565b602002602001015190508381600001518260200151604051602001612906929190613d64565b60408051601f19818403018152908290526129249291602001613d64565b6040516020818303038152906040529350508080612941906136b9565b9150506128c0565b505080516020909101209392505050565b6001600160a01b038116811461296f57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156129aa576129aa612972565b60405290565b604051606081016001600160401b03811182821017156129aa576129aa612972565b60405161010081016001600160401b03811182821017156129aa576129aa612972565b604051601f8201601f191681016001600160401b0381118282101715612a1d57612a1d612972565b604052919050565b600060408284031215612a3757600080fd5b612a3f612988565b9050813581526020820135602082015292915050565b60006001600160401b03821115612a6e57612a6e612972565b5060051b60200190565b600060808284031215612a8a57600080fd5b612a926129b0565b9050612a9e8383612a25565b815260408201356001600160401b03811115612ab957600080fd5b8201601f81018413612aca57600080fd5b80356020612adf612ada83612a55565b6129f5565b82815260059290921b83018101918181019087841115612afe57600080fd5b938201935b83851015612b1c57843582529382019390820190612b03565b808387015250505050506060820135604082015292915050565b60006001600160401b03821115612b4f57612b4f612972565b50601f01601f191660200190565b600082601f830112612b6e57600080fd5b8135612b7c612ada82612b36565b818152846020838601011115612b9157600080fd5b816020850160208301376000918101602001919091529392505050565b80356001600160401b0381168114612bc557600080fd5b919050565b60006101008284031215612bdd57600080fd5b612be56129d2565b905081356001600160401b0380821115612bfe57600080fd5b612c0a85838601612b5d565b83526020840135915080821115612c2057600080fd5b612c2c85838601612b5d565b6020840152612c3d60408501612bae565b60408401526060840135915080821115612c5657600080fd5b612c6285838601612b5d565b60608401526080840135915080821115612c7b57600080fd5b612c8785838601612b5d565b6080840152612c9860a08501612bae565b60a084015260c0840135915080821115612cb157600080fd5b50612cbe84828501612b5d565b60c083015250612cd060e08301612bae565b60e082015292915050565b60008060408385031215612cee57600080fd5b612cf8833561295a565b823591506001600160401b038060208501351115612d1557600080fd5b6020840135840160408187031215612d2c57600080fd5b612d34612988565b8282351115612d4257600080fd5b612d4f8783358401612a78565b81528260208301351115612d6257600080fd5b60208201358201915086601f830112612d7a57600080fd5b612d87612ada8335612a55565b82358082526020808301929160051b850101891015612da557600080fd5b602084015b6020853560051b860101811015612e9b578581351115612dc957600080fd5b601f196060823587018c0382011215612de157600080fd5b612de96129b0565b8760208435890101351115612dfd57600080fd5b823587016020810135016040818e0384011215612e1957600080fd5b612e21612988565b92508860208201351115612e3457600080fd5b612e468d602080840135840101612bca565b83528860408201351115612e5957600080fd5b612e6c8d60206040840135840101612b5d565b602084810191909152928252506040833588018181013583850152606001359082015284529283019201612daa565b506020830152509396939550929350505050565b600082601f830112612ec057600080fd5b81356020612ed0612ada83612a55565b82815260059290921b84018101918181019086841115612eef57600080fd5b8286015b84811015612f2e5780356001600160401b03811115612f125760008081fd5b612f208986838b0101612b5d565b845250918301918301612ef3565b509695505050505050565b600082601f830112612f4a57600080fd5b81356020612f5a612ada83612a55565b82815260059290921b84018101918181019086841115612f7957600080fd5b8286015b84811015612f2e5780356001600160401b0380821115612f9d5760008081fd5b90880190610100828b03601f1901811315612fb85760008081fd5b612fc06129d2565b8784013583811115612fd25760008081fd5b612fe08d8a83880101612b5d565b82525060408085013584811115612ff75760008081fd5b6130058e8b83890101612b5d565b8a840152506060613017818701612bae565b828401526080915081860135858111156130315760008081fd5b61303f8f8c838a0101612b5d565b82850152505060a0613052818701612bae565b8284015260c09150818601358581111561306c5760008081fd5b61307a8f8c838a0101612eaf565b82850152505060e0935061308f848601612bae565b9082015261309e848301612bae565b9281019290925250845250918301918301612f7d565b600080604083850312156130c757600080fd5b82356130d28161295a565b915060208301356001600160401b03808211156130ee57600080fd5b908401906080828703121561310257600080fd5b61310a6129b0565b82358281111561311957600080fd5b61312588828601612eaf565b8252506131358760208501612a25565b602082015260608301358281111561314c57600080fd5b61315888828601612f39565b6040830152508093505050509250929050565b6000806040838503121561317e57600080fd5b82356131898161295a565b915060208301356001600160401b03808211156131a557600080fd5b90840190602082870312156131b957600080fd5b6040516020810181811083821117156131d4576131d4612972565b6040528235828111156131e657600080fd5b6131f288828601612f39565b8252508093505050509250929050565b6000806040838503121561321557600080fd5b82356132208161295a565b915060208301356001600160401b0381111561323b57600080fd5b61324785828601612b5d565b9150509250929050565b6000806040838503121561326457600080fd5b823561326f8161295a565b91506020838101356001600160401b038082111561328c57600080fd5b90850190608082880312156132a057600080fd5b6132a86129b0565b8235828111156132b757600080fd5b8301601f810189136132c857600080fd5b80356132d6612ada82612a55565b81815260059190911b8201860190868101908b8311156132f557600080fd5b8784015b8381101561332d578035878111156133115760008081fd5b61331f8e8b83890101612bca565b8452509188019188016132f9565b508085525050505061334188858501612a25565b84820152606083013593508184111561335957600080fd5b61336588858501612eaf565b6040820152809450505050509250929050565b6000806040838503121561338b57600080fd5b82356133968161295a565b91506020838101356001600160401b03808211156133b357600080fd5b90850190604082880312156133c757600080fd5b6133cf612988565b8235828111156133de57600080fd5b6133ea89828601612a78565b82525083830135828111156133fe57600080fd5b80840193505087601f84011261341357600080fd5b8235613421612ada82612a55565b81815260059190911b8401850190858101908a83111561344057600080fd5b8686015b838110156134c15780358681111561345b57600080fd5b87016060818e03601f190112156134725760008081fd5b61347a6129b0565b898201358881111561348c5760008081fd5b61349a8f8c83860101612bca565b8252506040828101358b830152606090920135918101919091528352918701918701613444565b508087850152505050809450505050509250929050565b6000602082840312156134ea57600080fd5b815180151581146134fa57600080fd5b9392505050565b60208082526010908201526f24a430b7323632b91d10333937bd32b760811b604082015260600190565b8151815260208083015190820152604081016126c4565b60006020828403121561355457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156126c4576126c461355b565b60208082526023908201527f4948616e646c65723a207374696c6c20696e206368616c6c656e6765207065726040820152621a5bd960ea1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60005b838110156135f85781810151838201526020016135e0565b50506000910152565b600082601f83011261361257600080fd5b8151613620612ada82612b36565b81815284602083860101111561363557600080fd5b6136468260208301602087016135dd565b949350505050565b60006020828403121561366057600080fd5b81516001600160401b0381111561367657600080fd5b61364684828501613601565b60208082526019908201527f4948616e646c65723a20556e6b6e6f776e207265717565737400000000000000604082015260600190565b6000600182016136cb576136cb61355b565b5060010190565b6000606082840312156136e457600080fd5b6136ec6129b0565b905081518152602082015160208201526040820151604082015292915050565b60006060828403121561371e57600080fd5b6134fa83836136d2565b60208082526021908201527f4948616e646c65723a2050726f6f6620686569676874206e6f7420666f756e646040820152602160f81b606082015260800190565b600060808201868352602060808185015281875180845260a086019150828901935060005b818110156137aa5784518352938301939183019160010161378e565b505060409250848103838601528087518083528383019150838901925060005b818110156137f957835180518452858101518685015286015186840152928401926060909201916001016137ca565b50508094505050505082606083015295945050505050565b600081518084526138298160208601602086016135dd565b601f01601f19169290920160200192915050565b6000610100825181855261385382860182613811565b9150506020830151848203602086015261386d8282613811565b915050604083015161388a60408601826001600160401b03169052565b50606083015184820360608601526138a28282613811565b915050608083015184820360808601526138bc8282613811565b91505060a08301516138d960a08601826001600160401b03169052565b5060c083015184820360c08601526138f18282613811565b91505060e083015161390e60e08601826001600160401b03169052565b509392505050565b602081526000825160406020840152613932606084018261383d565b90506020840151601f198483030160408501526126bf8282613811565b600081518084526020808501808196508360051b8101915082860160005b85811015613997578284038952613985848351613811565b9885019893509084019060010161396d565b5091979650505050505050565b8481526080602082015260006139bd608083018661394f565b82810360408401526139cf818661394f565b905082810360608401526139e38185613811565b979650505050505050565b60006020808385031215613a0157600080fd5b82516001600160401b0380821115613a1857600080fd5b818501915085601f830112613a2c57600080fd5b8151613a3a612ada82612a55565b81815260059190911b83018401908481019088831115613a5957600080fd5b8585015b83811015613aec57805185811115613a755760008081fd5b86016040818c03601f1901811315613a8d5760008081fd5b613a95612988565b8983015188811115613aa75760008081fd5b613ab58e8c83870101613601565b825250908201519087821115613acb5760008081fd5b613ad98d8b84860101613601565b818b015285525050918601918601613a5d565b5098975050505050505050565b60006101008251818552613b0f82860182613811565b91505060208301518482036020860152613b298282613811565b9150506040830151613b4660408601826001600160401b03169052565b5060608301518482036060860152613b5e8282613811565b9150506080830151613b7b60808601826001600160401b03169052565b5060a083015184820360a0860152613b93828261394f565b91505060c0830151613bb060c08601826001600160401b03169052565b5060e083015161390e60e08601826001600160401b03169052565b60006020808352835160408083860152613be86060860183613af9565b83870151601f1987830381018489015281518084529294509085019184860190600581901b8601870160005b82811015613c62578488830301845285518051888452613c3689850182613811565b918b0151848303858d0152919050613c4e8183613811565b978b0197958b019593505050600101613c14565b509a9950505050505050505050565b6020815260006134fa6020830184613af9565b600060208284031215613c9657600080fd5b81516134fa8161295a565b604081526000613cb46040830185613811565b8281036020840152613cc68185613811565b95945050505050565b60008082840360c0811215613ce357600080fd5b83516001600160401b03811115613cf957600080fd5b613d0586828701613601565b93505060a0601f1982011215613d1a57600080fd5b50613d236129b0565b6020840151815260408401516020820152613d4185606086016136d2565b6040820152809150509250929050565b6020815260006134fa6020830184613811565b60008351613d768184602088016135dd565b835190830190613d8a8183602088016135dd565b01949350505050565b838152606060208201526000613dac606083018561394f565b8281036040840152613dbe818561394f565b9695505050505050565b6020815260008251602080840152613646604084018261383d565b6020815260006134fa602083018461383d565b60008951613e08818460208e016135dd565b895190830190613e1c818360208e016135dd565b60c08a811b6001600160c01b03199081169390920192835289901b811660088301528751613e51816010850160208c016135dd565b8751920191613e67816010850160208b016135dd565b8651920191613e7d816010850160208a016135dd565b60c09590951b16930160108101939093525050601801979650505050505050565b600089516020613eb18285838f016135dd565b8a5191840191613ec48184848f016135dd565b60c08b811b6001600160c01b0319908116949092019384528a901b1660088301528751613ef78160108501848c016135dd565b8751920191613f0c8160108501848b016135dd565b8651920191613f218160108501848a016135dd565b8551920191613f3681601085018489016135dd565b919091016010019b9a5050505050505050505050565b60008951613f5e818460208e016135dd565b895190830190613f72818360208e016135dd565b60c08a811b6001600160c01b03199081169390920192835289811b8216600884015288901b811660108301528651613fb1816018850160208b016135dd565b8651920191613fc7816018850160208a016135dd565b60c09590951b16930160188101939093525050602001979650505050505050565b6020815260006134fa602083018461394f56fea2646970667358221220d48e8c1a6adeaba192c5a08e1f358c3cc2d259772f75677b2ad3497183a6f65464736f6c63430008110033", + "sourceMap": "340:9661:58:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4425:1642;;;;;;:::i;:::-;;:::i;:::-;;7588:1595;;;;;;:::i;:::-;;:::i;9319:680::-;;;;;;:::i;:::-;;:::i;931:1517::-;;;;;;:::i;:::-;;:::i;6230:1159::-;;;;;;:::i;:::-;;:::i;2646:1577::-;;;;;;:::i;:::-;;:::i;4425:1642::-;4526:4;468;-1:-1:-1;;;;;468:11:58;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;467:14;459:43;;;;-1:-1:-1;;;459:43:58;;;;;;;:::i;:::-;;;;;;;;;4615:14;;:21;4577:60:::1;::::0;-1:-1:-1;;;4577:60:58;;4542:13:::1;::::0;-1:-1:-1;;;;;4577:37:58;::::1;::::0;::::1;::::0;:60:::1;::::0;::::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4558:4;-1:-1:-1::0;;;;;4558:14:58::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:79;;;;:::i;:::-;4542:95;;4663:4;-1:-1:-1::0;;;;;4663:20:58::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4655:5;:30;4647:78;;;;-1:-1:-1::0;;;4647:78:58::1;;;;;;;:::i;:::-;4762:18;::::0;::::1;::::0;:25;4736:23:::1;4762:25:::0;-1:-1:-1;;;;;4823:30:58;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;4823:30:58;;-1:-1:-1;;4823:30:58;;;;::::1;::::0;::::1;;;;;;4797:56;;4869:9;4864:663;4888:15;4884:1;:19;4864:663;;;4924:28;4955:8;:18;;;4974:1;4955:21;;;;;;;;:::i;:::-;;;;;;;4924:52;;4998:48;5034:4;-1:-1:-1::0;;;;;5034:9:58::1;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;5034:11:58::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;4998:13:::0;;:21;:28;;:35:::1;:48::i;:::-;4990:99;;;::::0;-1:-1:-1;;;4990:99:58;;21366:2:74;4990:99:58::1;::::0;::::1;21348:21:74::0;21405:2;21385:18;;;21378:30;21444:34;21424:18;;;21417:62;-1:-1:-1;;;21495:18:74;;;21488:36;21541:19;;4990:99:58::1;21164:402:74::0;4990:99:58::1;5145:13:::0;;:21;5104:25:::1;::::0;5132:35:::1;::::0;:12:::1;:35::i;:::-;5189:42;::::0;-1:-1:-1;;;5189:42:58;;::::1;::::0;::::1;21717:25:74::0;;;5104:63:58;;-1:-1:-1;;;;;;5189:23:58;::::1;::::0;::::1;::::0;21690:18:74;;5189:42:58::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5181:80;;;;-1:-1:-1::0;;;5181:80:58::1;;;;;;;:::i;:::-;5276:26;5305:27;5318:4;:13;;;5305:12;:27::i;:::-;5355:44;::::0;-1:-1:-1;;;5355:44:58;;::::1;::::0;::::1;21717:25:74::0;;;5276:56:58;;-1:-1:-1;;;;;;5355:24:58;::::1;::::0;::::1;::::0;21690:18:74;;5355:44:58::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5354:45;5346:91;;;::::0;-1:-1:-1;;;5346:91:58;;22309:2:74;5346:91:58::1;::::0;::::1;22291:21:74::0;22348:2;22328:18;;;22321:30;22387:34;22367:18;;;22360:62;-1:-1:-1;;;22438:18:74;;;22431:31;22479:19;;5346:91:58::1;22107:397:74::0;5346:91:58::1;5464:52;;;;;;;;5472:4;:11;;;5464:52;;;;5485:4;:10;;;5464:52;;;;5497:18;5464:52;;::::0;5452:6:::1;5459:1;5452:9;;;;;;;;:::i;:::-;;;;;;:64;;;;4910:617;;;4905:3;;;;;:::i;:::-;;;;4864:663;;;-1:-1:-1::0;5580:14:58;;:21;5552:50:::1;::::0;-1:-1:-1;;;5552:50:58;;5537:12:::1;::::0;-1:-1:-1;;;;;5552:27:58;::::1;::::0;::::1;::::0;:50:::1;::::0;::::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:62;;::::0;;-1:-1:-1;5552:62:58;5625:64:::1;;;;-1:-1:-1::0;;;5625:64:58::1;;;;;;;:::i;:::-;5758:14:::0;;:25:::1;::::0;::::1;::::0;5793:24:::1;::::0;;::::1;::::0;5720:98;;-1:-1:-1;;;5720:98:58;;:19:::1;::::0;:31:::1;::::0;:98:::1;::::0;5752:4;;5785:6;;5720:98:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5699:178;;;::::0;-1:-1:-1;;;5699:178:58;;25401:2:74;5699:178:58::1;::::0;::::1;25383:21:74::0;25440:2;25420:18;;;25413:30;25479:34;25459:18;;;25452:62;-1:-1:-1;;;25530:18:74;;;25523:31;25571:19;;5699:178:58::1;25199:397:74::0;5699:178:58::1;5893:9;5888:173;5912:15;5908:1;:19;5888:173;;;5948:28;5979:8;:18;;;5998:1;5979:21;;;;;;;;:::i;:::-;;;;;;;5948:52;;6014:4;-1:-1:-1::0;;;;;6014:21:58::1;;6036:4;:13;;;6014:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5934:127;5929:3;;;;;:::i;:::-;;;;5888:173;;;;4532:1535;;;;4425:1642:::0;;;:::o;7588:1595::-;7686:4;468;-1:-1:-1;;;;;468:11:58;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;467:14;459:43;;;;-1:-1:-1;;;459:43:58;;;;;;;:::i;:::-;7775:14:::1;::::0;::::1;::::0;7737:53:::1;::::0;-1:-1:-1;;;7737:53:58;;7702:13:::1;::::0;-1:-1:-1;;;;;7737:37:58;::::1;::::0;::::1;::::0;:53:::1;::::0;::::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7718:4;-1:-1:-1::0;;;;;7718:14:58::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:72;;;;:::i;:::-;7702:88;;7816:4;-1:-1:-1::0;;;;;7816:20:58::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7808:5;:30;7800:78;;;;-1:-1:-1::0;;;7800:78:58::1;;;;;;;:::i;:::-;7958:14;::::0;::::1;::::0;7930:43:::1;::::0;-1:-1:-1;;;7930:43:58;;7889:38:::1;::::0;-1:-1:-1;;;;;7930:27:58;::::1;::::0;::::1;::::0;:43:::1;::::0;::::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7998:25;::::0;::::1;::::0;7889:84;;-1:-1:-1;7998:25:58;8033:64:::1;;;;-1:-1:-1::0;;;8033:64:58::1;;;;;;;:::i;:::-;8134:16;::::0;::::1;::::0;:23;8190:13;;8108:23:::1;8214:963;8238:15;8234:1;:19;8214:963;;;8274:25;8302:7;:16;;;8319:1;8302:19;;;;;;;;:::i;:::-;;;;;;;8274:47;;8343:34;8365:4;-1:-1:-1::0;;;;;8365:9:58::1;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;8365:11:58::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;8343:14:::0;;;:21:::1;:34::i;:::-;8335:89;;;::::0;-1:-1:-1;;;8335:89:58;;27991:2:74;8335:89:58::1;::::0;::::1;27973:21:74::0;28030:2;28010:18;;;28003:30;28069:34;28049:18;;;28042:62;-1:-1:-1;;;28120:18:74;;;28113:40;28170:19;;8335:89:58::1;27789:406:74::0;8335:89:58::1;8439:25;8467:21;8480:7;8467:12;:21::i;:::-;8510:42;::::0;-1:-1:-1;;;8510:42:58;;::::1;::::0;::::1;21717:25:74::0;;;8439:49:58;;-1:-1:-1;;;;;;8510:23:58;::::1;::::0;::::1;::::0;21690:18:74;;8510:42:58::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8502:84;;;::::0;-1:-1:-1;;;8502:84:58;;28402:2:74;8502:84:58::1;::::0;::::1;28384:21:74::0;28441:2;28421:18;;;28414:30;28480:31;28460:18;;;28453:59;28529:18;;8502:84:58::1;28200:353:74::0;8502:84:58::1;8625:24;::::0;::::1;::::0;-1:-1:-1;;;;;8625:29:58::1;::::0;;:76:::1;;;8685:4;-1:-1:-1::0;;;;;8685:14:58::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8658:7;:24;;;-1:-1:-1::0;;;;;8658:43:58::1;;8625:76;8600:166;;;::::0;-1:-1:-1;;;8600:166:58;;28760:2:74;8600:166:58::1;::::0;::::1;28742:21:74::0;28799:2;28779:18;;;28772:30;28838:33;28818:18;;;28811:61;28889:18;;8600:166:58::1;28558:355:74::0;8600:166:58::1;8781:28;8828:14;:34;8863:4;8869:5;8876:7;:12;;;8903:17;8890:31;;;;;;29047:19:74::0;;29091:2;29082:12;;28918:182;8890:31:58::1;;;;;;;;;;;;;8828:94;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;8828:94:58::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;8966:47;::::0;;;;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;;;8781:141;;-1:-1:-1;;;;;;9036:24:58;::::1;;9061:22;8966:47:::0;9061:12:::1;:22::i;:::-;9036:48;;;;;;;;;;;;;21717:25:74::0;;21705:2;21690:18;;21571:177;9036:48:58::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9035:49;9027:94;;;::::0;-1:-1:-1;;;9027:94:58;;32554:2:74;9027:94:58::1;::::0;::::1;32536:21:74::0;;;32573:18;;;32566:30;32632:34;32612:18;;;32605:62;32684:18;;9027:94:58::1;32352:356:74::0;9027:94:58::1;9135:31;::::0;-1:-1:-1;;;9135:31:58;;-1:-1:-1;;;;;9135:21:58;::::1;::::0;::::1;::::0;:31:::1;::::0;9157:8;;9135:31:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8260:917;;;;8255:3;;;;;:::i;:::-;;;;8214:963;;;;7692:1491;;;;;7588:1595:::0;;;:::o;9319:680::-;9415:4;468;-1:-1:-1;;;;;468:11:58;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;467:14;459:43;;;;-1:-1:-1;;;459:43:58;;;;;;;:::i;:::-;9456:16;;:23;9431:22:::1;9490:503;9514:14;9510:1;:18;9490:503;;;9549:25;9577:7;:16;;;9594:1;9577:19;;;;;;;;:::i;:::-;;;;;;;9549:47;;9610:25;9638:21;9651:7;9638:12;:21::i;:::-;9681:42;::::0;-1:-1:-1;;;9681:42:58;;::::1;::::0;::::1;21717:25:74::0;;;9610:49:58;;-1:-1:-1;;;;;;9681:23:58;::::1;::::0;::::1;::::0;21690:18:74;;9681:42:58::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9673:80;;;;-1:-1:-1::0;;;9673:80:58::1;;;;;;;:::i;:::-;9793:24;::::0;::::1;::::0;-1:-1:-1;;;;;9793:29:58::1;::::0;;::::1;::::0;:76:::1;;;9845:7;:24;;;-1:-1:-1::0;;;;;9826:43:58::1;:4;-1:-1:-1::0;;;;;9826:14:58::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;9793:76;9768:170;;;::::0;-1:-1:-1;;;9768:170:58;;35509:2:74;9768:170:58::1;::::0;::::1;35491:21:74::0;35548:2;35528:18;;;35521:30;35587:34;35567:18;;;35560:62;-1:-1:-1;;;35638:18:74;;;35631:33;35681:19;;9768:170:58::1;35307:399:74::0;9768:170:58::1;9952:30;::::0;-1:-1:-1;;;9952:30:58;;-1:-1:-1;;;;;9952:21:58;::::1;::::0;::::1;::::0;:30:::1;::::0;9974:7;;9952:30:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9535:458;;9530:3;;;;;:::i;:::-;;;;9490:503;;;;9421:578;9319:680:::0;;;:::o;931:1517::-;1011:4;468;-1:-1:-1;;;;;468:11:58;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;467:14;459:43;;;;-1:-1:-1;;;459:43:58;;;;;;;:::i;:::-;1098:4:::1;-1:-1:-1::0;;;;;1098:20:58::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1068:4;-1:-1:-1::0;;;;;1068:24:58::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1049:4;-1:-1:-1::0;;;;;1049:14:58::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;;;:::i;:::-;1048:72;1027:154;;;;-1:-1:-1::0;;;1027:154:58::1;;;;;;;:::i;:::-;1311:4;-1:-1:-1::0;;;;;1311:20:58::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1281:4;-1:-1:-1::0;;;;;1281:24:58::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1262:4;-1:-1:-1::0;;;;;1262:14:58::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;;;:::i;:::-;1261:72;:104;;;;1353:4;-1:-1:-1::0;;;;;1353:10:58::1;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;1337:28:58::1;719:10:34::0;-1:-1:-1;;;;;1337:28:58::1;;1261:104;1240:186;;;;-1:-1:-1::0;;;1240:186:58::1;;;;;;;:::i;:::-;1438:26;1466:37:::0;1536:4:::1;-1:-1:-1::0;;;;;1536:20:58::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;1519:56:58::1;;1576:4;-1:-1:-1::0;;;;;1576:19:58::1;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;1576:21:58::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;1599:5;1519:86;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;1519:86:58::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;1615:39;::::0;-1:-1:-1;;;1615:39:58;;1437:168;;-1:-1:-1;1437:168:58;-1:-1:-1;;;;;;1615:24:58;::::1;::::0;::::1;::::0;:39:::1;::::0;1437:168;;1615:39:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1664:4;-1:-1:-1::0;;;;;1664:29:58::1;;1694:4;-1:-1:-1::0;;;;;1694:14:58::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1664:47;;;;;;;;;;;;;21717:25:74::0;;21705:2;21690:18;;21571:177;1664:47:58::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1748:4;-1:-1:-1::0;;;;;1748:29:58::1;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1726:12;:19;;;:53;1722:720;;;1858:94;::::0;;;;::::1;::::0;;1894:27;;1858:94;;::::1;1931:19:::0;;::::1;::::0;1858:94;;::::1;::::0;;;2019:23;;::::1;::::0;1966:77;;-1:-1:-1;;;1966:77:58;;18767:12:74;;1966:77:58::1;::::0;::::1;18755:25:74::0;18812:23;;18796:14;;;18789:47;38200:13;;38180:18;;;38173:41;38256:17;;;38250:24;38230:18;;;38223:52;38318:15;;38312:22;38291:19;;;38284:51;1858:94:58;-1:-1:-1;;;;;1966:32:58;::::1;::::0;::::1;::::0;38081:19:74;;1966:77:58::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2057:4;-1:-1:-1::0;;;;;2057:42:58::1;;2100:18;2120:4;-1:-1:-1::0;;;;;2120:14:58::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2057:80;::::0;-1:-1:-1;;;;;;2057:80:58::1;::::0;;;;;;18767:12:74;;2057:80:58::1;::::0;::::1;18755:25:74::0;18829:4;18818:16;;;18812:23;18796:14;;;18789:47;38665:18;;;38658:34;38567:18;;2057:80:58::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;;2186:25:58::1;::::0;::::1;::::0;2151:61:::1;::::0;-1:-1:-1;;;2151:61:58;;-1:-1:-1;;;;;2151:34:58;::::1;::::0;-1:-1:-1;2151:34:58::1;::::0;:61:::1;::::0;::::1;;21717:25:74::0;;;21705:2;21690:18;;21571:177;2151:61:58::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2332:33:58;;2391:25:::1;::::0;::::1;::::0;2278:153:::1;::::0;::::1;::::0;-1:-1:-1;2278:153:58::1;::::0;-1:-1:-1;38877:25:74;;;38933:2;38918:18;;38911:34;38865:2;38850:18;;38703:248;2278:153:58::1;;;;;;;;1781:661;1017:1431;;931:1517:::0;;;:::o;6230:1159::-;6328:4;468;-1:-1:-1;;;;;468:11:58;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;467:14;459:43;;;;-1:-1:-1;;;459:43:58;;;;;;;:::i;:::-;6441:14:::1;::::0;::::1;::::0;6413:43:::1;::::0;-1:-1:-1;;;6413:43:58;;6382:28:::1;::::0;-1:-1:-1;;;;;6413:27:58;::::1;::::0;::::1;::::0;:43:::1;::::0;::::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6491:16:::0;;:23;6382:74;;-1:-1:-1;6466:22:58::1;6525:858;6549:14;6545:1;:18;6525:858;;;6584:26;6613:7;:16;;;6630:1;6613:19;;;;;;;;:::i;:::-;;;;;;;6584:48;;6671:7;:24;;;-1:-1:-1::0;;;;;6671:29:58::1;6699:1;6671:29;;:75;;;;;6722:7;:24;;;-1:-1:-1::0;;;;;6704:42:58::1;:5;:15;;;:42;6671:75;6646:139;;;::::0;-1:-1:-1;;;6646:139:58;;39158:2:74;6646:139:58::1;::::0;::::1;39140:21:74::0;39197:2;39177:18;;;39170:30;-1:-1:-1;;;39216:18:74;;;39209:51;39277:18;;6646:139:58::1;38956:345:74::0;6646:139:58::1;6800:25;6828:21;6841:7;6828:12;:21::i;:::-;6871:42;::::0;-1:-1:-1;;;6871:42:58;;::::1;::::0;::::1;21717:25:74::0;;;6800:49:58;;-1:-1:-1;;;;;;6871:23:58;::::1;::::0;::::1;::::0;21690:18:74;;6871:42:58::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6863:80;;;;-1:-1:-1::0;;;6863:80:58::1;;;;;;;:::i;:::-;6980:14;::::0;;6992:1:::1;6980:14:::0;;;;;::::1;::::0;;;6958:19:::1;::::0;6980:14:::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;;7031:33:58::1;::::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;::::1;::::0;7066:31;;;;::::1;29047:19:74::0;;;6958:36:58;;-1:-1:-1;7031:33:58;29082:12:74;7066:31:58::1;::::0;;-1:-1:-1;;7066:31:58;;::::1;::::0;;;;;;;7018:80:::1;::::0;;7066:31:::1;7018:80;;:::i;:::-;;;;;;;;;;;;;7008:4;7013:1;7008:7;;;;;;;;:::i;:::-;;;;;;:90;;;;7113:25;7141:14;:35;7177:5;:15;;;7194:7;:13;;;7209:4;7141:73;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;7141:73:58::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;7215:1;7141:76;;;;;;;;:::i;:::-;;;;;;;7113:104;;7239:32;7268:1;-1:-1:-1::0;;;;;7258:12:58::1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;7258:12:58::1;-1:-1:-1::0;7239:11:58::1;::::0;::::1;::::0;;:18:::1;:32::i;:::-;7231:83;;;::::0;-1:-1:-1;;;7231:83:58;;40586:2:74;7231:83:58::1;::::0;::::1;40568:21:74::0;40625:2;40605:18;;;40598:30;40664:34;40644:18;;;40637:62;-1:-1:-1;;;40715:18:74;;;40708:36;40761:19;;7231:83:58::1;40384:402:74::0;7231:83:58::1;7351:20;::::0;;::::1;::::0;::::1;::::0;;;;;7329:43;;-1:-1:-1;;;7329:43:58;;-1:-1:-1;;;;;7329:21:58;::::1;::::0;::::1;::::0;:43:::1;::::0;7351:20;7329:43:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;6570:813;;;;6565:3;;;;;:::i;:::-;;;;6525:858;;;;6334:1055;;6230:1159:::0;;;:::o;2646:1577::-;2744:4;468;-1:-1:-1;;;;;468:11:58;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;467:14;459:43;;;;-1:-1:-1;;;459:43:58;;;;;;;:::i;:::-;2833:13;;:20;2795:59:::1;::::0;-1:-1:-1;;;2795:59:58;;2760:13:::1;::::0;-1:-1:-1;;;;;2795:37:58;::::1;::::0;::::1;::::0;:59:::1;::::0;::::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2776:4;-1:-1:-1::0;;;;;2776:14:58::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:78;;;;:::i;:::-;2760:94;;2880:4;-1:-1:-1::0;;;;;2880:20:58::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2872:5;:30;2864:78;;;;-1:-1:-1::0;;;2864:78:58::1;;;;;;;:::i;:::-;2975:16;::::0;::::1;::::0;:23;2953:19:::1;2975:23:::0;-1:-1:-1;;;;;3034:26:58;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;3034:26:58;;-1:-1:-1;;3034:26:58;;;;::::1;::::0;::::1;;;;;;3008:52;;3076:9;3071:624;3095:11;3091:1;:15;3071:624;;;3127:27;3157:7;:16;;;3174:1;3157:19;;;;;;;;:::i;:::-;;;;;;;3127:49;;3199:37;3224:4;-1:-1:-1::0;;;;;3224:9:58::1;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;3224:11:58::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;3199:12:::0;;:17:::1;;::::0;;:24:::1;:37::i;:::-;3191:87;;;::::0;-1:-1:-1;;;3191:87:58;;41357:2:74;3191:87:58::1;::::0;::::1;41339:21:74::0;41396:2;41376:18;;;41369:30;41435:34;41415:18;;;41408:62;-1:-1:-1;;;41486:18:74;;;41479:35;41531:19;;3191:87:58::1;41155:401:74::0;3191:87:58::1;3317:12:::0;;:29:::1;;::::0;-1:-1:-1;;;;;3317:34:58::1;::::0;;:86:::1;;;3387:4;-1:-1:-1::0;;;;;3387:14:58::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3355:12:::0;;:29:::1;;::::0;-1:-1:-1;;;;;3355:48:58::1;;3317:86;3292:172;;;::::0;-1:-1:-1;;;3292:172:58;;41763:2:74;3292:172:58::1;::::0;::::1;41745:21:74::0;41802:2;41782:18;;;41775:30;41841:29;41821:18;;;41814:57;41888:18;;3292:172:58::1;41561:351:74::0;3292:172:58::1;3479:18;3500:26;3513:4;:12;;;3500;:26::i;:::-;3549:32;::::0;-1:-1:-1;;;3549:32:58;;::::1;::::0;::::1;21717:25:74::0;;;3479:47:58;;-1:-1:-1;;;;;;3549:20:58;::::1;::::0;::::1;::::0;21690:18:74;;3549:32:58::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3548:33;3540:73;;;::::0;-1:-1:-1;;;3540:73:58;;42119:2:74;3540:73:58::1;::::0;::::1;42101:21:74::0;42158:2;42138:18;;;42131:30;42197:29;42177:18;;;42170:57;42244:18;;3540:73:58::1;41917:351:74::0;3540:73:58::1;3640:44;;;;;;;;3648:4;:11;;;3640:44;;;;3661:4;:10;;;3640:44;;;;3673:10;3640:44;;::::0;3628:6:::1;3635:1;3628:9;;;;;;;;:::i;:::-;;;;;;:56;;;;3113:582;;3108:3;;;;;:::i;:::-;;;;3071:624;;;-1:-1:-1::0;3748:13:58;;:20;3720:49:::1;::::0;-1:-1:-1;;;3720:49:58;;3705:12:::1;::::0;-1:-1:-1;;;;;3720:27:58;::::1;::::0;::::1;::::0;:49:::1;::::0;::::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:61;;::::0;;-1:-1:-1;3720:61:58;3792:64:::1;;;;-1:-1:-1::0;;;3792:64:58::1;;;;;;;:::i;:::-;3925:13:::0;;:24:::1;::::0;::::1;::::0;3959:23:::1;::::0;;::::1;::::0;3887:96;;-1:-1:-1;;;3887:96:58;;:19:::1;::::0;:31:::1;::::0;:96:::1;::::0;3919:4;;3951:6;;3887:96:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3866:175;;;::::0;-1:-1:-1;;;3866:175:58;;42475:2:74;3866:175:58::1;::::0;::::1;42457:21:74::0;;;42494:18;;;42487:30;42553:34;42533:18;;;42526:62;42605:18;;3866:175:58::1;42273:356:74::0;3866:175:58::1;4057:9;4052:165;4076:11;4072:1;:15;4052:165;;;4108:27;4138:7;:16;;;4155:1;4138:19;;;;;;;;:::i;:::-;;;;;;;4108:49;;4171:4;-1:-1:-1::0;;;;;4171:21:58::1;;4193:4;:12;;;4171:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;4094:123;4089:3;;;;;:::i;:::-;;;;4052:165;;529:421:45::0;607:10;648:5;:12;633:4;:11;:27;629:70;;-1:-1:-1;683:5:45;676:12;;629:70;931:11;;816:2;841:36;;;477:21:46;;;784:35:45;;;455:20:46;;;841:36:45;;452:47:46;904:39:45;896:47;;619:331;;529:421;;;;;:::o;5374:270:23:-;5518:10;;5530:8;;;;;5540:9;;;;;5551:20;;;;5573:8;;;;5583:6;;;;5591:8;;;;5601:12;;;;5484:143;;5435:7;;5484:143;;5518:10;;5530:8;5601:12;5484:143;;:::i;:::-;;;;;;;;;;;;;5461:176;;;;;;5454:183;;5374:270;;;:::o;4929:439::-;5074:11;;:18;;5110:16;;;;;5144:17;;;;;5179:28;;;;5225:16;;;;5259;;;;5293:14;;;;;5325:12;;;;5040:311;;4991:7;;5040:311;;5074:18;5144:17;;5179:28;;5225:16;;5259;;5325:12;;5040:311;;:::i;5650:486::-;5757:9;;;;;;;;;5710:7;5757:9;;;5790:8;;;;:15;5710:7;;5757:9;5710:7;5815:113;5839:3;5835:1;:7;5815:113;;;5891:12;5905:3;:8;;;5914:1;5905:11;;;;;;;;:::i;:::-;;;;;;;5878:39;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5863:54;;5844:3;;;;;:::i;:::-;;;;5815:113;;;;6002:3;:10;;;6014:3;:8;;;6024:3;:9;;;6035:3;:10;;;6047:3;:20;;;6069:3;:8;;;6079:12;6093:3;:12;;;5968:151;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5945:184;;;;;;5938:191;;;;5650:486;;;:::o;6142:736::-;6203:7;6222:25;6261:3;:11;;;:16;;;6250:28;;;;;;;;:::i;:::-;;;;-1:-1:-1;;6250:28:23;;;;;;;;;6342:11;;:18;;6250:28;6374:16;;;;6404:17;;;;6435:18;;;;6467:28;;;;6509:16;;;;6565:20;;;;;6250:28;;-1:-1:-1;6288:21:23;;6312:283;;6342:18;;6374:16;;6404:17;;6435:18;;6467:28;;6509:16;6250:28;;6565:20;;6312:283;;:::i;:::-;;;;-1:-1:-1;;6312:283:23;;;;;;;;;;6619:10;;;:17;6312:283;;-1:-1:-1;6605:11:23;6646:189;6670:3;6666:1;:7;6646:189;;;6694:25;6722:3;:10;;;6733:1;6722:13;;;;;;;;:::i;:::-;;;;;;;6694:41;;6773:8;6800:5;:9;;;6811:5;:11;;;6783:40;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;6783:40:23;;;;;;;;;;6760:64;;;6783:40;6760:64;;:::i;:::-;;;;;;;;;;;;;6749:75;;6680:155;6675:3;;;;;:::i;:::-;;;;6646:189;;;-1:-1:-1;;6852:19:23;;;;;;;;6142:736;-1:-1:-1;;;6142:736:23:o;14:142:74:-;-1:-1:-1;;;;;100:31:74;;90:42;;80:70;;146:1;143;136:12;80:70;14:142;:::o;161:127::-;222:10;217:3;213:20;210:1;203:31;253:4;250:1;243:15;277:4;274:1;267:15;293:257;365:4;359:11;;;397:17;;-1:-1:-1;;;;;429:34:74;;465:22;;;426:62;423:88;;;491:18;;:::i;:::-;527:4;520:24;293:257;:::o;555:253::-;627:2;621:9;669:4;657:17;;-1:-1:-1;;;;;689:34:74;;725:22;;;686:62;683:88;;;751:18;;:::i;813:255::-;885:2;879:9;927:6;915:19;;-1:-1:-1;;;;;949:34:74;;985:22;;;946:62;943:88;;;1011:18;;:::i;1329:275::-;1400:2;1394:9;1465:2;1446:13;;-1:-1:-1;;1442:27:74;1430:40;;-1:-1:-1;;;;;1485:34:74;;1521:22;;;1482:62;1479:88;;;1547:18;;:::i;:::-;1583:2;1576:22;1329:275;;-1:-1:-1;1329:275:74:o;1609:293::-;1674:5;1722:4;1710:9;1705:3;1701:19;1697:30;1694:50;;;1740:1;1737;1730:12;1694:50;1762:22;;:::i;:::-;1753:31;;1820:9;1807:23;1800:5;1793:38;1891:2;1880:9;1876:18;1863:32;1858:2;1851:5;1847:14;1840:56;1609:293;;;;:::o;1907:183::-;1967:4;-1:-1:-1;;;;;1992:6:74;1989:30;1986:56;;;2022:18;;:::i;:::-;-1:-1:-1;2067:1:74;2063:14;2079:4;2059:25;;1907:183::o;2095:1056::-;2147:5;2195:4;2183:9;2178:3;2174:19;2170:30;2167:50;;;2213:1;2210;2203:12;2167:50;2235:22;;:::i;:::-;2226:31;;2280:52;2328:3;2317:9;2280:52;:::i;:::-;2273:5;2266:67;2384:2;2373:9;2369:18;2356:32;-1:-1:-1;;;;;2403:6:74;2400:30;2397:50;;;2443:1;2440;2433:12;2397:50;2466:22;;2519:4;2511:13;;2507:23;-1:-1:-1;2497:51:74;;2544:1;2541;2534:12;2497:51;2580:2;2567:16;2602:4;2626:60;2642:43;2682:2;2642:43;:::i;:::-;2626:60;:::i;:::-;2720:15;;;2802:1;2798:10;;;;2790:19;;2786:28;;;2751:12;;;;2826:15;;;2823:35;;;2854:1;2851;2844:12;2823:35;2878:11;;;;2898:142;2914:6;2909:3;2906:15;2898:142;;;2980:17;;2968:30;;2931:12;;;;3018;;;;2898:142;;;3072:5;3067:2;3060:5;3056:14;3049:29;;;;;;3138:4;3127:9;3123:20;3110:34;3105:2;3098:5;3094:14;3087:58;2095:1056;;;;:::o;3156:186::-;3204:4;-1:-1:-1;;;;;3229:6:74;3226:30;3223:56;;;3259:18;;:::i;:::-;-1:-1:-1;3325:2:74;3304:15;-1:-1:-1;;3300:29:74;3331:4;3296:40;;3156:186::o;3347:462::-;3389:5;3442:3;3435:4;3427:6;3423:17;3419:27;3409:55;;3460:1;3457;3450:12;3409:55;3496:6;3483:20;3527:48;3543:31;3571:2;3543:31;:::i;3527:48::-;3600:2;3591:7;3584:19;3646:3;3639:4;3634:2;3626:6;3622:15;3618:26;3615:35;3612:55;;;3663:1;3660;3653:12;3612:55;3728:2;3721:4;3713:6;3709:17;3702:4;3693:7;3689:18;3676:55;3776:1;3751:16;;;3769:4;3747:27;3740:38;;;;3755:7;3347:462;-1:-1:-1;;;3347:462:74:o;3814:171::-;3881:20;;-1:-1:-1;;;;;3930:30:74;;3920:41;;3910:69;;3975:1;3972;3965:12;3910:69;3814:171;;;:::o;3990:1317::-;4048:5;4096:6;4084:9;4079:3;4075:19;4071:32;4068:52;;;4116:1;4113;4106:12;4068:52;4138:22;;:::i;:::-;4129:31;;4196:9;4183:23;-1:-1:-1;;;;;4266:2:74;4258:6;4255:14;4252:34;;;4282:1;4279;4272:12;4252:34;4309:45;4350:3;4341:6;4330:9;4326:22;4309:45;:::i;:::-;4302:5;4295:60;4408:2;4397:9;4393:18;4380:32;4364:48;;4437:2;4427:8;4424:16;4421:36;;;4453:1;4450;4443:12;4421:36;4489:47;4532:3;4521:8;4510:9;4506:24;4489:47;:::i;:::-;4484:2;4477:5;4473:14;4466:71;4569:37;4602:2;4591:9;4587:18;4569:37;:::i;:::-;4564:2;4557:5;4553:14;4546:61;4660:2;4649:9;4645:18;4632:32;4616:48;;4689:2;4679:8;4676:16;4673:36;;;4705:1;4702;4695:12;4673:36;4741:47;4784:3;4773:8;4762:9;4758:24;4741:47;:::i;:::-;4736:2;4729:5;4725:14;4718:71;4842:3;4831:9;4827:19;4814:33;4798:49;;4872:2;4862:8;4859:16;4856:36;;;4888:1;4885;4878:12;4856:36;4925:47;4968:3;4957:8;4946:9;4942:24;4925:47;:::i;:::-;4919:3;4912:5;4908:15;4901:72;5006:38;5039:3;5028:9;5024:19;5006:38;:::i;:::-;5000:3;4993:5;4989:15;4982:63;5098:3;5087:9;5083:19;5070:33;5054:49;;5128:2;5118:8;5115:16;5112:36;;;5144:1;5141;5134:12;5112:36;;5181:47;5224:3;5213:8;5202:9;5198:24;5181:47;:::i;:::-;5175:3;5168:5;5164:15;5157:72;;5262:38;5295:3;5284:9;5280:19;5262:38;:::i;:::-;5256:3;5249:5;5245:15;5238:63;3990:1317;;;;:::o;5312:2576::-;5437:6;5445;5498:2;5486:9;5477:7;5473:23;5469:32;5466:52;;;5514:1;5511;5504:12;5466:52;5527:60;5576:9;5563:23;5527:60;:::i;:::-;5619:9;5606:23;5596:33;;-1:-1:-1;;;;;5715:2:74;5709;5698:9;5694:18;5681:32;5678:40;5675:60;;;5731:1;5728;5721:12;5675:60;5797:2;5786:9;5782:18;5769:32;5758:9;5754:48;5836:2;5831;5822:7;5818:16;5814:25;5811:45;;;5852:1;5849;5842:12;5811:45;5878:22;;:::i;:::-;5933:2;5928;5915:16;5912:24;5909:44;;;5949:1;5946;5939:12;5909:44;5976:59;6027:7;6021:2;6008:16;6004:2;6000:25;5976:59;:::i;:::-;5969:5;5962:74;6078:2;6072;6068;6064:11;6051:25;6048:33;6045:53;;;6094:1;6091;6084:12;6045:53;6146:2;6142;6138:11;6125:25;6121:2;6117:34;6107:44;;6189:7;6182:4;6178:2;6174:13;6170:27;6160:55;;6211:1;6208;6201:12;6160:55;6235:74;6251:57;6304:2;6291:16;6251:57;:::i;6235:74::-;6355:16;;6343:29;;;6397:2;6388:12;;;;6331:3;6431:1;6427:24;6419:33;;6415:42;6412:55;-1:-1:-1;6409:75:74;;;6480:1;6477;6470:12;6409:75;6512:2;6508;6504:11;6524:1296;6587:2;6580;6567:16;6564:1;6560:24;6556:2;6552:33;6548:42;6543:3;6540:51;6524:1296;;;6671:2;6665:3;6652:17;6649:25;6646:45;;;6687:1;6684;6677:12;6646:45;-1:-1:-1;;6792:4:74;6766:17;;6758:26;;6745:40;;6741:49;;6737:60;6734:80;;;6810:1;6807;6800:12;6734:80;6842:22;;:::i;:::-;6934:2;6928;6921:3;6908:17;6904:2;6900:26;6896:35;6883:49;6880:57;6877:77;;;6950:1;6947;6940:12;6877:77;7034:17;;7026:26;;7054:2;7022:35;;7009:49;6977:82;7106:2;7083:16;;;7079:25;;7075:34;7072:54;;;7122:1;7119;7112:12;7072:54;7154:22;;:::i;:::-;7139:37;;7222:2;7216;7212;7208:11;7195:25;7192:33;7189:53;;;7238:1;7235;7228:12;7189:53;7271:83;7346:7;7341:2;7334;7330;7326:11;7313:25;7309:2;7305:34;7301:43;7271:83;:::i;:::-;7262:7;7255:100;7401:2;7395;7391;7387:11;7374:25;7371:33;7368:53;;;7417:1;7414;7407:12;7368:53;7459:70;7521:7;7516:2;7509;7505;7501:11;7488:25;7484:2;7480:34;7476:43;7459:70;:::i;:::-;7454:2;7441:16;;;7434:96;;;;7543:24;;;-1:-1:-1;7650:2:74;7630:17;;7622:26;;7618:35;;;7605:49;7587:16;;;7580:75;7738:4;7706:37;7693:51;7675:16;;;7668:77;7758:20;;7798:12;;;;6609;6524:1296;;;-1:-1:-1;7847:2:74;7836:14;;7829:29;-1:-1:-1;5312:2576:74;;7840:5;;-1:-1:-1;5312:2576:74;;-1:-1:-1;;;;5312:2576:74:o;7893:886::-;7945:5;7998:3;7991:4;7983:6;7979:17;7975:27;7965:55;;8016:1;8013;8006:12;7965:55;8052:6;8039:20;8078:4;8102:60;8118:43;8158:2;8118:43;:::i;8102:60::-;8196:15;;;8282:1;8278:10;;;;8266:23;;8262:32;;;8227:12;;;;8306:15;;;8303:35;;;8334:1;8331;8324:12;8303:35;8370:2;8362:6;8358:15;8382:368;8398:6;8393:3;8390:15;8382:368;;;8484:3;8471:17;-1:-1:-1;;;;;8507:11:74;8504:35;8501:125;;;8580:1;8609:2;8605;8598:14;8501:125;8651:56;8703:3;8698:2;8684:11;8676:6;8672:24;8668:33;8651:56;:::i;:::-;8639:69;;-1:-1:-1;8728:12:74;;;;8415;;8382:368;;;-1:-1:-1;8768:5:74;7893:886;-1:-1:-1;;;;;;7893:886:74:o;8784:2617::-;8848:5;8901:3;8894:4;8886:6;8882:17;8878:27;8868:55;;8919:1;8916;8909:12;8868:55;8955:6;8942:20;8981:4;9005:60;9021:43;9061:2;9021:43;:::i;9005:60::-;9099:15;;;9185:1;9181:10;;;;9169:23;;9165:32;;;9130:12;;;;9209:15;;;9206:35;;;9237:1;9234;9227:12;9206:35;9273:2;9265:6;9261:15;9285:2087;9301:6;9296:3;9293:15;9285:2087;;;9387:3;9374:17;-1:-1:-1;;;;;9464:2:74;9451:11;9448:19;9445:109;;;9508:1;9537:2;9533;9526:14;9445:109;9577:24;;;;9624:6;9654:12;;;-1:-1:-1;;9650:26:74;9646:35;-1:-1:-1;9643:125:74;;;9722:1;9751:2;9747;9740:14;9643:125;9794:22;;:::i;:::-;9866:2;9862;9858:11;9845:25;9899:2;9889:8;9886:16;9883:106;;;9943:1;9972:2;9968;9961:14;9883:106;10016:49;10061:3;10056:2;10045:8;10041:2;10037:17;10033:26;10016:49;:::i;:::-;10009:5;10002:64;;10089:2;10141;10137;10133:11;10120:25;10174:2;10164:8;10161:16;10158:109;;;10219:1;10249:3;10244;10237:16;10158:109;10303:49;10348:3;10343:2;10332:8;10328:2;10324:17;10320:26;10303:49;:::i;:::-;10298:2;10291:5;10287:14;10280:73;;10377:2;10415:31;10441:3;10437:2;10433:12;10415:31;:::i;:::-;10410:2;10403:5;10399:14;10392:55;10471:3;10460:14;;10524:3;10520:2;10516:12;10503:26;10558:2;10548:8;10545:16;10542:109;;;10603:1;10633:3;10628;10621:16;10542:109;10688:49;10733:3;10728:2;10717:8;10713:2;10709:17;10705:26;10688:49;:::i;:::-;10682:3;10675:5;10671:15;10664:74;;;10762:3;10802:31;10828:3;10824:2;10820:12;10802:31;:::i;:::-;10796:3;10789:5;10785:15;10778:56;10858:3;10847:14;;10911:3;10907:2;10903:12;10890:26;10945:2;10935:8;10932:16;10929:109;;;10990:1;11020:3;11015;11008:16;10929:109;11075:59;11130:3;11125:2;11114:8;11110:2;11106:17;11102:26;11075:59;:::i;:::-;11069:3;11062:5;11058:15;11051:84;;;11159:3;11148:14;;11199:31;11225:3;11221:2;11217:12;11199:31;:::i;:::-;11182:15;;;11175:56;11268:30;11286:11;;;11268:30;:::i;:::-;11251:15;;;11244:55;;;;-1:-1:-1;11312:18:74;;-1:-1:-1;11350:12:74;;;;9318;;9285:2087;;11406:1092;11530:6;11538;11591:2;11579:9;11570:7;11566:23;11562:32;11559:52;;;11607:1;11604;11597:12;11559:52;11646:9;11633:23;11665:42;11701:5;11665:42;:::i;:::-;11726:5;-1:-1:-1;11782:2:74;11767:18;;11754:32;-1:-1:-1;;;;;11835:14:74;;;11832:34;;;11862:1;11859;11852:12;11832:34;11885:22;;;;11941:4;11923:16;;;11919:27;11916:47;;;11959:1;11956;11949:12;11916:47;11987:22;;:::i;:::-;12047:2;12034:16;12075:2;12065:8;12062:16;12059:36;;;12091:1;12088;12081:12;12059:36;12120:54;12166:7;12155:8;12151:2;12147:17;12120:54;:::i;:::-;12111:7;12104:71;;12209:58;12259:7;12254:2;12250;12246:11;12209:58;:::i;:::-;12204:2;12195:7;12191:16;12184:84;12314:4;12310:2;12306:13;12293:27;12345:2;12335:8;12332:16;12329:36;;;12361:1;12358;12351:12;12329:36;12399:66;12457:7;12446:8;12442:2;12438:17;12399:66;:::i;:::-;12394:2;12385:7;12381:16;12374:92;;12485:7;12475:17;;;;;11406:1092;;;;;:::o;12503:948::-;12626:6;12634;12687:2;12675:9;12666:7;12662:23;12658:32;12655:52;;;12703:1;12700;12693:12;12655:52;12742:9;12729:23;12761:42;12797:5;12761:42;:::i;:::-;12822:5;-1:-1:-1;12878:2:74;12863:18;;12850:32;-1:-1:-1;;;;;12931:14:74;;;12928:34;;;12958:1;12955;12948:12;12928:34;12981:22;;;;13037:2;13019:16;;;13015:25;13012:45;;;13053:1;13050;13043:12;13012:45;13086:2;13080:9;13128:2;13120:6;13116:15;13181:6;13169:10;13166:22;13161:2;13149:10;13146:18;13143:46;13140:72;;;13192:18;;:::i;:::-;13228:2;13221:22;13268:16;;13296;;;13293:36;;;13325:1;13322;13315:12;13293:36;13353:66;13411:7;13400:8;13396:2;13392:17;13353:66;:::i;:::-;13345:6;13338:82;;13439:6;13429:16;;;;;12503:948;;;;;:::o;13456:485::-;13552:6;13560;13613:2;13601:9;13592:7;13588:23;13584:32;13581:52;;;13629:1;13626;13619:12;13581:52;13668:9;13655:23;13687:42;13723:5;13687:42;:::i;:::-;13748:5;-1:-1:-1;13804:2:74;13789:18;;13776:32;-1:-1:-1;;;;;13820:30:74;;13817:50;;;13863:1;13860;13853:12;13817:50;13886:49;13927:7;13918:6;13907:9;13903:22;13886:49;:::i;:::-;13876:59;;;13456:485;;;;;:::o;13946:1848::-;14070:6;14078;14131:2;14119:9;14110:7;14106:23;14102:32;14099:52;;;14147:1;14144;14137:12;14099:52;14186:9;14173:23;14205:42;14241:5;14205:42;:::i;:::-;14266:5;-1:-1:-1;14290:2:74;14328:18;;;14315:32;-1:-1:-1;;;;;14396:14:74;;;14393:34;;;14423:1;14420;14413:12;14393:34;14446:22;;;;14502:4;14484:16;;;14480:27;14477:47;;;14520:1;14517;14510:12;14477:47;14548:22;;:::i;:::-;14608:2;14595:16;14636:2;14626:8;14623:16;14620:36;;;14652:1;14649;14642:12;14620:36;14675:17;;14723:4;14715:13;;14711:27;-1:-1:-1;14701:55:74;;14752:1;14749;14742:12;14701:55;14788:2;14775:16;14811:60;14827:43;14867:2;14827:43;:::i;14811:60::-;14905:15;;;14987:1;14983:10;;;;14975:19;;14971:28;;;14936:12;;;;15011:19;;;15008:39;;;15043:1;15040;15033:12;15008:39;15075:2;15071;15067:11;15087:365;15103:6;15098:3;15095:15;15087:365;;;15189:3;15176:17;15225:2;15212:11;15209:19;15206:109;;;15269:1;15298:2;15294;15287:14;15206:109;15340:69;15401:7;15396:2;15382:11;15378:2;15374:20;15370:29;15340:69;:::i;:::-;15328:82;;-1:-1:-1;15430:12:74;;;;15120;;15087:365;;;15091:3;15477:5;15468:7;15461:22;;;;;15517:58;15567:7;15562:2;15558;15554:11;15517:58;:::i;:::-;15512:2;15503:7;15499:16;15492:84;15622:4;15618:2;15614:13;15601:27;15585:43;;15653:2;15643:8;15640:16;15637:36;;;15669:1;15666;15659:12;15637:36;15707:54;15753:7;15742:8;15738:2;15734:17;15707:54;:::i;:::-;15702:2;15693:7;15689:16;15682:80;15781:7;15771:17;;;;;;13946:1848;;;;;:::o;15799:2252::-;15923:6;15931;15984:2;15972:9;15963:7;15959:23;15955:32;15952:52;;;16000:1;15997;15990:12;15952:52;16039:9;16026:23;16058:42;16094:5;16058:42;:::i;:::-;16119:5;-1:-1:-1;16143:2:74;16181:18;;;16168:32;-1:-1:-1;;;;;16249:14:74;;;16246:34;;;16276:1;16273;16266:12;16246:34;16299:22;;;;16355:2;16337:16;;;16333:25;16330:45;;;16371:1;16368;16361:12;16330:45;16399:22;;:::i;:::-;16459:2;16446:16;16487:2;16477:8;16474:16;16471:36;;;16503:1;16500;16493:12;16471:36;16532:51;16575:7;16564:8;16560:2;16556:17;16532:51;:::i;:::-;16523:7;16516:68;;16630:2;16626;16622:11;16609:25;16659:2;16649:8;16646:16;16643:36;;;16675:1;16672;16665:12;16643:36;16706:8;16702:2;16698:17;16688:27;;;16753:7;16746:4;16742:2;16738:13;16734:27;16724:55;;16775:1;16772;16765:12;16724:55;16811:2;16798:16;16834:60;16850:43;16890:2;16850:43;:::i;16834:60::-;16928:15;;;17010:1;17006:10;;;;16998:19;;16994:28;;;16959:12;;;;17034:19;;;17031:39;;;17066:1;17063;17056:12;17031:39;17098:2;17094;17090:11;17110:869;17126:6;17121:3;17118:15;17110:869;;;17212:3;17199:17;17248:2;17235:11;17232:19;17229:39;;;17264:1;17261;17254:12;17229:39;17291:20;;17363:4;17335:16;;;-1:-1:-1;;17331:30:74;17327:41;17324:131;;;17409:1;17438:2;17434;17427:14;17324:131;17483:22;;:::i;:::-;17555:2;17551;17547:11;17534:25;17588:2;17578:8;17575:16;17572:106;;;17632:1;17661:2;17657;17650:14;17572:106;17707:66;17765:7;17760:2;17749:8;17745:2;17741:17;17737:26;17707:66;:::i;:::-;17691:83;;-1:-1:-1;17833:2:74;17825:11;;;17812:25;17794:16;;;17787:51;17897:4;17889:13;;;17876:27;17858:16;;;17851:53;;;;17917:20;;17957:12;;;;17143;;17110:869;;;17114:3;18013:5;18008:2;17999:7;17995:16;17988:31;;;;18038:7;18028:17;;;;;;15799:2252;;;;;:::o;18056:277::-;18123:6;18176:2;18164:9;18155:7;18151:23;18147:32;18144:52;;;18192:1;18189;18182:12;18144:52;18224:9;18218:16;18277:5;18270:13;18263:21;18256:5;18253:32;18243:60;;18299:1;18296;18289:12;18243:60;18322:5;18056:277;-1:-1:-1;;;18056:277:74:o;18338:340::-;18540:2;18522:21;;;18579:2;18559:18;;;18552:30;-1:-1:-1;;;18613:2:74;18598:18;;18591:46;18669:2;18654:18;;18338:340::o;18847:281::-;18767:12;;18755:25;;18829:4;18818:16;;;18812:23;18796:14;;;18789:47;19055:2;19040:18;;19067:55;18683:159;19133:184;19203:6;19256:2;19244:9;19235:7;19231:23;19227:32;19224:52;;;19272:1;19269;19262:12;19224:52;-1:-1:-1;19295:16:74;;19133:184;-1:-1:-1;19133:184:74:o;19322:127::-;19383:10;19378:3;19374:20;19371:1;19364:31;19414:4;19411:1;19404:15;19438:4;19435:1;19428:15;19454:128;19521:9;;;19542:11;;;19539:37;;;19556:18;;:::i;19587:399::-;19789:2;19771:21;;;19828:2;19808:18;;;19801:30;19867:34;19862:2;19847:18;;19840:62;-1:-1:-1;;;19933:2:74;19918:18;;19911:33;19976:3;19961:19;;19587:399::o;19991:127::-;20052:10;20047:3;20043:20;20040:1;20033:31;20083:4;20080:1;20073:15;20107:4;20104:1;20097:15;20123:250;20208:1;20218:113;20232:6;20229:1;20226:13;20218:113;;;20308:11;;;20302:18;20289:11;;;20282:39;20254:2;20247:10;20218:113;;;-1:-1:-1;;20365:1:74;20347:16;;20340:27;20123:250::o;20378:441::-;20431:5;20484:3;20477:4;20469:6;20465:17;20461:27;20451:55;;20502:1;20499;20492:12;20451:55;20531:6;20525:13;20562:48;20578:31;20606:2;20578:31;:::i;20562:48::-;20635:2;20626:7;20619:19;20681:3;20674:4;20669:2;20661:6;20657:15;20653:26;20650:35;20647:55;;;20698:1;20695;20688:12;20647:55;20711:77;20785:2;20778:4;20769:7;20765:18;20758:4;20750:6;20746:17;20711:77;:::i;:::-;20806:7;20378:441;-1:-1:-1;;;;20378:441:74:o;20824:335::-;20903:6;20956:2;20944:9;20935:7;20931:23;20927:32;20924:52;;;20972:1;20969;20962:12;20924:52;21005:9;20999:16;-1:-1:-1;;;;;21030:6:74;21027:30;21024:50;;;21070:1;21067;21060:12;21024:50;21093:60;21145:7;21136:6;21125:9;21121:22;21093:60;:::i;21753:349::-;21955:2;21937:21;;;21994:2;21974:18;;;21967:30;22033:27;22028:2;22013:18;;22006:55;22093:2;22078:18;;21753:349::o;22509:135::-;22548:3;22569:17;;;22566:43;;22589:18;;:::i;:::-;-1:-1:-1;22636:1:74;22625:13;;22509:135::o;22649:345::-;22722:5;22770:4;22758:9;22753:3;22749:19;22745:30;22742:50;;;22788:1;22785;22778:12;22742:50;22810:22;;:::i;:::-;22801:31;;22861:9;22855:16;22848:5;22841:31;22925:2;22914:9;22910:18;22904:25;22899:2;22892:5;22888:14;22881:49;22983:2;22972:9;22968:18;22962:25;22957:2;22950:5;22946:14;22939:49;22649:345;;;;:::o;22999:266::-;23103:6;23156:2;23144:9;23135:7;23131:23;23127:32;23124:52;;;23172:1;23169;23162:12;23124:52;23195:64;23251:7;23240:9;23195:64;:::i;23270:397::-;23472:2;23454:21;;;23511:2;23491:18;;;23484:30;23550:34;23545:2;23530:18;;23523:62;-1:-1:-1;;;23616:2:74;23601:18;;23594:31;23657:3;23642:19;;23270:397::o;23672:1522::-;24008:4;24056:3;24045:9;24041:19;24087:6;24076:9;24069:25;24113:2;24151:3;24146:2;24135:9;24131:18;24124:31;24175:6;24210;24204:13;24241:6;24233;24226:22;24279:3;24268:9;24264:19;24257:26;;24318:2;24310:6;24306:15;24292:29;;24339:1;24349:169;24363:6;24360:1;24357:13;24349:169;;;24424:13;;24412:26;;24493:15;;;;24458:12;;;;24385:1;24378:9;24349:169;;;24353:3;;24537:2;24527:12;;24584:9;24579:3;24575:19;24570:2;24559:9;24555:18;24548:47;24617:3;24651:6;24645:13;24679:8;24674:3;24667:21;24715:2;24710:3;24706:12;24697:21;;24755:2;24747:6;24743:15;24727:31;;24778:1;24788:333;24804:8;24799:3;24796:17;24788:333;;;24869:15;;24911:9;;24897:24;;24963:11;;;24957:18;24941:14;;;24934:42;25018:11;;25012:18;24996:14;;;24989:42;25094:17;;;;25064:4;25053:16;;;;24832:1;24823:11;24788:333;;;24792:3;;25138:5;25130:13;;;;;;25181:6;25174:4;25163:9;25159:20;25152:36;23672:1522;;;;;;;:::o;25601:270::-;25642:3;25680:5;25674:12;25707:6;25702:3;25695:19;25723:76;25792:6;25785:4;25780:3;25776:14;25769:4;25762:5;25758:16;25723:76;:::i;:::-;25853:2;25832:15;-1:-1:-1;;25828:29:74;25819:39;;;;25860:4;25815:50;;25601:270;-1:-1:-1;;25601:270:74:o;25983:1242::-;26037:3;26065:6;26106:5;26100:12;26133:2;26128:3;26121:15;26157:44;26197:2;26192:3;26188:12;26174;26157:44;:::i;:::-;26145:56;;;26249:4;26242:5;26238:16;26232:23;26297:3;26291:4;26287:14;26280:4;26275:3;26271:14;26264:38;26325;26358:4;26342:14;26325:38;:::i;:::-;26311:52;;;26411:4;26404:5;26400:16;26394:23;26426:49;26469:4;26464:3;26460:14;26444;-1:-1:-1;;;;;25941:30:74;25929:43;;25876:102;26426:49;;26523:4;26516:5;26512:16;26506:23;26573:3;26565:6;26561:16;26554:4;26549:3;26545:14;26538:40;26601;26634:6;26618:14;26601:40;:::i;:::-;26587:54;;;26689:4;26682:5;26678:16;26672:23;26739:3;26731:6;26727:16;26720:4;26715:3;26711:14;26704:40;26767;26800:6;26784:14;26767:40;:::i;:::-;26753:54;;;26855:4;26848:5;26844:16;26838:23;26870:49;26913:4;26908:3;26904:14;26888;-1:-1:-1;;;;;25941:30:74;25929:43;;25876:102;26870:49;;26967:4;26960:5;26956:16;26950:23;27017:3;27009:6;27005:16;26998:4;26993:3;26989:14;26982:40;27045;27078:6;27062:14;27045:40;:::i;:::-;27031:54;;;27133:4;27126:5;27122:16;27116:23;27148:49;27191:4;27186:3;27182:14;27166;-1:-1:-1;;;;;25941:30:74;25929:43;;25876:102;27148:49;-1:-1:-1;27213:6:74;25983:1242;-1:-1:-1;;;25983:1242:74:o;27230:554::-;27421:2;27410:9;27403:21;27384:4;27459:6;27453:13;27502:4;27497:2;27486:9;27482:18;27475:32;27530:63;27589:2;27578:9;27574:18;27560:12;27530:63;:::i;:::-;27516:77;;27642:2;27634:6;27630:15;27624:22;27716:2;27712:7;27700:9;27692:6;27688:22;27684:36;27677:4;27666:9;27662:20;27655:66;27738:40;27771:6;27755:14;27738:40;:::i;29105:614::-;29156:3;29194:5;29188:12;29221:6;29216:3;29209:19;29247:4;29288:2;29283:3;29279:12;29313:11;29340;29333:18;;29390:6;29387:1;29383:14;29376:5;29372:26;29360:38;;29432:2;29425:5;29421:14;29453:1;29463:230;29477:6;29474:1;29471:13;29463:230;;;29548:5;29542:4;29538:16;29533:3;29526:29;29576:37;29608:4;29599:6;29593:13;29576:37;:::i;:::-;29671:12;;;;29568:45;-1:-1:-1;29636:15:74;;;;29499:1;29492:9;29463:230;;;-1:-1:-1;29709:4:74;;29105:614;-1:-1:-1;;;;;;;29105:614:74:o;29724:738::-;30099:6;30088:9;30081:25;30142:3;30137:2;30126:9;30122:18;30115:31;30062:4;30169:55;30219:3;30208:9;30204:19;30196:6;30169:55;:::i;:::-;30272:9;30264:6;30260:22;30255:2;30244:9;30240:18;30233:50;30306:42;30341:6;30333;30306:42;:::i;:::-;30292:56;;30396:9;30388:6;30384:22;30379:2;30368:9;30364:18;30357:50;30424:32;30449:6;30441;30424:32;:::i;:::-;30416:40;29724:738;-1:-1:-1;;;;;;;29724:738:74:o;30467:1880::-;30593:6;30624:2;30667;30655:9;30646:7;30642:23;30638:32;30635:52;;;30683:1;30680;30673:12;30635:52;30716:9;30710:16;-1:-1:-1;;;;;30786:2:74;30778:6;30775:14;30772:34;;;30802:1;30799;30792:12;30772:34;30840:6;30829:9;30825:22;30815:32;;30885:7;30878:4;30874:2;30870:13;30866:27;30856:55;;30907:1;30904;30897:12;30856:55;30936:2;30930:9;30959:60;30975:43;31015:2;30975:43;:::i;30959:60::-;31053:15;;;31135:1;31131:10;;;;31123:19;;31119:28;;;31084:12;;;;31159:19;;;31156:39;;;31191:1;31188;31181:12;31156:39;31223:2;31219;31215:11;31235:1082;31251:6;31246:3;31243:15;31235:1082;;;31330:3;31324:10;31366:2;31353:11;31350:19;31347:109;;;31410:1;31439:2;31435;31428:14;31347:109;31479:20;;31522:4;31550:16;;;-1:-1:-1;;31546:30:74;31542:39;-1:-1:-1;31539:129:74;;;31622:1;31651:2;31647;31640:14;31539:129;31694:22;;:::i;:::-;31759:2;31755;31751:11;31745:18;31792:2;31782:8;31779:16;31776:106;;;31836:1;31865:2;31861;31854:14;31776:106;31909:64;31965:7;31960:2;31949:8;31945:2;31941:17;31937:26;31909:64;:::i;:::-;31895:79;;-1:-1:-1;32009:11:74;;;32003:18;;32037:16;;;32034:109;;;32095:1;32125:3;32120;32113:16;32034:109;32179:64;32235:7;32230:2;32219:8;32215:2;32211:17;32207:26;32179:64;:::i;:::-;32163:14;;;32156:88;32257:18;;-1:-1:-1;;32295:12:74;;;;31268;;31235:1082;;;-1:-1:-1;32336:5:74;30467:1880;-1:-1:-1;;;;;;;;30467:1880:74:o;32713:1197::-;32766:3;32794:6;32835:5;32829:12;32862:2;32857:3;32850:15;32886:44;32926:2;32921:3;32917:12;32903;32886:44;:::i;:::-;32874:56;;;32978:4;32971:5;32967:16;32961:23;33026:3;33020:4;33016:14;33009:4;33004:3;33000:14;32993:38;33054;33087:4;33071:14;33054:38;:::i;:::-;33040:52;;;33140:4;33133:5;33129:16;33123:23;33155:49;33198:4;33193:3;33189:14;33173;-1:-1:-1;;;;;25941:30:74;25929:43;;25876:102;33155:49;;33252:4;33245:5;33241:16;33235:23;33302:3;33294:6;33290:16;33283:4;33278:3;33274:14;33267:40;33330;33363:6;33347:14;33330:40;:::i;:::-;33316:54;;;33418:4;33411:5;33407:16;33401:23;33433:49;33476:4;33471:3;33467:14;33451;-1:-1:-1;;;;;25941:30:74;25929:43;;25876:102;33433:49;;33530:4;33523:5;33519:16;33513:23;33580:3;33572:6;33568:16;33561:4;33556:3;33552:14;33545:40;33608:50;33651:6;33635:14;33608:50;:::i;:::-;33594:64;;;33706:4;33699:5;33695:16;33689:23;33721:49;33764:4;33759:3;33755:14;33739;-1:-1:-1;;;;;25941:30:74;25929:43;;25876:102;33721:49;;33818:4;33811:5;33807:16;33801:23;33833:49;33876:4;33871:3;33867:14;33851;-1:-1:-1;;;;;25941:30:74;25929:43;;25876:102;33915:1387;34067:4;34096:2;34125;34114:9;34107:21;34163:6;34157:13;34189:4;34229:2;34224;34213:9;34209:18;34202:30;34255:62;34313:2;34302:9;34298:18;34284:12;34255:62;:::i;:::-;34354:15;;;34348:22;-1:-1:-1;;34436:22:74;;;34432:31;;34412:18;;;34405:59;34513:21;;34543:22;;;34436;;-1:-1:-1;34678:23:74;;;;34581:15;;;;34639:1;34635:14;;;34623:27;;34619:36;;34719:1;34729:544;34743:6;34740:1;34737:13;34729:544;;;34829:2;34820:6;34812;34808:19;34804:28;34799:3;34792:41;34862:6;34856:13;34910:2;34904:9;34941:2;34933:6;34926:18;34971:49;35016:2;35008:6;35004:15;34988:14;34971:49;:::i;:::-;35061:11;;;35055:18;35110:19;;;35093:15;;;35086:44;35055:18;34957:63;-1:-1:-1;35153:40:74;34957:63;35055:18;35153:40;:::i;:::-;35216:15;;;;35251:12;;;;35143:50;-1:-1:-1;;;34765:1:74;34758:9;34729:544;;;-1:-1:-1;35290:6:74;33915:1387;-1:-1:-1;;;;;;;;;;33915:1387:74:o;35711:269::-;35898:2;35887:9;35880:21;35861:4;35918:56;35970:2;35959:9;35955:18;35947:6;35918:56;:::i;35985:262::-;36055:6;36108:2;36096:9;36087:7;36083:23;36079:32;36076:52;;;36124:1;36121;36114:12;36076:52;36156:9;36150:16;36175:42;36211:5;36175:42;:::i;36252:377::-;36445:2;36434:9;36427:21;36408:4;36471:44;36511:2;36500:9;36496:18;36488:6;36471:44;:::i;:::-;36563:9;36555:6;36551:22;36546:2;36535:9;36531:18;36524:50;36591:32;36616:6;36608;36591:32;:::i;:::-;36583:40;36252:377;-1:-1:-1;;;;;36252:377:74:o;36634:749::-;36758:6;36766;36810:9;36801:7;36797:23;36840:3;36836:2;36832:12;36829:32;;;36857:1;36854;36847:12;36829:32;36890:9;36884:16;-1:-1:-1;;;;;36915:6:74;36912:30;36909:50;;;36955:1;36952;36945:12;36909:50;36978:60;37030:7;37021:6;37010:9;37006:22;36978:60;:::i;:::-;36968:70;-1:-1:-1;;37072:4:74;-1:-1:-1;;37054:16:74;;37050:27;37047:47;;;37090:1;37087;37080:12;37047:47;;37116:22;;:::i;:::-;37182:2;37171:9;37167:18;37161:25;37154:5;37147:40;37240:2;37229:9;37225:18;37219:25;37214:2;37207:5;37203:14;37196:49;37277:75;37344:7;37337:4;37326:9;37322:20;37277:75;:::i;:::-;37272:2;37265:5;37261:14;37254:99;37372:5;37362:15;;;36634:749;;;;;:::o;37388:217::-;37535:2;37524:9;37517:21;37498:4;37555:44;37595:2;37584:9;37580:18;37572:6;37555:44;:::i;39306:492::-;39481:3;39519:6;39513:13;39535:66;39594:6;39589:3;39582:4;39574:6;39570:17;39535:66;:::i;:::-;39664:13;;39623:16;;;;39686:70;39664:13;39623:16;39733:4;39721:17;;39686:70;:::i;:::-;39772:20;;39306:492;-1:-1:-1;;;;39306:492:74:o;39803:576::-;40132:6;40121:9;40114:25;40175:2;40170;40159:9;40155:18;40148:30;40095:4;40201:54;40251:2;40240:9;40236:18;40228:6;40201:54;:::i;:::-;40303:9;40295:6;40291:22;40286:2;40275:9;40271:18;40264:50;40331:42;40366:6;40358;40331:42;:::i;:::-;40323:50;39803:576;-1:-1:-1;;;;;;39803:576:74:o;40791:359::-;40980:2;40969:9;40962:21;40943:4;41018:6;41012:13;41061:2;41056;41045:9;41041:18;41034:30;41081:63;41140:2;41129:9;41125:18;41111:12;41081:63;:::i;42634:272::-;42823:2;42812:9;42805:21;42786:4;42843:57;42896:2;42885:9;42881:18;42873:6;42843:57;:::i;42911:1432::-;43302:3;43340:6;43334:13;43356:66;43415:6;43410:3;43403:4;43395:6;43391:17;43356:66;:::i;:::-;43485:13;;43444:16;;;;43507:70;43485:13;43444:16;43554:4;43542:17;;43507:70;:::i;:::-;43642:3;43693:16;;;-1:-1:-1;;;;;;43689:25:74;;;43599:20;;;;43675:40;;;43750:16;;;43746:25;;43742:1;43731:13;;43724:48;43797:13;;43819:79;43797:13;43884:2;43873:14;;43866:4;43854:17;;43819:79;:::i;:::-;43962:13;;43917:20;;;43984:76;43962:13;44046:2;44038:11;;44031:4;44019:17;;43984:76;:::i;:::-;44121:13;;44079:17;;;44143:76;44121:13;44205:2;44197:11;;44190:4;44178:17;;44143:76;:::i;:::-;44292:3;44288:16;;;;44284:25;44238:17;;44279:2;44271:11;;44264:46;;;;-1:-1:-1;;44334:2:74;44326:11;;;-1:-1:-1;;;;;;;42911:1432:74:o;44348:1546::-;44759:3;44797:6;44791:13;44823:4;44836:64;44893:6;44888:3;44883:2;44875:6;44871:15;44836:64;:::i;:::-;44963:13;;44922:16;;;;44985:68;44963:13;44922:16;45020:15;;;44985:68;:::i;:::-;45118:3;45169:16;;;-1:-1:-1;;;;;;45165:25:74;;;45075:20;;;;45151:40;;;45226:16;;;45222:25;45218:1;45207:13;;45200:48;45273:13;;45295:77;45273:13;45358:2;45347:14;;45330:15;;;45295:77;:::i;:::-;45436:13;;45391:20;;;45458:74;45436:13;45518:2;45510:11;;45493:15;;;45458:74;:::i;:::-;45593:13;;45551:17;;;45615:74;45593:13;45675:2;45667:11;;45650:15;;;45615:74;:::i;:::-;45750:13;;45708:17;;;45772:74;45750:13;45832:2;45824:11;;45807:15;;;45772:74;:::i;:::-;45866:17;;;;45885:2;45862:26;;44348:1546;-1:-1:-1;;;;;;;;;;;44348:1546:74:o;45899:1313::-;46270:3;46308:6;46302:13;46324:66;46383:6;46378:3;46371:4;46363:6;46359:17;46324:66;:::i;:::-;46453:13;;46412:16;;;;46475:70;46453:13;46412:16;46522:4;46510:17;;46475:70;:::i;:::-;46610:3;46661:16;;;-1:-1:-1;;;;;;46657:25:74;;;46567:20;;;;46643:40;;;46718:16;;;46714:25;;46710:1;46699:13;;46692:48;46776:16;;;46772:25;;46767:2;46756:14;;46749:49;46823:13;;46845:79;46823:13;46910:2;46899:14;;46892:4;46880:17;;46845:79;:::i;:::-;46988:13;;46943:20;;;47010:76;46988:13;47072:2;47064:11;;47057:4;47045:17;;47010:76;:::i;:::-;47159:3;47155:16;;;;47151:25;47105:17;;47146:2;47138:11;;47131:46;;;;-1:-1:-1;;47201:4:74;47193:13;;;-1:-1:-1;;;;;;;45899:1313:74:o;47217:277::-;47414:2;47403:9;47396:21;47377:4;47434:54;47484:2;47473:9;47469:18;47461:6;47434:54;:::i", + "linkReferences": { + "lib/solidity-merkle-trees/src/MerkleMountainRange.sol": { + "MerkleMountainRange": [ + { + "start": 1707, + "length": 20 + }, + { + "start": 9534, + "length": 20 + } + ] + }, + "lib/solidity-merkle-trees/src/MerklePatricia.sol": { + "MerklePatricia": [ + { + "start": 3393, + "length": 20 + }, + { + "start": 7532, + "length": 20 + } + ] + } + } + }, + "methodIdentifiers": { + "handleConsensus(address,bytes)": "bb1689be", + "handleGetResponses(address,(bytes[],(uint256,uint256),(bytes,bytes,uint64,bytes,uint64,bytes[],uint64,uint64)[]))": "873ce1ce", + "handleGetTimeouts(address,((bytes,bytes,uint64,bytes,uint64,bytes[],uint64,uint64)[]))": "ac269bd6", + "handlePostRequests(address,(((uint256,uint256),bytes32[],uint256),((bytes,bytes,uint64,bytes,bytes,uint64,bytes,uint64),uint256,uint256)[]))": "fda626c3", + "handlePostResponses(address,(((uint256,uint256),bytes32[],uint256),(((bytes,bytes,uint64,bytes,bytes,uint64,bytes,uint64),bytes),uint256,uint256)[]))": "20d71c7a", + "handlePostTimeouts(address,((bytes,bytes,uint64,bytes,bytes,uint64,bytes,uint64)[],(uint256,uint256),bytes[]))": "d95e4fbb" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stateMachineId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"name\":\"StateMachineUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract IIsmpHost\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"handleConsensus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IIsmpHost\",\"name\":\"host\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes[]\",\"name\":\"proof\",\"type\":\"bytes[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stateMachineId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"internalType\":\"struct StateMachineHeight\",\"name\":\"height\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"source\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"dest\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"from\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"timeoutTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"bytes[]\",\"name\":\"keys\",\"type\":\"bytes[]\"},{\"internalType\":\"uint64\",\"name\":\"height\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gaslimit\",\"type\":\"uint64\"}],\"internalType\":\"struct GetRequest[]\",\"name\":\"requests\",\"type\":\"tuple[]\"}],\"internalType\":\"struct GetResponseMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"handleGetResponses\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IIsmpHost\",\"name\":\"host\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"source\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"dest\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"from\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"timeoutTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"bytes[]\",\"name\":\"keys\",\"type\":\"bytes[]\"},{\"internalType\":\"uint64\",\"name\":\"height\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gaslimit\",\"type\":\"uint64\"}],\"internalType\":\"struct GetRequest[]\",\"name\":\"timeouts\",\"type\":\"tuple[]\"}],\"internalType\":\"struct GetTimeoutMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"handleGetTimeouts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IIsmpHost\",\"name\":\"host\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stateMachineId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"internalType\":\"struct StateMachineHeight\",\"name\":\"height\",\"type\":\"tuple\"},{\"internalType\":\"bytes32[]\",\"name\":\"multiproof\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"leafCount\",\"type\":\"uint256\"}],\"internalType\":\"struct Proof\",\"name\":\"proof\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"source\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"dest\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"from\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"to\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"timeoutTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"body\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"gaslimit\",\"type\":\"uint64\"}],\"internalType\":\"struct PostRequest\",\"name\":\"request\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"kIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct PostRequestLeaf[]\",\"name\":\"requests\",\"type\":\"tuple[]\"}],\"internalType\":\"struct PostRequestMessage\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"handlePostRequests\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IIsmpHost\",\"name\":\"host\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stateMachineId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"internalType\":\"struct StateMachineHeight\",\"name\":\"height\",\"type\":\"tuple\"},{\"internalType\":\"bytes32[]\",\"name\":\"multiproof\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"leafCount\",\"type\":\"uint256\"}],\"internalType\":\"struct Proof\",\"name\":\"proof\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"source\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"dest\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"from\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"to\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"timeoutTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"body\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"gaslimit\",\"type\":\"uint64\"}],\"internalType\":\"struct PostRequest\",\"name\":\"request\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"}],\"internalType\":\"struct PostResponse\",\"name\":\"response\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"kIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct PostResponseLeaf[]\",\"name\":\"responses\",\"type\":\"tuple[]\"}],\"internalType\":\"struct PostResponseMessage\",\"name\":\"response\",\"type\":\"tuple\"}],\"name\":\"handlePostResponses\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IIsmpHost\",\"name\":\"host\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"source\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"dest\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"from\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"to\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"timeoutTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"body\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"gaslimit\",\"type\":\"uint64\"}],\"internalType\":\"struct PostRequest[]\",\"name\":\"timeouts\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stateMachineId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"internalType\":\"struct StateMachineHeight\",\"name\":\"height\",\"type\":\"tuple\"},{\"internalType\":\"bytes[]\",\"name\":\"proof\",\"type\":\"bytes[]\"}],\"internalType\":\"struct PostTimeoutMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"handlePostTimeouts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"handleConsensus(address,bytes)\":{\"details\":\"Handle incoming consensus messages\",\"params\":{\"host\":\"- Ismp host\",\"proof\":\"- consensus proof\"}},\"handleGetResponses(address,(bytes[],(uint256,uint256),(bytes,bytes,uint64,bytes,uint64,bytes[],uint64,uint64)[]))\":{\"details\":\"check response proofs, message delay and timeouts, then dispatch get responses to modules\",\"params\":{\"host\":\"- Ismp host\",\"message\":\"- batch get responses\"}},\"handleGetTimeouts(address,((bytes,bytes,uint64,bytes,uint64,bytes[],uint64,uint64)[]))\":{\"details\":\"dispatch to modules\",\"params\":{\"host\":\"- Ismp host\",\"message\":\"- batch get request timeouts\"}},\"handlePostRequests(address,(((uint256,uint256),bytes32[],uint256),((bytes,bytes,uint64,bytes,bytes,uint64,bytes,uint64),uint256,uint256)[]))\":{\"details\":\"check request proofs, message delay and timeouts, then dispatch post requests to modules\",\"params\":{\"host\":\"- Ismp host\",\"request\":\"- batch post requests\"}},\"handlePostResponses(address,(((uint256,uint256),bytes32[],uint256),(((bytes,bytes,uint64,bytes,bytes,uint64,bytes,uint64),bytes),uint256,uint256)[]))\":{\"details\":\"check response proofs, message delay and timeouts, then dispatch post responses to modules\",\"params\":{\"host\":\"- Ismp host\",\"response\":\"- batch post responses\"}},\"handlePostTimeouts(address,((bytes,bytes,uint64,bytes,bytes,uint64,bytes,uint64)[],(uint256,uint256),bytes[]))\":{\"details\":\"check timeout proofs then dispatch to modules\",\"params\":{\"host\":\"- Ismp host\",\"message\":\"- batch post request timeouts\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/HandlerV1.sol\":\"HandlerV1\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":ismp-solidity/=lib/ismp-solidity/\",\":ismp/=lib/ismp-solidity/src/\",\":multi-chain-tokens/=lib/multi-chain-tokens/src/\",\":multichain-token/=lib/ismp-solidity/lib/multichain-native-tokens/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solidity-merkle-trees/=lib/solidity-merkle-trees/src/\"]},\"sources\":{\"lib/ismp-solidity/src/interfaces/IConsensusClient.sol\":{\"keccak256\":\"0x2be700e8c2c819144057e55622f3dac0a50763332aae22fba3fe90a0571028da\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://e5b3e8d9a1e94252bcad307fb0ecb5e25401bcd01de9f5e5bab5fe2e53e167d8\",\"dweb:/ipfs/QmQf5Famyv2uBfmrKH2eGo8LvTBsaqjh3o8Fxry7EP9Xwb\"]},\"lib/ismp-solidity/src/interfaces/IHandler.sol\":{\"keccak256\":\"0xecba9c5a118cc651d0a48667c42da738057f5a4f77b49faa4c61741aa154c767\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b598e34eb95e5986308257f1aa92547f46a40a894b7dd5f837c9ee2473b7fbbe\",\"dweb:/ipfs/QmSbe3bgekCw3hoCtMpSY6tqzqjSgeRwgu7X62r4wxfi1J\"]},\"lib/ismp-solidity/src/interfaces/IIsmp.sol\":{\"keccak256\":\"0x0a9f17234dcd132353593fed8cb8b059ca921d73cc4a61502e5cc015e79cf490\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://1740a5097cb9a96b1c6d4fe62bf74b58410c91246afcd79847446547ccf5fdd4\",\"dweb:/ipfs/Qmardqm7RrmeGfMAw69xctQagT6yyu4dcZDUDykmVwPdUz\"]},\"lib/ismp-solidity/src/interfaces/IIsmpHost.sol\":{\"keccak256\":\"0x92eade08184d975e98c2049ef4eb96281839cd77aa317cf272467e720cb749bb\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://c8342b8747d7f20da3ec090ad4dc837c5e25f56edf6afa1a2de5e418c8d11018\",\"dweb:/ipfs/QmPuuXcUACXDnK29J7NuZCsT5YQeg4vRjyzs9sd9FpsoED\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f\",\"dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c\",\"dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7\",\"dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6\"]},\"lib/solidity-merkle-trees/src/MerkleMountainRange.sol\":{\"keccak256\":\"0x867f348fc7fce6f1e5cc5d41968389f7a832d99acddf9a544297e6ab27b9d823\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://27a91f509bc1d4b171d11722f30b35f5a8c456d42f07692865418a7fdb50a69a\",\"dweb:/ipfs/QmTKLoX2CV1Fo6nJo4f4ycdiUaw1y4FzpdqXHKkoVdG4BP\"]},\"lib/solidity-merkle-trees/src/MerkleMultiProof.sol\":{\"keccak256\":\"0x71a97fc3f97c50ac429f1109176f5eaffc34b4d1f291bb58da61baa8cdc348e0\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://f964717f4577e7081a23f6301058c461854151d156aae33beaa39588aba8ef8e\",\"dweb:/ipfs/QmbsadFursZrYUK6a3m55N5P5mZ2hWAtDpFsMZqoU2EV5L\"]},\"lib/solidity-merkle-trees/src/MerklePatricia.sol\":{\"keccak256\":\"0x452857f8e6c5b5878402bba1805bf4c3aef01c6c8f949dd72d20e07df8952bfc\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://c1007fe97775e37c9b6084e0ac98b249e7746ca531a04265291b0c57002f67b4\",\"dweb:/ipfs/QmYiqp6MHoGWgZAHvKjKBphczJY3t4zDuV9M4V1UzuC8ML\"]},\"lib/solidity-merkle-trees/src/trie/Bytes.sol\":{\"keccak256\":\"0x03ffca5abeb3f2665997059af505a8225f881c3d375dddfdef77e6d3aac67db8\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://d3a4e7d650143dbb64a61e492260e50053de9b89536d05c8007c43b25602f610\",\"dweb:/ipfs/QmbdyvPcHgcZsL4Sk2dS7s86qARePDyhcRPj5xtBko6e3t\"]},\"lib/solidity-merkle-trees/src/trie/Memory.sol\":{\"keccak256\":\"0x6d309ea24fca1313f1ac6ed57e31a94c44276006e233c46c7cf35e2ddcb88856\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://d2283a501d235201e1a18bb046ad713ce49dcaf287ae09d10025c786ab326648\",\"dweb:/ipfs/QmPNvWGoCTu8MwMco6qjfW4RcwrJJKJhxQtfCEbeyB9rx2\"]},\"lib/solidity-merkle-trees/src/trie/NibbleSlice.sol\":{\"keccak256\":\"0x284ad5142dfe57d2a67de0c3787469367821926488d04e532adc71108c48a07b\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://c1bf96fdff2fc0db8500261bc89f480cd09b38355750203f15f95f1bd3000392\",\"dweb:/ipfs/QmUd9iTH7U5pyezYqJVpET2es3uhjQmeGToEWywHUjXuNM\"]},\"lib/solidity-merkle-trees/src/trie/Node.sol\":{\"keccak256\":\"0x5e1b5dd46013b706ac86627c8a21a52a43ef151060479208abe0b6802e8c19b5\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://9b43ab483ff79c2fa9165b678b86a838bbf6fa60092cfe8e8d55023af0488c3d\",\"dweb:/ipfs/QmT8Sy3HoAc9xY6C6gPK3s5SsJJgYztGGUpin7g54GeRcB\"]},\"lib/solidity-merkle-trees/src/trie/Option.sol\":{\"keccak256\":\"0xd5b67f9fd3218d507923147eacc9d209f55ad211e9c7258a07d7bc2c4db386b0\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://6c134fcc01f84820fdea93e747b3f2a5ee47bac6eda2c43504e87201229cbc4f\",\"dweb:/ipfs/QmX1fQ32tyaR9EReyUbCfcSKGHzoEN88GPbwdwNAJQyVfL\"]},\"lib/solidity-merkle-trees/src/trie/TrieDB.sol\":{\"keccak256\":\"0xcf56409c430ebf1053edb199120c2961f0380b9fe93a36ccb5369e004dcafd64\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://5bdad30e72f8f29ba030db27881a08d63486544fb50abc99fa5a08902d7ad04a\",\"dweb:/ipfs/QmQAoC1G6SXdGzVuLUt6pDbnaWJyGcUzWwpVbrwN4eCmdn\"]},\"lib/solidity-merkle-trees/src/trie/ethereum/EthereumTrieDB.sol\":{\"keccak256\":\"0xc64596f6d1c23f153efe19c62f0f2631ba92e6ac0f67ca57d93c2c75af98b6cf\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://a95680e75f6ef869d81708f05e67bf6a34f6c4c0d91e189b57a314bdc1e61c03\",\"dweb:/ipfs/QmSuKZdDbjTGcUW6kVJ1Ghzb7zh3RdpdJpde5izk7fmZek\"]},\"lib/solidity-merkle-trees/src/trie/ethereum/RLPReader.sol\":{\"keccak256\":\"0xb8f4d1c02840086b3a9e81df93eebb120a40168681c119bee3f4c9849404538c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://96e41baf205786170f910596dd8aea91615c0a98bfb9771967f64f34b99bd8ca\",\"dweb:/ipfs/QmVqAFeCLzNhEM8yJoed2reQoGK1EiE72BVPyvgESEhgsm\"]},\"lib/solidity-merkle-trees/src/trie/substrate/ScaleCodec.sol\":{\"keccak256\":\"0x6fcfb3f4bb5ae07ab71aa9cf84bb19a8dda129a6f7ac8a35ae915858c4ef1a0f\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://2bbfb7e76afac849b15ba3285e73e463f85f2533c5ad9c1d40b35271359d2f7c\",\"dweb:/ipfs/QmWRgZRa4C32VMZnFLzUVTpqVggYD3wfPoiA5PtgHTiEve\"]},\"lib/solidity-merkle-trees/src/trie/substrate/SubstrateTrieDB.sol\":{\"keccak256\":\"0x01545b72eb381d0ec25de0155126efa429301f39f8854a41ed36811fb5d94069\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://ab7079de5a4f4af78fd0be8d90215787431711b0b7d2d9f6aefa7ed4db3a5f76\",\"dweb:/ipfs/QmNaSdtRNs3A5aUmT7ZbWmDU5sRE6iKsMPVc3EzHZFYhDB\"]},\"src/HandlerV1.sol\":{\"keccak256\":\"0x5c1f7f517599e9d15ff7dc8c3f1817038dc216ebc898d1c1c0458bd790d4ded3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ea2d77ffd495b9ddea6edd2808cec296d81ad3aba79f728d6412b9c9655682dc\",\"dweb:/ipfs/QmaUPhCdgPavrP8T5thjD3YV6bG2HimGoASLxR4Qzn4bzW\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.17+commit.8df45f5f" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "stateMachineId", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "height", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "StateMachineUpdated", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "contract IIsmpHost", + "name": "host", + "type": "address" + }, + { + "internalType": "bytes", + "name": "proof", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "handleConsensus" + }, + { + "inputs": [ + { + "internalType": "contract IIsmpHost", + "name": "host", + "type": "address" + }, + { + "internalType": "struct GetResponseMessage", + "name": "message", + "type": "tuple", + "components": [ + { + "internalType": "bytes[]", + "name": "proof", + "type": "bytes[]" + }, + { + "internalType": "struct StateMachineHeight", + "name": "height", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "stateMachineId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "height", + "type": "uint256" + } + ] + }, + { + "internalType": "struct GetRequest[]", + "name": "requests", + "type": "tuple[]", + "components": [ + { + "internalType": "bytes", + "name": "source", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "dest", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "from", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "timeoutTimestamp", + "type": "uint64" + }, + { + "internalType": "bytes[]", + "name": "keys", + "type": "bytes[]" + }, + { + "internalType": "uint64", + "name": "height", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "gaslimit", + "type": "uint64" + } + ] + } + ] + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "handleGetResponses" + }, + { + "inputs": [ + { + "internalType": "contract IIsmpHost", + "name": "host", + "type": "address" + }, + { + "internalType": "struct GetTimeoutMessage", + "name": "message", + "type": "tuple", + "components": [ + { + "internalType": "struct GetRequest[]", + "name": "timeouts", + "type": "tuple[]", + "components": [ + { + "internalType": "bytes", + "name": "source", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "dest", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "from", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "timeoutTimestamp", + "type": "uint64" + }, + { + "internalType": "bytes[]", + "name": "keys", + "type": "bytes[]" + }, + { + "internalType": "uint64", + "name": "height", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "gaslimit", + "type": "uint64" + } + ] + } + ] + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "handleGetTimeouts" + }, + { + "inputs": [ + { + "internalType": "contract IIsmpHost", + "name": "host", + "type": "address" + }, + { + "internalType": "struct PostRequestMessage", + "name": "request", + "type": "tuple", + "components": [ + { + "internalType": "struct Proof", + "name": "proof", + "type": "tuple", + "components": [ + { + "internalType": "struct StateMachineHeight", + "name": "height", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "stateMachineId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "height", + "type": "uint256" + } + ] + }, + { + "internalType": "bytes32[]", + "name": "multiproof", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "leafCount", + "type": "uint256" + } + ] + }, + { + "internalType": "struct PostRequestLeaf[]", + "name": "requests", + "type": "tuple[]", + "components": [ + { + "internalType": "struct PostRequest", + "name": "request", + "type": "tuple", + "components": [ + { + "internalType": "bytes", + "name": "source", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "dest", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "from", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "to", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "timeoutTimestamp", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "body", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "gaslimit", + "type": "uint64" + } + ] + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "kIndex", + "type": "uint256" + } + ] + } + ] + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "handlePostRequests" + }, + { + "inputs": [ + { + "internalType": "contract IIsmpHost", + "name": "host", + "type": "address" + }, + { + "internalType": "struct PostResponseMessage", + "name": "response", + "type": "tuple", + "components": [ + { + "internalType": "struct Proof", + "name": "proof", + "type": "tuple", + "components": [ + { + "internalType": "struct StateMachineHeight", + "name": "height", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "stateMachineId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "height", + "type": "uint256" + } + ] + }, + { + "internalType": "bytes32[]", + "name": "multiproof", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "leafCount", + "type": "uint256" + } + ] + }, + { + "internalType": "struct PostResponseLeaf[]", + "name": "responses", + "type": "tuple[]", + "components": [ + { + "internalType": "struct PostResponse", + "name": "response", + "type": "tuple", + "components": [ + { + "internalType": "struct PostRequest", + "name": "request", + "type": "tuple", + "components": [ + { + "internalType": "bytes", + "name": "source", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "dest", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "from", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "to", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "timeoutTimestamp", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "body", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "gaslimit", + "type": "uint64" + } + ] + }, + { + "internalType": "bytes", + "name": "response", + "type": "bytes" + } + ] + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "kIndex", + "type": "uint256" + } + ] + } + ] + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "handlePostResponses" + }, + { + "inputs": [ + { + "internalType": "contract IIsmpHost", + "name": "host", + "type": "address" + }, + { + "internalType": "struct PostTimeoutMessage", + "name": "message", + "type": "tuple", + "components": [ + { + "internalType": "struct PostRequest[]", + "name": "timeouts", + "type": "tuple[]", + "components": [ + { + "internalType": "bytes", + "name": "source", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "dest", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "from", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "to", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "timeoutTimestamp", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "body", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "gaslimit", + "type": "uint64" + } + ] + }, + { + "internalType": "struct StateMachineHeight", + "name": "height", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "stateMachineId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "height", + "type": "uint256" + } + ] + }, + { + "internalType": "bytes[]", + "name": "proof", + "type": "bytes[]" + } + ] + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "handlePostTimeouts" + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "handleConsensus(address,bytes)": { + "details": "Handle incoming consensus messages", + "params": { + "host": "- Ismp host", + "proof": "- consensus proof" + } + }, + "handleGetResponses(address,(bytes[],(uint256,uint256),(bytes,bytes,uint64,bytes,uint64,bytes[],uint64,uint64)[]))": { + "details": "check response proofs, message delay and timeouts, then dispatch get responses to modules", + "params": { + "host": "- Ismp host", + "message": "- batch get responses" + } + }, + "handleGetTimeouts(address,((bytes,bytes,uint64,bytes,uint64,bytes[],uint64,uint64)[]))": { + "details": "dispatch to modules", + "params": { + "host": "- Ismp host", + "message": "- batch get request timeouts" + } + }, + "handlePostRequests(address,(((uint256,uint256),bytes32[],uint256),((bytes,bytes,uint64,bytes,bytes,uint64,bytes,uint64),uint256,uint256)[]))": { + "details": "check request proofs, message delay and timeouts, then dispatch post requests to modules", + "params": { + "host": "- Ismp host", + "request": "- batch post requests" + } + }, + "handlePostResponses(address,(((uint256,uint256),bytes32[],uint256),(((bytes,bytes,uint64,bytes,bytes,uint64,bytes,uint64),bytes),uint256,uint256)[]))": { + "details": "check response proofs, message delay and timeouts, then dispatch post responses to modules", + "params": { + "host": "- Ismp host", + "response": "- batch post responses" + } + }, + "handlePostTimeouts(address,((bytes,bytes,uint64,bytes,bytes,uint64,bytes,uint64)[],(uint256,uint256),bytes[]))": { + "details": "check timeout proofs then dispatch to modules", + "params": { + "host": "- Ismp host", + "message": "- batch post request timeouts" + } + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + }, + "settings": { + "remappings": [ + "ds-test/=lib/forge-std/lib/ds-test/src/", + "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", + "forge-std/=lib/forge-std/src/", + "ismp-solidity/=lib/ismp-solidity/", + "ismp/=lib/ismp-solidity/src/", + "multi-chain-tokens/=lib/multi-chain-tokens/src/", + "multichain-token/=lib/ismp-solidity/lib/multichain-native-tokens/src/", + "openzeppelin-contracts/=lib/openzeppelin-contracts/", + "openzeppelin/=lib/openzeppelin-contracts/contracts/", + "solidity-merkle-trees/=lib/solidity-merkle-trees/src/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "src/HandlerV1.sol": "HandlerV1" + }, + "libraries": {} + }, + "sources": { + "lib/ismp-solidity/src/interfaces/IConsensusClient.sol": { + "keccak256": "0x2be700e8c2c819144057e55622f3dac0a50763332aae22fba3fe90a0571028da", + "urls": [ + "bzz-raw://e5b3e8d9a1e94252bcad307fb0ecb5e25401bcd01de9f5e5bab5fe2e53e167d8", + "dweb:/ipfs/QmQf5Famyv2uBfmrKH2eGo8LvTBsaqjh3o8Fxry7EP9Xwb" + ], + "license": "UNLICENSED" + }, + "lib/ismp-solidity/src/interfaces/IHandler.sol": { + "keccak256": "0xecba9c5a118cc651d0a48667c42da738057f5a4f77b49faa4c61741aa154c767", + "urls": [ + "bzz-raw://b598e34eb95e5986308257f1aa92547f46a40a894b7dd5f837c9ee2473b7fbbe", + "dweb:/ipfs/QmSbe3bgekCw3hoCtMpSY6tqzqjSgeRwgu7X62r4wxfi1J" + ], + "license": "UNLICENSED" + }, + "lib/ismp-solidity/src/interfaces/IIsmp.sol": { + "keccak256": "0x0a9f17234dcd132353593fed8cb8b059ca921d73cc4a61502e5cc015e79cf490", + "urls": [ + "bzz-raw://1740a5097cb9a96b1c6d4fe62bf74b58410c91246afcd79847446547ccf5fdd4", + "dweb:/ipfs/Qmardqm7RrmeGfMAw69xctQagT6yyu4dcZDUDykmVwPdUz" + ], + "license": "UNLICENSED" + }, + "lib/ismp-solidity/src/interfaces/IIsmpHost.sol": { + "keccak256": "0x92eade08184d975e98c2049ef4eb96281839cd77aa317cf272467e720cb749bb", + "urls": [ + "bzz-raw://c8342b8747d7f20da3ec090ad4dc837c5e25f56edf6afa1a2de5e418c8d11018", + "dweb:/ipfs/QmPuuXcUACXDnK29J7NuZCsT5YQeg4vRjyzs9sd9FpsoED" + ], + "license": "UNLICENSED" + }, + "lib/openzeppelin-contracts/contracts/utils/Context.sol": { + "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7", + "urls": [ + "bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92", + "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/Strings.sol": { + "keccak256": "0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0", + "urls": [ + "bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f", + "dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/math/Math.sol": { + "keccak256": "0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3", + "urls": [ + "bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c", + "dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol": { + "keccak256": "0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc", + "urls": [ + "bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7", + "dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6" + ], + "license": "MIT" + }, + "lib/solidity-merkle-trees/src/MerkleMountainRange.sol": { + "keccak256": "0x867f348fc7fce6f1e5cc5d41968389f7a832d99acddf9a544297e6ab27b9d823", + "urls": [ + "bzz-raw://27a91f509bc1d4b171d11722f30b35f5a8c456d42f07692865418a7fdb50a69a", + "dweb:/ipfs/QmTKLoX2CV1Fo6nJo4f4ycdiUaw1y4FzpdqXHKkoVdG4BP" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/MerkleMultiProof.sol": { + "keccak256": "0x71a97fc3f97c50ac429f1109176f5eaffc34b4d1f291bb58da61baa8cdc348e0", + "urls": [ + "bzz-raw://f964717f4577e7081a23f6301058c461854151d156aae33beaa39588aba8ef8e", + "dweb:/ipfs/QmbsadFursZrYUK6a3m55N5P5mZ2hWAtDpFsMZqoU2EV5L" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/MerklePatricia.sol": { + "keccak256": "0x452857f8e6c5b5878402bba1805bf4c3aef01c6c8f949dd72d20e07df8952bfc", + "urls": [ + "bzz-raw://c1007fe97775e37c9b6084e0ac98b249e7746ca531a04265291b0c57002f67b4", + "dweb:/ipfs/QmYiqp6MHoGWgZAHvKjKBphczJY3t4zDuV9M4V1UzuC8ML" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/trie/Bytes.sol": { + "keccak256": "0x03ffca5abeb3f2665997059af505a8225f881c3d375dddfdef77e6d3aac67db8", + "urls": [ + "bzz-raw://d3a4e7d650143dbb64a61e492260e50053de9b89536d05c8007c43b25602f610", + "dweb:/ipfs/QmbdyvPcHgcZsL4Sk2dS7s86qARePDyhcRPj5xtBko6e3t" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/trie/Memory.sol": { + "keccak256": "0x6d309ea24fca1313f1ac6ed57e31a94c44276006e233c46c7cf35e2ddcb88856", + "urls": [ + "bzz-raw://d2283a501d235201e1a18bb046ad713ce49dcaf287ae09d10025c786ab326648", + "dweb:/ipfs/QmPNvWGoCTu8MwMco6qjfW4RcwrJJKJhxQtfCEbeyB9rx2" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/trie/NibbleSlice.sol": { + "keccak256": "0x284ad5142dfe57d2a67de0c3787469367821926488d04e532adc71108c48a07b", + "urls": [ + "bzz-raw://c1bf96fdff2fc0db8500261bc89f480cd09b38355750203f15f95f1bd3000392", + "dweb:/ipfs/QmUd9iTH7U5pyezYqJVpET2es3uhjQmeGToEWywHUjXuNM" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/trie/Node.sol": { + "keccak256": "0x5e1b5dd46013b706ac86627c8a21a52a43ef151060479208abe0b6802e8c19b5", + "urls": [ + "bzz-raw://9b43ab483ff79c2fa9165b678b86a838bbf6fa60092cfe8e8d55023af0488c3d", + "dweb:/ipfs/QmT8Sy3HoAc9xY6C6gPK3s5SsJJgYztGGUpin7g54GeRcB" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/trie/Option.sol": { + "keccak256": "0xd5b67f9fd3218d507923147eacc9d209f55ad211e9c7258a07d7bc2c4db386b0", + "urls": [ + "bzz-raw://6c134fcc01f84820fdea93e747b3f2a5ee47bac6eda2c43504e87201229cbc4f", + "dweb:/ipfs/QmX1fQ32tyaR9EReyUbCfcSKGHzoEN88GPbwdwNAJQyVfL" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/trie/TrieDB.sol": { + "keccak256": "0xcf56409c430ebf1053edb199120c2961f0380b9fe93a36ccb5369e004dcafd64", + "urls": [ + "bzz-raw://5bdad30e72f8f29ba030db27881a08d63486544fb50abc99fa5a08902d7ad04a", + "dweb:/ipfs/QmQAoC1G6SXdGzVuLUt6pDbnaWJyGcUzWwpVbrwN4eCmdn" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/trie/ethereum/EthereumTrieDB.sol": { + "keccak256": "0xc64596f6d1c23f153efe19c62f0f2631ba92e6ac0f67ca57d93c2c75af98b6cf", + "urls": [ + "bzz-raw://a95680e75f6ef869d81708f05e67bf6a34f6c4c0d91e189b57a314bdc1e61c03", + "dweb:/ipfs/QmSuKZdDbjTGcUW6kVJ1Ghzb7zh3RdpdJpde5izk7fmZek" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/trie/ethereum/RLPReader.sol": { + "keccak256": "0xb8f4d1c02840086b3a9e81df93eebb120a40168681c119bee3f4c9849404538c", + "urls": [ + "bzz-raw://96e41baf205786170f910596dd8aea91615c0a98bfb9771967f64f34b99bd8ca", + "dweb:/ipfs/QmVqAFeCLzNhEM8yJoed2reQoGK1EiE72BVPyvgESEhgsm" + ], + "license": "Apache-2.0" + }, + "lib/solidity-merkle-trees/src/trie/substrate/ScaleCodec.sol": { + "keccak256": "0x6fcfb3f4bb5ae07ab71aa9cf84bb19a8dda129a6f7ac8a35ae915858c4ef1a0f", + "urls": [ + "bzz-raw://2bbfb7e76afac849b15ba3285e73e463f85f2533c5ad9c1d40b35271359d2f7c", + "dweb:/ipfs/QmWRgZRa4C32VMZnFLzUVTpqVggYD3wfPoiA5PtgHTiEve" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/trie/substrate/SubstrateTrieDB.sol": { + "keccak256": "0x01545b72eb381d0ec25de0155126efa429301f39f8854a41ed36811fb5d94069", + "urls": [ + "bzz-raw://ab7079de5a4f4af78fd0be8d90215787431711b0b7d2d9f6aefa7ed4db3a5f76", + "dweb:/ipfs/QmNaSdtRNs3A5aUmT7ZbWmDU5sRE6iKsMPVc3EzHZFYhDB" + ], + "license": "Apache2" + }, + "src/HandlerV1.sol": { + "keccak256": "0x5c1f7f517599e9d15ff7dc8c3f1817038dc216ebc898d1c1c0458bd790d4ded3", + "urls": [ + "bzz-raw://ea2d77ffd495b9ddea6edd2808cec296d81ad3aba79f728d6412b9c9655682dc", + "dweb:/ipfs/QmaUPhCdgPavrP8T5thjD3YV6bG2HimGoASLxR4Qzn4bzW" + ], + "license": "UNLICENSED" + } + }, + "version": 1 + }, + "ast": { + "absolutePath": "src/HandlerV1.sol", + "id": 58679, + "exportedSymbols": { + "Branch": [ + 53002 + ], + "BridgeParams": [ + 45862 + ], + "ByteSlice": [ + 51690 + ], + "Bytes": [ + 52334 + ], + "Context": [ + 47465 + ], + "DispatchGet": [ + 45587 + ], + "DispatchPost": [ + 45575 + ], + "EthereumTrieDB": [ + 53728 + ], + "Extension": [ + 52993 + ], + "GetRequest": [ + 45478 + ], + "GetResponse": [ + 45486 + ], + "GetResponseMessage": [ + 45536 + ], + "GetTimeoutMessage": [ + 45541 + ], + "HandlerV1": [ + 58678 + ], + "IConsensusClient": [ + 45374 + ], + "IHandler": [ + 45438 + ], + "IIsmp": [ + 45609 + ], + "IIsmpHost": [ + 46055 + ], + "IntermediateState": [ + 45360 + ], + "Iterator": [ + 49135 + ], + "Leaf": [ + 53032 + ], + "Math": [ + 49013 + ], + "Memory": [ + 52495 + ], + "MerkleMountainRange": [ + 50178 + ], + "MerkleMultiProof": [ + 50948 + ], + "MerklePatricia": [ + 51681 + ], + "Message": [ + 45837 + ], + "MmrLeaf": [ + 49129 + ], + "NibbleSlice": [ + 52502 + ], + "NibbleSliceOps": [ + 52951 + ], + "NibbledBranch": [ + 53014 + ], + "Node": [ + 50186 + ], + "NodeHandle": [ + 52986 + ], + "NodeHandleOption": [ + 53025 + ], + "NodeKind": [ + 52977 + ], + "Option": [ + 53069 + ], + "PostRequest": [ + 45460 + ], + "PostRequestLeaf": [ + 45500 + ], + "PostRequestMessage": [ + 45525 + ], + "PostResponse": [ + 45492 + ], + "PostResponseLeaf": [ + 45508 + ], + "PostResponseMessage": [ + 45564 + ], + "PostTimeout": [ + 45545 + ], + "PostTimeoutMessage": [ + 45556 + ], + "Proof": [ + 45517 + ], + "RLPReader": [ + 54536 + ], + "ScaleCodec": [ + 55460 + ], + "SignedMath": [ + 49118 + ], + "StateCommitment": [ + 45347 + ], + "StateMachineHeight": [ + 45352 + ], + "StorageValue": [ + 50961 + ], + "Strings": [ + 47694 + ], + "SubstrateTrieDB": [ + 56248 + ], + "TrieDB": [ + 53245 + ], + "TrieNode": [ + 53037 + ], + "ValueOption": [ + 53019 + ] + }, + "nodeType": "SourceUnit", + "src": "39:9963:58", + "nodes": [ + { + "id": 57727, + "nodeType": "PragmaDirective", + "src": "39:23:58", + "nodes": [], + "literals": [ + "solidity", + "0.8", + ".17" + ] + }, + { + "id": 57728, + "nodeType": "ImportDirective", + "src": "64:55:58", + "nodes": [], + "absolutePath": "lib/solidity-merkle-trees/src/MerkleMountainRange.sol", + "file": "solidity-merkle-trees/MerkleMountainRange.sol", + "nameLocation": "-1:-1:-1", + "scope": 58679, + "sourceUnit": 50179, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 57729, + "nodeType": "ImportDirective", + "src": "120:50:58", + "nodes": [], + "absolutePath": "lib/solidity-merkle-trees/src/MerklePatricia.sol", + "file": "solidity-merkle-trees/MerklePatricia.sol", + "nameLocation": "-1:-1:-1", + "scope": 58679, + "sourceUnit": 51682, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 57730, + "nodeType": "ImportDirective", + "src": "171:40:58", + "nodes": [], + "absolutePath": "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "file": "openzeppelin/utils/Context.sol", + "nameLocation": "-1:-1:-1", + "scope": 58679, + "sourceUnit": 47466, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 57731, + "nodeType": "ImportDirective", + "src": "213:46:58", + "nodes": [], + "absolutePath": "lib/ismp-solidity/src/interfaces/IConsensusClient.sol", + "file": "ismp/interfaces/IConsensusClient.sol", + "nameLocation": "-1:-1:-1", + "scope": 58679, + "sourceUnit": 45375, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 57732, + "nodeType": "ImportDirective", + "src": "260:38:58", + "nodes": [], + "absolutePath": "lib/ismp-solidity/src/interfaces/IHandler.sol", + "file": "ismp/interfaces/IHandler.sol", + "nameLocation": "-1:-1:-1", + "scope": 58679, + "sourceUnit": 45439, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 57733, + "nodeType": "ImportDirective", + "src": "299:39:58", + "nodes": [], + "absolutePath": "lib/ismp-solidity/src/interfaces/IIsmpHost.sol", + "file": "ismp/interfaces/IIsmpHost.sol", + "nameLocation": "-1:-1:-1", + "scope": 58679, + "sourceUnit": 46056, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 58678, + "nodeType": "ContractDefinition", + "src": "340:9661:58", + "nodes": [ + { + "id": 57740, + "nodeType": "UsingForDirective", + "src": "386:22:58", + "nodes": [], + "global": false, + "libraryName": { + "id": 57738, + "name": "Bytes", + "nameLocations": [ + "392:5:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 52334, + "src": "392:5:58" + }, + "typeName": { + "id": 57739, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "402:5:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + { + "id": 57755, + "nodeType": "ModifierDefinition", + "src": "414:106:58", + "nodes": [], + "body": { + "id": 57754, + "nodeType": "Block", + "src": "449:71:58", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 57749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "467:14:58", + "subExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 57746, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57743, + "src": "468:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "473:6:58", + "memberName": "frozen", + "nodeType": "MemberAccess", + "referencedDeclaration": 45888, + "src": "468:11:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_bool_$", + "typeString": "function () external returns (bool)" + } + }, + "id": 57748, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "468:13:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a2066726f7a656e", + "id": 57750, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "483:18:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c72467bfc6dfde310a279a379910f4c1a33ce2a3d8d2778900a1bedeb89c892d", + "typeString": "literal_string \"IHandler: frozen\"" + }, + "value": "IHandler: frozen" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c72467bfc6dfde310a279a379910f4c1a33ce2a3d8d2778900a1bedeb89c892d", + "typeString": "literal_string \"IHandler: frozen\"" + } + ], + "id": 57745, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "459:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 57751, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "459:43:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57752, + "nodeType": "ExpressionStatement", + "src": "459:43:58" + }, + { + "id": 57753, + "nodeType": "PlaceholderStatement", + "src": "512:1:58" + } + ] + }, + "name": "notFrozen", + "nameLocation": "423:9:58", + "parameters": { + "id": 57744, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 57743, + "mutability": "mutable", + "name": "host", + "nameLocation": "443:4:58", + "nodeType": "VariableDeclaration", + "scope": 57755, + "src": "433:14:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + }, + "typeName": { + "id": 57742, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57741, + "name": "IIsmpHost", + "nameLocations": [ + "433:9:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 46055, + "src": "433:9:58" + }, + "referencedDeclaration": 46055, + "src": "433:9:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "visibility": "internal" + } + ], + "src": "432:16:58" + }, + "virtual": false, + "visibility": "internal" + }, + { + "id": 57758, + "nodeType": "VariableDeclaration", + "src": "584:136:58", + "nodes": [], + "constant": true, + "mutability": "constant", + "name": "REQUEST_COMMITMENT_STORAGE_PREFIX", + "nameLocation": "607:33:58", + "scope": 58678, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 57756, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "584:5:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": { + "hexValue": "103895530afb23bb607661426d55eb8b0484aecefe882c3ce64e6f82507f715a", + "id": 57757, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "hexString", + "lValueRequested": false, + "nodeType": "Literal", + "src": "651:69:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae8e891332e4319c3751b635138ff6585d50ee9e324bae8245877c5bdad3943c", + "typeString": "literal_string hex\"103895530afb23bb607661426d55eb8b0484aecefe882c3ce64e6f82507f715a\"" + } + }, + "visibility": "private" + }, + { + "id": 57764, + "nodeType": "EventDefinition", + "src": "727:66:58", + "nodes": [], + "anonymous": false, + "eventSelector": "f12a80290a43822c9acabb2a766d41728f06fe4c0497e4a7bb3f54292e4cb0da", + "name": "StateMachineUpdated", + "nameLocation": "733:19:58", + "parameters": { + "id": 57763, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 57760, + "indexed": false, + "mutability": "mutable", + "name": "stateMachineId", + "nameLocation": "761:14:58", + "nodeType": "VariableDeclaration", + "scope": 57764, + "src": "753:22:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57759, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "753:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57762, + "indexed": false, + "mutability": "mutable", + "name": "height", + "nameLocation": "785:6:58", + "nodeType": "VariableDeclaration", + "scope": 57764, + "src": "777:14:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57761, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "777:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "752:40:58" + } + }, + { + "id": 57896, + "nodeType": "FunctionDefinition", + "src": "931:1517:58", + "nodes": [], + "body": { + "id": 57895, + "nodeType": "Block", + "src": "1017:1431:58", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 57777, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57768, + "src": "1049:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1054:9:58", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45882, + "src": "1049:14:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () external returns (uint256)" + } + }, + "id": 57779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1049:16:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 57780, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57768, + "src": "1068:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1073:19:58", + "memberName": "consensusUpdateTime", + "nodeType": "MemberAccess", + "referencedDeclaration": 45919, + "src": "1068:24:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () external returns (uint256)" + } + }, + "id": 57782, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1068:26:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1049:45:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 57784, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1048:47:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 57785, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57768, + "src": "1098:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1103:15:58", + "memberName": "challengePeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 45969, + "src": "1098:20:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () external returns (uint256)" + } + }, + "id": 57787, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1098:22:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1048:72:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a207374696c6c20696e206368616c6c656e676520706572696f64", + "id": 57789, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1134:37:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f5082cb74f993b787a7585746b72947bebcf871ad1ca44b66287b84fa3fac9ca", + "typeString": "literal_string \"IHandler: still in challenge period\"" + }, + "value": "IHandler: still in challenge period" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f5082cb74f993b787a7585746b72947bebcf871ad1ca44b66287b84fa3fac9ca", + "typeString": "literal_string \"IHandler: still in challenge period\"" + } + ], + "id": 57776, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1027:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 57790, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1027:154:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57791, + "nodeType": "ExpressionStatement", + "src": "1027:154:58" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 57811, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57804, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57799, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 57793, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57768, + "src": "1262:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57794, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1267:9:58", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45882, + "src": "1262:14:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () external returns (uint256)" + } + }, + "id": 57795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1262:16:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 57796, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57768, + "src": "1281:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57797, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1286:19:58", + "memberName": "consensusUpdateTime", + "nodeType": "MemberAccess", + "referencedDeclaration": 45919, + "src": "1281:24:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () external returns (uint256)" + } + }, + "id": 57798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1281:26:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1262:45:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 57800, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1261:47:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 57801, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57768, + "src": "1311:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57802, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1316:15:58", + "memberName": "unStakingPeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 45975, + "src": "1311:20:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () external returns (uint256)" + } + }, + "id": 57803, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1311:22:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1261:72:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 57810, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 57805, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47455, + "src": "1337:10:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 57806, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1337:12:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 57807, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57768, + "src": "1353:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57808, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1358:5:58", + "memberName": "admin", + "nodeType": "MemberAccess", + "referencedDeclaration": 45870, + "src": "1353:10:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_address_$", + "typeString": "function () external returns (address)" + } + }, + "id": 57809, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1353:12:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1337:28:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1261:104:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a207374696c6c20696e206368616c6c656e676520706572696f64", + "id": 57812, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1379:37:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f5082cb74f993b787a7585746b72947bebcf871ad1ca44b66287b84fa3fac9ca", + "typeString": "literal_string \"IHandler: still in challenge period\"" + }, + "value": "IHandler: still in challenge period" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f5082cb74f993b787a7585746b72947bebcf871ad1ca44b66287b84fa3fac9ca", + "typeString": "literal_string \"IHandler: still in challenge period\"" + } + ], + "id": 57792, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1240:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 57813, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1240:186:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57814, + "nodeType": "ExpressionStatement", + "src": "1240:186:58" + }, + { + "assignments": [ + 57816, + 57819 + ], + "declarations": [ + { + "constant": false, + "id": 57816, + "mutability": "mutable", + "name": "verifiedState", + "nameLocation": "1451:13:58", + "nodeType": "VariableDeclaration", + "scope": 57895, + "src": "1438:26:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 57815, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1438:5:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57819, + "mutability": "mutable", + "name": "intermediate", + "nameLocation": "1491:12:58", + "nodeType": "VariableDeclaration", + "scope": 57895, + "src": "1466:37:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_memory_ptr", + "typeString": "struct IntermediateState" + }, + "typeName": { + "id": 57818, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57817, + "name": "IntermediateState", + "nameLocations": [ + "1466:17:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45360, + "src": "1466:17:58" + }, + "referencedDeclaration": 45360, + "src": "1466:17:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_storage_ptr", + "typeString": "struct IntermediateState" + } + }, + "visibility": "internal" + } + ], + "id": 57831, + "initialValue": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 57826, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57768, + "src": "1576:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57827, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1581:14:58", + "memberName": "consensusState", + "nodeType": "MemberAccess", + "referencedDeclaration": 45931, + "src": "1576:19:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () external returns (bytes memory)" + } + }, + "id": 57828, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1576:21:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 57829, + "name": "proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57770, + "src": "1599:5:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 57821, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57768, + "src": "1536:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1541:15:58", + "memberName": "consensusClient", + "nodeType": "MemberAccess", + "referencedDeclaration": 45913, + "src": "1536:20:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_address_$", + "typeString": "function () external returns (address)" + } + }, + "id": 57823, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1536:22:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 57820, + "name": "IConsensusClient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45374, + "src": "1519:16:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IConsensusClient_$45374_$", + "typeString": "type(contract IConsensusClient)" + } + }, + "id": 57824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1519:40:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IConsensusClient_$45374", + "typeString": "contract IConsensusClient" + } + }, + "id": 57825, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1560:15:58", + "memberName": "verifyConsensus", + "nodeType": "MemberAccess", + "referencedDeclaration": 45373, + "src": "1519:56:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_struct$_IntermediateState_$45360_memory_ptr_$", + "typeString": "function (bytes memory,bytes memory) external returns (bytes memory,struct IntermediateState memory)" + } + }, + "id": 57830, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1519:86:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_struct$_IntermediateState_$45360_memory_ptr_$", + "typeString": "tuple(bytes memory,struct IntermediateState memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1437:168:58" + }, + { + "expression": { + "arguments": [ + { + "id": 57835, + "name": "verifiedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57816, + "src": "1640:13:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 57832, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57768, + "src": "1615:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57834, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1620:19:58", + "memberName": "storeConsensusState", + "nodeType": "MemberAccess", + "referencedDeclaration": 45981, + "src": "1615:24:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes memory) external" + } + }, + "id": 57836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1615:39:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57837, + "nodeType": "ExpressionStatement", + "src": "1615:39:58" + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 57841, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57768, + "src": "1694:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57842, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1699:9:58", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45882, + "src": "1694:14:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () external returns (uint256)" + } + }, + "id": 57843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1694:16:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 57838, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57768, + "src": "1664:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1669:24:58", + "memberName": "storeConsensusUpdateTime", + "nodeType": "MemberAccess", + "referencedDeclaration": 45994, + "src": "1664:29:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 57844, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1664:47:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57845, + "nodeType": "ExpressionStatement", + "src": "1664:47:58" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57851, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 57846, + "name": "intermediate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57819, + "src": "1726:12:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_memory_ptr", + "typeString": "struct IntermediateState memory" + } + }, + "id": 57847, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1739:6:58", + "memberName": "height", + "nodeType": "MemberAccess", + "referencedDeclaration": 45356, + "src": "1726:19:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 57848, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57768, + "src": "1748:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57849, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1753:24:58", + "memberName": "latestStateMachineHeight", + "nodeType": "MemberAccess", + "referencedDeclaration": 45925, + "src": "1748:29:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () external returns (uint256)" + } + }, + "id": 57850, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1748:31:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1726:53:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 57894, + "nodeType": "IfStatement", + "src": "1722:720:58", + "trueBody": { + "id": 57893, + "nodeType": "Block", + "src": "1781:661:58", + "statements": [ + { + "assignments": [ + 57854 + ], + "declarations": [ + { + "constant": false, + "id": 57854, + "mutability": "mutable", + "name": "stateMachineHeight", + "nameLocation": "1821:18:58", + "nodeType": "VariableDeclaration", + "scope": 57893, + "src": "1795:44:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight" + }, + "typeName": { + "id": 57853, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57852, + "name": "StateMachineHeight", + "nameLocations": [ + "1795:18:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45352, + "src": "1795:18:58" + }, + "referencedDeclaration": 45352, + "src": "1795:18:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_storage_ptr", + "typeString": "struct StateMachineHeight" + } + }, + "visibility": "internal" + } + ], + "id": 57861, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 57856, + "name": "intermediate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57819, + "src": "1894:12:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_memory_ptr", + "typeString": "struct IntermediateState memory" + } + }, + "id": 57857, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1907:14:58", + "memberName": "stateMachineId", + "nodeType": "MemberAccess", + "referencedDeclaration": 45354, + "src": "1894:27:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 57858, + "name": "intermediate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57819, + "src": "1931:12:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_memory_ptr", + "typeString": "struct IntermediateState memory" + } + }, + "id": 57859, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1944:6:58", + "memberName": "height", + "nodeType": "MemberAccess", + "referencedDeclaration": 45356, + "src": "1931:19:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 57855, + "name": "StateMachineHeight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45352, + "src": "1858:18:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_StateMachineHeight_$45352_storage_ptr_$", + "typeString": "type(struct StateMachineHeight storage pointer)" + } + }, + "id": 57860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [ + "1878:14:58", + "1923:6:58" + ], + "names": [ + "stateMachineId", + "height" + ], + "nodeType": "FunctionCall", + "src": "1858:94:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1795:157:58" + }, + { + "expression": { + "arguments": [ + { + "id": 57865, + "name": "stateMachineHeight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57854, + "src": "1999:18:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + }, + { + "expression": { + "id": 57866, + "name": "intermediate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57819, + "src": "2019:12:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_memory_ptr", + "typeString": "struct IntermediateState memory" + } + }, + "id": 57867, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2032:10:58", + "memberName": "commitment", + "nodeType": "MemberAccess", + "referencedDeclaration": 45359, + "src": "2019:23:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateCommitment_$45347_memory_ptr", + "typeString": "struct StateCommitment memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + }, + { + "typeIdentifier": "t_struct$_StateCommitment_$45347_memory_ptr", + "typeString": "struct StateCommitment memory" + } + ], + "expression": { + "id": 57862, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57768, + "src": "1966:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57864, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1971:27:58", + "memberName": "storeStateMachineCommitment", + "nodeType": "MemberAccess", + "referencedDeclaration": 46010, + "src": "1966:32:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_struct$_StateMachineHeight_$45352_memory_ptr_$_t_struct$_StateCommitment_$45347_memory_ptr_$returns$__$", + "typeString": "function (struct StateMachineHeight memory,struct StateCommitment memory) external" + } + }, + "id": 57868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1966:77:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57869, + "nodeType": "ExpressionStatement", + "src": "1966:77:58" + }, + { + "expression": { + "arguments": [ + { + "id": 57873, + "name": "stateMachineHeight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57854, + "src": "2100:18:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 57874, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57768, + "src": "2120:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57875, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2125:9:58", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45882, + "src": "2120:14:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () external returns (uint256)" + } + }, + "id": 57876, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2120:16:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 57870, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57768, + "src": "2057:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57872, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2062:37:58", + "memberName": "storeStateMachineCommitmentUpdateTime", + "nodeType": "MemberAccess", + "referencedDeclaration": 46019, + "src": "2057:42:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_struct$_StateMachineHeight_$45352_memory_ptr_$_t_uint256_$returns$__$", + "typeString": "function (struct StateMachineHeight memory,uint256) external" + } + }, + "id": 57877, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2057:80:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57878, + "nodeType": "ExpressionStatement", + "src": "2057:80:58" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 57882, + "name": "stateMachineHeight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57854, + "src": "2186:18:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + }, + "id": 57883, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2205:6:58", + "memberName": "height", + "nodeType": "MemberAccess", + "referencedDeclaration": 45351, + "src": "2186:25:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 57879, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57768, + "src": "2151:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57881, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2156:29:58", + "memberName": "storeLatestStateMachineHeight", + "nodeType": "MemberAccess", + "referencedDeclaration": 46000, + "src": "2151:34:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 57884, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2151:61:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57885, + "nodeType": "ExpressionStatement", + "src": "2151:61:58" + }, + { + "eventCall": { + "arguments": [ + { + "expression": { + "id": 57887, + "name": "stateMachineHeight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57854, + "src": "2332:18:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + }, + "id": 57888, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2351:14:58", + "memberName": "stateMachineId", + "nodeType": "MemberAccess", + "referencedDeclaration": 45349, + "src": "2332:33:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 57889, + "name": "stateMachineHeight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57854, + "src": "2391:18:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + }, + "id": 57890, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2410:6:58", + "memberName": "height", + "nodeType": "MemberAccess", + "referencedDeclaration": 45351, + "src": "2391:25:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 57886, + "name": "StateMachineUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57764, + "src": "2278:19:58", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256)" + } + }, + "id": 57891, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [ + "2316:14:58", + "2383:6:58" + ], + "names": [ + "stateMachineId", + "height" + ], + "nodeType": "FunctionCall", + "src": "2278:153:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57892, + "nodeType": "EmitStatement", + "src": "2273:158:58" + } + ] + } + } + ] + }, + "baseFunctions": [ + 45387 + ], + "documentation": { + "id": 57765, + "nodeType": "StructuredDocumentation", + "src": "799:127:58", + "text": " @dev Handle incoming consensus messages\n @param host - Ismp host\n @param proof - consensus proof" + }, + "functionSelector": "bb1689be", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 57773, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57768, + "src": "1011:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + } + ], + "id": 57774, + "kind": "modifierInvocation", + "modifierName": { + "id": 57772, + "name": "notFrozen", + "nameLocations": [ + "1001:9:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57755, + "src": "1001:9:58" + }, + "nodeType": "ModifierInvocation", + "src": "1001:15:58" + } + ], + "name": "handleConsensus", + "nameLocation": "940:15:58", + "parameters": { + "id": 57771, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 57768, + "mutability": "mutable", + "name": "host", + "nameLocation": "966:4:58", + "nodeType": "VariableDeclaration", + "scope": 57896, + "src": "956:14:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + }, + "typeName": { + "id": 57767, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57766, + "name": "IIsmpHost", + "nameLocations": [ + "956:9:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 46055, + "src": "956:9:58" + }, + "referencedDeclaration": 46055, + "src": "956:9:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57770, + "mutability": "mutable", + "name": "proof", + "nameLocation": "985:5:58", + "nodeType": "VariableDeclaration", + "scope": 57896, + "src": "972:18:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 57769, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "972:5:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "955:36:58" + }, + "returnParameters": { + "id": 57775, + "nodeType": "ParameterList", + "parameters": [], + "src": "1017:0:58" + }, + "scope": 58678, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 58090, + "nodeType": "FunctionDefinition", + "src": "2646:1577:58", + "nodes": [], + "body": { + "id": 58089, + "nodeType": "Block", + "src": "2750:1473:58", + "nodes": [], + "statements": [ + { + "assignments": [ + 57910 + ], + "declarations": [ + { + "constant": false, + "id": 57910, + "mutability": "mutable", + "name": "delay", + "nameLocation": "2768:5:58", + "nodeType": "VariableDeclaration", + "scope": 58089, + "src": "2760:13:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57909, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2760:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 57921, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57920, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 57911, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57900, + "src": "2776:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2781:9:58", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45882, + "src": "2776:14:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () external returns (uint256)" + } + }, + "id": 57913, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2776:16:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "arguments": [ + { + "expression": { + "expression": { + "id": 57916, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57903, + "src": "2833:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestMessage_$45525_memory_ptr", + "typeString": "struct PostRequestMessage memory" + } + }, + "id": 57917, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2841:5:58", + "memberName": "proof", + "nodeType": "MemberAccess", + "referencedDeclaration": 45520, + "src": "2833:13:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proof_$45517_memory_ptr", + "typeString": "struct Proof memory" + } + }, + "id": 57918, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2847:6:58", + "memberName": "height", + "nodeType": "MemberAccess", + "referencedDeclaration": 45511, + "src": "2833:20:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + ], + "expression": { + "id": 57914, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57900, + "src": "2795:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57915, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2800:32:58", + "memberName": "stateMachineCommitmentUpdateTime", + "nodeType": "MemberAccess", + "referencedDeclaration": 45907, + "src": "2795:37:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_struct$_StateMachineHeight_$45352_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (struct StateMachineHeight memory) external returns (uint256)" + } + }, + "id": 57919, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2795:59:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2776:78:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2760:94:58" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57927, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 57923, + "name": "delay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57910, + "src": "2872:5:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 57924, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57900, + "src": "2880:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2885:15:58", + "memberName": "challengePeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 45969, + "src": "2880:20:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () external returns (uint256)" + } + }, + "id": 57926, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2880:22:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2872:30:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a207374696c6c20696e206368616c6c656e676520706572696f64", + "id": 57928, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2904:37:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f5082cb74f993b787a7585746b72947bebcf871ad1ca44b66287b84fa3fac9ca", + "typeString": "literal_string \"IHandler: still in challenge period\"" + }, + "value": "IHandler: still in challenge period" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f5082cb74f993b787a7585746b72947bebcf871ad1ca44b66287b84fa3fac9ca", + "typeString": "literal_string \"IHandler: still in challenge period\"" + } + ], + "id": 57922, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2864:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 57929, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2864:78:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57930, + "nodeType": "ExpressionStatement", + "src": "2864:78:58" + }, + { + "assignments": [ + 57932 + ], + "declarations": [ + { + "constant": false, + "id": 57932, + "mutability": "mutable", + "name": "requestsLen", + "nameLocation": "2961:11:58", + "nodeType": "VariableDeclaration", + "scope": 58089, + "src": "2953:19:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57931, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2953:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 57936, + "initialValue": { + "expression": { + "expression": { + "id": 57933, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57903, + "src": "2975:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestMessage_$45525_memory_ptr", + "typeString": "struct PostRequestMessage memory" + } + }, + "id": 57934, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2983:8:58", + "memberName": "requests", + "nodeType": "MemberAccess", + "referencedDeclaration": 45524, + "src": "2975:16:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_PostRequestLeaf_$45500_memory_ptr_$dyn_memory_ptr", + "typeString": "struct PostRequestLeaf memory[] memory" + } + }, + "id": 57935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2992:6:58", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2975:23:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2953:45:58" + }, + { + "assignments": [ + 57941 + ], + "declarations": [ + { + "constant": false, + "id": 57941, + "mutability": "mutable", + "name": "leaves", + "nameLocation": "3025:6:58", + "nodeType": "VariableDeclaration", + "scope": 58089, + "src": "3008:23:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$49129_memory_ptr_$dyn_memory_ptr", + "typeString": "struct MmrLeaf[]" + }, + "typeName": { + "baseType": { + "id": 57939, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57938, + "name": "MmrLeaf", + "nameLocations": [ + "3008:7:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49129, + "src": "3008:7:58" + }, + "referencedDeclaration": 49129, + "src": "3008:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MmrLeaf_$49129_storage_ptr", + "typeString": "struct MmrLeaf" + } + }, + "id": 57940, + "nodeType": "ArrayTypeName", + "src": "3008:9:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$49129_storage_$dyn_storage_ptr", + "typeString": "struct MmrLeaf[]" + } + }, + "visibility": "internal" + } + ], + "id": 57948, + "initialValue": { + "arguments": [ + { + "id": 57946, + "name": "requestsLen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57932, + "src": "3048:11:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 57945, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "3034:13:58", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_MmrLeaf_$49129_memory_ptr_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (struct MmrLeaf memory[] memory)" + }, + "typeName": { + "baseType": { + "id": 57943, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57942, + "name": "MmrLeaf", + "nameLocations": [ + "3038:7:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49129, + "src": "3038:7:58" + }, + "referencedDeclaration": 49129, + "src": "3038:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MmrLeaf_$49129_storage_ptr", + "typeString": "struct MmrLeaf" + } + }, + "id": 57944, + "nodeType": "ArrayTypeName", + "src": "3038:9:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$49129_storage_$dyn_storage_ptr", + "typeString": "struct MmrLeaf[]" + } + } + }, + "id": 57947, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3034:26:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$49129_memory_ptr_$dyn_memory_ptr", + "typeString": "struct MmrLeaf memory[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3008:52:58" + }, + { + "body": { + "id": 58025, + "nodeType": "Block", + "src": "3113:582:58", + "statements": [ + { + "assignments": [ + 57961 + ], + "declarations": [ + { + "constant": false, + "id": 57961, + "mutability": "mutable", + "name": "leaf", + "nameLocation": "3150:4:58", + "nodeType": "VariableDeclaration", + "scope": 58025, + "src": "3127:27:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestLeaf_$45500_memory_ptr", + "typeString": "struct PostRequestLeaf" + }, + "typeName": { + "id": 57960, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57959, + "name": "PostRequestLeaf", + "nameLocations": [ + "3127:15:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45500, + "src": "3127:15:58" + }, + "referencedDeclaration": 45500, + "src": "3127:15:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestLeaf_$45500_storage_ptr", + "typeString": "struct PostRequestLeaf" + } + }, + "visibility": "internal" + } + ], + "id": 57966, + "initialValue": { + "baseExpression": { + "expression": { + "id": 57962, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57903, + "src": "3157:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestMessage_$45525_memory_ptr", + "typeString": "struct PostRequestMessage memory" + } + }, + "id": 57963, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3165:8:58", + "memberName": "requests", + "nodeType": "MemberAccess", + "referencedDeclaration": 45524, + "src": "3157:16:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_PostRequestLeaf_$45500_memory_ptr_$dyn_memory_ptr", + "typeString": "struct PostRequestLeaf memory[] memory" + } + }, + "id": 57965, + "indexExpression": { + "id": 57964, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57950, + "src": "3174:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3157:19:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestLeaf_$45500_memory_ptr", + "typeString": "struct PostRequestLeaf memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3127:49:58" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 57972, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57900, + "src": "3224:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57973, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3229:4:58", + "memberName": "host", + "nodeType": "MemberAccess", + "referencedDeclaration": 45876, + "src": "3224:9:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () external returns (bytes memory)" + } + }, + "id": 57974, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3224:11:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "expression": { + "expression": { + "id": 57968, + "name": "leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57961, + "src": "3199:4:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestLeaf_$45500_memory_ptr", + "typeString": "struct PostRequestLeaf memory" + } + }, + "id": 57969, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3204:7:58", + "memberName": "request", + "nodeType": "MemberAccess", + "referencedDeclaration": 45495, + "src": "3199:12:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequest_$45460_memory_ptr", + "typeString": "struct PostRequest memory" + } + }, + "id": 57970, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3212:4:58", + "memberName": "dest", + "nodeType": "MemberAccess", + "referencedDeclaration": 45447, + "src": "3199:17:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 57971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3217:6:58", + "memberName": "equals", + "nodeType": "MemberAccess", + "referencedDeclaration": 51729, + "src": "3199:24:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,bytes memory) pure returns (bool)" + } + }, + "id": 57975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3199:37:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a20496e76616c696420726571756573742064657374696e6174696f6e", + "id": 57976, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3238:39:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_21539d3b18e370f58255389901e47ebe390ea5c046a56f3bbc69545937f17663", + "typeString": "literal_string \"IHandler: Invalid request destination\"" + }, + "value": "IHandler: Invalid request destination" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_21539d3b18e370f58255389901e47ebe390ea5c046a56f3bbc69545937f17663", + "typeString": "literal_string \"IHandler: Invalid request destination\"" + } + ], + "id": 57967, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3191:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 57977, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3191:87:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57978, + "nodeType": "ExpressionStatement", + "src": "3191:87:58" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 57992, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 57984, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 57980, + "name": "leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57961, + "src": "3317:4:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestLeaf_$45500_memory_ptr", + "typeString": "struct PostRequestLeaf memory" + } + }, + "id": 57981, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3322:7:58", + "memberName": "request", + "nodeType": "MemberAccess", + "referencedDeclaration": 45495, + "src": "3317:12:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequest_$45460_memory_ptr", + "typeString": "struct PostRequest memory" + } + }, + "id": 57982, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3330:16:58", + "memberName": "timeoutTimestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45455, + "src": "3317:29:58", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 57983, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3350:1:58", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3317:34:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57991, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 57985, + "name": "leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57961, + "src": "3355:4:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestLeaf_$45500_memory_ptr", + "typeString": "struct PostRequestLeaf memory" + } + }, + "id": 57986, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3360:7:58", + "memberName": "request", + "nodeType": "MemberAccess", + "referencedDeclaration": 45495, + "src": "3355:12:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequest_$45460_memory_ptr", + "typeString": "struct PostRequest memory" + } + }, + "id": 57987, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3368:16:58", + "memberName": "timeoutTimestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45455, + "src": "3355:29:58", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 57988, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57900, + "src": "3387:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57989, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3392:9:58", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45882, + "src": "3387:14:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () external returns (uint256)" + } + }, + "id": 57990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3387:16:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3355:48:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3317:86:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a20526571756573742074696d6564206f7574", + "id": 57993, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3421:29:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f71c355704d13cf7da4d6cbf6d03698d934cb2ebe2912c61da5af509fb2c46cb", + "typeString": "literal_string \"IHandler: Request timed out\"" + }, + "value": "IHandler: Request timed out" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f71c355704d13cf7da4d6cbf6d03698d934cb2ebe2912c61da5af509fb2c46cb", + "typeString": "literal_string \"IHandler: Request timed out\"" + } + ], + "id": 57979, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3292:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 57994, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3292:172:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57995, + "nodeType": "ExpressionStatement", + "src": "3292:172:58" + }, + { + "assignments": [ + 57997 + ], + "declarations": [ + { + "constant": false, + "id": 57997, + "mutability": "mutable", + "name": "commitment", + "nameLocation": "3487:10:58", + "nodeType": "VariableDeclaration", + "scope": 58025, + "src": "3479:18:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 57996, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3479:7:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 58003, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 58000, + "name": "leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57961, + "src": "3513:4:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestLeaf_$45500_memory_ptr", + "typeString": "struct PostRequestLeaf memory" + } + }, + "id": 58001, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3518:7:58", + "memberName": "request", + "nodeType": "MemberAccess", + "referencedDeclaration": 45495, + "src": "3513:12:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequest_$45460_memory_ptr", + "typeString": "struct PostRequest memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_PostRequest_$45460_memory_ptr", + "typeString": "struct PostRequest memory" + } + ], + "expression": { + "id": 57998, + "name": "Message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45837, + "src": "3500:7:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Message_$45837_$", + "typeString": "type(library Message)" + } + }, + "id": 57999, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3508:4:58", + "memberName": "hash", + "nodeType": "MemberAccess", + "referencedDeclaration": 45678, + "src": "3500:12:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_PostRequest_$45460_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (struct PostRequest memory) pure returns (bytes32)" + } + }, + "id": 58002, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3500:26:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3479:47:58" + }, + { + "expression": { + "arguments": [ + { + "id": 58009, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "3548:33:58", + "subExpression": { + "arguments": [ + { + "id": 58007, + "name": "commitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57997, + "src": "3570:10:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 58005, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57900, + "src": "3549:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58006, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3554:15:58", + "memberName": "requestReceipts", + "nodeType": "MemberAccess", + "referencedDeclaration": 45939, + "src": "3549:20:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes32) external returns (bool)" + } + }, + "id": 58008, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3549:32:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a204475706c69636174652072657175657374", + "id": 58010, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3583:29:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2efc0d330f1c32ab3ea75b0864b08313893e422cd37294a2cbf22990013ffac1", + "typeString": "literal_string \"IHandler: Duplicate request\"" + }, + "value": "IHandler: Duplicate request" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2efc0d330f1c32ab3ea75b0864b08313893e422cd37294a2cbf22990013ffac1", + "typeString": "literal_string \"IHandler: Duplicate request\"" + } + ], + "id": 58004, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3540:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58011, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3540:73:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58012, + "nodeType": "ExpressionStatement", + "src": "3540:73:58" + }, + { + "expression": { + "id": 58023, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 58013, + "name": "leaves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57941, + "src": "3628:6:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$49129_memory_ptr_$dyn_memory_ptr", + "typeString": "struct MmrLeaf memory[] memory" + } + }, + "id": 58015, + "indexExpression": { + "id": 58014, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57950, + "src": "3635:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3628:9:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MmrLeaf_$49129_memory_ptr", + "typeString": "struct MmrLeaf memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "id": 58017, + "name": "leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57961, + "src": "3648:4:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestLeaf_$45500_memory_ptr", + "typeString": "struct PostRequestLeaf memory" + } + }, + "id": 58018, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3653:6:58", + "memberName": "kIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 45499, + "src": "3648:11:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 58019, + "name": "leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57961, + "src": "3661:4:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestLeaf_$45500_memory_ptr", + "typeString": "struct PostRequestLeaf memory" + } + }, + "id": 58020, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3666:5:58", + "memberName": "index", + "nodeType": "MemberAccess", + "referencedDeclaration": 45497, + "src": "3661:10:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 58021, + "name": "commitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57997, + "src": "3673:10:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 58016, + "name": "MmrLeaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49129, + "src": "3640:7:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_MmrLeaf_$49129_storage_ptr_$", + "typeString": "type(struct MmrLeaf storage pointer)" + } + }, + "id": 58022, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3640:44:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_MmrLeaf_$49129_memory_ptr", + "typeString": "struct MmrLeaf memory" + } + }, + "src": "3628:56:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MmrLeaf_$49129_memory_ptr", + "typeString": "struct MmrLeaf memory" + } + }, + "id": 58024, + "nodeType": "ExpressionStatement", + "src": "3628:56:58" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57955, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 57953, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57950, + "src": "3091:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 57954, + "name": "requestsLen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57932, + "src": "3095:11:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3091:15:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 58026, + "initializationExpression": { + "assignments": [ + 57950 + ], + "declarations": [ + { + "constant": false, + "id": 57950, + "mutability": "mutable", + "name": "i", + "nameLocation": "3084:1:58", + "nodeType": "VariableDeclaration", + "scope": 58026, + "src": "3076:9:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57949, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3076:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 57952, + "initialValue": { + "hexValue": "30", + "id": 57951, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3088:1:58", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "3076:13:58" + }, + "loopExpression": { + "expression": { + "id": 57957, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3108:3:58", + "subExpression": { + "id": 57956, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57950, + "src": "3108:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 57958, + "nodeType": "ExpressionStatement", + "src": "3108:3:58" + }, + "nodeType": "ForStatement", + "src": "3071:624:58" + }, + { + "assignments": [ + 58028 + ], + "declarations": [ + { + "constant": false, + "id": 58028, + "mutability": "mutable", + "name": "root", + "nameLocation": "3713:4:58", + "nodeType": "VariableDeclaration", + "scope": 58089, + "src": "3705:12:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 58027, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3705:7:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 58036, + "initialValue": { + "expression": { + "arguments": [ + { + "expression": { + "expression": { + "id": 58031, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57903, + "src": "3748:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestMessage_$45525_memory_ptr", + "typeString": "struct PostRequestMessage memory" + } + }, + "id": 58032, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3756:5:58", + "memberName": "proof", + "nodeType": "MemberAccess", + "referencedDeclaration": 45520, + "src": "3748:13:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proof_$45517_memory_ptr", + "typeString": "struct Proof memory" + } + }, + "id": 58033, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3762:6:58", + "memberName": "height", + "nodeType": "MemberAccess", + "referencedDeclaration": 45511, + "src": "3748:20:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + ], + "expression": { + "id": 58029, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57900, + "src": "3720:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58030, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3725:22:58", + "memberName": "stateMachineCommitment", + "nodeType": "MemberAccess", + "referencedDeclaration": 45898, + "src": "3720:27:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_struct$_StateMachineHeight_$45352_memory_ptr_$returns$_t_struct$_StateCommitment_$45347_memory_ptr_$", + "typeString": "function (struct StateMachineHeight memory) external returns (struct StateCommitment memory)" + } + }, + "id": 58034, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3720:49:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateCommitment_$45347_memory_ptr", + "typeString": "struct StateCommitment memory" + } + }, + "id": 58035, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3770:11:58", + "memberName": "overlayRoot", + "nodeType": "MemberAccess", + "referencedDeclaration": 45344, + "src": "3720:61:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3705:76:58" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 58043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 58038, + "name": "root", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58028, + "src": "3800:4:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 58041, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3816:1:58", + "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": 58040, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3808:7:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 58039, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3808:7:58", + "typeDescriptions": {} + } + }, + "id": 58042, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3808:10:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3800:18:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a2050726f6f6620686569676874206e6f7420666f756e6421", + "id": 58044, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3820:35:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_eb4f31515693928b53012cedc95045735db2c103e6bb9ff528968685dcec5221", + "typeString": "literal_string \"IHandler: Proof height not found!\"" + }, + "value": "IHandler: Proof height not found!" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_eb4f31515693928b53012cedc95045735db2c103e6bb9ff528968685dcec5221", + "typeString": "literal_string \"IHandler: Proof height not found!\"" + } + ], + "id": 58037, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3792:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58045, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3792:64:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58046, + "nodeType": "ExpressionStatement", + "src": "3792:64:58" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 58050, + "name": "root", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58028, + "src": "3919:4:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "expression": { + "id": 58051, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57903, + "src": "3925:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestMessage_$45525_memory_ptr", + "typeString": "struct PostRequestMessage memory" + } + }, + "id": 58052, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3933:5:58", + "memberName": "proof", + "nodeType": "MemberAccess", + "referencedDeclaration": 45520, + "src": "3925:13:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proof_$45517_memory_ptr", + "typeString": "struct Proof memory" + } + }, + "id": 58053, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3939:10:58", + "memberName": "multiproof", + "nodeType": "MemberAccess", + "referencedDeclaration": 45514, + "src": "3925:24:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + { + "id": 58054, + "name": "leaves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57941, + "src": "3951:6:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$49129_memory_ptr_$dyn_memory_ptr", + "typeString": "struct MmrLeaf memory[] memory" + } + }, + { + "expression": { + "expression": { + "id": 58055, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57903, + "src": "3959:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestMessage_$45525_memory_ptr", + "typeString": "struct PostRequestMessage memory" + } + }, + "id": 58056, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3967:5:58", + "memberName": "proof", + "nodeType": "MemberAccess", + "referencedDeclaration": 45520, + "src": "3959:13:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proof_$45517_memory_ptr", + "typeString": "struct Proof memory" + } + }, + "id": 58057, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3973:9:58", + "memberName": "leafCount", + "nodeType": "MemberAccess", + "referencedDeclaration": 45516, + "src": "3959:23:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + }, + { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$49129_memory_ptr_$dyn_memory_ptr", + "typeString": "struct MmrLeaf memory[] memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 58048, + "name": "MerkleMountainRange", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50178, + "src": "3887:19:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MerkleMountainRange_$50178_$", + "typeString": "type(library MerkleMountainRange)" + } + }, + "id": 58049, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3907:11:58", + "memberName": "VerifyProof", + "nodeType": "MemberAccess", + "referencedDeclaration": 49162, + "src": "3887:31:58", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_bytes32_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_struct$_MmrLeaf_$49129_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes32[] memory,struct MmrLeaf memory[] memory,uint256) pure returns (bool)" + } + }, + "id": 58058, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3887:96:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a20496e76616c696420726571756573742070726f6f6673", + "id": 58059, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3997:34:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4f0642153714575723293deeb3762ca5773b552737d5c6484274cb7cd98f157e", + "typeString": "literal_string \"IHandler: Invalid request proofs\"" + }, + "value": "IHandler: Invalid request proofs" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4f0642153714575723293deeb3762ca5773b552737d5c6484274cb7cd98f157e", + "typeString": "literal_string \"IHandler: Invalid request proofs\"" + } + ], + "id": 58047, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3866:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58060, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3866:175:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58061, + "nodeType": "ExpressionStatement", + "src": "3866:175:58" + }, + { + "body": { + "id": 58087, + "nodeType": "Block", + "src": "4094:123:58", + "statements": [ + { + "assignments": [ + 58074 + ], + "declarations": [ + { + "constant": false, + "id": 58074, + "mutability": "mutable", + "name": "leaf", + "nameLocation": "4131:4:58", + "nodeType": "VariableDeclaration", + "scope": 58087, + "src": "4108:27:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestLeaf_$45500_memory_ptr", + "typeString": "struct PostRequestLeaf" + }, + "typeName": { + "id": 58073, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58072, + "name": "PostRequestLeaf", + "nameLocations": [ + "4108:15:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45500, + "src": "4108:15:58" + }, + "referencedDeclaration": 45500, + "src": "4108:15:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestLeaf_$45500_storage_ptr", + "typeString": "struct PostRequestLeaf" + } + }, + "visibility": "internal" + } + ], + "id": 58079, + "initialValue": { + "baseExpression": { + "expression": { + "id": 58075, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57903, + "src": "4138:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestMessage_$45525_memory_ptr", + "typeString": "struct PostRequestMessage memory" + } + }, + "id": 58076, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4146:8:58", + "memberName": "requests", + "nodeType": "MemberAccess", + "referencedDeclaration": 45524, + "src": "4138:16:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_PostRequestLeaf_$45500_memory_ptr_$dyn_memory_ptr", + "typeString": "struct PostRequestLeaf memory[] memory" + } + }, + "id": 58078, + "indexExpression": { + "id": 58077, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58063, + "src": "4155:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4138:19:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestLeaf_$45500_memory_ptr", + "typeString": "struct PostRequestLeaf memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4108:49:58" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 58083, + "name": "leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58074, + "src": "4193:4:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestLeaf_$45500_memory_ptr", + "typeString": "struct PostRequestLeaf memory" + } + }, + "id": 58084, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4198:7:58", + "memberName": "request", + "nodeType": "MemberAccess", + "referencedDeclaration": 45495, + "src": "4193:12:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequest_$45460_memory_ptr", + "typeString": "struct PostRequest memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_PostRequest_$45460_memory_ptr", + "typeString": "struct PostRequest memory" + } + ], + "expression": { + "id": 58080, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57900, + "src": "4171:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58082, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4176:16:58", + "memberName": "dispatchIncoming", + "nodeType": "MemberAccess", + "referencedDeclaration": 46026, + "src": "4171:21:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_struct$_PostRequest_$45460_memory_ptr_$returns$__$", + "typeString": "function (struct PostRequest memory) external" + } + }, + "id": 58085, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4171:35:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58086, + "nodeType": "ExpressionStatement", + "src": "4171:35:58" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58068, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 58066, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58063, + "src": "4072:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 58067, + "name": "requestsLen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57932, + "src": "4076:11:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4072:15:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 58088, + "initializationExpression": { + "assignments": [ + 58063 + ], + "declarations": [ + { + "constant": false, + "id": 58063, + "mutability": "mutable", + "name": "i", + "nameLocation": "4065:1:58", + "nodeType": "VariableDeclaration", + "scope": 58088, + "src": "4057:9:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58062, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4057:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 58065, + "initialValue": { + "hexValue": "30", + "id": 58064, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4069:1:58", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "4057:13:58" + }, + "loopExpression": { + "expression": { + "id": 58070, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "4089:3:58", + "subExpression": { + "id": 58069, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58063, + "src": "4089:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 58071, + "nodeType": "ExpressionStatement", + "src": "4089:3:58" + }, + "nodeType": "ForStatement", + "src": "4052:165:58" + } + ] + }, + "baseFunctions": [ + 45397 + ], + "documentation": { + "id": 57897, + "nodeType": "StructuredDocumentation", + "src": "2454:187:58", + "text": " @dev check request proofs, message delay and timeouts, then dispatch post requests to modules\n @param host - Ismp host\n @param request - batch post requests" + }, + "functionSelector": "fda626c3", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 57906, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57900, + "src": "2744:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + } + ], + "id": 57907, + "kind": "modifierInvocation", + "modifierName": { + "id": 57905, + "name": "notFrozen", + "nameLocations": [ + "2734:9:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57755, + "src": "2734:9:58" + }, + "nodeType": "ModifierInvocation", + "src": "2734:15:58" + } + ], + "name": "handlePostRequests", + "nameLocation": "2655:18:58", + "parameters": { + "id": 57904, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 57900, + "mutability": "mutable", + "name": "host", + "nameLocation": "2684:4:58", + "nodeType": "VariableDeclaration", + "scope": 58090, + "src": "2674:14:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + }, + "typeName": { + "id": 57899, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57898, + "name": "IIsmpHost", + "nameLocations": [ + "2674:9:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 46055, + "src": "2674:9:58" + }, + "referencedDeclaration": 46055, + "src": "2674:9:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57903, + "mutability": "mutable", + "name": "request", + "nameLocation": "2716:7:58", + "nodeType": "VariableDeclaration", + "scope": 58090, + "src": "2690:33:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestMessage_$45525_memory_ptr", + "typeString": "struct PostRequestMessage" + }, + "typeName": { + "id": 57902, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57901, + "name": "PostRequestMessage", + "nameLocations": [ + "2690:18:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45525, + "src": "2690:18:58" + }, + "referencedDeclaration": 45525, + "src": "2690:18:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestMessage_$45525_storage_ptr", + "typeString": "struct PostRequestMessage" + } + }, + "visibility": "internal" + } + ], + "src": "2673:51:58" + }, + "returnParameters": { + "id": 57908, + "nodeType": "ParameterList", + "parameters": [], + "src": "2750:0:58" + }, + "scope": 58678, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 58285, + "nodeType": "FunctionDefinition", + "src": "4425:1642:58", + "nodes": [], + "body": { + "id": 58284, + "nodeType": "Block", + "src": "4532:1535:58", + "nodes": [], + "statements": [ + { + "assignments": [ + 58104 + ], + "declarations": [ + { + "constant": false, + "id": 58104, + "mutability": "mutable", + "name": "delay", + "nameLocation": "4550:5:58", + "nodeType": "VariableDeclaration", + "scope": 58284, + "src": "4542:13:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58103, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4542:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 58115, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 58105, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58094, + "src": "4558:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58106, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4563:9:58", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45882, + "src": "4558:14:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () external returns (uint256)" + } + }, + "id": 58107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4558:16:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "arguments": [ + { + "expression": { + "expression": { + "id": 58110, + "name": "response", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58097, + "src": "4615:8:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseMessage_$45564_memory_ptr", + "typeString": "struct PostResponseMessage memory" + } + }, + "id": 58111, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4624:5:58", + "memberName": "proof", + "nodeType": "MemberAccess", + "referencedDeclaration": 45559, + "src": "4615:14:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proof_$45517_memory_ptr", + "typeString": "struct Proof memory" + } + }, + "id": 58112, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4630:6:58", + "memberName": "height", + "nodeType": "MemberAccess", + "referencedDeclaration": 45511, + "src": "4615:21:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + ], + "expression": { + "id": 58108, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58094, + "src": "4577:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4582:32:58", + "memberName": "stateMachineCommitmentUpdateTime", + "nodeType": "MemberAccess", + "referencedDeclaration": 45907, + "src": "4577:37:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_struct$_StateMachineHeight_$45352_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (struct StateMachineHeight memory) external returns (uint256)" + } + }, + "id": 58113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4577:60:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4558:79:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4542:95:58" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 58117, + "name": "delay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58104, + "src": "4655:5:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 58118, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58094, + "src": "4663:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4668:15:58", + "memberName": "challengePeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 45969, + "src": "4663:20:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () external returns (uint256)" + } + }, + "id": 58120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4663:22:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4655:30:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a207374696c6c20696e206368616c6c656e676520706572696f64", + "id": 58122, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4687:37:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f5082cb74f993b787a7585746b72947bebcf871ad1ca44b66287b84fa3fac9ca", + "typeString": "literal_string \"IHandler: still in challenge period\"" + }, + "value": "IHandler: still in challenge period" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f5082cb74f993b787a7585746b72947bebcf871ad1ca44b66287b84fa3fac9ca", + "typeString": "literal_string \"IHandler: still in challenge period\"" + } + ], + "id": 58116, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4647:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4647:78:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58124, + "nodeType": "ExpressionStatement", + "src": "4647:78:58" + }, + { + "assignments": [ + 58126 + ], + "declarations": [ + { + "constant": false, + "id": 58126, + "mutability": "mutable", + "name": "responsesLength", + "nameLocation": "4744:15:58", + "nodeType": "VariableDeclaration", + "scope": 58284, + "src": "4736:23:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58125, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4736:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 58130, + "initialValue": { + "expression": { + "expression": { + "id": 58127, + "name": "response", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58097, + "src": "4762:8:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseMessage_$45564_memory_ptr", + "typeString": "struct PostResponseMessage memory" + } + }, + "id": 58128, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4771:9:58", + "memberName": "responses", + "nodeType": "MemberAccess", + "referencedDeclaration": 45563, + "src": "4762:18:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_PostResponseLeaf_$45508_memory_ptr_$dyn_memory_ptr", + "typeString": "struct PostResponseLeaf memory[] memory" + } + }, + "id": 58129, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4781:6:58", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4762:25:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4736:51:58" + }, + { + "assignments": [ + 58135 + ], + "declarations": [ + { + "constant": false, + "id": 58135, + "mutability": "mutable", + "name": "leaves", + "nameLocation": "4814:6:58", + "nodeType": "VariableDeclaration", + "scope": 58284, + "src": "4797:23:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$49129_memory_ptr_$dyn_memory_ptr", + "typeString": "struct MmrLeaf[]" + }, + "typeName": { + "baseType": { + "id": 58133, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58132, + "name": "MmrLeaf", + "nameLocations": [ + "4797:7:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49129, + "src": "4797:7:58" + }, + "referencedDeclaration": 49129, + "src": "4797:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MmrLeaf_$49129_storage_ptr", + "typeString": "struct MmrLeaf" + } + }, + "id": 58134, + "nodeType": "ArrayTypeName", + "src": "4797:9:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$49129_storage_$dyn_storage_ptr", + "typeString": "struct MmrLeaf[]" + } + }, + "visibility": "internal" + } + ], + "id": 58142, + "initialValue": { + "arguments": [ + { + "id": 58140, + "name": "responsesLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58126, + "src": "4837:15:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 58139, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "4823:13:58", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_MmrLeaf_$49129_memory_ptr_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (struct MmrLeaf memory[] memory)" + }, + "typeName": { + "baseType": { + "id": 58137, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58136, + "name": "MmrLeaf", + "nameLocations": [ + "4827:7:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49129, + "src": "4827:7:58" + }, + "referencedDeclaration": 49129, + "src": "4827:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MmrLeaf_$49129_storage_ptr", + "typeString": "struct MmrLeaf" + } + }, + "id": 58138, + "nodeType": "ArrayTypeName", + "src": "4827:9:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$49129_storage_$dyn_storage_ptr", + "typeString": "struct MmrLeaf[]" + } + } + }, + "id": 58141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4823:30:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$49129_memory_ptr_$dyn_memory_ptr", + "typeString": "struct MmrLeaf memory[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4797:56:58" + }, + { + "body": { + "id": 58220, + "nodeType": "Block", + "src": "4910:617:58", + "statements": [ + { + "assignments": [ + 58155 + ], + "declarations": [ + { + "constant": false, + "id": 58155, + "mutability": "mutable", + "name": "leaf", + "nameLocation": "4948:4:58", + "nodeType": "VariableDeclaration", + "scope": 58220, + "src": "4924:28:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseLeaf_$45508_memory_ptr", + "typeString": "struct PostResponseLeaf" + }, + "typeName": { + "id": 58154, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58153, + "name": "PostResponseLeaf", + "nameLocations": [ + "4924:16:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45508, + "src": "4924:16:58" + }, + "referencedDeclaration": 45508, + "src": "4924:16:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseLeaf_$45508_storage_ptr", + "typeString": "struct PostResponseLeaf" + } + }, + "visibility": "internal" + } + ], + "id": 58160, + "initialValue": { + "baseExpression": { + "expression": { + "id": 58156, + "name": "response", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58097, + "src": "4955:8:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseMessage_$45564_memory_ptr", + "typeString": "struct PostResponseMessage memory" + } + }, + "id": 58157, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4964:9:58", + "memberName": "responses", + "nodeType": "MemberAccess", + "referencedDeclaration": 45563, + "src": "4955:18:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_PostResponseLeaf_$45508_memory_ptr_$dyn_memory_ptr", + "typeString": "struct PostResponseLeaf memory[] memory" + } + }, + "id": 58159, + "indexExpression": { + "id": 58158, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58144, + "src": "4974:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4955:21:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseLeaf_$45508_memory_ptr", + "typeString": "struct PostResponseLeaf memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4924:52:58" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 58167, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58094, + "src": "5034:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58168, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5039:4:58", + "memberName": "host", + "nodeType": "MemberAccess", + "referencedDeclaration": 45876, + "src": "5034:9:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () external returns (bytes memory)" + } + }, + "id": 58169, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5034:11:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "expression": { + "expression": { + "expression": { + "id": 58162, + "name": "leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58155, + "src": "4998:4:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseLeaf_$45508_memory_ptr", + "typeString": "struct PostResponseLeaf memory" + } + }, + "id": 58163, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5003:8:58", + "memberName": "response", + "nodeType": "MemberAccess", + "referencedDeclaration": 45503, + "src": "4998:13:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponse_$45492_memory_ptr", + "typeString": "struct PostResponse memory" + } + }, + "id": 58164, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5012:7:58", + "memberName": "request", + "nodeType": "MemberAccess", + "referencedDeclaration": 45489, + "src": "4998:21:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequest_$45460_memory_ptr", + "typeString": "struct PostRequest memory" + } + }, + "id": 58165, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5020:6:58", + "memberName": "source", + "nodeType": "MemberAccess", + "referencedDeclaration": 45445, + "src": "4998:28:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 58166, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5027:6:58", + "memberName": "equals", + "nodeType": "MemberAccess", + "referencedDeclaration": 51729, + "src": "4998:35:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,bytes memory) pure returns (bool)" + } + }, + "id": 58170, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4998:48:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a20496e76616c696420726573706f6e73652064657374696e6174696f6e", + "id": 58171, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5048:40:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ba85bde67c82abc7cea06cf3caa1accbea70a9a64a1d7400aac7f33fe52e5cf3", + "typeString": "literal_string \"IHandler: Invalid response destination\"" + }, + "value": "IHandler: Invalid response destination" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ba85bde67c82abc7cea06cf3caa1accbea70a9a64a1d7400aac7f33fe52e5cf3", + "typeString": "literal_string \"IHandler: Invalid response destination\"" + } + ], + "id": 58161, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4990:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4990:99:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58173, + "nodeType": "ExpressionStatement", + "src": "4990:99:58" + }, + { + "assignments": [ + 58175 + ], + "declarations": [ + { + "constant": false, + "id": 58175, + "mutability": "mutable", + "name": "requestCommitment", + "nameLocation": "5112:17:58", + "nodeType": "VariableDeclaration", + "scope": 58220, + "src": "5104:25:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 58174, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5104:7:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 58182, + "initialValue": { + "arguments": [ + { + "expression": { + "expression": { + "id": 58178, + "name": "leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58155, + "src": "5145:4:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseLeaf_$45508_memory_ptr", + "typeString": "struct PostResponseLeaf memory" + } + }, + "id": 58179, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5150:8:58", + "memberName": "response", + "nodeType": "MemberAccess", + "referencedDeclaration": 45503, + "src": "5145:13:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponse_$45492_memory_ptr", + "typeString": "struct PostResponse memory" + } + }, + "id": 58180, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5159:7:58", + "memberName": "request", + "nodeType": "MemberAccess", + "referencedDeclaration": 45489, + "src": "5145:21:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequest_$45460_memory_ptr", + "typeString": "struct PostRequest memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_PostRequest_$45460_memory_ptr", + "typeString": "struct PostRequest memory" + } + ], + "expression": { + "id": 58176, + "name": "Message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45837, + "src": "5132:7:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Message_$45837_$", + "typeString": "type(library Message)" + } + }, + "id": 58177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5140:4:58", + "memberName": "hash", + "nodeType": "MemberAccess", + "referencedDeclaration": 45678, + "src": "5132:12:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_PostRequest_$45460_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (struct PostRequest memory) pure returns (bytes32)" + } + }, + "id": 58181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5132:35:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5104:63:58" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 58186, + "name": "requestCommitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58175, + "src": "5213:17:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 58184, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58094, + "src": "5189:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5194:18:58", + "memberName": "requestCommitments", + "nodeType": "MemberAccess", + "referencedDeclaration": 45955, + "src": "5189:23:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes32) external returns (bool)" + } + }, + "id": 58187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5189:42:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a20556e6b6e6f776e2072657175657374", + "id": 58188, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5233:27:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0a55e60d0bd31807d82a62a7f4b0e63b30a7862fb0f87496c334157082fabab3", + "typeString": "literal_string \"IHandler: Unknown request\"" + }, + "value": "IHandler: Unknown request" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0a55e60d0bd31807d82a62a7f4b0e63b30a7862fb0f87496c334157082fabab3", + "typeString": "literal_string \"IHandler: Unknown request\"" + } + ], + "id": 58183, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5181:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5181:80:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58190, + "nodeType": "ExpressionStatement", + "src": "5181:80:58" + }, + { + "assignments": [ + 58192 + ], + "declarations": [ + { + "constant": false, + "id": 58192, + "mutability": "mutable", + "name": "responseCommitment", + "nameLocation": "5284:18:58", + "nodeType": "VariableDeclaration", + "scope": 58220, + "src": "5276:26:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 58191, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5276:7:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 58198, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 58195, + "name": "leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58155, + "src": "5318:4:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseLeaf_$45508_memory_ptr", + "typeString": "struct PostResponseLeaf memory" + } + }, + "id": 58196, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5323:8:58", + "memberName": "response", + "nodeType": "MemberAccess", + "referencedDeclaration": 45503, + "src": "5318:13:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponse_$45492_memory_ptr", + "typeString": "struct PostResponse memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_PostResponse_$45492_memory_ptr", + "typeString": "struct PostResponse memory" + } + ], + "expression": { + "id": 58193, + "name": "Message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45837, + "src": "5305:7:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Message_$45837_$", + "typeString": "type(library Message)" + } + }, + "id": 58194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5313:4:58", + "memberName": "hash", + "nodeType": "MemberAccess", + "referencedDeclaration": 45647, + "src": "5305:12:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_PostResponse_$45492_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (struct PostResponse memory) pure returns (bytes32)" + } + }, + "id": 58197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5305:27:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5276:56:58" + }, + { + "expression": { + "arguments": [ + { + "id": 58204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "5354:45:58", + "subExpression": { + "arguments": [ + { + "id": 58202, + "name": "responseCommitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58192, + "src": "5380:18:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 58200, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58094, + "src": "5355:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58201, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5360:19:58", + "memberName": "responseCommitments", + "nodeType": "MemberAccess", + "referencedDeclaration": 45963, + "src": "5355:24:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes32) external returns (bool)" + } + }, + "id": 58203, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5355:44:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a204475706c696361746520506f737420726573706f6e7365", + "id": 58205, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5401:35:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d60d82eddb22c950bc8b3719c8c91adf53927652bf0b6692b7d5ab393ee381fc", + "typeString": "literal_string \"IHandler: Duplicate Post response\"" + }, + "value": "IHandler: Duplicate Post response" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d60d82eddb22c950bc8b3719c8c91adf53927652bf0b6692b7d5ab393ee381fc", + "typeString": "literal_string \"IHandler: Duplicate Post response\"" + } + ], + "id": 58199, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5346:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5346:91:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58207, + "nodeType": "ExpressionStatement", + "src": "5346:91:58" + }, + { + "expression": { + "id": 58218, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 58208, + "name": "leaves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58135, + "src": "5452:6:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$49129_memory_ptr_$dyn_memory_ptr", + "typeString": "struct MmrLeaf memory[] memory" + } + }, + "id": 58210, + "indexExpression": { + "id": 58209, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58144, + "src": "5459:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5452:9:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MmrLeaf_$49129_memory_ptr", + "typeString": "struct MmrLeaf memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "id": 58212, + "name": "leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58155, + "src": "5472:4:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseLeaf_$45508_memory_ptr", + "typeString": "struct PostResponseLeaf memory" + } + }, + "id": 58213, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5477:6:58", + "memberName": "kIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 45507, + "src": "5472:11:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 58214, + "name": "leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58155, + "src": "5485:4:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseLeaf_$45508_memory_ptr", + "typeString": "struct PostResponseLeaf memory" + } + }, + "id": 58215, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5490:5:58", + "memberName": "index", + "nodeType": "MemberAccess", + "referencedDeclaration": 45505, + "src": "5485:10:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 58216, + "name": "responseCommitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58192, + "src": "5497:18:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 58211, + "name": "MmrLeaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49129, + "src": "5464:7:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_MmrLeaf_$49129_storage_ptr_$", + "typeString": "type(struct MmrLeaf storage pointer)" + } + }, + "id": 58217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5464:52:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_MmrLeaf_$49129_memory_ptr", + "typeString": "struct MmrLeaf memory" + } + }, + "src": "5452:64:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MmrLeaf_$49129_memory_ptr", + "typeString": "struct MmrLeaf memory" + } + }, + "id": 58219, + "nodeType": "ExpressionStatement", + "src": "5452:64:58" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58149, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 58147, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58144, + "src": "4884:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 58148, + "name": "responsesLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58126, + "src": "4888:15:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4884:19:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 58221, + "initializationExpression": { + "assignments": [ + 58144 + ], + "declarations": [ + { + "constant": false, + "id": 58144, + "mutability": "mutable", + "name": "i", + "nameLocation": "4877:1:58", + "nodeType": "VariableDeclaration", + "scope": 58221, + "src": "4869:9:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58143, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4869:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 58146, + "initialValue": { + "hexValue": "30", + "id": 58145, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4881:1:58", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "4869:13:58" + }, + "loopExpression": { + "expression": { + "id": 58151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "4905:3:58", + "subExpression": { + "id": 58150, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58144, + "src": "4905:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 58152, + "nodeType": "ExpressionStatement", + "src": "4905:3:58" + }, + "nodeType": "ForStatement", + "src": "4864:663:58" + }, + { + "assignments": [ + 58223 + ], + "declarations": [ + { + "constant": false, + "id": 58223, + "mutability": "mutable", + "name": "root", + "nameLocation": "5545:4:58", + "nodeType": "VariableDeclaration", + "scope": 58284, + "src": "5537:12:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 58222, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5537:7:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 58231, + "initialValue": { + "expression": { + "arguments": [ + { + "expression": { + "expression": { + "id": 58226, + "name": "response", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58097, + "src": "5580:8:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseMessage_$45564_memory_ptr", + "typeString": "struct PostResponseMessage memory" + } + }, + "id": 58227, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5589:5:58", + "memberName": "proof", + "nodeType": "MemberAccess", + "referencedDeclaration": 45559, + "src": "5580:14:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proof_$45517_memory_ptr", + "typeString": "struct Proof memory" + } + }, + "id": 58228, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5595:6:58", + "memberName": "height", + "nodeType": "MemberAccess", + "referencedDeclaration": 45511, + "src": "5580:21:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + ], + "expression": { + "id": 58224, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58094, + "src": "5552:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5557:22:58", + "memberName": "stateMachineCommitment", + "nodeType": "MemberAccess", + "referencedDeclaration": 45898, + "src": "5552:27:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_struct$_StateMachineHeight_$45352_memory_ptr_$returns$_t_struct$_StateCommitment_$45347_memory_ptr_$", + "typeString": "function (struct StateMachineHeight memory) external returns (struct StateCommitment memory)" + } + }, + "id": 58229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5552:50:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateCommitment_$45347_memory_ptr", + "typeString": "struct StateCommitment memory" + } + }, + "id": 58230, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5603:11:58", + "memberName": "overlayRoot", + "nodeType": "MemberAccess", + "referencedDeclaration": 45344, + "src": "5552:62:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5537:77:58" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 58238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 58233, + "name": "root", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58223, + "src": "5633:4:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 58236, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5649:1:58", + "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": 58235, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5641:7:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 58234, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5641:7:58", + "typeDescriptions": {} + } + }, + "id": 58237, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5641:10:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "5633:18:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a2050726f6f6620686569676874206e6f7420666f756e6421", + "id": 58239, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5653:35:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_eb4f31515693928b53012cedc95045735db2c103e6bb9ff528968685dcec5221", + "typeString": "literal_string \"IHandler: Proof height not found!\"" + }, + "value": "IHandler: Proof height not found!" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_eb4f31515693928b53012cedc95045735db2c103e6bb9ff528968685dcec5221", + "typeString": "literal_string \"IHandler: Proof height not found!\"" + } + ], + "id": 58232, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5625:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5625:64:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58241, + "nodeType": "ExpressionStatement", + "src": "5625:64:58" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 58245, + "name": "root", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58223, + "src": "5752:4:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "expression": { + "id": 58246, + "name": "response", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58097, + "src": "5758:8:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseMessage_$45564_memory_ptr", + "typeString": "struct PostResponseMessage memory" + } + }, + "id": 58247, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5767:5:58", + "memberName": "proof", + "nodeType": "MemberAccess", + "referencedDeclaration": 45559, + "src": "5758:14:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proof_$45517_memory_ptr", + "typeString": "struct Proof memory" + } + }, + "id": 58248, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5773:10:58", + "memberName": "multiproof", + "nodeType": "MemberAccess", + "referencedDeclaration": 45514, + "src": "5758:25:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + { + "id": 58249, + "name": "leaves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58135, + "src": "5785:6:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$49129_memory_ptr_$dyn_memory_ptr", + "typeString": "struct MmrLeaf memory[] memory" + } + }, + { + "expression": { + "expression": { + "id": 58250, + "name": "response", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58097, + "src": "5793:8:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseMessage_$45564_memory_ptr", + "typeString": "struct PostResponseMessage memory" + } + }, + "id": 58251, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5802:5:58", + "memberName": "proof", + "nodeType": "MemberAccess", + "referencedDeclaration": 45559, + "src": "5793:14:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proof_$45517_memory_ptr", + "typeString": "struct Proof memory" + } + }, + "id": 58252, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5808:9:58", + "memberName": "leafCount", + "nodeType": "MemberAccess", + "referencedDeclaration": 45516, + "src": "5793:24:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + }, + { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$49129_memory_ptr_$dyn_memory_ptr", + "typeString": "struct MmrLeaf memory[] memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 58243, + "name": "MerkleMountainRange", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50178, + "src": "5720:19:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MerkleMountainRange_$50178_$", + "typeString": "type(library MerkleMountainRange)" + } + }, + "id": 58244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5740:11:58", + "memberName": "VerifyProof", + "nodeType": "MemberAccess", + "referencedDeclaration": 49162, + "src": "5720:31:58", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_bytes32_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_struct$_MmrLeaf_$49129_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes32[] memory,struct MmrLeaf memory[] memory,uint256) pure returns (bool)" + } + }, + "id": 58253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5720:98:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a20496e76616c696420726573706f6e73652070726f6f6673", + "id": 58254, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5832:35:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_aae3fb0692a6a33309fb01d32d8ea5db30a2ac52b44571bada6a06beb437e86c", + "typeString": "literal_string \"IHandler: Invalid response proofs\"" + }, + "value": "IHandler: Invalid response proofs" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_aae3fb0692a6a33309fb01d32d8ea5db30a2ac52b44571bada6a06beb437e86c", + "typeString": "literal_string \"IHandler: Invalid response proofs\"" + } + ], + "id": 58242, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5699:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5699:178:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58256, + "nodeType": "ExpressionStatement", + "src": "5699:178:58" + }, + { + "body": { + "id": 58282, + "nodeType": "Block", + "src": "5934:127:58", + "statements": [ + { + "assignments": [ + 58269 + ], + "declarations": [ + { + "constant": false, + "id": 58269, + "mutability": "mutable", + "name": "leaf", + "nameLocation": "5972:4:58", + "nodeType": "VariableDeclaration", + "scope": 58282, + "src": "5948:28:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseLeaf_$45508_memory_ptr", + "typeString": "struct PostResponseLeaf" + }, + "typeName": { + "id": 58268, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58267, + "name": "PostResponseLeaf", + "nameLocations": [ + "5948:16:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45508, + "src": "5948:16:58" + }, + "referencedDeclaration": 45508, + "src": "5948:16:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseLeaf_$45508_storage_ptr", + "typeString": "struct PostResponseLeaf" + } + }, + "visibility": "internal" + } + ], + "id": 58274, + "initialValue": { + "baseExpression": { + "expression": { + "id": 58270, + "name": "response", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58097, + "src": "5979:8:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseMessage_$45564_memory_ptr", + "typeString": "struct PostResponseMessage memory" + } + }, + "id": 58271, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5988:9:58", + "memberName": "responses", + "nodeType": "MemberAccess", + "referencedDeclaration": 45563, + "src": "5979:18:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_PostResponseLeaf_$45508_memory_ptr_$dyn_memory_ptr", + "typeString": "struct PostResponseLeaf memory[] memory" + } + }, + "id": 58273, + "indexExpression": { + "id": 58272, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58258, + "src": "5998:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5979:21:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseLeaf_$45508_memory_ptr", + "typeString": "struct PostResponseLeaf memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5948:52:58" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 58278, + "name": "leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58269, + "src": "6036:4:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseLeaf_$45508_memory_ptr", + "typeString": "struct PostResponseLeaf memory" + } + }, + "id": 58279, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6041:8:58", + "memberName": "response", + "nodeType": "MemberAccess", + "referencedDeclaration": 45503, + "src": "6036:13:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponse_$45492_memory_ptr", + "typeString": "struct PostResponse memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_PostResponse_$45492_memory_ptr", + "typeString": "struct PostResponse memory" + } + ], + "expression": { + "id": 58275, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58094, + "src": "6014:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58277, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6019:16:58", + "memberName": "dispatchIncoming", + "nodeType": "MemberAccess", + "referencedDeclaration": 46033, + "src": "6014:21:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_struct$_PostResponse_$45492_memory_ptr_$returns$__$", + "typeString": "function (struct PostResponse memory) external" + } + }, + "id": 58280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6014:36:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58281, + "nodeType": "ExpressionStatement", + "src": "6014:36:58" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 58261, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58258, + "src": "5908:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 58262, + "name": "responsesLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58126, + "src": "5912:15:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5908:19:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 58283, + "initializationExpression": { + "assignments": [ + 58258 + ], + "declarations": [ + { + "constant": false, + "id": 58258, + "mutability": "mutable", + "name": "i", + "nameLocation": "5901:1:58", + "nodeType": "VariableDeclaration", + "scope": 58283, + "src": "5893:9:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58257, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5893:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 58260, + "initialValue": { + "hexValue": "30", + "id": 58259, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5905:1:58", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "5893:13:58" + }, + "loopExpression": { + "expression": { + "id": 58265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "5929:3:58", + "subExpression": { + "id": 58264, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58258, + "src": "5929:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 58266, + "nodeType": "ExpressionStatement", + "src": "5929:3:58" + }, + "nodeType": "ForStatement", + "src": "5888:173:58" + } + ] + }, + "baseFunctions": [ + 45407 + ], + "documentation": { + "id": 58091, + "nodeType": "StructuredDocumentation", + "src": "4229:191:58", + "text": " @dev check response proofs, message delay and timeouts, then dispatch post responses to modules\n @param host - Ismp host\n @param response - batch post responses" + }, + "functionSelector": "20d71c7a", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 58100, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58094, + "src": "4526:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + } + ], + "id": 58101, + "kind": "modifierInvocation", + "modifierName": { + "id": 58099, + "name": "notFrozen", + "nameLocations": [ + "4516:9:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57755, + "src": "4516:9:58" + }, + "nodeType": "ModifierInvocation", + "src": "4516:15:58" + } + ], + "name": "handlePostResponses", + "nameLocation": "4434:19:58", + "parameters": { + "id": 58098, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58094, + "mutability": "mutable", + "name": "host", + "nameLocation": "4464:4:58", + "nodeType": "VariableDeclaration", + "scope": 58285, + "src": "4454:14:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + }, + "typeName": { + "id": 58093, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58092, + "name": "IIsmpHost", + "nameLocations": [ + "4454:9:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 46055, + "src": "4454:9:58" + }, + "referencedDeclaration": 46055, + "src": "4454:9:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 58097, + "mutability": "mutable", + "name": "response", + "nameLocation": "4497:8:58", + "nodeType": "VariableDeclaration", + "scope": 58285, + "src": "4470:35:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseMessage_$45564_memory_ptr", + "typeString": "struct PostResponseMessage" + }, + "typeName": { + "id": 58096, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58095, + "name": "PostResponseMessage", + "nameLocations": [ + "4470:19:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45564, + "src": "4470:19:58" + }, + "referencedDeclaration": 45564, + "src": "4470:19:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseMessage_$45564_storage_ptr", + "typeString": "struct PostResponseMessage" + } + }, + "visibility": "internal" + } + ], + "src": "4453:53:58" + }, + "returnParameters": { + "id": 58102, + "nodeType": "ParameterList", + "parameters": [], + "src": "4532:0:58" + }, + "scope": 58678, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 58423, + "nodeType": "FunctionDefinition", + "src": "6230:1159:58", + "nodes": [], + "body": { + "id": 58422, + "nodeType": "Block", + "src": "6334:1055:58", + "nodes": [], + "statements": [ + { + "assignments": [ + 58300 + ], + "declarations": [ + { + "constant": false, + "id": 58300, + "mutability": "mutable", + "name": "state", + "nameLocation": "6405:5:58", + "nodeType": "VariableDeclaration", + "scope": 58422, + "src": "6382:28:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateCommitment_$45347_memory_ptr", + "typeString": "struct StateCommitment" + }, + "typeName": { + "id": 58299, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58298, + "name": "StateCommitment", + "nameLocations": [ + "6382:15:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45347, + "src": "6382:15:58" + }, + "referencedDeclaration": 45347, + "src": "6382:15:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateCommitment_$45347_storage_ptr", + "typeString": "struct StateCommitment" + } + }, + "visibility": "internal" + } + ], + "id": 58306, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 58303, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58292, + "src": "6441:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostTimeoutMessage_$45556_memory_ptr", + "typeString": "struct PostTimeoutMessage memory" + } + }, + "id": 58304, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6449:6:58", + "memberName": "height", + "nodeType": "MemberAccess", + "referencedDeclaration": 45552, + "src": "6441:14:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + ], + "expression": { + "id": 58301, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58289, + "src": "6413:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58302, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6418:22:58", + "memberName": "stateMachineCommitment", + "nodeType": "MemberAccess", + "referencedDeclaration": 45898, + "src": "6413:27:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_struct$_StateMachineHeight_$45352_memory_ptr_$returns$_t_struct$_StateCommitment_$45347_memory_ptr_$", + "typeString": "function (struct StateMachineHeight memory) external returns (struct StateCommitment memory)" + } + }, + "id": 58305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6413:43:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateCommitment_$45347_memory_ptr", + "typeString": "struct StateCommitment memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6382:74:58" + }, + { + "assignments": [ + 58308 + ], + "declarations": [ + { + "constant": false, + "id": 58308, + "mutability": "mutable", + "name": "timeoutsLength", + "nameLocation": "6474:14:58", + "nodeType": "VariableDeclaration", + "scope": 58422, + "src": "6466:22:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58307, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6466:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 58312, + "initialValue": { + "expression": { + "expression": { + "id": 58309, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58292, + "src": "6491:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostTimeoutMessage_$45556_memory_ptr", + "typeString": "struct PostTimeoutMessage memory" + } + }, + "id": 58310, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6499:8:58", + "memberName": "timeouts", + "nodeType": "MemberAccess", + "referencedDeclaration": 45549, + "src": "6491:16:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_PostRequest_$45460_memory_ptr_$dyn_memory_ptr", + "typeString": "struct PostRequest memory[] memory" + } + }, + "id": 58311, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6508:6:58", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "6491:23:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6466:48:58" + }, + { + "body": { + "id": 58420, + "nodeType": "Block", + "src": "6570:813:58", + "statements": [ + { + "assignments": [ + 58325 + ], + "declarations": [ + { + "constant": false, + "id": 58325, + "mutability": "mutable", + "name": "request", + "nameLocation": "6603:7:58", + "nodeType": "VariableDeclaration", + "scope": 58420, + "src": "6584:26:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequest_$45460_memory_ptr", + "typeString": "struct PostRequest" + }, + "typeName": { + "id": 58324, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58323, + "name": "PostRequest", + "nameLocations": [ + "6584:11:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45460, + "src": "6584:11:58" + }, + "referencedDeclaration": 45460, + "src": "6584:11:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequest_$45460_storage_ptr", + "typeString": "struct PostRequest" + } + }, + "visibility": "internal" + } + ], + "id": 58330, + "initialValue": { + "baseExpression": { + "expression": { + "id": 58326, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58292, + "src": "6613:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostTimeoutMessage_$45556_memory_ptr", + "typeString": "struct PostTimeoutMessage memory" + } + }, + "id": 58327, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6621:8:58", + "memberName": "timeouts", + "nodeType": "MemberAccess", + "referencedDeclaration": 45549, + "src": "6613:16:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_PostRequest_$45460_memory_ptr_$dyn_memory_ptr", + "typeString": "struct PostRequest memory[] memory" + } + }, + "id": 58329, + "indexExpression": { + "id": 58328, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58314, + "src": "6630:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6613:19:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequest_$45460_memory_ptr", + "typeString": "struct PostRequest memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6584:48:58" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 58341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 58335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 58332, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58325, + "src": "6671:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequest_$45460_memory_ptr", + "typeString": "struct PostRequest memory" + } + }, + "id": 58333, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6679:16:58", + "memberName": "timeoutTimestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45455, + "src": "6671:24:58", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 58334, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6699:1:58", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6671:29:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 58336, + "name": "state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58300, + "src": "6704:5:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateCommitment_$45347_memory_ptr", + "typeString": "struct StateCommitment memory" + } + }, + "id": 58337, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6710:9:58", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45342, + "src": "6704:15:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 58338, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58325, + "src": "6722:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequest_$45460_memory_ptr", + "typeString": "struct PostRequest memory" + } + }, + "id": 58339, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6730:16:58", + "memberName": "timeoutTimestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45455, + "src": "6722:24:58", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "6704:42:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "6671:75:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "52657175657374206e6f742074696d6564206f7574", + "id": 58342, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6748:23:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4474e11a3caa6542a6723eefd6f66c15e8aa3df07c187e658ead4d0f5692e279", + "typeString": "literal_string \"Request not timed out\"" + }, + "value": "Request not timed out" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4474e11a3caa6542a6723eefd6f66c15e8aa3df07c187e658ead4d0f5692e279", + "typeString": "literal_string \"Request not timed out\"" + } + ], + "id": 58331, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6646:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6646:139:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58344, + "nodeType": "ExpressionStatement", + "src": "6646:139:58" + }, + { + "assignments": [ + 58346 + ], + "declarations": [ + { + "constant": false, + "id": 58346, + "mutability": "mutable", + "name": "requestCommitment", + "nameLocation": "6808:17:58", + "nodeType": "VariableDeclaration", + "scope": 58420, + "src": "6800:25:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 58345, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6800:7:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 58351, + "initialValue": { + "arguments": [ + { + "id": 58349, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58325, + "src": "6841:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequest_$45460_memory_ptr", + "typeString": "struct PostRequest memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_PostRequest_$45460_memory_ptr", + "typeString": "struct PostRequest memory" + } + ], + "expression": { + "id": 58347, + "name": "Message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45837, + "src": "6828:7:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Message_$45837_$", + "typeString": "type(library Message)" + } + }, + "id": 58348, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6836:4:58", + "memberName": "hash", + "nodeType": "MemberAccess", + "referencedDeclaration": 45678, + "src": "6828:12:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_PostRequest_$45460_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (struct PostRequest memory) pure returns (bytes32)" + } + }, + "id": 58350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6828:21:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6800:49:58" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 58355, + "name": "requestCommitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58346, + "src": "6895:17:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 58353, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58289, + "src": "6871:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6876:18:58", + "memberName": "requestCommitments", + "nodeType": "MemberAccess", + "referencedDeclaration": 45955, + "src": "6871:23:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes32) external returns (bool)" + } + }, + "id": 58356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6871:42:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a20556e6b6e6f776e2072657175657374", + "id": 58357, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6915:27:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0a55e60d0bd31807d82a62a7f4b0e63b30a7862fb0f87496c334157082fabab3", + "typeString": "literal_string \"IHandler: Unknown request\"" + }, + "value": "IHandler: Unknown request" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0a55e60d0bd31807d82a62a7f4b0e63b30a7862fb0f87496c334157082fabab3", + "typeString": "literal_string \"IHandler: Unknown request\"" + } + ], + "id": 58352, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6863:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6863:80:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58359, + "nodeType": "ExpressionStatement", + "src": "6863:80:58" + }, + { + "assignments": [ + 58364 + ], + "declarations": [ + { + "constant": false, + "id": 58364, + "mutability": "mutable", + "name": "keys", + "nameLocation": "6973:4:58", + "nodeType": "VariableDeclaration", + "scope": 58420, + "src": "6958:19:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 58362, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6958:5:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 58363, + "nodeType": "ArrayTypeName", + "src": "6958:7:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "id": 58370, + "initialValue": { + "arguments": [ + { + "hexValue": "31", + "id": 58368, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6992:1:58", + "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": 58367, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "6980:11:58", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (bytes memory[] memory)" + }, + "typeName": { + "baseType": { + "id": 58365, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6984:5:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 58366, + "nodeType": "ArrayTypeName", + "src": "6984:7:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + } + }, + "id": 58369, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6980:14:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6958:36:58" + }, + { + "expression": { + "id": 58384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 58371, + "name": "keys", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58364, + "src": "7008:4:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "id": 58373, + "indexExpression": { + "id": 58372, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58314, + "src": "7013:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7008:7:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 58377, + "name": "REQUEST_COMMITMENT_STORAGE_PREFIX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57758, + "src": "7031:33:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "arguments": [ + { + "id": 58381, + "name": "requestCommitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58346, + "src": "7079:17:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 58379, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7066:5:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 58378, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7066:5:58", + "typeDescriptions": {} + } + }, + "id": 58380, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7072:6:58", + "memberName": "concat", + "nodeType": "MemberAccess", + "src": "7066:12:58", + "typeDescriptions": { + "typeIdentifier": "t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 58382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7066:31:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 58375, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7018:5:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 58374, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7018:5:58", + "typeDescriptions": {} + } + }, + "id": 58376, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7024:6:58", + "memberName": "concat", + "nodeType": "MemberAccess", + "src": "7018:12:58", + "typeDescriptions": { + "typeIdentifier": "t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 58383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7018:80:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "src": "7008:90:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 58385, + "nodeType": "ExpressionStatement", + "src": "7008:90:58" + }, + { + "assignments": [ + 58388 + ], + "declarations": [ + { + "constant": false, + "id": 58388, + "mutability": "mutable", + "name": "entry", + "nameLocation": "7133:5:58", + "nodeType": "VariableDeclaration", + "scope": 58420, + "src": "7113:25:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StorageValue_$50961_memory_ptr", + "typeString": "struct StorageValue" + }, + "typeName": { + "id": 58387, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58386, + "name": "StorageValue", + "nameLocations": [ + "7113:12:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 50961, + "src": "7113:12:58" + }, + "referencedDeclaration": 50961, + "src": "7113:12:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StorageValue_$50961_storage_ptr", + "typeString": "struct StorageValue" + } + }, + "visibility": "internal" + } + ], + "id": 58399, + "initialValue": { + "baseExpression": { + "arguments": [ + { + "expression": { + "id": 58391, + "name": "state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58300, + "src": "7177:5:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateCommitment_$45347_memory_ptr", + "typeString": "struct StateCommitment memory" + } + }, + "id": 58392, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7183:9:58", + "memberName": "stateRoot", + "nodeType": "MemberAccess", + "referencedDeclaration": 45346, + "src": "7177:15:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 58393, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58292, + "src": "7194:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostTimeoutMessage_$45556_memory_ptr", + "typeString": "struct PostTimeoutMessage memory" + } + }, + "id": 58394, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7202:5:58", + "memberName": "proof", + "nodeType": "MemberAccess", + "referencedDeclaration": 45555, + "src": "7194:13:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + { + "id": 58395, + "name": "keys", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58364, + "src": "7209:4:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + }, + { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + ], + "expression": { + "id": 58389, + "name": "MerklePatricia", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 51681, + "src": "7141:14:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MerklePatricia_$51681_$", + "typeString": "type(library MerklePatricia)" + } + }, + "id": 58390, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7156:20:58", + "memberName": "VerifySubstrateProof", + "nodeType": "MemberAccess", + "referencedDeclaration": 51253, + "src": "7141:35:58", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_bytes32_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$_t_array$_t_struct$_StorageValue_$50961_memory_ptr_$dyn_memory_ptr_$", + "typeString": "function (bytes32,bytes memory[] memory,bytes memory[] memory) pure returns (struct StorageValue memory[] memory)" + } + }, + "id": 58396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7141:73:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_StorageValue_$50961_memory_ptr_$dyn_memory_ptr", + "typeString": "struct StorageValue memory[] memory" + } + }, + "id": 58398, + "indexExpression": { + "hexValue": "30", + "id": 58397, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7215:1:58", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7141:76:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StorageValue_$50961_memory_ptr", + "typeString": "struct StorageValue memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7113:104:58" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 58406, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7268:1:58", + "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": 58405, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "7258:9:58", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (uint256) pure returns (bytes memory)" + }, + "typeName": { + "id": 58404, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7262:5:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + "id": 58407, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7258:12:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "expression": { + "id": 58401, + "name": "entry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58388, + "src": "7239:5:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StorageValue_$50961_memory_ptr", + "typeString": "struct StorageValue memory" + } + }, + "id": 58402, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7245:5:58", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 50960, + "src": "7239:11:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 58403, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7251:6:58", + "memberName": "equals", + "nodeType": "MemberAccess", + "referencedDeclaration": 51729, + "src": "7239:18:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,bytes memory) pure returns (bool)" + } + }, + "id": 58408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7239:32:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a20496e76616c6964206e6f6e2d6d656d626572736869702070726f6f66", + "id": 58409, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7273:40:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ee35706f8dd6f4d641ab02dcd55f44fd97cd4619724d39d9d0331e69043d1968", + "typeString": "literal_string \"IHandler: Invalid non-membership proof\"" + }, + "value": "IHandler: Invalid non-membership proof" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ee35706f8dd6f4d641ab02dcd55f44fd97cd4619724d39d9d0331e69043d1968", + "typeString": "literal_string \"IHandler: Invalid non-membership proof\"" + } + ], + "id": 58400, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7231:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7231:83:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58411, + "nodeType": "ExpressionStatement", + "src": "7231:83:58" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 58416, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58325, + "src": "7363:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequest_$45460_memory_ptr", + "typeString": "struct PostRequest memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_PostRequest_$45460_memory_ptr", + "typeString": "struct PostRequest memory" + } + ], + "id": 58415, + "name": "PostTimeout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45545, + "src": "7351:11:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_PostTimeout_$45545_storage_ptr_$", + "typeString": "type(struct PostTimeout storage pointer)" + } + }, + "id": 58417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7351:20:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostTimeout_$45545_memory_ptr", + "typeString": "struct PostTimeout memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_PostTimeout_$45545_memory_ptr", + "typeString": "struct PostTimeout memory" + } + ], + "expression": { + "id": 58412, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58289, + "src": "7329:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7334:16:58", + "memberName": "dispatchIncoming", + "nodeType": "MemberAccess", + "referencedDeclaration": 46054, + "src": "7329:21:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_struct$_PostTimeout_$45545_memory_ptr_$returns$__$", + "typeString": "function (struct PostTimeout memory) external" + } + }, + "id": 58418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7329:43:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58419, + "nodeType": "ExpressionStatement", + "src": "7329:43:58" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58319, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 58317, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58314, + "src": "6545:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 58318, + "name": "timeoutsLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58308, + "src": "6549:14:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6545:18:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 58421, + "initializationExpression": { + "assignments": [ + 58314 + ], + "declarations": [ + { + "constant": false, + "id": 58314, + "mutability": "mutable", + "name": "i", + "nameLocation": "6538:1:58", + "nodeType": "VariableDeclaration", + "scope": 58421, + "src": "6530:9:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58313, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6530:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 58316, + "initialValue": { + "hexValue": "30", + "id": 58315, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6542:1:58", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "6530:13:58" + }, + "loopExpression": { + "expression": { + "id": 58321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "6565:3:58", + "subExpression": { + "id": 58320, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58314, + "src": "6565:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 58322, + "nodeType": "ExpressionStatement", + "src": "6565:3:58" + }, + "nodeType": "ForStatement", + "src": "6525:858:58" + } + ] + }, + "baseFunctions": [ + 45427 + ], + "documentation": { + "id": 58286, + "nodeType": "StructuredDocumentation", + "src": "6073:152:58", + "text": " @dev check timeout proofs then dispatch to modules\n @param host - Ismp host\n @param message - batch post request timeouts" + }, + "functionSelector": "d95e4fbb", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 58295, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58289, + "src": "6328:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + } + ], + "id": 58296, + "kind": "modifierInvocation", + "modifierName": { + "id": 58294, + "name": "notFrozen", + "nameLocations": [ + "6318:9:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57755, + "src": "6318:9:58" + }, + "nodeType": "ModifierInvocation", + "src": "6318:15:58" + } + ], + "name": "handlePostTimeouts", + "nameLocation": "6239:18:58", + "parameters": { + "id": 58293, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58289, + "mutability": "mutable", + "name": "host", + "nameLocation": "6268:4:58", + "nodeType": "VariableDeclaration", + "scope": 58423, + "src": "6258:14:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + }, + "typeName": { + "id": 58288, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58287, + "name": "IIsmpHost", + "nameLocations": [ + "6258:9:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 46055, + "src": "6258:9:58" + }, + "referencedDeclaration": 46055, + "src": "6258:9:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 58292, + "mutability": "mutable", + "name": "message", + "nameLocation": "6300:7:58", + "nodeType": "VariableDeclaration", + "scope": 58423, + "src": "6274:33:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostTimeoutMessage_$45556_memory_ptr", + "typeString": "struct PostTimeoutMessage" + }, + "typeName": { + "id": 58291, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58290, + "name": "PostTimeoutMessage", + "nameLocations": [ + "6274:18:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45556, + "src": "6274:18:58" + }, + "referencedDeclaration": 45556, + "src": "6274:18:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostTimeoutMessage_$45556_storage_ptr", + "typeString": "struct PostTimeoutMessage" + } + }, + "visibility": "internal" + } + ], + "src": "6257:51:58" + }, + "returnParameters": { + "id": 58297, + "nodeType": "ParameterList", + "parameters": [], + "src": "6334:0:58" + }, + "scope": 58678, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 58601, + "nodeType": "FunctionDefinition", + "src": "7588:1595:58", + "nodes": [], + "body": { + "id": 58600, + "nodeType": "Block", + "src": "7692:1491:58", + "nodes": [], + "statements": [ + { + "assignments": [ + 58437 + ], + "declarations": [ + { + "constant": false, + "id": 58437, + "mutability": "mutable", + "name": "delay", + "nameLocation": "7710:5:58", + "nodeType": "VariableDeclaration", + "scope": 58600, + "src": "7702:13:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58436, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7702:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 58447, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 58438, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58427, + "src": "7718:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58439, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7723:9:58", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45882, + "src": "7718:14:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () external returns (uint256)" + } + }, + "id": 58440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7718:16:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "arguments": [ + { + "expression": { + "id": 58443, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58430, + "src": "7775:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetResponseMessage_$45536_memory_ptr", + "typeString": "struct GetResponseMessage memory" + } + }, + "id": 58444, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7783:6:58", + "memberName": "height", + "nodeType": "MemberAccess", + "referencedDeclaration": 45531, + "src": "7775:14:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + ], + "expression": { + "id": 58441, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58427, + "src": "7737:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58442, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7742:32:58", + "memberName": "stateMachineCommitmentUpdateTime", + "nodeType": "MemberAccess", + "referencedDeclaration": 45907, + "src": "7737:37:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_struct$_StateMachineHeight_$45352_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (struct StateMachineHeight memory) external returns (uint256)" + } + }, + "id": 58445, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7737:53:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7718:72:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7702:88:58" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 58449, + "name": "delay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58437, + "src": "7808:5:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 58450, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58427, + "src": "7816:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58451, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7821:15:58", + "memberName": "challengePeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 45969, + "src": "7816:20:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () external returns (uint256)" + } + }, + "id": 58452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7816:22:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7808:30:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a207374696c6c20696e206368616c6c656e676520706572696f64", + "id": 58454, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7840:37:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f5082cb74f993b787a7585746b72947bebcf871ad1ca44b66287b84fa3fac9ca", + "typeString": "literal_string \"IHandler: still in challenge period\"" + }, + "value": "IHandler: still in challenge period" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f5082cb74f993b787a7585746b72947bebcf871ad1ca44b66287b84fa3fac9ca", + "typeString": "literal_string \"IHandler: still in challenge period\"" + } + ], + "id": 58448, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7800:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7800:78:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58456, + "nodeType": "ExpressionStatement", + "src": "7800:78:58" + }, + { + "assignments": [ + 58459 + ], + "declarations": [ + { + "constant": false, + "id": 58459, + "mutability": "mutable", + "name": "stateCommitment", + "nameLocation": "7912:15:58", + "nodeType": "VariableDeclaration", + "scope": 58600, + "src": "7889:38:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateCommitment_$45347_memory_ptr", + "typeString": "struct StateCommitment" + }, + "typeName": { + "id": 58458, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58457, + "name": "StateCommitment", + "nameLocations": [ + "7889:15:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45347, + "src": "7889:15:58" + }, + "referencedDeclaration": 45347, + "src": "7889:15:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateCommitment_$45347_storage_ptr", + "typeString": "struct StateCommitment" + } + }, + "visibility": "internal" + } + ], + "id": 58465, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 58462, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58430, + "src": "7958:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetResponseMessage_$45536_memory_ptr", + "typeString": "struct GetResponseMessage memory" + } + }, + "id": 58463, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7966:6:58", + "memberName": "height", + "nodeType": "MemberAccess", + "referencedDeclaration": 45531, + "src": "7958:14:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + ], + "expression": { + "id": 58460, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58427, + "src": "7930:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58461, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7935:22:58", + "memberName": "stateMachineCommitment", + "nodeType": "MemberAccess", + "referencedDeclaration": 45898, + "src": "7930:27:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_struct$_StateMachineHeight_$45352_memory_ptr_$returns$_t_struct$_StateCommitment_$45347_memory_ptr_$", + "typeString": "function (struct StateMachineHeight memory) external returns (struct StateCommitment memory)" + } + }, + "id": 58464, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7930:43:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateCommitment_$45347_memory_ptr", + "typeString": "struct StateCommitment memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7889:84:58" + }, + { + "assignments": [ + 58467 + ], + "declarations": [ + { + "constant": false, + "id": 58467, + "mutability": "mutable", + "name": "root", + "nameLocation": "7991:4:58", + "nodeType": "VariableDeclaration", + "scope": 58600, + "src": "7983:12:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 58466, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7983:7:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 58470, + "initialValue": { + "expression": { + "id": 58468, + "name": "stateCommitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58459, + "src": "7998:15:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateCommitment_$45347_memory_ptr", + "typeString": "struct StateCommitment memory" + } + }, + "id": 58469, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8014:9:58", + "memberName": "stateRoot", + "nodeType": "MemberAccess", + "referencedDeclaration": 45346, + "src": "7998:25:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7983:40:58" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 58477, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 58472, + "name": "root", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58467, + "src": "8041:4:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 58475, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8057:1:58", + "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": 58474, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8049:7:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 58473, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8049:7:58", + "typeDescriptions": {} + } + }, + "id": 58476, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8049:10:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "8041:18:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a2050726f6f6620686569676874206e6f7420666f756e6421", + "id": 58478, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8061:35:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_eb4f31515693928b53012cedc95045735db2c103e6bb9ff528968685dcec5221", + "typeString": "literal_string \"IHandler: Proof height not found!\"" + }, + "value": "IHandler: Proof height not found!" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_eb4f31515693928b53012cedc95045735db2c103e6bb9ff528968685dcec5221", + "typeString": "literal_string \"IHandler: Proof height not found!\"" + } + ], + "id": 58471, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "8033:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58479, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8033:64:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58480, + "nodeType": "ExpressionStatement", + "src": "8033:64:58" + }, + { + "assignments": [ + 58482 + ], + "declarations": [ + { + "constant": false, + "id": 58482, + "mutability": "mutable", + "name": "responsesLength", + "nameLocation": "8116:15:58", + "nodeType": "VariableDeclaration", + "scope": 58600, + "src": "8108:23:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58481, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8108:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 58486, + "initialValue": { + "expression": { + "expression": { + "id": 58483, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58430, + "src": "8134:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetResponseMessage_$45536_memory_ptr", + "typeString": "struct GetResponseMessage memory" + } + }, + "id": 58484, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8142:8:58", + "memberName": "requests", + "nodeType": "MemberAccess", + "referencedDeclaration": 45535, + "src": "8134:16:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_GetRequest_$45478_memory_ptr_$dyn_memory_ptr", + "typeString": "struct GetRequest memory[] memory" + } + }, + "id": 58485, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8151:6:58", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "8134:23:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8108:49:58" + }, + { + "assignments": [ + 58491 + ], + "declarations": [ + { + "constant": false, + "id": 58491, + "mutability": "mutable", + "name": "proof", + "nameLocation": "8182:5:58", + "nodeType": "VariableDeclaration", + "scope": 58600, + "src": "8167:20:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 58489, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8167:5:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 58490, + "nodeType": "ArrayTypeName", + "src": "8167:7:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "id": 58494, + "initialValue": { + "expression": { + "id": 58492, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58430, + "src": "8190:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetResponseMessage_$45536_memory_ptr", + "typeString": "struct GetResponseMessage memory" + } + }, + "id": 58493, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8198:5:58", + "memberName": "proof", + "nodeType": "MemberAccess", + "referencedDeclaration": 45528, + "src": "8190:13:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8167:36:58" + }, + { + "body": { + "id": 58598, + "nodeType": "Block", + "src": "8260:917:58", + "statements": [ + { + "assignments": [ + 58507 + ], + "declarations": [ + { + "constant": false, + "id": 58507, + "mutability": "mutable", + "name": "request", + "nameLocation": "8292:7:58", + "nodeType": "VariableDeclaration", + "scope": 58598, + "src": "8274:25:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetRequest_$45478_memory_ptr", + "typeString": "struct GetRequest" + }, + "typeName": { + "id": 58506, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58505, + "name": "GetRequest", + "nameLocations": [ + "8274:10:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45478, + "src": "8274:10:58" + }, + "referencedDeclaration": 45478, + "src": "8274:10:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetRequest_$45478_storage_ptr", + "typeString": "struct GetRequest" + } + }, + "visibility": "internal" + } + ], + "id": 58512, + "initialValue": { + "baseExpression": { + "expression": { + "id": 58508, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58430, + "src": "8302:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetResponseMessage_$45536_memory_ptr", + "typeString": "struct GetResponseMessage memory" + } + }, + "id": 58509, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8310:8:58", + "memberName": "requests", + "nodeType": "MemberAccess", + "referencedDeclaration": 45535, + "src": "8302:16:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_GetRequest_$45478_memory_ptr_$dyn_memory_ptr", + "typeString": "struct GetRequest memory[] memory" + } + }, + "id": 58511, + "indexExpression": { + "id": 58510, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58496, + "src": "8319:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8302:19:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetRequest_$45478_memory_ptr", + "typeString": "struct GetRequest memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8274:47:58" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 58517, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58427, + "src": "8365:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58518, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8370:4:58", + "memberName": "host", + "nodeType": "MemberAccess", + "referencedDeclaration": 45876, + "src": "8365:9:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () external returns (bytes memory)" + } + }, + "id": 58519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8365:11:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "expression": { + "id": 58514, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58507, + "src": "8343:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetRequest_$45478_memory_ptr", + "typeString": "struct GetRequest memory" + } + }, + "id": 58515, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8351:6:58", + "memberName": "source", + "nodeType": "MemberAccess", + "referencedDeclaration": 45462, + "src": "8343:14:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 58516, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8358:6:58", + "memberName": "equals", + "nodeType": "MemberAccess", + "referencedDeclaration": 51729, + "src": "8343:21:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,bytes memory) pure returns (bool)" + } + }, + "id": 58520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8343:34:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a20496e76616c69642047455420726573706f6e73652064657374696e6174696f6e", + "id": 58521, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8379:44:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9dc24080a5cd9466ab2780d7fa70752dcbe4e1d443458cb33d24f93f5dfce948", + "typeString": "literal_string \"IHandler: Invalid GET response destination\"" + }, + "value": "IHandler: Invalid GET response destination" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9dc24080a5cd9466ab2780d7fa70752dcbe4e1d443458cb33d24f93f5dfce948", + "typeString": "literal_string \"IHandler: Invalid GET response destination\"" + } + ], + "id": 58513, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "8335:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58522, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8335:89:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58523, + "nodeType": "ExpressionStatement", + "src": "8335:89:58" + }, + { + "assignments": [ + 58525 + ], + "declarations": [ + { + "constant": false, + "id": 58525, + "mutability": "mutable", + "name": "requestCommitment", + "nameLocation": "8447:17:58", + "nodeType": "VariableDeclaration", + "scope": 58598, + "src": "8439:25:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 58524, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8439:7:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 58530, + "initialValue": { + "arguments": [ + { + "id": 58528, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58507, + "src": "8480:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetRequest_$45478_memory_ptr", + "typeString": "struct GetRequest memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_GetRequest_$45478_memory_ptr", + "typeString": "struct GetRequest memory" + } + ], + "expression": { + "id": 58526, + "name": "Message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45837, + "src": "8467:7:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Message_$45837_$", + "typeString": "type(library Message)" + } + }, + "id": 58527, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8475:4:58", + "memberName": "hash", + "nodeType": "MemberAccess", + "referencedDeclaration": 45745, + "src": "8467:12:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_GetRequest_$45478_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (struct GetRequest memory) pure returns (bytes32)" + } + }, + "id": 58529, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8467:21:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8439:49:58" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 58534, + "name": "requestCommitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58525, + "src": "8534:17:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 58532, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58427, + "src": "8510:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8515:18:58", + "memberName": "requestCommitments", + "nodeType": "MemberAccess", + "referencedDeclaration": 45955, + "src": "8510:23:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes32) external returns (bool)" + } + }, + "id": 58535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8510:42:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a20556e6b6e6f776e204745542072657175657374", + "id": 58536, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8554:31:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c08981adb584b24da2a50180dc8aa8bd1220f9b7d1dbbcec46ea72e9837bbbab", + "typeString": "literal_string \"IHandler: Unknown GET request\"" + }, + "value": "IHandler: Unknown GET request" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c08981adb584b24da2a50180dc8aa8bd1220f9b7d1dbbcec46ea72e9837bbbab", + "typeString": "literal_string \"IHandler: Unknown GET request\"" + } + ], + "id": 58531, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "8502:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8502:84:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58538, + "nodeType": "ExpressionStatement", + "src": "8502:84:58" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 58550, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 58543, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 58540, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58507, + "src": "8625:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetRequest_$45478_memory_ptr", + "typeString": "struct GetRequest memory" + } + }, + "id": 58541, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8633:16:58", + "memberName": "timeoutTimestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45470, + "src": "8625:24:58", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 58542, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8653:1:58", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8625:29:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 58544, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58507, + "src": "8658:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetRequest_$45478_memory_ptr", + "typeString": "struct GetRequest memory" + } + }, + "id": 58545, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8666:16:58", + "memberName": "timeoutTimestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45470, + "src": "8658:24:58", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 58546, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58427, + "src": "8685:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58547, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8690:9:58", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45882, + "src": "8685:14:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () external returns (uint256)" + } + }, + "id": 58548, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8685:16:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8658:43:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8625:76:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a2047455420726571756573742074696d6564206f7574", + "id": 58551, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8719:33:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ca4e713dad53180218b03e9ef7d28c6b452eab4f385a7a8da5c1e57771d298a0", + "typeString": "literal_string \"IHandler: GET request timed out\"" + }, + "value": "IHandler: GET request timed out" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ca4e713dad53180218b03e9ef7d28c6b452eab4f385a7a8da5c1e57771d298a0", + "typeString": "literal_string \"IHandler: GET request timed out\"" + } + ], + "id": 58539, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "8600:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8600:166:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58553, + "nodeType": "ExpressionStatement", + "src": "8600:166:58" + }, + { + "assignments": [ + 58558 + ], + "declarations": [ + { + "constant": false, + "id": 58558, + "mutability": "mutable", + "name": "values", + "nameLocation": "8803:6:58", + "nodeType": "VariableDeclaration", + "scope": 58598, + "src": "8781:28:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_StorageValue_$50961_memory_ptr_$dyn_memory_ptr", + "typeString": "struct StorageValue[]" + }, + "typeName": { + "baseType": { + "id": 58556, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58555, + "name": "StorageValue", + "nameLocations": [ + "8781:12:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 50961, + "src": "8781:12:58" + }, + "referencedDeclaration": 50961, + "src": "8781:12:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StorageValue_$50961_storage_ptr", + "typeString": "struct StorageValue" + } + }, + "id": 58557, + "nodeType": "ArrayTypeName", + "src": "8781:14:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_StorageValue_$50961_storage_$dyn_storage_ptr", + "typeString": "struct StorageValue[]" + } + }, + "visibility": "internal" + } + ], + "id": 58571, + "initialValue": { + "arguments": [ + { + "id": 58561, + "name": "root", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58467, + "src": "8863:4:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 58562, + "name": "proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58491, + "src": "8869:5:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + { + "expression": { + "id": 58563, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58507, + "src": "8876:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetRequest_$45478_memory_ptr", + "typeString": "struct GetRequest memory" + } + }, + "id": 58564, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8884:4:58", + "memberName": "keys", + "nodeType": "MemberAccess", + "referencedDeclaration": 45473, + "src": "8876:12:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + { + "arguments": [ + { + "id": 58568, + "name": "requestCommitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58525, + "src": "8903:17:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 58566, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8890:5:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 58565, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8890:5:58", + "typeDescriptions": {} + } + }, + "id": 58567, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8896:6:58", + "memberName": "concat", + "nodeType": "MemberAccess", + "src": "8890:12:58", + "typeDescriptions": { + "typeIdentifier": "t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 58569, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8890:31:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + }, + { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 58559, + "name": "MerklePatricia", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 51681, + "src": "8828:14:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MerklePatricia_$51681_$", + "typeString": "type(library MerklePatricia)" + } + }, + "id": 58560, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8843:19:58", + "memberName": "ReadChildProofCheck", + "nodeType": "MemberAccess", + "referencedDeclaration": 51342, + "src": "8828:34:58", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_bytes32_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_array$_t_struct$_StorageValue_$50961_memory_ptr_$dyn_memory_ptr_$", + "typeString": "function (bytes32,bytes memory[] memory,bytes memory[] memory,bytes memory) pure returns (struct StorageValue memory[] memory)" + } + }, + "id": 58570, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8828:94:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_StorageValue_$50961_memory_ptr_$dyn_memory_ptr", + "typeString": "struct StorageValue memory[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8781:141:58" + }, + { + "assignments": [ + 58574 + ], + "declarations": [ + { + "constant": false, + "id": 58574, + "mutability": "mutable", + "name": "response", + "nameLocation": "8955:8:58", + "nodeType": "VariableDeclaration", + "scope": 58598, + "src": "8936:27:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetResponse_$45486_memory_ptr", + "typeString": "struct GetResponse" + }, + "typeName": { + "id": 58573, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58572, + "name": "GetResponse", + "nameLocations": [ + "8936:11:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45486, + "src": "8936:11:58" + }, + "referencedDeclaration": 45486, + "src": "8936:11:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetResponse_$45486_storage_ptr", + "typeString": "struct GetResponse" + } + }, + "visibility": "internal" + } + ], + "id": 58579, + "initialValue": { + "arguments": [ + { + "id": 58576, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58507, + "src": "8988:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetRequest_$45478_memory_ptr", + "typeString": "struct GetRequest memory" + } + }, + { + "id": 58577, + "name": "values", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58558, + "src": "9005:6:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_StorageValue_$50961_memory_ptr_$dyn_memory_ptr", + "typeString": "struct StorageValue memory[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_GetRequest_$45478_memory_ptr", + "typeString": "struct GetRequest memory" + }, + { + "typeIdentifier": "t_array$_t_struct$_StorageValue_$50961_memory_ptr_$dyn_memory_ptr", + "typeString": "struct StorageValue memory[] memory" + } + ], + "id": 58575, + "name": "GetResponse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45486, + "src": "8966:11:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_GetResponse_$45486_storage_ptr_$", + "typeString": "type(struct GetResponse storage pointer)" + } + }, + "id": 58578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [ + "8979:7:58", + "8997:6:58" + ], + "names": [ + "request", + "values" + ], + "nodeType": "FunctionCall", + "src": "8966:47:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetResponse_$45486_memory_ptr", + "typeString": "struct GetResponse memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8936:77:58" + }, + { + "expression": { + "arguments": [ + { + "id": 58588, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "9035:49:58", + "subExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 58585, + "name": "response", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58574, + "src": "9074:8:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetResponse_$45486_memory_ptr", + "typeString": "struct GetResponse memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_GetResponse_$45486_memory_ptr", + "typeString": "struct GetResponse memory" + } + ], + "expression": { + "id": 58583, + "name": "Message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45837, + "src": "9061:7:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Message_$45837_$", + "typeString": "type(library Message)" + } + }, + "id": 58584, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9069:4:58", + "memberName": "hash", + "nodeType": "MemberAccess", + "referencedDeclaration": 45836, + "src": "9061:12:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_GetResponse_$45486_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (struct GetResponse memory) pure returns (bytes32)" + } + }, + "id": 58586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9061:22:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 58581, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58427, + "src": "9036:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9041:19:58", + "memberName": "responseCommitments", + "nodeType": "MemberAccess", + "referencedDeclaration": 45963, + "src": "9036:24:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes32) external returns (bool)" + } + }, + "id": 58587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9036:48:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a204475706c69636174652047455420726573706f6e7365", + "id": 58589, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9086:34:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6850f370ead05fc25b8eadb25515e13f223f9a36d2ff7f951b143bf675ebca9e", + "typeString": "literal_string \"IHandler: Duplicate GET response\"" + }, + "value": "IHandler: Duplicate GET response" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6850f370ead05fc25b8eadb25515e13f223f9a36d2ff7f951b143bf675ebca9e", + "typeString": "literal_string \"IHandler: Duplicate GET response\"" + } + ], + "id": 58580, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "9027:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9027:94:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58591, + "nodeType": "ExpressionStatement", + "src": "9027:94:58" + }, + { + "expression": { + "arguments": [ + { + "id": 58595, + "name": "response", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58574, + "src": "9157:8:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetResponse_$45486_memory_ptr", + "typeString": "struct GetResponse memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_GetResponse_$45486_memory_ptr", + "typeString": "struct GetResponse memory" + } + ], + "expression": { + "id": 58592, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58427, + "src": "9135:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58594, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9140:16:58", + "memberName": "dispatchIncoming", + "nodeType": "MemberAccess", + "referencedDeclaration": 46040, + "src": "9135:21:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_struct$_GetResponse_$45486_memory_ptr_$returns$__$", + "typeString": "function (struct GetResponse memory) external" + } + }, + "id": 58596, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9135:31:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58597, + "nodeType": "ExpressionStatement", + "src": "9135:31:58" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 58499, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58496, + "src": "8234:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 58500, + "name": "responsesLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58482, + "src": "8238:15:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8234:19:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 58599, + "initializationExpression": { + "assignments": [ + 58496 + ], + "declarations": [ + { + "constant": false, + "id": 58496, + "mutability": "mutable", + "name": "i", + "nameLocation": "8227:1:58", + "nodeType": "VariableDeclaration", + "scope": 58599, + "src": "8219:9:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58495, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8219:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 58498, + "initialValue": { + "hexValue": "30", + "id": 58497, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8231:1:58", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "8219:13:58" + }, + "loopExpression": { + "expression": { + "id": 58503, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "8255:3:58", + "subExpression": { + "id": 58502, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58496, + "src": "8255:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 58504, + "nodeType": "ExpressionStatement", + "src": "8255:3:58" + }, + "nodeType": "ForStatement", + "src": "8214:963:58" + } + ] + }, + "baseFunctions": [ + 45417 + ], + "documentation": { + "id": 58424, + "nodeType": "StructuredDocumentation", + "src": "7395:188:58", + "text": " @dev check response proofs, message delay and timeouts, then dispatch get responses to modules\n @param host - Ismp host\n @param message - batch get responses" + }, + "functionSelector": "873ce1ce", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 58433, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58427, + "src": "7686:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + } + ], + "id": 58434, + "kind": "modifierInvocation", + "modifierName": { + "id": 58432, + "name": "notFrozen", + "nameLocations": [ + "7676:9:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57755, + "src": "7676:9:58" + }, + "nodeType": "ModifierInvocation", + "src": "7676:15:58" + } + ], + "name": "handleGetResponses", + "nameLocation": "7597:18:58", + "parameters": { + "id": 58431, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58427, + "mutability": "mutable", + "name": "host", + "nameLocation": "7626:4:58", + "nodeType": "VariableDeclaration", + "scope": 58601, + "src": "7616:14:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + }, + "typeName": { + "id": 58426, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58425, + "name": "IIsmpHost", + "nameLocations": [ + "7616:9:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 46055, + "src": "7616:9:58" + }, + "referencedDeclaration": 46055, + "src": "7616:9:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 58430, + "mutability": "mutable", + "name": "message", + "nameLocation": "7658:7:58", + "nodeType": "VariableDeclaration", + "scope": 58601, + "src": "7632:33:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetResponseMessage_$45536_memory_ptr", + "typeString": "struct GetResponseMessage" + }, + "typeName": { + "id": 58429, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58428, + "name": "GetResponseMessage", + "nameLocations": [ + "7632:18:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45536, + "src": "7632:18:58" + }, + "referencedDeclaration": 45536, + "src": "7632:18:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetResponseMessage_$45536_storage_ptr", + "typeString": "struct GetResponseMessage" + } + }, + "visibility": "internal" + } + ], + "src": "7615:51:58" + }, + "returnParameters": { + "id": 58435, + "nodeType": "ParameterList", + "parameters": [], + "src": "7692:0:58" + }, + "scope": 58678, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 58677, + "nodeType": "FunctionDefinition", + "src": "9319:680:58", + "nodes": [], + "body": { + "id": 58676, + "nodeType": "Block", + "src": "9421:578:58", + "nodes": [], + "statements": [ + { + "assignments": [ + 58615 + ], + "declarations": [ + { + "constant": false, + "id": 58615, + "mutability": "mutable", + "name": "timeoutsLength", + "nameLocation": "9439:14:58", + "nodeType": "VariableDeclaration", + "scope": 58676, + "src": "9431:22:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58614, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9431:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 58619, + "initialValue": { + "expression": { + "expression": { + "id": 58616, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58608, + "src": "9456:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetTimeoutMessage_$45541_memory_ptr", + "typeString": "struct GetTimeoutMessage memory" + } + }, + "id": 58617, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9464:8:58", + "memberName": "timeouts", + "nodeType": "MemberAccess", + "referencedDeclaration": 45540, + "src": "9456:16:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_GetRequest_$45478_memory_ptr_$dyn_memory_ptr", + "typeString": "struct GetRequest memory[] memory" + } + }, + "id": 58618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9473:6:58", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "9456:23:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9431:48:58" + }, + { + "body": { + "id": 58674, + "nodeType": "Block", + "src": "9535:458:58", + "statements": [ + { + "assignments": [ + 58632 + ], + "declarations": [ + { + "constant": false, + "id": 58632, + "mutability": "mutable", + "name": "request", + "nameLocation": "9567:7:58", + "nodeType": "VariableDeclaration", + "scope": 58674, + "src": "9549:25:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetRequest_$45478_memory_ptr", + "typeString": "struct GetRequest" + }, + "typeName": { + "id": 58631, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58630, + "name": "GetRequest", + "nameLocations": [ + "9549:10:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45478, + "src": "9549:10:58" + }, + "referencedDeclaration": 45478, + "src": "9549:10:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetRequest_$45478_storage_ptr", + "typeString": "struct GetRequest" + } + }, + "visibility": "internal" + } + ], + "id": 58637, + "initialValue": { + "baseExpression": { + "expression": { + "id": 58633, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58608, + "src": "9577:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetTimeoutMessage_$45541_memory_ptr", + "typeString": "struct GetTimeoutMessage memory" + } + }, + "id": 58634, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9585:8:58", + "memberName": "timeouts", + "nodeType": "MemberAccess", + "referencedDeclaration": 45540, + "src": "9577:16:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_GetRequest_$45478_memory_ptr_$dyn_memory_ptr", + "typeString": "struct GetRequest memory[] memory" + } + }, + "id": 58636, + "indexExpression": { + "id": 58635, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58621, + "src": "9594:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9577:19:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetRequest_$45478_memory_ptr", + "typeString": "struct GetRequest memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9549:47:58" + }, + { + "assignments": [ + 58639 + ], + "declarations": [ + { + "constant": false, + "id": 58639, + "mutability": "mutable", + "name": "requestCommitment", + "nameLocation": "9618:17:58", + "nodeType": "VariableDeclaration", + "scope": 58674, + "src": "9610:25:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 58638, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9610:7:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 58644, + "initialValue": { + "arguments": [ + { + "id": 58642, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58632, + "src": "9651:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetRequest_$45478_memory_ptr", + "typeString": "struct GetRequest memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_GetRequest_$45478_memory_ptr", + "typeString": "struct GetRequest memory" + } + ], + "expression": { + "id": 58640, + "name": "Message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45837, + "src": "9638:7:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Message_$45837_$", + "typeString": "type(library Message)" + } + }, + "id": 58641, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9646:4:58", + "memberName": "hash", + "nodeType": "MemberAccess", + "referencedDeclaration": 45745, + "src": "9638:12:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_GetRequest_$45478_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (struct GetRequest memory) pure returns (bytes32)" + } + }, + "id": 58643, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9638:21:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9610:49:58" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 58648, + "name": "requestCommitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58639, + "src": "9705:17:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 58646, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58605, + "src": "9681:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9686:18:58", + "memberName": "requestCommitments", + "nodeType": "MemberAccess", + "referencedDeclaration": 45955, + "src": "9681:23:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes32) external returns (bool)" + } + }, + "id": 58649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9681:42:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a20556e6b6e6f776e2072657175657374", + "id": 58650, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9725:27:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0a55e60d0bd31807d82a62a7f4b0e63b30a7862fb0f87496c334157082fabab3", + "typeString": "literal_string \"IHandler: Unknown request\"" + }, + "value": "IHandler: Unknown request" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0a55e60d0bd31807d82a62a7f4b0e63b30a7862fb0f87496c334157082fabab3", + "typeString": "literal_string \"IHandler: Unknown request\"" + } + ], + "id": 58645, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "9673:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9673:80:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58652, + "nodeType": "ExpressionStatement", + "src": "9673:80:58" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 58664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 58657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 58654, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58632, + "src": "9793:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetRequest_$45478_memory_ptr", + "typeString": "struct GetRequest memory" + } + }, + "id": 58655, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9801:16:58", + "memberName": "timeoutTimestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45470, + "src": "9793:24:58", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 58656, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9821:1:58", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9793:29:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58663, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 58658, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58605, + "src": "9826:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58659, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9831:9:58", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45882, + "src": "9826:14:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () external returns (uint256)" + } + }, + "id": 58660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9826:16:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 58661, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58632, + "src": "9845:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetRequest_$45478_memory_ptr", + "typeString": "struct GetRequest memory" + } + }, + "id": 58662, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9853:16:58", + "memberName": "timeoutTimestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45470, + "src": "9845:24:58", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "9826:43:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "9793:76:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a204745542072657175657374206e6f742074696d6564206f7574", + "id": 58665, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9887:37:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1ed2158ec10c61cc82a99cbdd3a7a0ebf0cf3ca43ea32076c0f99a0fd48394dc", + "typeString": "literal_string \"IHandler: GET request not timed out\"" + }, + "value": "IHandler: GET request not timed out" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1ed2158ec10c61cc82a99cbdd3a7a0ebf0cf3ca43ea32076c0f99a0fd48394dc", + "typeString": "literal_string \"IHandler: GET request not timed out\"" + } + ], + "id": 58653, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "9768:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9768:170:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58667, + "nodeType": "ExpressionStatement", + "src": "9768:170:58" + }, + { + "expression": { + "arguments": [ + { + "id": 58671, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58632, + "src": "9974:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetRequest_$45478_memory_ptr", + "typeString": "struct GetRequest memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_GetRequest_$45478_memory_ptr", + "typeString": "struct GetRequest memory" + } + ], + "expression": { + "id": 58668, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58605, + "src": "9952:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58670, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9957:16:58", + "memberName": "dispatchIncoming", + "nodeType": "MemberAccess", + "referencedDeclaration": 46047, + "src": "9952:21:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_struct$_GetRequest_$45478_memory_ptr_$returns$__$", + "typeString": "function (struct GetRequest memory) external" + } + }, + "id": 58672, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9952:30:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58673, + "nodeType": "ExpressionStatement", + "src": "9952:30:58" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58626, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 58624, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58621, + "src": "9510:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 58625, + "name": "timeoutsLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58615, + "src": "9514:14:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9510:18:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 58675, + "initializationExpression": { + "assignments": [ + 58621 + ], + "declarations": [ + { + "constant": false, + "id": 58621, + "mutability": "mutable", + "name": "i", + "nameLocation": "9503:1:58", + "nodeType": "VariableDeclaration", + "scope": 58675, + "src": "9495:9:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58620, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9495:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 58623, + "initialValue": { + "hexValue": "30", + "id": 58622, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9507:1:58", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "9495:13:58" + }, + "loopExpression": { + "expression": { + "id": 58628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "9530:3:58", + "subExpression": { + "id": 58627, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58621, + "src": "9530:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 58629, + "nodeType": "ExpressionStatement", + "src": "9530:3:58" + }, + "nodeType": "ForStatement", + "src": "9490:503:58" + } + ] + }, + "baseFunctions": [ + 45437 + ], + "documentation": { + "id": 58602, + "nodeType": "StructuredDocumentation", + "src": "9189:125:58", + "text": " @dev dispatch to modules\n @param host - Ismp host\n @param message - batch get request timeouts" + }, + "functionSelector": "ac269bd6", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 58611, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58605, + "src": "9415:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + } + ], + "id": 58612, + "kind": "modifierInvocation", + "modifierName": { + "id": 58610, + "name": "notFrozen", + "nameLocations": [ + "9405:9:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57755, + "src": "9405:9:58" + }, + "nodeType": "ModifierInvocation", + "src": "9405:15:58" + } + ], + "name": "handleGetTimeouts", + "nameLocation": "9328:17:58", + "parameters": { + "id": 58609, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58605, + "mutability": "mutable", + "name": "host", + "nameLocation": "9356:4:58", + "nodeType": "VariableDeclaration", + "scope": 58677, + "src": "9346:14:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + }, + "typeName": { + "id": 58604, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58603, + "name": "IIsmpHost", + "nameLocations": [ + "9346:9:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 46055, + "src": "9346:9:58" + }, + "referencedDeclaration": 46055, + "src": "9346:9:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 58608, + "mutability": "mutable", + "name": "message", + "nameLocation": "9387:7:58", + "nodeType": "VariableDeclaration", + "scope": 58677, + "src": "9362:32:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetTimeoutMessage_$45541_memory_ptr", + "typeString": "struct GetTimeoutMessage" + }, + "typeName": { + "id": 58607, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58606, + "name": "GetTimeoutMessage", + "nameLocations": [ + "9362:17:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45541, + "src": "9362:17:58" + }, + "referencedDeclaration": 45541, + "src": "9362:17:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetTimeoutMessage_$45541_storage_ptr", + "typeString": "struct GetTimeoutMessage" + } + }, + "visibility": "internal" + } + ], + "src": "9345:50:58" + }, + "returnParameters": { + "id": 58613, + "nodeType": "ParameterList", + "parameters": [], + "src": "9421:0:58" + }, + "scope": 58678, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 57734, + "name": "IHandler", + "nameLocations": [ + "362:8:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45438, + "src": "362:8:58" + }, + "id": 57735, + "nodeType": "InheritanceSpecifier", + "src": "362:8:58" + }, + { + "baseName": { + "id": 57736, + "name": "Context", + "nameLocations": [ + "372:7:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 47465, + "src": "372:7:58" + }, + "id": 57737, + "nodeType": "InheritanceSpecifier", + "src": "372:7:58" + } + ], + "canonicalName": "HandlerV1", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "linearizedBaseContracts": [ + 58678, + 47465, + 45438 + ], + "name": "HandlerV1", + "nameLocation": "349:9:58", + "scope": 58679, + "usedErrors": [] + } + ], + "license": "UNLICENSED" + }, + "id": 58 +} \ No newline at end of file diff --git a/evm/forge/src/forge.rs b/evm/forge/src/forge.rs index 0ae16a900..932132fd2 100644 --- a/evm/forge/src/forge.rs +++ b/evm/forge/src/forge.rs @@ -47,6 +47,18 @@ static PROJECT: Lazy = Lazy::new(|| { path: path.to_str().unwrap().to_string(), }); } + { + paths.remappings.retain(|mapping| &*mapping.name != "multi-chain-tokens/"); + // manually insert openzeppelin to remmapings. forge isn't autodetecting. + let mut path = root.clone(); + path.push("lib/multi-chain-tokens/src"); + paths.remappings.push(Remapping { + context: None, + name: "multi-chain-tokens/".to_string(), + path: path.to_str().unwrap().to_string(), + }); + } + Project::builder().paths(paths).ephemeral().no_artifacts().build().unwrap() }); diff --git a/evm/lib/multi-chain-tokens b/evm/lib/multi-chain-tokens deleted file mode 160000 index b41cbbe89..000000000 --- a/evm/lib/multi-chain-tokens +++ /dev/null @@ -1 +0,0 @@ -Subproject commit b41cbbe89651de9a993220d0e6bbf74194bf9e20 diff --git a/evm/src/modules/TokenFaucet.sol b/evm/src/modules/TokenFaucet.sol index d310df00b..ee574460b 100644 --- a/evm/src/modules/TokenFaucet.sol +++ b/evm/src/modules/TokenFaucet.sol @@ -22,4 +22,4 @@ contract TokenFaucet { consumers[msg.sender] = block.timestamp; IERC5679Ext20(token).mint(msg.sender, 100 * 10e18, ""); } -} \ No newline at end of file +} diff --git a/evm/src/modules/TokenGateway.sol b/evm/src/modules/TokenGateway.sol index 04fb4865b..7eaf51110 100644 --- a/evm/src/modules/TokenGateway.sol +++ b/evm/src/modules/TokenGateway.sol @@ -7,6 +7,17 @@ import "multi-chain-tokens/interfaces/IERC6160Ext20.sol"; error ZeroAddress(); +struct SendParams { + // amount to be sent + uint256 amount; + // recipient address + address to; + // recipient state machine + bytes dest; + // IERC6160Ext20 token contract, should be the same on both chains + address tokenContract; +} + contract TokenGateway is IIsmpModule { address private host; address private admin; @@ -30,12 +41,12 @@ contract TokenGateway is IIsmpModule { } // The Gateway contract has to have the roles `MINTER` and `BURNER`. - function send(uint256 amount, address to, bytes memory dest, address tokenContract) public { + function send(SendParams memory params) public { address from = msg.sender; - IERC6160Ext20(tokenContract).burn(from, amount, ""); - bytes memory data = abi.encodePacked(from, to, amount, tokenContract); + IERC6160Ext20(params.tokenContract).burn(from, params.amount, ""); + bytes memory data = abi.encode(from, params.to, params.amount, params.tokenContract); DispatchPost memory request = DispatchPost({ - dest: dest, + dest: params.dest, to: abi.encodePacked(address(this)), // should the same address across evm hosts body: data, timeout: 60 * 60, // seconds @@ -45,13 +56,13 @@ contract TokenGateway is IIsmpModule { } function onAccept(PostRequest memory request) public onlyIsmpHost { - (address _from, address to, uint256 amount, address tokenContract) = _decodePackedData(request.body); + (address _from, address to, uint256 amount, address tokenContract) = abi.decode(request.body, (address, address, uint256, address)); IERC6160Ext20(tokenContract).mint(to, amount, ""); } function onPostTimeout(PostRequest memory request) public onlyIsmpHost { - (address from, address _to, uint256 amount, address tokenContract) = _decodePackedData(request.body); + (address from, address _to, uint256 amount, address tokenContract) = abi.decode(request.body, (address, address, uint256, address)); IERC6160Ext20(tokenContract).mint(from, amount, ""); } @@ -67,18 +78,4 @@ contract TokenGateway is IIsmpModule { function onGetTimeout(GetRequest memory request) public view onlyIsmpHost { revert("Token gateway doesn't emit Get Requests"); } - - function _decodePackedData(bytes memory data) - internal - pure - returns (address from_, address to_, uint256 amount_, address tokenContract_) - { - // todo: - assembly { - from_ := div(mload(add(data, 32)), 0x1000000000000000000000000) // hex slicing to get first 20-bytes. - to_ := div(mload(add(data, 32)), 0x1000000000000000000000000) // hex slicing to get first 20-bytes. - amount_ := mload(add(data, 52)) - tokenContract_ := mload(add(data, 84)) - } - } }