diff --git a/cartesi-rollups/contracts/bindings-rs/src/contract/.gitignore b/cartesi-rollups/contracts/bindings-rs/src/contract/.gitignore deleted file mode 100644 index fffad1c..0000000 --- a/cartesi-rollups/contracts/bindings-rs/src/contract/.gitignore +++ /dev/null @@ -1 +0,0 @@ -daveconsensus.rs diff --git a/cartesi-rollups/contracts/bindings-rs/src/contract/daveconsensus.rs b/cartesi-rollups/contracts/bindings-rs/src/contract/daveconsensus.rs new file mode 100644 index 0000000..64fec07 --- /dev/null +++ b/cartesi-rollups/contracts/bindings-rs/src/contract/daveconsensus.rs @@ -0,0 +1,3004 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library Machine { + type Hash is bytes32; +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Machine { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Hash(alloy::sol_types::private::FixedBytes<32>); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue + for alloy::sol_types::private::FixedBytes<32> { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::FixedBytes<32>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl Hash { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: alloy::sol_types::private::FixedBytes<32>) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> alloy::sol_types::private::FixedBytes<32> { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Hash { + type RustType = alloy::sol_types::private::FixedBytes<32>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Hash { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Machine`](self) contract instance. + +See the [wrapper's documentation](`MachineInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MachineInstance { + MachineInstance::::new(address, provider) + } + /**A [`Machine`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Machine`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MachineInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MachineInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MachineInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MachineInstance { + /**Creates a new wrapper around an on-chain [`Machine`](self) contract instance. + +See the [wrapper's documentation](`MachineInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MachineInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MachineInstance { + MachineInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MachineInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MachineInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library Machine { + type Hash is bytes32; +} + +interface DaveConsensus { + error IncorrectEpochNumber(uint256 received, uint256 actual); + error InputHashMismatch(bytes32 fromReceivedInput, bytes32 fromInputBox); + error TournamentNotFinishedYet(); + + event ConsensusCreation(address inputBox, address appContract, address tournamentFactory); + event EpochSealed(uint256 epochNumber, uint256 inputIndexLowerBound, uint256 inputIndexUpperBound, Machine.Hash initialMachineStateHash, address tournament); + + constructor(address inputBox, address appContract, address tournamentFactory, Machine.Hash initialMachineStateHash); + + function canSettle() external view returns (bool isFinished, uint256 epochNumber); + function getApplicationContract() external view returns (address); + function getCurrentSealedEpoch() external view returns (uint256 epochNumber, uint256 inputIndexLowerBound, uint256 inputIndexUpperBound, address tournament); + function getInputBox() external view returns (address); + function getTournamentFactory() external view returns (address); + function provideMerkleRootOfInput(uint256 inputIndexWithinEpoch, bytes memory input) external view returns (bytes32); + function settle(uint256 epochNumber) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "inputBox", + "type": "address", + "internalType": "contract IInputBox" + }, + { + "name": "appContract", + "type": "address", + "internalType": "address" + }, + { + "name": "tournamentFactory", + "type": "address", + "internalType": "contract ITournamentFactory" + }, + { + "name": "initialMachineStateHash", + "type": "bytes32", + "internalType": "Machine.Hash" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "canSettle", + "inputs": [], + "outputs": [ + { + "name": "isFinished", + "type": "bool", + "internalType": "bool" + }, + { + "name": "epochNumber", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getApplicationContract", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getCurrentSealedEpoch", + "inputs": [], + "outputs": [ + { + "name": "epochNumber", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "inputIndexLowerBound", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "inputIndexUpperBound", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "tournament", + "type": "address", + "internalType": "contract ITournament" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getInputBox", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IInputBox" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getTournamentFactory", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ITournamentFactory" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "provideMerkleRootOfInput", + "inputs": [ + { + "name": "inputIndexWithinEpoch", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "input", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "settle", + "inputs": [ + { + "name": "epochNumber", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "ConsensusCreation", + "inputs": [ + { + "name": "inputBox", + "type": "address", + "indexed": false, + "internalType": "contract IInputBox" + }, + { + "name": "appContract", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "tournamentFactory", + "type": "address", + "indexed": false, + "internalType": "contract ITournamentFactory" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "EpochSealed", + "inputs": [ + { + "name": "epochNumber", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "inputIndexLowerBound", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "inputIndexUpperBound", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "initialMachineStateHash", + "type": "bytes32", + "indexed": false, + "internalType": "Machine.Hash" + }, + { + "name": "tournament", + "type": "address", + "indexed": false, + "internalType": "contract ITournament" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "IncorrectEpochNumber", + "inputs": [ + { + "name": "received", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "actual", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "InputHashMismatch", + "inputs": [ + { + "name": "fromReceivedInput", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "fromInputBox", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "type": "error", + "name": "TournamentNotFinishedYet", + "inputs": [] + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod DaveConsensus { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60e080604052346101ef57608081611982803803809161001f828561023b565b8339810103126101ef578051906001600160a01b038216908183036101ef576020810151906001600160a01b0382168083036101ef5760408201516001600160a01b038116938482036101ef57606060209401519660805260a05260c0527faf68463e16cb5595a44214bea8d366ecf7cd3410269c50f92c104b50a7829daa60606040518681528385820152856040820152a16024604051809581936361a93c8760e01b835260048301525afa9182156101fb575f92610206575b5060205f9183600255604460405180948193630b64d79b60e01b83528860048401523060248401525af19081156101fb575f916101a6575b5f5160206119625f395f51905f5260a0848685600180851b03169081600180861b03196003541617600355604051925f84525f6020850152604084015260608301526080820152a16040516116ef9081610273823960805181818160950152818161028401526106d5015260a051818181610252015281816104560152610697015260c05181818161019301526102f20152f35b90506020813d6020116101f3575b816101c16020938361023b565b810103126101ef5751906001600160a01b03821682036101ef57905f5160206119625f395f51905f52610112565b5f80fd5b3d91506101b4565b6040513d5f823e3d90fd5b9091506020813d602011610233575b816102226020938361023b565b810103126101ef57519060206100da565b3d9150610215565b601f909101601f19168101906001600160401b0382119082101761025e57604052565b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c8062aace9a146100835780631239acd91461007e5780637a96f48014610079578063813a1aaf146100745780638df828001461006f578063c050be001461006a5763faf7ba6a14610065575f80fd5b610485565b610441565b6101c2565b61017e565b610108565b6100cb565b346100c7575f3660031901126100c7577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166080908152602090f35b5f80fd5b346100c7575f3660031901126100c75760805f5460015460025460018060a01b036003541691604051938452602084015260408301526060820152f35b346100c75760403660031901126100c75760043560243567ffffffffffffffff81116100c757366023820112156100c757806004013567ffffffffffffffff81116100c75736602482840101116100c75761017a92602461016a930190610650565b6040519081529081906020820190565b0390f35b346100c7575f3660031901126100c7576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100c75760203660031901126100c757600480356101e55f548281811461074d565b6003546060906001600160a01b031660405163cb2773db60e01b815293849182905afa9081156103cd575f925f92610403575b5061022661022b929361078f565b6107a5565b805f556002549061023b82600155565b6040516361a93c8760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015292602084806024810103817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9384156103cd575f946103d2575b506102c684600255565b604051630b64d79b60e01b815260048101829052306024820152906020826044815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19081156103cd577fa26dc18868f1ea57f349a68088792f3db37af6fc05cbeb62cf37947ededf06e695610397935f9361039c575b50600380546001600160a01b0319166001600160a01b0385161790556040519586958693909594919260809360a0860197865260208601526040850152606084015260018060a01b0316910152565b0390a1005b6103bf91935060203d6020116103c6575b6103b781836105ab565b8101906107b3565b915f610348565b503d6103ad565b610627565b6103f591945060203d6020116103fc575b6103ed81836105ab565b810190610618565b925f6102bc565b503d6103e3565b610226935061022b925061042e9060603d60601161043a575b61042681836105ab565b81019061076b565b94919050939250610218565b503d61041c565b346100c7575f3660031901126100c7576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100c7575f3660031901126100c75760035460405163cb2773db60e01b815290606090829060049082906001600160a01b03165afa9081156103cd575f916104e0575b505f54604080519215158352602083019190915290f35b6104f9915060603d60601161043a5761042681836105ab565b50505f6104c9565b634e487b7160e01b5f52601160045260245ffd5b600201908160021161052357565b610501565b906040820180921161052357565b906020820180921161052357565b906010820180921161052357565b906008820180921161052357565b906004820180921161052357565b906002820180921161052357565b906001820180921161052357565b9190820180921161052357565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176105cd57604052565b610597565b92919267ffffffffffffffff82116105cd57604051916105fc601f8201601f1916602001846105ab565b8294818452818301116100c7578281602093845f960137010152565b908160209103126100c7575190565b6040513d5f823e3d90fd5b1561063b575050565b6352faaeb760e11b5f5260045260245260445ffd5b61065f9092919260015461058a565b91600254831015610746576106d1602061067a3685856105d2565b80519082012060405163677087c960e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260248101969096529491829081906044820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156103cd576107229461071d925f92610725575b50818114610632565b6107d2565b90565b61073f91925060203d6020116103fc576103ed81836105ab565b905f610714565b5050505f90565b15610756575050565b6304c9aca960e11b5f5260045260245260445ffd5b908160609103126100c757805180151581036100c757916040602083015192015190565b1561079657565b630ee145cb60e31b5f5260045ffd5b5f1981146105235760010190565b908160209103126100c757516001600160a01b03811681036100c75790565b610722916107df81610823565b60058111156107ee57916109e7565b506005916109e7565b60041981019190821161052357565b5f1981019190821161052357565b60011981019190821161052357565b8061082d57505f90565b5f1981019081116105235761084190610b47565b6101000361010081116105235790565b1561085857565b60405162461bcd60e51b815260206004820152601760248201527f447269766520736d616c6c6572207468616e206c6561660000000000000000006044820152606490fd5b156108a457565b60405162461bcd60e51b815260206004820152601860248201527f4472697665206c6172676572207468616e206d656d6f727900000000000000006044820152606490fd5b156108f057565b60405162461bcd60e51b815260206004820152601660248201527544617461206c6172676572207468616e20647269766560501b6044820152606490fd5b67ffffffffffffffff81116105cd5760051b60200190565b906109508261092e565b61095d60405191826105ab565b828152809261096e601f199161092e565b0190602036910137565b8051156109855760200190565b634e487b7160e01b5f52603260045260245ffd5b80518210156109855760209160051b010190565b156109b457565b60405162461bcd60e51b815260206004820152600b60248201526a39ba30b1b59032b93937b960a91b6044820152606490fd5b9091610a0c906109fa6005821015610851565b610a07604082111561089d565b6107f7565b908215610b3c5790610a38610a336001831b92610a2e8460051b8711156108e9565b610515565b610946565b925f92835b838110610a61575050505090610a586001610a5d93146109ad565b610978565b5190565b828160051b105f14610b045780610a7c610a8c928585611644565b610a868789610999565b526107a5565b92610a9784956107a5565b945b6001811615610aa9575092610a3d565b94610af881610ae6610ac6610ac0610aff95610806565b8b610999565b51610ad9610ad384610814565b8c610999565b515f5260205260405f2090565b610af2610ac083610814565b52610806565b9560011c90565b610a99565b92610a97610b33610b1486611622565b95610b1e876115ba565b610b28898b610999565b526001871b9061058a565b80951c956107a5565b5061072291506115ba565b8015610c7f575f906fffffffffffffffffffffffffffffffff19811615610c74575b6001600160c01b0319811615610c5b575b6001600160e01b0319811615610c42575b6001600160f01b0319811615610c29575b6001600160f81b0319811615610c10575b600f60fc1b811615610bf7575b600360fe1b811615610bde575b600160ff1b1615610bd55790565b6107229061057c565b90610beb610bf29161056e565b9160021b90565b610bc7565b90610c04610c0b91610560565b9160041b90565b610bba565b90610c1d610c2491610552565b9160081b90565b610bad565b90610c36610c3d91610544565b9160101b90565b610b9c565b90610c4f610c5691610536565b9160201b90565b610b8b565b90610c68610c6f91610528565b9160401b90565b610b7a565b60809150811b610b69565b5061010090565b60405190610c966107a0836105ab565b61078082527f31d0f66ab43019856780cb246cfd37b0c190d17111d5c016f19ba715ee622dc5610780837f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56360208201527f633dc4d7da7256660a892f8f1604a44b5432649cc8ec5cb3ced4c4e6ac94dd1d60408201527f890740a8eb06ce9be422cb8da5cdafc2b58c0a5e24036c578de2a433c828ff7d60608201527f3b8ec09e026fdc305365dfc94e189a81b38c7597b3d941c279f042e8206e0bd860808201527fecd50eee38e386bd62be9bedb990706951b65fe053bd9d8a521af753d139e2da60a08201527fdefff6d330bb5403f63b14f33b578274160de3a50df4efecf0e0db73bcdd3da560c08201527f617bdd11f7c0a11f49db22f629387a12da7596f9d1704d7465177c63d88ec7d760e08201527f292c23a9aa1d8bea7e2435e555a4a60e379a5a35f3f452bae60121073fb6eead6101008201527fe1cea92ed99acdcb045a6726b2f87107e8a61620a232cf4d7d5b5766b3952e106101208201527f7ad66c0a68c72cb89e4fb4303841966e4062a76ab97451e3b9fb526a5ceb7f826101408201527fe026cc5a4aed3c22a58cbd3d2ac754c9352c5436f638042dca99034e836365166101608201527f3d04cffd8b46a874edf5cfae63077de85f849a660426697b06a829c70dd1409c6101808201527fad676aa337a485e4728a0b240d92b3ef7b3c372d06d189322bfd5f61f1e7203e6101a08201527fa2fca4a49658f9fab7aa63289c91b7c7b6c832a6d0e69334ff5b0a3483d09dab6101c08201527f4ebfd9cd7bca2505f7bef59cc1c12ecc708fff26ae4af19abe852afe9e20c8626101e08201527f2def10d13dd169f550f578bda343d9717a138562e0093b380a1120789d53cf106102008201527f776a31db34a1a0a7caaf862cffdfff1789297ffadc380bd3d39281d340abd3ad6102208201527fe2e7610b87a5fdf3a72ebe271287d923ab990eefac64b6e59d79f8b7e08c46e36102408201527f504364a5c6858bf98fff714ab5be9de19ed31a976860efbd0e772a2efe23e2e06102608201527f4f05f4acb83f5b65168d9fef89d56d4d77b8944015e6b1eed81b0238e2d0dba36102808201527f44a6d974c75b07423e1d6d33f481916fdd45830aea11b6347e700cd8b9f0767c6102a08201527fedf260291f734ddac396a956127dde4c34c0cfb8d8052f88ac139658ccf2d5076102c08201527f6075c657a105351e7f0fce53bc320113324a522e8fd52dc878c762551e01a46e6102e08201527f6ca6a3f763a9395f7da16014725ca7ee17e4815c0ff8119bf33f273dee11833b6103008201527f1c25ef10ffeb3c7d08aa707d17286e0b0d3cbcb50f1bd3b6523b63ba3b52dd0f6103208201527ffffc43bd08273ccf135fd3cacbeef055418e09eb728d727c4d5d5c556cdea7e36103408201527fc5ab8111456b1f28f3c7a0a604b4553ce905cb019c463ee159137af83c350b226103608201527f0ff273fcbf4ae0f2bd88d6cf319ff4004f8d7dca70d4ced4e74d2c74139739e66103808201527f7fa06ba11241ddd5efdc65d4e39c9f6991b74fd4b81b62230808216c876f827c6103a08201527f7e275adf313a996c7e2950cac67caba02a5ff925ebf9906b58949f3e77aec5b96103c08201527f8f6162fa308d2b3a15dc33cffac85f13ab349173121645aedf00f471663108be6103e08201527f78ccaaab73373552f207a63599de54d7d8d0c1805f86ce7da15818d09f4cff626104008201527fcf277fb80a82478460e8988570b718f1e083ceb76f7e271a1a1497e5975f53ae6104208201527f4bf6ffa2bc131204513289738567a68fa9f4827dac7fd3b3d1f2e94777d57f366104408201527fb49d61e8c2c894e12486176ab8f4d7069d6692fa6495541567872e7ecbddb7266104608201527f202b1014739f29b1d905d630ddeb8560a32bf23e666c8a1523a4a600227fef7c6104808201527f9e1d1ce5cdca9cdf40fa5786548b58eb19ddfd32395b4582983919099dbd15316104a08201527f13784d01e2fae904de62c6fbf9776979ca7a2777ae2632ee278d19aca30f890e6104c08201527f68c477f83a13a000ad2b5b3e50375b7c3ae782d987ba4b5a65376bbb97469fb36104e08201527f71e37864edf08740d592362cd24d0db067bf14cd3b97bd2a68e782adffb436556105008201527f88d0cc35e8abe7d6524569be8aa1a48bb23362326fdfefe961348bc96091c94c6105208201527f8545f2c1afdace5d87f06ce1d44bc0a2691aea4414d0ad640be0d9879c8374d96105408201527f2360c4480d69879eadd7ae508409f2f0ba83a2b0fe0da57b40008c064d2c397d6105608201527f31763a8e1dedb15ad0c8b88d437fef835aeb958292644810663dc1756550f22b6105808201527ffa4c9b1172ab5afebd159573e19e25169975242e10a2ed38dfc805232fb50a646105a08201527f3528594d65e9525233b39587174bcf0bba562d95b50b429914c7e0e8a9ae58f96105c08201527f1765922797ba721e8937c7470a26d5c2f141f3d4106447dab171fced7d652a696105e08201527ff0573e660ba01cff272a1c6f7927d73c94c85d380a84399867626d6429d48bae6106008201527f31682c19f715cd317da1a553ce384de6902fe26032fecc7de03e40502af05dce6106208201527fd50c6062bfcd7bbd0dbd68d1ddeeae095485720a1ce334e9e5e5153066f422606106408201527fe0bcfbd03fa4a619a5bc3cae15404f39b4b7bf5ddd5161ea642d13d23baef5456106608201527facb98b6fb1a5fdae0a5718d0b812e1de1412e44d875146acc1a7f7c3916c003a6106808201527fbb1ff291eb2e614a661d6730b502bae2bde112958cee698478845a1bb3788a6b6106a08201527f9a91f4c19545d6cd9720d4736591fe70edcf3e33cb2e56f21fdc1244f3d2ef6d6106c08201527fbdf82c7d252d69c64bd6fa8ee66ad9d30241016981e4580e3c2edc4804b752366106e08201527f63bc3b9e8340ab48a66828d7d9d7d5be2f5f280665196d25a39c4d01345cb95e6107008201527fa962e4bd7d1f316f845784e115ff103530d85f9dfacd638ad45fbe938ba85c406107208201527fb3f100a0f506f6a6c86c10f107ab4811ddc76f72516fcdfa8a0c9bd71ff912ab6107408201527fe7e8dbc3898515970ca6fce19039ca22ae2638e44b24641fd61048b94dc2be256107608201520152565b603b81116115e6578060051b9080820460201490151715610523576020906115e0610c86565b01015190565b60405162461bcd60e51b8152602060048201526014602482015273486569676874206f7574206f6620626f756e647360601b6044820152606490fd5b8061162e575061010090565b5f19810181811161052357610841911916610b47565b9160051b90808210156116a7578082116100c75791810135910360208110611696575b50604051611690816116826020820194859190602083019252565b03601f1981018352826105ab565b51902090565b5f199060200360031b1b165f611667565b50505060206116b4610c86565b01519056fea26469706673582212201ffc9a10fe921b8bbeba6157a2908c167e2b422d2381dc9e0353b0c6c5086dfe64736f6c634300081b0033a26dc18868f1ea57f349a68088792f3db37af6fc05cbeb62cf37947ededf06e6 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\xE0\x80`@R4a\x01\xEFW`\x80\x81a\x19\x82\x808\x03\x80\x91a\0\x1F\x82\x85a\x02;V[\x839\x81\x01\x03\x12a\x01\xEFW\x80Q\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x90\x81\x83\x03a\x01\xEFW` \x81\x01Q\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x80\x83\x03a\x01\xEFW`@\x82\x01Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x93\x84\x82\x03a\x01\xEFW``` \x94\x01Q\x96`\x80R`\xA0R`\xC0R\x7F\xAFhF>\x16\xCBU\x95\xA4B\x14\xBE\xA8\xD3f\xEC\xF7\xCD4\x10&\x9CP\xF9,\x10KP\xA7\x82\x9D\xAA```@Q\x86\x81R\x83\x85\x82\x01R\x85`@\x82\x01R\xA1`$`@Q\x80\x95\x81\x93ca\xA9<\x87`\xE0\x1B\x83R`\x04\x83\x01RZ\xFA\x91\x82\x15a\x01\xFBW_\x92a\x02\x06W[P` _\x91\x83`\x02U`D`@Q\x80\x94\x81\x93c\x0Bd\xD7\x9B`\xE0\x1B\x83R\x88`\x04\x84\x01R0`$\x84\x01RZ\xF1\x90\x81\x15a\x01\xFBW_\x91a\x01\xA6W[_Q` a\x19b_9_Q\x90_R`\xA0\x84\x86\x85`\x01\x80\x85\x1B\x03\x16\x90\x81`\x01\x80\x86\x1B\x03\x19`\x03T\x16\x17`\x03U`@Q\x92_\x84R_` \x85\x01R`@\x84\x01R``\x83\x01R`\x80\x82\x01R\xA1`@Qa\x16\xEF\x90\x81a\x02s\x829`\x80Q\x81\x81\x81`\x95\x01R\x81\x81a\x02\x84\x01Ra\x06\xD5\x01R`\xA0Q\x81\x81\x81a\x02R\x01R\x81\x81a\x04V\x01Ra\x06\x97\x01R`\xC0Q\x81\x81\x81a\x01\x93\x01Ra\x02\xF2\x01R\xF3[\x90P` \x81=` \x11a\x01\xF3W[\x81a\x01\xC1` \x93\x83a\x02;V[\x81\x01\x03\x12a\x01\xEFWQ\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x01\xEFW\x90_Q` a\x19b_9_Q\x90_Ra\x01\x12V[_\x80\xFD[=\x91Pa\x01\xB4V[`@Q=_\x82>=\x90\xFD[\x90\x91P` \x81=` \x11a\x023W[\x81a\x02\"` \x93\x83a\x02;V[\x81\x01\x03\x12a\x01\xEFWQ\x90` a\0\xDAV[=\x91Pa\x02\x15V[`\x1F\x90\x91\x01`\x1F\x19\x16\x81\x01\x90`\x01`\x01`@\x1B\x03\x82\x11\x90\x82\x10\x17a\x02^W`@RV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD\xFE`\x80`@R`\x046\x10\x15a\0\x11W_\x80\xFD[_5`\xE0\x1C\x80b\xAA\xCE\x9A\x14a\0\x83W\x80c\x129\xAC\xD9\x14a\0~W\x80cz\x96\xF4\x80\x14a\0yW\x80c\x81:\x1A\xAF\x14a\0tW\x80c\x8D\xF8(\0\x14a\0oW\x80c\xC0P\xBE\0\x14a\0jWc\xFA\xF7\xBAj\x14a\0eW_\x80\xFD[a\x04\x85V[a\x04AV[a\x01\xC2V[a\x01~V[a\x01\x08V[a\0\xCBV[4a\0\xC7W_6`\x03\x19\x01\x12a\0\xC7W\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16`\x80\x90\x81R` \x90\xF3[_\x80\xFD[4a\0\xC7W_6`\x03\x19\x01\x12a\0\xC7W`\x80_T`\x01T`\x02T`\x01\x80`\xA0\x1B\x03`\x03T\x16\x91`@Q\x93\x84R` \x84\x01R`@\x83\x01R``\x82\x01R\xF3[4a\0\xC7W`@6`\x03\x19\x01\x12a\0\xC7W`\x045`$5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\0\xC7W6`#\x82\x01\x12\x15a\0\xC7W\x80`\x04\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\0\xC7W6`$\x82\x84\x01\x01\x11a\0\xC7Wa\x01z\x92`$a\x01j\x93\x01\x90a\x06PV[`@Q\x90\x81R\x90\x81\x90` \x82\x01\x90V[\x03\x90\xF3[4a\0\xC7W_6`\x03\x19\x01\x12a\0\xC7W`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\0\xC7W` 6`\x03\x19\x01\x12a\0\xC7W`\x04\x805a\x01\xE5_T\x82\x81\x81\x14a\x07MV[`\x03T``\x90`\x01`\x01`\xA0\x1B\x03\x16`@Qc\xCB's\xDB`\xE0\x1B\x81R\x93\x84\x91\x82\x90Z\xFA\x90\x81\x15a\x03\xCDW_\x92_\x92a\x04\x03W[Pa\x02&a\x02+\x92\x93a\x07\x8FV[a\x07\xA5V[\x80_U`\x02T\x90a\x02;\x82`\x01UV[`@Qca\xA9<\x87`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16`\x04\x82\x01R\x92` \x84\x80`$\x81\x01\x03\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x93\x84\x15a\x03\xCDW_\x94a\x03\xD2W[Pa\x02\xC6\x84`\x02UV[`@Qc\x0Bd\xD7\x9B`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R0`$\x82\x01R\x90` \x82`D\x81_`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16Z\xF1\x90\x81\x15a\x03\xCDW\x7F\xA2m\xC1\x88h\xF1\xEAW\xF3I\xA6\x80\x88y/=\xB3z\xF6\xFC\x05\xCB\xEBb\xCF7\x94~\xDE\xDF\x06\xE6\x95a\x03\x97\x93_\x93a\x03\x9CW[P`\x03\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x85\x16\x17\x90U`@Q\x95\x86\x95\x86\x93\x90\x95\x94\x91\x92`\x80\x93`\xA0\x86\x01\x97\x86R` \x86\x01R`@\x85\x01R``\x84\x01R`\x01\x80`\xA0\x1B\x03\x16\x91\x01RV[\x03\x90\xA1\0[a\x03\xBF\x91\x93P` =` \x11a\x03\xC6W[a\x03\xB7\x81\x83a\x05\xABV[\x81\x01\x90a\x07\xB3V[\x91_a\x03HV[P=a\x03\xADV[a\x06'V[a\x03\xF5\x91\x94P` =` \x11a\x03\xFCW[a\x03\xED\x81\x83a\x05\xABV[\x81\x01\x90a\x06\x18V[\x92_a\x02\xBCV[P=a\x03\xE3V[a\x02&\x93Pa\x02+\x92Pa\x04.\x90``=``\x11a\x04:W[a\x04&\x81\x83a\x05\xABV[\x81\x01\x90a\x07kV[\x94\x91\x90P\x93\x92Pa\x02\x18V[P=a\x04\x1CV[4a\0\xC7W_6`\x03\x19\x01\x12a\0\xC7W`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\0\xC7W_6`\x03\x19\x01\x12a\0\xC7W`\x03T`@Qc\xCB's\xDB`\xE0\x1B\x81R\x90``\x90\x82\x90`\x04\x90\x82\x90`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x03\xCDW_\x91a\x04\xE0W[P_T`@\x80Q\x92\x15\x15\x83R` \x83\x01\x91\x90\x91R\x90\xF3[a\x04\xF9\x91P``=``\x11a\x04:Wa\x04&\x81\x83a\x05\xABV[PP_a\x04\xC9V[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x02\x01\x90\x81`\x02\x11a\x05#WV[a\x05\x01V[\x90`@\x82\x01\x80\x92\x11a\x05#WV[\x90` \x82\x01\x80\x92\x11a\x05#WV[\x90`\x10\x82\x01\x80\x92\x11a\x05#WV[\x90`\x08\x82\x01\x80\x92\x11a\x05#WV[\x90`\x04\x82\x01\x80\x92\x11a\x05#WV[\x90`\x02\x82\x01\x80\x92\x11a\x05#WV[\x90`\x01\x82\x01\x80\x92\x11a\x05#WV[\x91\x90\x82\x01\x80\x92\x11a\x05#WV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x05\xCDW`@RV[a\x05\x97V[\x92\x91\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x05\xCDW`@Q\x91a\x05\xFC`\x1F\x82\x01`\x1F\x19\x16` \x01\x84a\x05\xABV[\x82\x94\x81\x84R\x81\x83\x01\x11a\0\xC7W\x82\x81` \x93\x84_\x96\x017\x01\x01RV[\x90\x81` \x91\x03\x12a\0\xC7WQ\x90V[`@Q=_\x82>=\x90\xFD[\x15a\x06;WPPV[cR\xFA\xAE\xB7`\xE1\x1B_R`\x04R`$R`D_\xFD[a\x06_\x90\x92\x91\x92`\x01Ta\x05\x8AV[\x91`\x02T\x83\x10\x15a\x07FWa\x06\xD1` a\x06z6\x85\x85a\x05\xD2V[\x80Q\x90\x82\x01 `@Qcgp\x87\xC9`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16`\x04\x82\x01R`$\x81\x01\x96\x90\x96R\x94\x91\x82\x90\x81\x90`D\x82\x01\x90V[\x03\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x80\x15a\x03\xCDWa\x07\"\x94a\x07\x1D\x92_\x92a\x07%W[P\x81\x81\x14a\x062V[a\x07\xD2V[\x90V[a\x07?\x91\x92P` =` \x11a\x03\xFCWa\x03\xED\x81\x83a\x05\xABV[\x90_a\x07\x14V[PPP_\x90V[\x15a\x07VWPPV[c\x04\xC9\xAC\xA9`\xE1\x1B_R`\x04R`$R`D_\xFD[\x90\x81``\x91\x03\x12a\0\xC7W\x80Q\x80\x15\x15\x81\x03a\0\xC7W\x91`@` \x83\x01Q\x92\x01Q\x90V[\x15a\x07\x96WV[c\x0E\xE1E\xCB`\xE3\x1B_R`\x04_\xFD[_\x19\x81\x14a\x05#W`\x01\x01\x90V[\x90\x81` \x91\x03\x12a\0\xC7WQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\0\xC7W\x90V[a\x07\"\x91a\x07\xDF\x81a\x08#V[`\x05\x81\x11\x15a\x07\xEEW\x91a\t\xE7V[P`\x05\x91a\t\xE7V[`\x04\x19\x81\x01\x91\x90\x82\x11a\x05#WV[_\x19\x81\x01\x91\x90\x82\x11a\x05#WV[`\x01\x19\x81\x01\x91\x90\x82\x11a\x05#WV[\x80a\x08-WP_\x90V[_\x19\x81\x01\x90\x81\x11a\x05#Wa\x08A\x90a\x0BGV[a\x01\0\x03a\x01\0\x81\x11a\x05#W\x90V[\x15a\x08XWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FDrive smaller than leaf\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x15a\x08\xA4WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FDrive larger than memory\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x15a\x08\xF0WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x16`$\x82\x01RuData larger than drive`P\x1B`D\x82\x01R`d\x90\xFD[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x05\xCDW`\x05\x1B` \x01\x90V[\x90a\tP\x82a\t.V[a\t]`@Q\x91\x82a\x05\xABV[\x82\x81R\x80\x92a\tn`\x1F\x19\x91a\t.V[\x01\x90` 6\x91\x017V[\x80Q\x15a\t\x85W` \x01\x90V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[\x80Q\x82\x10\x15a\t\x85W` \x91`\x05\x1B\x01\x01\x90V[\x15a\t\xB4WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0B`$\x82\x01Rj9\xBA0\xB1\xB5\x902\xB997\xB9`\xA9\x1B`D\x82\x01R`d\x90\xFD[\x90\x91a\n\x0C\x90a\t\xFA`\x05\x82\x10\x15a\x08QV[a\n\x07`@\x82\x11\x15a\x08\x9DV[a\x07\xF7V[\x90\x82\x15a\x0Ba\x01\xA0\x82\x01R\x7F\xA2\xFC\xA4\xA4\x96X\xF9\xFA\xB7\xAAc(\x9C\x91\xB7\xC7\xB6\xC82\xA6\xD0\xE6\x934\xFF[\n4\x83\xD0\x9D\xABa\x01\xC0\x82\x01R\x7FN\xBF\xD9\xCD{\xCA%\x05\xF7\xBE\xF5\x9C\xC1\xC1.\xCCp\x8F\xFF&\xAEJ\xF1\x9A\xBE\x85*\xFE\x9E \xC8ba\x01\xE0\x82\x01R\x7F-\xEF\x10\xD1=\xD1i\xF5P\xF5x\xBD\xA3C\xD9qz\x13\x85b\xE0\t;8\n\x11 x\x9DS\xCF\x10a\x02\0\x82\x01R\x7Fwj1\xDB4\xA1\xA0\xA7\xCA\xAF\x86,\xFF\xDF\xFF\x17\x89)\x7F\xFA\xDC8\x0B\xD3\xD3\x92\x81\xD3@\xAB\xD3\xADa\x02 \x82\x01R\x7F\xE2\xE7a\x0B\x87\xA5\xFD\xF3\xA7.\xBE'\x12\x87\xD9#\xAB\x99\x0E\xEF\xACd\xB6\xE5\x9Dy\xF8\xB7\xE0\x8CF\xE3a\x02@\x82\x01R\x7FPCd\xA5\xC6\x85\x8B\xF9\x8F\xFFqJ\xB5\xBE\x9D\xE1\x9E\xD3\x1A\x97h`\xEF\xBD\x0Ew*.\xFE#\xE2\xE0a\x02`\x82\x01R\x7FO\x05\xF4\xAC\xB8?[e\x16\x8D\x9F\xEF\x89\xD5mMw\xB8\x94@\x15\xE6\xB1\xEE\xD8\x1B\x028\xE2\xD0\xDB\xA3a\x02\x80\x82\x01R\x7FD\xA6\xD9t\xC7[\x07B>\x1Dm3\xF4\x81\x91o\xDDE\x83\n\xEA\x11\xB64~p\x0C\xD8\xB9\xF0v|a\x02\xA0\x82\x01R\x7F\xED\xF2`)\x1FsM\xDA\xC3\x96\xA9V\x12}\xDEL4\xC0\xCF\xB8\xD8\x05/\x88\xAC\x13\x96X\xCC\xF2\xD5\x07a\x02\xC0\x82\x01R\x7F`u\xC6W\xA1\x055\x1E\x7F\x0F\xCES\xBC2\x01\x132JR.\x8F\xD5-\xC8x\xC7bU\x1E\x01\xA4na\x02\xE0\x82\x01R\x7Fl\xA6\xA3\xF7c\xA99_}\xA1`\x14r\\\xA7\xEE\x17\xE4\x81\\\x0F\xF8\x11\x9B\xF3?'=\xEE\x11\x83;a\x03\0\x82\x01R\x7F\x1C%\xEF\x10\xFF\xEB<}\x08\xAAp}\x17(n\x0B\r<\xBC\xB5\x0F\x1B\xD3\xB6R;c\xBA;R\xDD\x0Fa\x03 \x82\x01R\x7F\xFF\xFCC\xBD\x08'<\xCF\x13_\xD3\xCA\xCB\xEE\xF0UA\x8E\t\xEBr\x8Dr|M]\\Ul\xDE\xA7\xE3a\x03@\x82\x01R\x7F\xC5\xAB\x81\x11Ek\x1F(\xF3\xC7\xA0\xA6\x04\xB4U<\xE9\x05\xCB\x01\x9CF>\xE1Y\x13z\xF8<5\x0B\"a\x03`\x82\x01R\x7F\x0F\xF2s\xFC\xBFJ\xE0\xF2\xBD\x88\xD6\xCF1\x9F\xF4\0O\x8D}\xCAp\xD4\xCE\xD4\xE7M,t\x13\x979\xE6a\x03\x80\x82\x01R\x7F\x7F\xA0k\xA1\x12A\xDD\xD5\xEF\xDCe\xD4\xE3\x9C\x9Fi\x91\xB7O\xD4\xB8\x1Bb#\x08\x08!l\x87o\x82|a\x03\xA0\x82\x01R\x7F~'Z\xDF1:\x99l~)P\xCA\xC6|\xAB\xA0*_\xF9%\xEB\xF9\x90kX\x94\x9F>w\xAE\xC5\xB9a\x03\xC0\x82\x01R\x7F\x8Fab\xFA0\x8D+:\x15\xDC3\xCF\xFA\xC8_\x13\xAB4\x91s\x12\x16E\xAE\xDF\0\xF4qf1\x08\xBEa\x03\xE0\x82\x01R\x7Fx\xCC\xAA\xABs75R\xF2\x07\xA65\x99\xDET\xD7\xD8\xD0\xC1\x80_\x86\xCE}\xA1X\x18\xD0\x9FL\xFFba\x04\0\x82\x01R\x7F\xCF'\x7F\xB8\n\x82G\x84`\xE8\x98\x85p\xB7\x18\xF1\xE0\x83\xCE\xB7o~'\x1A\x1A\x14\x97\xE5\x97_S\xAEa\x04 \x82\x01R\x7FK\xF6\xFF\xA2\xBC\x13\x12\x04Q2\x89s\x85g\xA6\x8F\xA9\xF4\x82}\xAC\x7F\xD3\xB3\xD1\xF2\xE9Gw\xD5\x7F6a\x04@\x82\x01R\x7F\xB4\x9Da\xE8\xC2\xC8\x94\xE1$\x86\x17j\xB8\xF4\xD7\x06\x9Df\x92\xFAd\x95T\x15g\x87.~\xCB\xDD\xB7&a\x04`\x82\x01R\x7F +\x10\x14s\x9F)\xB1\xD9\x05\xD60\xDD\xEB\x85`\xA3+\xF2>fl\x8A\x15#\xA4\xA6\0\"\x7F\xEF|a\x04\x80\x82\x01R\x7F\x9E\x1D\x1C\xE5\xCD\xCA\x9C\xDF@\xFAW\x86T\x8BX\xEB\x19\xDD\xFD29[E\x82\x989\x19\t\x9D\xBD\x151a\x04\xA0\x82\x01R\x7F\x13xM\x01\xE2\xFA\xE9\x04\xDEb\xC6\xFB\xF9wiy\xCAz'w\xAE&2\xEE'\x8D\x19\xAC\xA3\x0F\x89\x0Ea\x04\xC0\x82\x01R\x7Fh\xC4w\xF8:\x13\xA0\0\xAD+[>P7[|:\xE7\x82\xD9\x87\xBAKZe7k\xBB\x97F\x9F\xB3a\x04\xE0\x82\x01R\x7Fq\xE3xd\xED\xF0\x87@\xD5\x926,\xD2M\r\xB0g\xBF\x14\xCD;\x97\xBD*h\xE7\x82\xAD\xFF\xB46Ua\x05\0\x82\x01R\x7F\x88\xD0\xCC5\xE8\xAB\xE7\xD6REi\xBE\x8A\xA1\xA4\x8B\xB23b2o\xDF\xEF\xE9a4\x8B\xC9`\x91\xC9La\x05 \x82\x01R\x7F\x85E\xF2\xC1\xAF\xDA\xCE]\x87\xF0l\xE1\xD4K\xC0\xA2i\x1A\xEAD\x14\xD0\xADd\x0B\xE0\xD9\x87\x9C\x83t\xD9a\x05@\x82\x01R\x7F#`\xC4H\ri\x87\x9E\xAD\xD7\xAEP\x84\t\xF2\xF0\xBA\x83\xA2\xB0\xFE\r\xA5{@\0\x8C\x06M,9}a\x05`\x82\x01R\x7F1v:\x8E\x1D\xED\xB1Z\xD0\xC8\xB8\x8DC\x7F\xEF\x83Z\xEB\x95\x82\x92dH\x10f=\xC1ueP\xF2+a\x05\x80\x82\x01R\x7F\xFAL\x9B\x11r\xABZ\xFE\xBD\x15\x95s\xE1\x9E%\x16\x99u$.\x10\xA2\xED8\xDF\xC8\x05#/\xB5\nda\x05\xA0\x82\x01R\x7F5(YMe\xE9RR3\xB3\x95\x87\x17K\xCF\x0B\xBAV-\x95\xB5\x0BB\x99\x14\xC7\xE0\xE8\xA9\xAEX\xF9a\x05\xC0\x82\x01R\x7F\x17e\x92'\x97\xBAr\x1E\x897\xC7G\n&\xD5\xC2\xF1A\xF3\xD4\x10dG\xDA\xB1q\xFC\xED}e*ia\x05\xE0\x82\x01R\x7F\xF0W>f\x0B\xA0\x1C\xFF'*\x1Coy'\xD7<\x94\xC8]8\n\x849\x98gbmd)\xD4\x8B\xAEa\x06\0\x82\x01R\x7F1h,\x19\xF7\x15\xCD1}\xA1\xA5S\xCE8M\xE6\x90/\xE2`2\xFE\xCC}\xE0>@P*\xF0]\xCEa\x06 \x82\x01R\x7F\xD5\x0C`b\xBF\xCD{\xBD\r\xBDh\xD1\xDD\xEE\xAE\tT\x85r\n\x1C\xE34\xE9\xE5\xE5\x150f\xF4\"`a\x06@\x82\x01R\x7F\xE0\xBC\xFB\xD0?\xA4\xA6\x19\xA5\xBC<\xAE\x15@O9\xB4\xB7\xBF]\xDDQa\xEAd-\x13\xD2;\xAE\xF5Ea\x06`\x82\x01R\x7F\xAC\xB9\x8Bo\xB1\xA5\xFD\xAE\nW\x18\xD0\xB8\x12\xE1\xDE\x14\x12\xE4M\x87QF\xAC\xC1\xA7\xF7\xC3\x91l\0:a\x06\x80\x82\x01R\x7F\xBB\x1F\xF2\x91\xEB.aJf\x1Dg0\xB5\x02\xBA\xE2\xBD\xE1\x12\x95\x8C\xEEi\x84x\x84Z\x1B\xB3x\x8Aka\x06\xA0\x82\x01R\x7F\x9A\x91\xF4\xC1\x95E\xD6\xCD\x97 \xD4se\x91\xFEp\xED\xCF>3\xCB.V\xF2\x1F\xDC\x12D\xF3\xD2\xEFma\x06\xC0\x82\x01R\x7F\xBD\xF8,}%-i\xC6K\xD6\xFA\x8E\xE6j\xD9\xD3\x02A\x01i\x81\xE4X\x0E<.\xDCH\x04\xB7R6a\x06\xE0\x82\x01R\x7Fc\xBC;\x9E\x83@\xABH\xA6h(\xD7\xD9\xD7\xD5\xBE/_(\x06e\x19m%\xA3\x9CM\x014\\\xB9^a\x07\0\x82\x01R\x7F\xA9b\xE4\xBD}\x1F1o\x84W\x84\xE1\x15\xFF\x1050\xD8_\x9D\xFA\xCDc\x8A\xD4_\xBE\x93\x8B\xA8\\@a\x07 \x82\x01R\x7F\xB3\xF1\0\xA0\xF5\x06\xF6\xA6\xC8l\x10\xF1\x07\xABH\x11\xDD\xC7orQo\xCD\xFA\x8A\x0C\x9B\xD7\x1F\xF9\x12\xABa\x07@\x82\x01R\x7F\xE7\xE8\xDB\xC3\x89\x85\x15\x97\x0C\xA6\xFC\xE1\x909\xCA\"\xAE&8\xE4K$d\x1F\xD6\x10H\xB9M\xC2\xBE%a\x07`\x82\x01R\x01RV[`;\x81\x11a\x15\xE6W\x80`\x05\x1B\x90\x80\x82\x04` \x14\x90\x15\x17\x15a\x05#W` \x90a\x15\xE0a\x0C\x86V[\x01\x01Q\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01RsHeight out of bounds``\x1B`D\x82\x01R`d\x90\xFD[\x80a\x16.WPa\x01\0\x90V[_\x19\x81\x01\x81\x81\x11a\x05#Wa\x08A\x91\x19\x16a\x0BGV[\x91`\x05\x1B\x90\x80\x82\x10\x15a\x16\xA7W\x80\x82\x11a\0\xC7W\x91\x81\x015\x91\x03` \x81\x10a\x16\x96W[P`@Qa\x16\x90\x81a\x16\x82` \x82\x01\x94\x85\x91\x90` \x83\x01\x92RV[\x03`\x1F\x19\x81\x01\x83R\x82a\x05\xABV[Q\x90 \x90V[_\x19\x90` \x03`\x03\x1B\x1B\x16_a\x16gV[PPP` a\x16\xB4a\x0C\x86V[\x01Q\x90V\xFE\xA2dipfsX\"\x12 \x1F\xFC\x9A\x10\xFE\x92\x1B\x8B\xBE\xBAaW\xA2\x90\x8C\x16~+B-#\x81\xDC\x9E\x03S\xB0\xC6\xC5\x08m\xFEdsolcC\0\x08\x1B\x003\xA2m\xC1\x88h\xF1\xEAW\xF3I\xA6\x80\x88y/=\xB3z\xF6\xFC\x05\xCB\xEBb\xCF7\x94~\xDE\xDF\x06\xE6", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x60806040526004361015610011575f80fd5b5f3560e01c8062aace9a146100835780631239acd91461007e5780637a96f48014610079578063813a1aaf146100745780638df828001461006f578063c050be001461006a5763faf7ba6a14610065575f80fd5b610485565b610441565b6101c2565b61017e565b610108565b6100cb565b346100c7575f3660031901126100c7577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166080908152602090f35b5f80fd5b346100c7575f3660031901126100c75760805f5460015460025460018060a01b036003541691604051938452602084015260408301526060820152f35b346100c75760403660031901126100c75760043560243567ffffffffffffffff81116100c757366023820112156100c757806004013567ffffffffffffffff81116100c75736602482840101116100c75761017a92602461016a930190610650565b6040519081529081906020820190565b0390f35b346100c7575f3660031901126100c7576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100c75760203660031901126100c757600480356101e55f548281811461074d565b6003546060906001600160a01b031660405163cb2773db60e01b815293849182905afa9081156103cd575f925f92610403575b5061022661022b929361078f565b6107a5565b805f556002549061023b82600155565b6040516361a93c8760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015292602084806024810103817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9384156103cd575f946103d2575b506102c684600255565b604051630b64d79b60e01b815260048101829052306024820152906020826044815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19081156103cd577fa26dc18868f1ea57f349a68088792f3db37af6fc05cbeb62cf37947ededf06e695610397935f9361039c575b50600380546001600160a01b0319166001600160a01b0385161790556040519586958693909594919260809360a0860197865260208601526040850152606084015260018060a01b0316910152565b0390a1005b6103bf91935060203d6020116103c6575b6103b781836105ab565b8101906107b3565b915f610348565b503d6103ad565b610627565b6103f591945060203d6020116103fc575b6103ed81836105ab565b810190610618565b925f6102bc565b503d6103e3565b610226935061022b925061042e9060603d60601161043a575b61042681836105ab565b81019061076b565b94919050939250610218565b503d61041c565b346100c7575f3660031901126100c7576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100c7575f3660031901126100c75760035460405163cb2773db60e01b815290606090829060049082906001600160a01b03165afa9081156103cd575f916104e0575b505f54604080519215158352602083019190915290f35b6104f9915060603d60601161043a5761042681836105ab565b50505f6104c9565b634e487b7160e01b5f52601160045260245ffd5b600201908160021161052357565b610501565b906040820180921161052357565b906020820180921161052357565b906010820180921161052357565b906008820180921161052357565b906004820180921161052357565b906002820180921161052357565b906001820180921161052357565b9190820180921161052357565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176105cd57604052565b610597565b92919267ffffffffffffffff82116105cd57604051916105fc601f8201601f1916602001846105ab565b8294818452818301116100c7578281602093845f960137010152565b908160209103126100c7575190565b6040513d5f823e3d90fd5b1561063b575050565b6352faaeb760e11b5f5260045260245260445ffd5b61065f9092919260015461058a565b91600254831015610746576106d1602061067a3685856105d2565b80519082012060405163677087c960e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260248101969096529491829081906044820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156103cd576107229461071d925f92610725575b50818114610632565b6107d2565b90565b61073f91925060203d6020116103fc576103ed81836105ab565b905f610714565b5050505f90565b15610756575050565b6304c9aca960e11b5f5260045260245260445ffd5b908160609103126100c757805180151581036100c757916040602083015192015190565b1561079657565b630ee145cb60e31b5f5260045ffd5b5f1981146105235760010190565b908160209103126100c757516001600160a01b03811681036100c75790565b610722916107df81610823565b60058111156107ee57916109e7565b506005916109e7565b60041981019190821161052357565b5f1981019190821161052357565b60011981019190821161052357565b8061082d57505f90565b5f1981019081116105235761084190610b47565b6101000361010081116105235790565b1561085857565b60405162461bcd60e51b815260206004820152601760248201527f447269766520736d616c6c6572207468616e206c6561660000000000000000006044820152606490fd5b156108a457565b60405162461bcd60e51b815260206004820152601860248201527f4472697665206c6172676572207468616e206d656d6f727900000000000000006044820152606490fd5b156108f057565b60405162461bcd60e51b815260206004820152601660248201527544617461206c6172676572207468616e20647269766560501b6044820152606490fd5b67ffffffffffffffff81116105cd5760051b60200190565b906109508261092e565b61095d60405191826105ab565b828152809261096e601f199161092e565b0190602036910137565b8051156109855760200190565b634e487b7160e01b5f52603260045260245ffd5b80518210156109855760209160051b010190565b156109b457565b60405162461bcd60e51b815260206004820152600b60248201526a39ba30b1b59032b93937b960a91b6044820152606490fd5b9091610a0c906109fa6005821015610851565b610a07604082111561089d565b6107f7565b908215610b3c5790610a38610a336001831b92610a2e8460051b8711156108e9565b610515565b610946565b925f92835b838110610a61575050505090610a586001610a5d93146109ad565b610978565b5190565b828160051b105f14610b045780610a7c610a8c928585611644565b610a868789610999565b526107a5565b92610a9784956107a5565b945b6001811615610aa9575092610a3d565b94610af881610ae6610ac6610ac0610aff95610806565b8b610999565b51610ad9610ad384610814565b8c610999565b515f5260205260405f2090565b610af2610ac083610814565b52610806565b9560011c90565b610a99565b92610a97610b33610b1486611622565b95610b1e876115ba565b610b28898b610999565b526001871b9061058a565b80951c956107a5565b5061072291506115ba565b8015610c7f575f906fffffffffffffffffffffffffffffffff19811615610c74575b6001600160c01b0319811615610c5b575b6001600160e01b0319811615610c42575b6001600160f01b0319811615610c29575b6001600160f81b0319811615610c10575b600f60fc1b811615610bf7575b600360fe1b811615610bde575b600160ff1b1615610bd55790565b6107229061057c565b90610beb610bf29161056e565b9160021b90565b610bc7565b90610c04610c0b91610560565b9160041b90565b610bba565b90610c1d610c2491610552565b9160081b90565b610bad565b90610c36610c3d91610544565b9160101b90565b610b9c565b90610c4f610c5691610536565b9160201b90565b610b8b565b90610c68610c6f91610528565b9160401b90565b610b7a565b60809150811b610b69565b5061010090565b60405190610c966107a0836105ab565b61078082527f31d0f66ab43019856780cb246cfd37b0c190d17111d5c016f19ba715ee622dc5610780837f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56360208201527f633dc4d7da7256660a892f8f1604a44b5432649cc8ec5cb3ced4c4e6ac94dd1d60408201527f890740a8eb06ce9be422cb8da5cdafc2b58c0a5e24036c578de2a433c828ff7d60608201527f3b8ec09e026fdc305365dfc94e189a81b38c7597b3d941c279f042e8206e0bd860808201527fecd50eee38e386bd62be9bedb990706951b65fe053bd9d8a521af753d139e2da60a08201527fdefff6d330bb5403f63b14f33b578274160de3a50df4efecf0e0db73bcdd3da560c08201527f617bdd11f7c0a11f49db22f629387a12da7596f9d1704d7465177c63d88ec7d760e08201527f292c23a9aa1d8bea7e2435e555a4a60e379a5a35f3f452bae60121073fb6eead6101008201527fe1cea92ed99acdcb045a6726b2f87107e8a61620a232cf4d7d5b5766b3952e106101208201527f7ad66c0a68c72cb89e4fb4303841966e4062a76ab97451e3b9fb526a5ceb7f826101408201527fe026cc5a4aed3c22a58cbd3d2ac754c9352c5436f638042dca99034e836365166101608201527f3d04cffd8b46a874edf5cfae63077de85f849a660426697b06a829c70dd1409c6101808201527fad676aa337a485e4728a0b240d92b3ef7b3c372d06d189322bfd5f61f1e7203e6101a08201527fa2fca4a49658f9fab7aa63289c91b7c7b6c832a6d0e69334ff5b0a3483d09dab6101c08201527f4ebfd9cd7bca2505f7bef59cc1c12ecc708fff26ae4af19abe852afe9e20c8626101e08201527f2def10d13dd169f550f578bda343d9717a138562e0093b380a1120789d53cf106102008201527f776a31db34a1a0a7caaf862cffdfff1789297ffadc380bd3d39281d340abd3ad6102208201527fe2e7610b87a5fdf3a72ebe271287d923ab990eefac64b6e59d79f8b7e08c46e36102408201527f504364a5c6858bf98fff714ab5be9de19ed31a976860efbd0e772a2efe23e2e06102608201527f4f05f4acb83f5b65168d9fef89d56d4d77b8944015e6b1eed81b0238e2d0dba36102808201527f44a6d974c75b07423e1d6d33f481916fdd45830aea11b6347e700cd8b9f0767c6102a08201527fedf260291f734ddac396a956127dde4c34c0cfb8d8052f88ac139658ccf2d5076102c08201527f6075c657a105351e7f0fce53bc320113324a522e8fd52dc878c762551e01a46e6102e08201527f6ca6a3f763a9395f7da16014725ca7ee17e4815c0ff8119bf33f273dee11833b6103008201527f1c25ef10ffeb3c7d08aa707d17286e0b0d3cbcb50f1bd3b6523b63ba3b52dd0f6103208201527ffffc43bd08273ccf135fd3cacbeef055418e09eb728d727c4d5d5c556cdea7e36103408201527fc5ab8111456b1f28f3c7a0a604b4553ce905cb019c463ee159137af83c350b226103608201527f0ff273fcbf4ae0f2bd88d6cf319ff4004f8d7dca70d4ced4e74d2c74139739e66103808201527f7fa06ba11241ddd5efdc65d4e39c9f6991b74fd4b81b62230808216c876f827c6103a08201527f7e275adf313a996c7e2950cac67caba02a5ff925ebf9906b58949f3e77aec5b96103c08201527f8f6162fa308d2b3a15dc33cffac85f13ab349173121645aedf00f471663108be6103e08201527f78ccaaab73373552f207a63599de54d7d8d0c1805f86ce7da15818d09f4cff626104008201527fcf277fb80a82478460e8988570b718f1e083ceb76f7e271a1a1497e5975f53ae6104208201527f4bf6ffa2bc131204513289738567a68fa9f4827dac7fd3b3d1f2e94777d57f366104408201527fb49d61e8c2c894e12486176ab8f4d7069d6692fa6495541567872e7ecbddb7266104608201527f202b1014739f29b1d905d630ddeb8560a32bf23e666c8a1523a4a600227fef7c6104808201527f9e1d1ce5cdca9cdf40fa5786548b58eb19ddfd32395b4582983919099dbd15316104a08201527f13784d01e2fae904de62c6fbf9776979ca7a2777ae2632ee278d19aca30f890e6104c08201527f68c477f83a13a000ad2b5b3e50375b7c3ae782d987ba4b5a65376bbb97469fb36104e08201527f71e37864edf08740d592362cd24d0db067bf14cd3b97bd2a68e782adffb436556105008201527f88d0cc35e8abe7d6524569be8aa1a48bb23362326fdfefe961348bc96091c94c6105208201527f8545f2c1afdace5d87f06ce1d44bc0a2691aea4414d0ad640be0d9879c8374d96105408201527f2360c4480d69879eadd7ae508409f2f0ba83a2b0fe0da57b40008c064d2c397d6105608201527f31763a8e1dedb15ad0c8b88d437fef835aeb958292644810663dc1756550f22b6105808201527ffa4c9b1172ab5afebd159573e19e25169975242e10a2ed38dfc805232fb50a646105a08201527f3528594d65e9525233b39587174bcf0bba562d95b50b429914c7e0e8a9ae58f96105c08201527f1765922797ba721e8937c7470a26d5c2f141f3d4106447dab171fced7d652a696105e08201527ff0573e660ba01cff272a1c6f7927d73c94c85d380a84399867626d6429d48bae6106008201527f31682c19f715cd317da1a553ce384de6902fe26032fecc7de03e40502af05dce6106208201527fd50c6062bfcd7bbd0dbd68d1ddeeae095485720a1ce334e9e5e5153066f422606106408201527fe0bcfbd03fa4a619a5bc3cae15404f39b4b7bf5ddd5161ea642d13d23baef5456106608201527facb98b6fb1a5fdae0a5718d0b812e1de1412e44d875146acc1a7f7c3916c003a6106808201527fbb1ff291eb2e614a661d6730b502bae2bde112958cee698478845a1bb3788a6b6106a08201527f9a91f4c19545d6cd9720d4736591fe70edcf3e33cb2e56f21fdc1244f3d2ef6d6106c08201527fbdf82c7d252d69c64bd6fa8ee66ad9d30241016981e4580e3c2edc4804b752366106e08201527f63bc3b9e8340ab48a66828d7d9d7d5be2f5f280665196d25a39c4d01345cb95e6107008201527fa962e4bd7d1f316f845784e115ff103530d85f9dfacd638ad45fbe938ba85c406107208201527fb3f100a0f506f6a6c86c10f107ab4811ddc76f72516fcdfa8a0c9bd71ff912ab6107408201527fe7e8dbc3898515970ca6fce19039ca22ae2638e44b24641fd61048b94dc2be256107608201520152565b603b81116115e6578060051b9080820460201490151715610523576020906115e0610c86565b01015190565b60405162461bcd60e51b8152602060048201526014602482015273486569676874206f7574206f6620626f756e647360601b6044820152606490fd5b8061162e575061010090565b5f19810181811161052357610841911916610b47565b9160051b90808210156116a7578082116100c75791810135910360208110611696575b50604051611690816116826020820194859190602083019252565b03601f1981018352826105ab565b51902090565b5f199060200360031b1b165f611667565b50505060206116b4610c86565b01519056fea26469706673582212201ffc9a10fe921b8bbeba6157a2908c167e2b422d2381dc9e0353b0c6c5086dfe64736f6c634300081b0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x046\x10\x15a\0\x11W_\x80\xFD[_5`\xE0\x1C\x80b\xAA\xCE\x9A\x14a\0\x83W\x80c\x129\xAC\xD9\x14a\0~W\x80cz\x96\xF4\x80\x14a\0yW\x80c\x81:\x1A\xAF\x14a\0tW\x80c\x8D\xF8(\0\x14a\0oW\x80c\xC0P\xBE\0\x14a\0jWc\xFA\xF7\xBAj\x14a\0eW_\x80\xFD[a\x04\x85V[a\x04AV[a\x01\xC2V[a\x01~V[a\x01\x08V[a\0\xCBV[4a\0\xC7W_6`\x03\x19\x01\x12a\0\xC7W\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16`\x80\x90\x81R` \x90\xF3[_\x80\xFD[4a\0\xC7W_6`\x03\x19\x01\x12a\0\xC7W`\x80_T`\x01T`\x02T`\x01\x80`\xA0\x1B\x03`\x03T\x16\x91`@Q\x93\x84R` \x84\x01R`@\x83\x01R``\x82\x01R\xF3[4a\0\xC7W`@6`\x03\x19\x01\x12a\0\xC7W`\x045`$5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\0\xC7W6`#\x82\x01\x12\x15a\0\xC7W\x80`\x04\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\0\xC7W6`$\x82\x84\x01\x01\x11a\0\xC7Wa\x01z\x92`$a\x01j\x93\x01\x90a\x06PV[`@Q\x90\x81R\x90\x81\x90` \x82\x01\x90V[\x03\x90\xF3[4a\0\xC7W_6`\x03\x19\x01\x12a\0\xC7W`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\0\xC7W` 6`\x03\x19\x01\x12a\0\xC7W`\x04\x805a\x01\xE5_T\x82\x81\x81\x14a\x07MV[`\x03T``\x90`\x01`\x01`\xA0\x1B\x03\x16`@Qc\xCB's\xDB`\xE0\x1B\x81R\x93\x84\x91\x82\x90Z\xFA\x90\x81\x15a\x03\xCDW_\x92_\x92a\x04\x03W[Pa\x02&a\x02+\x92\x93a\x07\x8FV[a\x07\xA5V[\x80_U`\x02T\x90a\x02;\x82`\x01UV[`@Qca\xA9<\x87`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16`\x04\x82\x01R\x92` \x84\x80`$\x81\x01\x03\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x93\x84\x15a\x03\xCDW_\x94a\x03\xD2W[Pa\x02\xC6\x84`\x02UV[`@Qc\x0Bd\xD7\x9B`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R0`$\x82\x01R\x90` \x82`D\x81_`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16Z\xF1\x90\x81\x15a\x03\xCDW\x7F\xA2m\xC1\x88h\xF1\xEAW\xF3I\xA6\x80\x88y/=\xB3z\xF6\xFC\x05\xCB\xEBb\xCF7\x94~\xDE\xDF\x06\xE6\x95a\x03\x97\x93_\x93a\x03\x9CW[P`\x03\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x85\x16\x17\x90U`@Q\x95\x86\x95\x86\x93\x90\x95\x94\x91\x92`\x80\x93`\xA0\x86\x01\x97\x86R` \x86\x01R`@\x85\x01R``\x84\x01R`\x01\x80`\xA0\x1B\x03\x16\x91\x01RV[\x03\x90\xA1\0[a\x03\xBF\x91\x93P` =` \x11a\x03\xC6W[a\x03\xB7\x81\x83a\x05\xABV[\x81\x01\x90a\x07\xB3V[\x91_a\x03HV[P=a\x03\xADV[a\x06'V[a\x03\xF5\x91\x94P` =` \x11a\x03\xFCW[a\x03\xED\x81\x83a\x05\xABV[\x81\x01\x90a\x06\x18V[\x92_a\x02\xBCV[P=a\x03\xE3V[a\x02&\x93Pa\x02+\x92Pa\x04.\x90``=``\x11a\x04:W[a\x04&\x81\x83a\x05\xABV[\x81\x01\x90a\x07kV[\x94\x91\x90P\x93\x92Pa\x02\x18V[P=a\x04\x1CV[4a\0\xC7W_6`\x03\x19\x01\x12a\0\xC7W`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\0\xC7W_6`\x03\x19\x01\x12a\0\xC7W`\x03T`@Qc\xCB's\xDB`\xE0\x1B\x81R\x90``\x90\x82\x90`\x04\x90\x82\x90`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x03\xCDW_\x91a\x04\xE0W[P_T`@\x80Q\x92\x15\x15\x83R` \x83\x01\x91\x90\x91R\x90\xF3[a\x04\xF9\x91P``=``\x11a\x04:Wa\x04&\x81\x83a\x05\xABV[PP_a\x04\xC9V[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x02\x01\x90\x81`\x02\x11a\x05#WV[a\x05\x01V[\x90`@\x82\x01\x80\x92\x11a\x05#WV[\x90` \x82\x01\x80\x92\x11a\x05#WV[\x90`\x10\x82\x01\x80\x92\x11a\x05#WV[\x90`\x08\x82\x01\x80\x92\x11a\x05#WV[\x90`\x04\x82\x01\x80\x92\x11a\x05#WV[\x90`\x02\x82\x01\x80\x92\x11a\x05#WV[\x90`\x01\x82\x01\x80\x92\x11a\x05#WV[\x91\x90\x82\x01\x80\x92\x11a\x05#WV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x05\xCDW`@RV[a\x05\x97V[\x92\x91\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x05\xCDW`@Q\x91a\x05\xFC`\x1F\x82\x01`\x1F\x19\x16` \x01\x84a\x05\xABV[\x82\x94\x81\x84R\x81\x83\x01\x11a\0\xC7W\x82\x81` \x93\x84_\x96\x017\x01\x01RV[\x90\x81` \x91\x03\x12a\0\xC7WQ\x90V[`@Q=_\x82>=\x90\xFD[\x15a\x06;WPPV[cR\xFA\xAE\xB7`\xE1\x1B_R`\x04R`$R`D_\xFD[a\x06_\x90\x92\x91\x92`\x01Ta\x05\x8AV[\x91`\x02T\x83\x10\x15a\x07FWa\x06\xD1` a\x06z6\x85\x85a\x05\xD2V[\x80Q\x90\x82\x01 `@Qcgp\x87\xC9`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16`\x04\x82\x01R`$\x81\x01\x96\x90\x96R\x94\x91\x82\x90\x81\x90`D\x82\x01\x90V[\x03\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x80\x15a\x03\xCDWa\x07\"\x94a\x07\x1D\x92_\x92a\x07%W[P\x81\x81\x14a\x062V[a\x07\xD2V[\x90V[a\x07?\x91\x92P` =` \x11a\x03\xFCWa\x03\xED\x81\x83a\x05\xABV[\x90_a\x07\x14V[PPP_\x90V[\x15a\x07VWPPV[c\x04\xC9\xAC\xA9`\xE1\x1B_R`\x04R`$R`D_\xFD[\x90\x81``\x91\x03\x12a\0\xC7W\x80Q\x80\x15\x15\x81\x03a\0\xC7W\x91`@` \x83\x01Q\x92\x01Q\x90V[\x15a\x07\x96WV[c\x0E\xE1E\xCB`\xE3\x1B_R`\x04_\xFD[_\x19\x81\x14a\x05#W`\x01\x01\x90V[\x90\x81` \x91\x03\x12a\0\xC7WQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\0\xC7W\x90V[a\x07\"\x91a\x07\xDF\x81a\x08#V[`\x05\x81\x11\x15a\x07\xEEW\x91a\t\xE7V[P`\x05\x91a\t\xE7V[`\x04\x19\x81\x01\x91\x90\x82\x11a\x05#WV[_\x19\x81\x01\x91\x90\x82\x11a\x05#WV[`\x01\x19\x81\x01\x91\x90\x82\x11a\x05#WV[\x80a\x08-WP_\x90V[_\x19\x81\x01\x90\x81\x11a\x05#Wa\x08A\x90a\x0BGV[a\x01\0\x03a\x01\0\x81\x11a\x05#W\x90V[\x15a\x08XWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FDrive smaller than leaf\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x15a\x08\xA4WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FDrive larger than memory\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x15a\x08\xF0WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x16`$\x82\x01RuData larger than drive`P\x1B`D\x82\x01R`d\x90\xFD[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x05\xCDW`\x05\x1B` \x01\x90V[\x90a\tP\x82a\t.V[a\t]`@Q\x91\x82a\x05\xABV[\x82\x81R\x80\x92a\tn`\x1F\x19\x91a\t.V[\x01\x90` 6\x91\x017V[\x80Q\x15a\t\x85W` \x01\x90V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[\x80Q\x82\x10\x15a\t\x85W` \x91`\x05\x1B\x01\x01\x90V[\x15a\t\xB4WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0B`$\x82\x01Rj9\xBA0\xB1\xB5\x902\xB997\xB9`\xA9\x1B`D\x82\x01R`d\x90\xFD[\x90\x91a\n\x0C\x90a\t\xFA`\x05\x82\x10\x15a\x08QV[a\n\x07`@\x82\x11\x15a\x08\x9DV[a\x07\xF7V[\x90\x82\x15a\x0Ba\x01\xA0\x82\x01R\x7F\xA2\xFC\xA4\xA4\x96X\xF9\xFA\xB7\xAAc(\x9C\x91\xB7\xC7\xB6\xC82\xA6\xD0\xE6\x934\xFF[\n4\x83\xD0\x9D\xABa\x01\xC0\x82\x01R\x7FN\xBF\xD9\xCD{\xCA%\x05\xF7\xBE\xF5\x9C\xC1\xC1.\xCCp\x8F\xFF&\xAEJ\xF1\x9A\xBE\x85*\xFE\x9E \xC8ba\x01\xE0\x82\x01R\x7F-\xEF\x10\xD1=\xD1i\xF5P\xF5x\xBD\xA3C\xD9qz\x13\x85b\xE0\t;8\n\x11 x\x9DS\xCF\x10a\x02\0\x82\x01R\x7Fwj1\xDB4\xA1\xA0\xA7\xCA\xAF\x86,\xFF\xDF\xFF\x17\x89)\x7F\xFA\xDC8\x0B\xD3\xD3\x92\x81\xD3@\xAB\xD3\xADa\x02 \x82\x01R\x7F\xE2\xE7a\x0B\x87\xA5\xFD\xF3\xA7.\xBE'\x12\x87\xD9#\xAB\x99\x0E\xEF\xACd\xB6\xE5\x9Dy\xF8\xB7\xE0\x8CF\xE3a\x02@\x82\x01R\x7FPCd\xA5\xC6\x85\x8B\xF9\x8F\xFFqJ\xB5\xBE\x9D\xE1\x9E\xD3\x1A\x97h`\xEF\xBD\x0Ew*.\xFE#\xE2\xE0a\x02`\x82\x01R\x7FO\x05\xF4\xAC\xB8?[e\x16\x8D\x9F\xEF\x89\xD5mMw\xB8\x94@\x15\xE6\xB1\xEE\xD8\x1B\x028\xE2\xD0\xDB\xA3a\x02\x80\x82\x01R\x7FD\xA6\xD9t\xC7[\x07B>\x1Dm3\xF4\x81\x91o\xDDE\x83\n\xEA\x11\xB64~p\x0C\xD8\xB9\xF0v|a\x02\xA0\x82\x01R\x7F\xED\xF2`)\x1FsM\xDA\xC3\x96\xA9V\x12}\xDEL4\xC0\xCF\xB8\xD8\x05/\x88\xAC\x13\x96X\xCC\xF2\xD5\x07a\x02\xC0\x82\x01R\x7F`u\xC6W\xA1\x055\x1E\x7F\x0F\xCES\xBC2\x01\x132JR.\x8F\xD5-\xC8x\xC7bU\x1E\x01\xA4na\x02\xE0\x82\x01R\x7Fl\xA6\xA3\xF7c\xA99_}\xA1`\x14r\\\xA7\xEE\x17\xE4\x81\\\x0F\xF8\x11\x9B\xF3?'=\xEE\x11\x83;a\x03\0\x82\x01R\x7F\x1C%\xEF\x10\xFF\xEB<}\x08\xAAp}\x17(n\x0B\r<\xBC\xB5\x0F\x1B\xD3\xB6R;c\xBA;R\xDD\x0Fa\x03 \x82\x01R\x7F\xFF\xFCC\xBD\x08'<\xCF\x13_\xD3\xCA\xCB\xEE\xF0UA\x8E\t\xEBr\x8Dr|M]\\Ul\xDE\xA7\xE3a\x03@\x82\x01R\x7F\xC5\xAB\x81\x11Ek\x1F(\xF3\xC7\xA0\xA6\x04\xB4U<\xE9\x05\xCB\x01\x9CF>\xE1Y\x13z\xF8<5\x0B\"a\x03`\x82\x01R\x7F\x0F\xF2s\xFC\xBFJ\xE0\xF2\xBD\x88\xD6\xCF1\x9F\xF4\0O\x8D}\xCAp\xD4\xCE\xD4\xE7M,t\x13\x979\xE6a\x03\x80\x82\x01R\x7F\x7F\xA0k\xA1\x12A\xDD\xD5\xEF\xDCe\xD4\xE3\x9C\x9Fi\x91\xB7O\xD4\xB8\x1Bb#\x08\x08!l\x87o\x82|a\x03\xA0\x82\x01R\x7F~'Z\xDF1:\x99l~)P\xCA\xC6|\xAB\xA0*_\xF9%\xEB\xF9\x90kX\x94\x9F>w\xAE\xC5\xB9a\x03\xC0\x82\x01R\x7F\x8Fab\xFA0\x8D+:\x15\xDC3\xCF\xFA\xC8_\x13\xAB4\x91s\x12\x16E\xAE\xDF\0\xF4qf1\x08\xBEa\x03\xE0\x82\x01R\x7Fx\xCC\xAA\xABs75R\xF2\x07\xA65\x99\xDET\xD7\xD8\xD0\xC1\x80_\x86\xCE}\xA1X\x18\xD0\x9FL\xFFba\x04\0\x82\x01R\x7F\xCF'\x7F\xB8\n\x82G\x84`\xE8\x98\x85p\xB7\x18\xF1\xE0\x83\xCE\xB7o~'\x1A\x1A\x14\x97\xE5\x97_S\xAEa\x04 \x82\x01R\x7FK\xF6\xFF\xA2\xBC\x13\x12\x04Q2\x89s\x85g\xA6\x8F\xA9\xF4\x82}\xAC\x7F\xD3\xB3\xD1\xF2\xE9Gw\xD5\x7F6a\x04@\x82\x01R\x7F\xB4\x9Da\xE8\xC2\xC8\x94\xE1$\x86\x17j\xB8\xF4\xD7\x06\x9Df\x92\xFAd\x95T\x15g\x87.~\xCB\xDD\xB7&a\x04`\x82\x01R\x7F +\x10\x14s\x9F)\xB1\xD9\x05\xD60\xDD\xEB\x85`\xA3+\xF2>fl\x8A\x15#\xA4\xA6\0\"\x7F\xEF|a\x04\x80\x82\x01R\x7F\x9E\x1D\x1C\xE5\xCD\xCA\x9C\xDF@\xFAW\x86T\x8BX\xEB\x19\xDD\xFD29[E\x82\x989\x19\t\x9D\xBD\x151a\x04\xA0\x82\x01R\x7F\x13xM\x01\xE2\xFA\xE9\x04\xDEb\xC6\xFB\xF9wiy\xCAz'w\xAE&2\xEE'\x8D\x19\xAC\xA3\x0F\x89\x0Ea\x04\xC0\x82\x01R\x7Fh\xC4w\xF8:\x13\xA0\0\xAD+[>P7[|:\xE7\x82\xD9\x87\xBAKZe7k\xBB\x97F\x9F\xB3a\x04\xE0\x82\x01R\x7Fq\xE3xd\xED\xF0\x87@\xD5\x926,\xD2M\r\xB0g\xBF\x14\xCD;\x97\xBD*h\xE7\x82\xAD\xFF\xB46Ua\x05\0\x82\x01R\x7F\x88\xD0\xCC5\xE8\xAB\xE7\xD6REi\xBE\x8A\xA1\xA4\x8B\xB23b2o\xDF\xEF\xE9a4\x8B\xC9`\x91\xC9La\x05 \x82\x01R\x7F\x85E\xF2\xC1\xAF\xDA\xCE]\x87\xF0l\xE1\xD4K\xC0\xA2i\x1A\xEAD\x14\xD0\xADd\x0B\xE0\xD9\x87\x9C\x83t\xD9a\x05@\x82\x01R\x7F#`\xC4H\ri\x87\x9E\xAD\xD7\xAEP\x84\t\xF2\xF0\xBA\x83\xA2\xB0\xFE\r\xA5{@\0\x8C\x06M,9}a\x05`\x82\x01R\x7F1v:\x8E\x1D\xED\xB1Z\xD0\xC8\xB8\x8DC\x7F\xEF\x83Z\xEB\x95\x82\x92dH\x10f=\xC1ueP\xF2+a\x05\x80\x82\x01R\x7F\xFAL\x9B\x11r\xABZ\xFE\xBD\x15\x95s\xE1\x9E%\x16\x99u$.\x10\xA2\xED8\xDF\xC8\x05#/\xB5\nda\x05\xA0\x82\x01R\x7F5(YMe\xE9RR3\xB3\x95\x87\x17K\xCF\x0B\xBAV-\x95\xB5\x0BB\x99\x14\xC7\xE0\xE8\xA9\xAEX\xF9a\x05\xC0\x82\x01R\x7F\x17e\x92'\x97\xBAr\x1E\x897\xC7G\n&\xD5\xC2\xF1A\xF3\xD4\x10dG\xDA\xB1q\xFC\xED}e*ia\x05\xE0\x82\x01R\x7F\xF0W>f\x0B\xA0\x1C\xFF'*\x1Coy'\xD7<\x94\xC8]8\n\x849\x98gbmd)\xD4\x8B\xAEa\x06\0\x82\x01R\x7F1h,\x19\xF7\x15\xCD1}\xA1\xA5S\xCE8M\xE6\x90/\xE2`2\xFE\xCC}\xE0>@P*\xF0]\xCEa\x06 \x82\x01R\x7F\xD5\x0C`b\xBF\xCD{\xBD\r\xBDh\xD1\xDD\xEE\xAE\tT\x85r\n\x1C\xE34\xE9\xE5\xE5\x150f\xF4\"`a\x06@\x82\x01R\x7F\xE0\xBC\xFB\xD0?\xA4\xA6\x19\xA5\xBC<\xAE\x15@O9\xB4\xB7\xBF]\xDDQa\xEAd-\x13\xD2;\xAE\xF5Ea\x06`\x82\x01R\x7F\xAC\xB9\x8Bo\xB1\xA5\xFD\xAE\nW\x18\xD0\xB8\x12\xE1\xDE\x14\x12\xE4M\x87QF\xAC\xC1\xA7\xF7\xC3\x91l\0:a\x06\x80\x82\x01R\x7F\xBB\x1F\xF2\x91\xEB.aJf\x1Dg0\xB5\x02\xBA\xE2\xBD\xE1\x12\x95\x8C\xEEi\x84x\x84Z\x1B\xB3x\x8Aka\x06\xA0\x82\x01R\x7F\x9A\x91\xF4\xC1\x95E\xD6\xCD\x97 \xD4se\x91\xFEp\xED\xCF>3\xCB.V\xF2\x1F\xDC\x12D\xF3\xD2\xEFma\x06\xC0\x82\x01R\x7F\xBD\xF8,}%-i\xC6K\xD6\xFA\x8E\xE6j\xD9\xD3\x02A\x01i\x81\xE4X\x0E<.\xDCH\x04\xB7R6a\x06\xE0\x82\x01R\x7Fc\xBC;\x9E\x83@\xABH\xA6h(\xD7\xD9\xD7\xD5\xBE/_(\x06e\x19m%\xA3\x9CM\x014\\\xB9^a\x07\0\x82\x01R\x7F\xA9b\xE4\xBD}\x1F1o\x84W\x84\xE1\x15\xFF\x1050\xD8_\x9D\xFA\xCDc\x8A\xD4_\xBE\x93\x8B\xA8\\@a\x07 \x82\x01R\x7F\xB3\xF1\0\xA0\xF5\x06\xF6\xA6\xC8l\x10\xF1\x07\xABH\x11\xDD\xC7orQo\xCD\xFA\x8A\x0C\x9B\xD7\x1F\xF9\x12\xABa\x07@\x82\x01R\x7F\xE7\xE8\xDB\xC3\x89\x85\x15\x97\x0C\xA6\xFC\xE1\x909\xCA\"\xAE&8\xE4K$d\x1F\xD6\x10H\xB9M\xC2\xBE%a\x07`\x82\x01R\x01RV[`;\x81\x11a\x15\xE6W\x80`\x05\x1B\x90\x80\x82\x04` \x14\x90\x15\x17\x15a\x05#W` \x90a\x15\xE0a\x0C\x86V[\x01\x01Q\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01RsHeight out of bounds``\x1B`D\x82\x01R`d\x90\xFD[\x80a\x16.WPa\x01\0\x90V[_\x19\x81\x01\x81\x81\x11a\x05#Wa\x08A\x91\x19\x16a\x0BGV[\x91`\x05\x1B\x90\x80\x82\x10\x15a\x16\xA7W\x80\x82\x11a\0\xC7W\x91\x81\x015\x91\x03` \x81\x10a\x16\x96W[P`@Qa\x16\x90\x81a\x16\x82` \x82\x01\x94\x85\x91\x90` \x83\x01\x92RV[\x03`\x1F\x19\x81\x01\x83R\x82a\x05\xABV[Q\x90 \x90V[_\x19\x90` \x03`\x03\x1B\x1B\x16_a\x16gV[PPP` a\x16\xB4a\x0C\x86V[\x01Q\x90V\xFE\xA2dipfsX\"\x12 \x1F\xFC\x9A\x10\xFE\x92\x1B\x8B\xBE\xBAaW\xA2\x90\x8C\x16~+B-#\x81\xDC\x9E\x03S\xB0\xC6\xC5\x08m\xFEdsolcC\0\x08\x1B\x003", + ); + /**Custom error with signature `IncorrectEpochNumber(uint256,uint256)` and selector `0x09935952`. +```solidity +error IncorrectEpochNumber(uint256 received, uint256 actual); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IncorrectEpochNumber { + pub received: alloy::sol_types::private::primitives::aliases::U256, + pub actual: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IncorrectEpochNumber) -> Self { + (value.received, value.actual) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IncorrectEpochNumber { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + received: tuple.0, + actual: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for IncorrectEpochNumber { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IncorrectEpochNumber(uint256,uint256)"; + const SELECTOR: [u8; 4] = [9u8, 147u8, 89u8, 82u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.received), + as alloy_sol_types::SolType>::tokenize(&self.actual), + ) + } + } + }; + /**Custom error with signature `InputHashMismatch(bytes32,bytes32)` and selector `0xa5f55d6e`. +```solidity +error InputHashMismatch(bytes32 fromReceivedInput, bytes32 fromInputBox); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct InputHashMismatch { + pub fromReceivedInput: alloy::sol_types::private::FixedBytes<32>, + pub fromInputBox: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputHashMismatch) -> Self { + (value.fromReceivedInput, value.fromInputBox) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputHashMismatch { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + fromReceivedInput: tuple.0, + fromInputBox: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InputHashMismatch { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InputHashMismatch(bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [165u8, 245u8, 93u8, 110u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.fromReceivedInput), + as alloy_sol_types::SolType>::tokenize(&self.fromInputBox), + ) + } + } + }; + /**Custom error with signature `TournamentNotFinishedYet()` and selector `0x770a2e58`. +```solidity +error TournamentNotFinishedYet(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct TournamentNotFinishedYet {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: TournamentNotFinishedYet) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for TournamentNotFinishedYet { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for TournamentNotFinishedYet { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "TournamentNotFinishedYet()"; + const SELECTOR: [u8; 4] = [119u8, 10u8, 46u8, 88u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Event with signature `ConsensusCreation(address,address,address)` and selector `0xaf68463e16cb5595a44214bea8d366ecf7cd3410269c50f92c104b50a7829daa`. +```solidity +event ConsensusCreation(address inputBox, address appContract, address tournamentFactory); +```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct ConsensusCreation { + #[allow(missing_docs)] + pub inputBox: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub appContract: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub tournamentFactory: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ConsensusCreation { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "ConsensusCreation(address,address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 175u8, + 104u8, + 70u8, + 62u8, + 22u8, + 203u8, + 85u8, + 149u8, + 164u8, + 66u8, + 20u8, + 190u8, + 168u8, + 211u8, + 102u8, + 236u8, + 247u8, + 205u8, + 52u8, + 16u8, + 38u8, + 156u8, + 80u8, + 249u8, + 44u8, + 16u8, + 75u8, + 80u8, + 167u8, + 130u8, + 157u8, + 170u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + inputBox: data.0, + appContract: data.1, + tournamentFactory: data.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.inputBox, + ), + ::tokenize( + &self.appContract, + ), + ::tokenize( + &self.tournamentFactory, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ConsensusCreation { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ConsensusCreation> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ConsensusCreation) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `EpochSealed(uint256,uint256,uint256,bytes32,address)` and selector `0xa26dc18868f1ea57f349a68088792f3db37af6fc05cbeb62cf37947ededf06e6`. +```solidity +event EpochSealed(uint256 epochNumber, uint256 inputIndexLowerBound, uint256 inputIndexUpperBound, Machine.Hash initialMachineStateHash, address tournament); +```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct EpochSealed { + #[allow(missing_docs)] + pub epochNumber: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub inputIndexLowerBound: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub inputIndexUpperBound: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub initialMachineStateHash: ::RustType, + #[allow(missing_docs)] + pub tournament: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for EpochSealed { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + Machine::Hash, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "EpochSealed(uint256,uint256,uint256,bytes32,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 162u8, + 109u8, + 193u8, + 136u8, + 104u8, + 241u8, + 234u8, + 87u8, + 243u8, + 73u8, + 166u8, + 128u8, + 136u8, + 121u8, + 47u8, + 61u8, + 179u8, + 122u8, + 246u8, + 252u8, + 5u8, + 203u8, + 235u8, + 98u8, + 207u8, + 55u8, + 148u8, + 126u8, + 222u8, + 223u8, + 6u8, + 230u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + epochNumber: data.0, + inputIndexLowerBound: data.1, + inputIndexUpperBound: data.2, + initialMachineStateHash: data.3, + tournament: data.4, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.epochNumber), + as alloy_sol_types::SolType>::tokenize(&self.inputIndexLowerBound), + as alloy_sol_types::SolType>::tokenize(&self.inputIndexUpperBound), + ::tokenize( + &self.initialMachineStateHash, + ), + ::tokenize( + &self.tournament, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for EpochSealed { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&EpochSealed> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &EpochSealed) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. +```solidity +constructor(address inputBox, address appContract, address tournamentFactory, Machine.Hash initialMachineStateHash); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct constructorCall { + pub inputBox: alloy::sol_types::private::Address, + pub appContract: alloy::sol_types::private::Address, + pub tournamentFactory: alloy::sol_types::private::Address, + pub initialMachineStateHash: ::RustType, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + Machine::Hash, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + ( + value.inputBox, + value.appContract, + value.tournamentFactory, + value.initialMachineStateHash, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + inputBox: tuple.0, + appContract: tuple.1, + tournamentFactory: tuple.2, + initialMachineStateHash: tuple.3, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + Machine::Hash, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.inputBox, + ), + ::tokenize( + &self.appContract, + ), + ::tokenize( + &self.tournamentFactory, + ), + ::tokenize( + &self.initialMachineStateHash, + ), + ) + } + } + }; + /**Function with signature `canSettle()` and selector `0xfaf7ba6a`. +```solidity +function canSettle() external view returns (bool isFinished, uint256 epochNumber); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct canSettleCall {} + ///Container type for the return parameters of the [`canSettle()`](canSettleCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct canSettleReturn { + pub isFinished: bool, + pub epochNumber: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: canSettleCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for canSettleCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bool, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + bool, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: canSettleReturn) -> Self { + (value.isFinished, value.epochNumber) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for canSettleReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + isFinished: tuple.0, + epochNumber: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for canSettleCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = canSettleReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Bool, + alloy::sol_types::sol_data::Uint<256>, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "canSettle()"; + const SELECTOR: [u8; 4] = [250u8, 247u8, 186u8, 106u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `getApplicationContract()` and selector `0xc050be00`. +```solidity +function getApplicationContract() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getApplicationContractCall {} + ///Container type for the return parameters of the [`getApplicationContract()`](getApplicationContractCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getApplicationContractReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: getApplicationContractCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getApplicationContractCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: getApplicationContractReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getApplicationContractReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getApplicationContractCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getApplicationContractReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getApplicationContract()"; + const SELECTOR: [u8; 4] = [192u8, 80u8, 190u8, 0u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `getCurrentSealedEpoch()` and selector `0x1239acd9`. +```solidity +function getCurrentSealedEpoch() external view returns (uint256 epochNumber, uint256 inputIndexLowerBound, uint256 inputIndexUpperBound, address tournament); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCurrentSealedEpochCall {} + ///Container type for the return parameters of the [`getCurrentSealedEpoch()`](getCurrentSealedEpochCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCurrentSealedEpochReturn { + pub epochNumber: alloy::sol_types::private::primitives::aliases::U256, + pub inputIndexLowerBound: alloy::sol_types::private::primitives::aliases::U256, + pub inputIndexUpperBound: alloy::sol_types::private::primitives::aliases::U256, + pub tournament: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: getCurrentSealedEpochCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getCurrentSealedEpochCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: getCurrentSealedEpochReturn) -> Self { + ( + value.epochNumber, + value.inputIndexLowerBound, + value.inputIndexUpperBound, + value.tournament, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getCurrentSealedEpochReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + epochNumber: tuple.0, + inputIndexLowerBound: tuple.1, + inputIndexUpperBound: tuple.2, + tournament: tuple.3, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getCurrentSealedEpochCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getCurrentSealedEpochReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getCurrentSealedEpoch()"; + const SELECTOR: [u8; 4] = [18u8, 57u8, 172u8, 217u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `getInputBox()` and selector `0x00aace9a`. +```solidity +function getInputBox() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getInputBoxCall {} + ///Container type for the return parameters of the [`getInputBox()`](getInputBoxCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getInputBoxReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getInputBoxCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getInputBoxCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getInputBoxReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getInputBoxReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getInputBoxCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getInputBoxReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getInputBox()"; + const SELECTOR: [u8; 4] = [0u8, 170u8, 206u8, 154u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `getTournamentFactory()` and selector `0x813a1aaf`. +```solidity +function getTournamentFactory() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getTournamentFactoryCall {} + ///Container type for the return parameters of the [`getTournamentFactory()`](getTournamentFactoryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getTournamentFactoryReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: getTournamentFactoryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getTournamentFactoryCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: getTournamentFactoryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getTournamentFactoryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getTournamentFactoryCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getTournamentFactoryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getTournamentFactory()"; + const SELECTOR: [u8; 4] = [129u8, 58u8, 26u8, 175u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `provideMerkleRootOfInput(uint256,bytes)` and selector `0x7a96f480`. +```solidity +function provideMerkleRootOfInput(uint256 inputIndexWithinEpoch, bytes memory input) external view returns (bytes32); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct provideMerkleRootOfInputCall { + pub inputIndexWithinEpoch: alloy::sol_types::private::primitives::aliases::U256, + pub input: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`provideMerkleRootOfInput(uint256,bytes)`](provideMerkleRootOfInputCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct provideMerkleRootOfInputReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: provideMerkleRootOfInputCall) -> Self { + (value.inputIndexWithinEpoch, value.input) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for provideMerkleRootOfInputCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + inputIndexWithinEpoch: tuple.0, + input: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: provideMerkleRootOfInputReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for provideMerkleRootOfInputReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for provideMerkleRootOfInputCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = provideMerkleRootOfInputReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "provideMerkleRootOfInput(uint256,bytes)"; + const SELECTOR: [u8; 4] = [122u8, 150u8, 244u8, 128u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize( + &self.inputIndexWithinEpoch, + ), + ::tokenize( + &self.input, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `settle(uint256)` and selector `0x8df82800`. +```solidity +function settle(uint256 epochNumber) external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct settleCall { + pub epochNumber: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`settle(uint256)`](settleCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct settleReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: settleCall) -> Self { + (value.epochNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for settleCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { epochNumber: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: settleReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for settleReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for settleCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = settleReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "settle(uint256)"; + const SELECTOR: [u8; 4] = [141u8, 248u8, 40u8, 0u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.epochNumber), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`DaveConsensus`](self) function calls. + pub enum DaveConsensusCalls { + canSettle(canSettleCall), + getApplicationContract(getApplicationContractCall), + getCurrentSealedEpoch(getCurrentSealedEpochCall), + getInputBox(getInputBoxCall), + getTournamentFactory(getTournamentFactoryCall), + provideMerkleRootOfInput(provideMerkleRootOfInputCall), + settle(settleCall), + } + #[automatically_derived] + impl DaveConsensusCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [0u8, 170u8, 206u8, 154u8], + [18u8, 57u8, 172u8, 217u8], + [122u8, 150u8, 244u8, 128u8], + [129u8, 58u8, 26u8, 175u8], + [141u8, 248u8, 40u8, 0u8], + [192u8, 80u8, 190u8, 0u8], + [250u8, 247u8, 186u8, 106u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for DaveConsensusCalls { + const NAME: &'static str = "DaveConsensusCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 7usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::canSettle(_) => { + ::SELECTOR + } + Self::getApplicationContract(_) => { + ::SELECTOR + } + Self::getCurrentSealedEpoch(_) => { + ::SELECTOR + } + Self::getInputBox(_) => { + ::SELECTOR + } + Self::getTournamentFactory(_) => { + ::SELECTOR + } + Self::provideMerkleRootOfInput(_) => { + ::SELECTOR + } + Self::settle(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn getInputBox( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DaveConsensusCalls::getInputBox) + } + getInputBox + }, + { + fn getCurrentSealedEpoch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DaveConsensusCalls::getCurrentSealedEpoch) + } + getCurrentSealedEpoch + }, + { + fn provideMerkleRootOfInput( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DaveConsensusCalls::provideMerkleRootOfInput) + } + provideMerkleRootOfInput + }, + { + fn getTournamentFactory( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DaveConsensusCalls::getTournamentFactory) + } + getTournamentFactory + }, + { + fn settle( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DaveConsensusCalls::settle) + } + settle + }, + { + fn getApplicationContract( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DaveConsensusCalls::getApplicationContract) + } + getApplicationContract + }, + { + fn canSettle( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DaveConsensusCalls::canSettle) + } + canSettle + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + DECODE_SHIMS[idx](data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::canSettle(inner) => { + ::abi_encoded_size(inner) + } + Self::getApplicationContract(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getCurrentSealedEpoch(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getInputBox(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::getTournamentFactory(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::provideMerkleRootOfInput(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::settle(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::canSettle(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getApplicationContract(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getCurrentSealedEpoch(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getInputBox(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getTournamentFactory(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::provideMerkleRootOfInput(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::settle(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`DaveConsensus`](self) custom errors. + pub enum DaveConsensusErrors { + IncorrectEpochNumber(IncorrectEpochNumber), + InputHashMismatch(InputHashMismatch), + TournamentNotFinishedYet(TournamentNotFinishedYet), + } + #[automatically_derived] + impl DaveConsensusErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [9u8, 147u8, 89u8, 82u8], + [119u8, 10u8, 46u8, 88u8], + [165u8, 245u8, 93u8, 110u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for DaveConsensusErrors { + const NAME: &'static str = "DaveConsensusErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 3usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IncorrectEpochNumber(_) => { + ::SELECTOR + } + Self::InputHashMismatch(_) => { + ::SELECTOR + } + Self::TournamentNotFinishedYet(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn IncorrectEpochNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DaveConsensusErrors::IncorrectEpochNumber) + } + IncorrectEpochNumber + }, + { + fn TournamentNotFinishedYet( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DaveConsensusErrors::TournamentNotFinishedYet) + } + TournamentNotFinishedYet + }, + { + fn InputHashMismatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DaveConsensusErrors::InputHashMismatch) + } + InputHashMismatch + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + DECODE_SHIMS[idx](data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::IncorrectEpochNumber(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InputHashMismatch(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::TournamentNotFinishedYet(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IncorrectEpochNumber(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InputHashMismatch(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::TournamentNotFinishedYet(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`DaveConsensus`](self) events. + pub enum DaveConsensusEvents { + ConsensusCreation(ConsensusCreation), + EpochSealed(EpochSealed), + } + #[automatically_derived] + impl DaveConsensusEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 162u8, + 109u8, + 193u8, + 136u8, + 104u8, + 241u8, + 234u8, + 87u8, + 243u8, + 73u8, + 166u8, + 128u8, + 136u8, + 121u8, + 47u8, + 61u8, + 179u8, + 122u8, + 246u8, + 252u8, + 5u8, + 203u8, + 235u8, + 98u8, + 207u8, + 55u8, + 148u8, + 126u8, + 222u8, + 223u8, + 6u8, + 230u8, + ], + [ + 175u8, + 104u8, + 70u8, + 62u8, + 22u8, + 203u8, + 85u8, + 149u8, + 164u8, + 66u8, + 20u8, + 190u8, + 168u8, + 211u8, + 102u8, + 236u8, + 247u8, + 205u8, + 52u8, + 16u8, + 38u8, + 156u8, + 80u8, + 249u8, + 44u8, + 16u8, + 75u8, + 80u8, + 167u8, + 130u8, + 157u8, + 170u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for DaveConsensusEvents { + const NAME: &'static str = "DaveConsensusEvents"; + const COUNT: usize = 2usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::ConsensusCreation) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::EpochSealed) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for DaveConsensusEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::ConsensusCreation(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::EpochSealed(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::ConsensusCreation(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::EpochSealed(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`DaveConsensus`](self) contract instance. + +See the [wrapper's documentation](`DaveConsensusInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> DaveConsensusInstance { + DaveConsensusInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + inputBox: alloy::sol_types::private::Address, + appContract: alloy::sol_types::private::Address, + tournamentFactory: alloy::sol_types::private::Address, + initialMachineStateHash: ::RustType, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + DaveConsensusInstance::< + T, + P, + N, + >::deploy( + provider, + inputBox, + appContract, + tournamentFactory, + initialMachineStateHash, + ) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + inputBox: alloy::sol_types::private::Address, + appContract: alloy::sol_types::private::Address, + tournamentFactory: alloy::sol_types::private::Address, + initialMachineStateHash: ::RustType, + ) -> alloy_contract::RawCallBuilder { + DaveConsensusInstance::< + T, + P, + N, + >::deploy_builder( + provider, + inputBox, + appContract, + tournamentFactory, + initialMachineStateHash, + ) + } + /**A [`DaveConsensus`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`DaveConsensus`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct DaveConsensusInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for DaveConsensusInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("DaveConsensusInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DaveConsensusInstance { + /**Creates a new wrapper around an on-chain [`DaveConsensus`](self) contract instance. + +See the [wrapper's documentation](`DaveConsensusInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + inputBox: alloy::sol_types::private::Address, + appContract: alloy::sol_types::private::Address, + tournamentFactory: alloy::sol_types::private::Address, + initialMachineStateHash: ::RustType, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder( + provider, + inputBox, + appContract, + tournamentFactory, + initialMachineStateHash, + ); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + inputBox: alloy::sol_types::private::Address, + appContract: alloy::sol_types::private::Address, + tournamentFactory: alloy::sol_types::private::Address, + initialMachineStateHash: ::RustType, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode( + &constructorCall { + inputBox, + appContract, + tournamentFactory, + initialMachineStateHash, + }, + )[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl DaveConsensusInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> DaveConsensusInstance { + DaveConsensusInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DaveConsensusInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`canSettle`] function. + pub fn canSettle( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&canSettleCall {}) + } + ///Creates a new call builder for the [`getApplicationContract`] function. + pub fn getApplicationContract( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getApplicationContractCall {}) + } + ///Creates a new call builder for the [`getCurrentSealedEpoch`] function. + pub fn getCurrentSealedEpoch( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getCurrentSealedEpochCall {}) + } + ///Creates a new call builder for the [`getInputBox`] function. + pub fn getInputBox( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getInputBoxCall {}) + } + ///Creates a new call builder for the [`getTournamentFactory`] function. + pub fn getTournamentFactory( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getTournamentFactoryCall {}) + } + ///Creates a new call builder for the [`provideMerkleRootOfInput`] function. + pub fn provideMerkleRootOfInput( + &self, + inputIndexWithinEpoch: alloy::sol_types::private::primitives::aliases::U256, + input: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &provideMerkleRootOfInputCall { + inputIndexWithinEpoch, + input, + }, + ) + } + ///Creates a new call builder for the [`settle`] function. + pub fn settle( + &self, + epochNumber: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&settleCall { epochNumber }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DaveConsensusInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`ConsensusCreation`] event. + pub fn ConsensusCreation_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`EpochSealed`] event. + pub fn EpochSealed_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/prt/contracts/bindings-rs/Cargo.lock b/prt/contracts/bindings-rs/Cargo.lock deleted file mode 100644 index 08cc6df..0000000 --- a/prt/contracts/bindings-rs/Cargo.lock +++ /dev/null @@ -1,3029 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "addr2line" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" - -[[package]] -name = "ahash" -version = "0.8.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" -dependencies = [ - "cfg-if", - "once_cell", - "version_check", - "zerocopy", -] - -[[package]] -name = "allocator-api2" -version = "0.2.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" - -[[package]] -name = "alloy" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8367891bf380210abb0d6aa30c5f85a9080cb4a066c4d5c5acadad630823751b" -dependencies = [ - "alloy-consensus", - "alloy-contract", - "alloy-core", - "alloy-eips", - "alloy-genesis", - "alloy-network", - "alloy-provider", - "alloy-rpc-client", - "alloy-serde", - "alloy-transport", - "alloy-transport-http", -] - -[[package]] -name = "alloy-chains" -version = "0.1.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8158b4878c67837e5413721cc44298e6a2d88d39203175ea025e51892a16ba4c" -dependencies = [ - "num_enum", - "strum", -] - -[[package]] -name = "alloy-consensus" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "629b62e38d471cc15fea534eb7283d2f8a4e8bdb1811bcc5d66dda6cfce6fae1" -dependencies = [ - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "c-kzg", - "serde", -] - -[[package]] -name = "alloy-contract" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eefe64fd344cffa9cf9e3435ec4e93e6e9c3481bc37269af988bf497faf4a6a" -dependencies = [ - "alloy-dyn-abi", - "alloy-json-abi", - "alloy-network", - "alloy-network-primitives", - "alloy-primitives", - "alloy-provider", - "alloy-rpc-types-eth", - "alloy-sol-types", - "alloy-transport", - "futures", - "futures-util", - "thiserror", -] - -[[package]] -name = "alloy-core" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ce854562e7cafd5049189d0268d6e5cba05fe6c9cb7c6f8126a79b94800629c" -dependencies = [ - "alloy-dyn-abi", - "alloy-json-abi", - "alloy-primitives", - "alloy-rlp", - "alloy-sol-types", -] - -[[package]] -name = "alloy-dyn-abi" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b499852e1d0e9b8c6db0f24c48998e647c0d5762a01090f955106a7700e4611" -dependencies = [ - "alloy-json-abi", - "alloy-primitives", - "alloy-sol-type-parser", - "alloy-sol-types", - "const-hex", - "itoa", - "serde", - "serde_json", - "winnow", -] - -[[package]] -name = "alloy-eip2930" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0069cf0642457f87a01a014f6dc29d5d893cd4fd8fddf0c3cdfad1bb3ebafc41" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "serde", -] - -[[package]] -name = "alloy-eip7702" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d319bb544ca6caeab58c39cea8921c55d924d4f68f2c60f24f914673f9a74a" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "serde", -] - -[[package]] -name = "alloy-eips" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f923dd5fca5f67a43d81ed3ebad0880bd41f6dd0ada930030353ac356c54cd0f" -dependencies = [ - "alloy-eip2930", - "alloy-eip7702", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "c-kzg", - "derive_more", - "once_cell", - "serde", - "sha2", -] - -[[package]] -name = "alloy-genesis" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a7a18afb0b318616b6b2b0e2e7ac5529d32a966c673b48091c9919e284e6aca" -dependencies = [ - "alloy-primitives", - "alloy-serde", - "serde", -] - -[[package]] -name = "alloy-json-abi" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a438d4486b5d525df3b3004188f9d5cd1d65cd30ecc41e5a3ccef6f6342e8af9" -dependencies = [ - "alloy-primitives", - "alloy-sol-type-parser", - "serde", - "serde_json", -] - -[[package]] -name = "alloy-json-rpc" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3c717b5298fad078cd3a418335b266eba91b511383ca9bd497f742d5975d5ab" -dependencies = [ - "alloy-primitives", - "alloy-sol-types", - "serde", - "serde_json", - "thiserror", - "tracing", -] - -[[package]] -name = "alloy-network" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb3705ce7d8602132bcf5ac7a1dd293a42adc2f183abf5907c30ac535ceca049" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-json-rpc", - "alloy-network-primitives", - "alloy-primitives", - "alloy-rpc-types-eth", - "alloy-serde", - "alloy-signer", - "alloy-sol-types", - "async-trait", - "auto_impl", - "futures-utils-wasm", - "thiserror", -] - -[[package]] -name = "alloy-network-primitives" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94ad40869867ed2d9cd3842b1e800889e5b49e6b92da346e93862b4a741bedf3" -dependencies = [ - "alloy-eips", - "alloy-primitives", - "alloy-serde", - "serde", -] - -[[package]] -name = "alloy-primitives" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "260d3ff3bff0bb84599f032a2f2c6828180b0ea0cd41fdaf44f39cef3ba41861" -dependencies = [ - "alloy-rlp", - "bytes", - "cfg-if", - "const-hex", - "derive_more", - "hashbrown", - "hex-literal", - "indexmap", - "itoa", - "k256", - "keccak-asm", - "paste", - "proptest", - "rand", - "ruint", - "rustc-hash", - "serde", - "sha3", - "tiny-keccak", -] - -[[package]] -name = "alloy-provider" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927f708dd457ed63420400ee5f06945df9632d5d101851952056840426a10dc5" -dependencies = [ - "alloy-chains", - "alloy-consensus", - "alloy-eips", - "alloy-json-rpc", - "alloy-network", - "alloy-network-primitives", - "alloy-primitives", - "alloy-rpc-client", - "alloy-rpc-types-eth", - "alloy-transport", - "alloy-transport-http", - "async-stream", - "async-trait", - "auto_impl", - "dashmap", - "futures", - "futures-utils-wasm", - "lru", - "pin-project", - "reqwest", - "serde", - "serde_json", - "thiserror", - "tokio", - "tracing", - "url", -] - -[[package]] -name = "alloy-rlp" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26154390b1d205a4a7ac7352aa2eb4f81f391399d4e2f546fb81a2f8bb383f62" -dependencies = [ - "alloy-rlp-derive", - "arrayvec", - "bytes", -] - -[[package]] -name = "alloy-rlp-derive" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d0f2d905ebd295e7effec65e5f6868d153936130ae718352771de3e7d03c75c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "alloy-rpc-client" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d82952dca71173813d4e5733e2c986d8b04aea9e0f3b0a576664c232ad050a5" -dependencies = [ - "alloy-json-rpc", - "alloy-transport", - "alloy-transport-http", - "futures", - "pin-project", - "reqwest", - "serde", - "serde_json", - "tokio", - "tokio-stream", - "tower", - "tracing", - "url", -] - -[[package]] -name = "alloy-rpc-types-eth" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83aa984386deda02482660aa31cb8ca1e63d533f1c31a52d7d181ac5ec68e9b8" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-network-primitives", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "alloy-sol-types", - "cfg-if", - "derive_more", - "hashbrown", - "itertools 0.13.0", - "serde", - "serde_json", -] - -[[package]] -name = "alloy-serde" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "731f75ec5d383107fd745d781619bd9cedf145836c51ecb991623d41278e71fa" -dependencies = [ - "alloy-primitives", - "serde", - "serde_json", -] - -[[package]] -name = "alloy-signer" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "307324cca94354cd654d6713629f0383ec037e1ff9e3e3d547212471209860c0" -dependencies = [ - "alloy-primitives", - "async-trait", - "auto_impl", - "elliptic-curve", - "k256", - "thiserror", -] - -[[package]] -name = "alloy-sol-macro" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68e7f6e8fe5b443f82b3f1e15abfa191128f71569148428e49449d01f6f49e8b" -dependencies = [ - "alloy-sol-macro-expander", - "alloy-sol-macro-input", - "proc-macro-error2", - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "alloy-sol-macro-expander" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b96ce28d2fde09abb6135f410c41fad670a3a770b6776869bd852f1df102e6f" -dependencies = [ - "alloy-json-abi", - "alloy-sol-macro-input", - "const-hex", - "heck", - "indexmap", - "proc-macro-error2", - "proc-macro2", - "quote", - "syn 2.0.79", - "syn-solidity", - "tiny-keccak", -] - -[[package]] -name = "alloy-sol-macro-input" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "906746396a8296537745711630d9185746c0b50c033d5e9d18b0a6eba3d53f90" -dependencies = [ - "alloy-json-abi", - "const-hex", - "dunce", - "heck", - "proc-macro2", - "quote", - "serde_json", - "syn 2.0.79", - "syn-solidity", -] - -[[package]] -name = "alloy-sol-type-parser" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc85178909a49c8827ffccfc9103a7ce1767ae66a801b69bdc326913870bf8e6" -dependencies = [ - "serde", - "winnow", -] - -[[package]] -name = "alloy-sol-types" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d86a533ce22525969661b25dfe296c112d35eb6861f188fd284f8bd4bb3842ae" -dependencies = [ - "alloy-json-abi", - "alloy-primitives", - "alloy-sol-macro", - "const-hex", - "serde", -] - -[[package]] -name = "alloy-transport" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33616b2edf7454302a1d48084db185e52c309f73f6c10be99b0fe39354b3f1e9" -dependencies = [ - "alloy-json-rpc", - "base64", - "futures-util", - "futures-utils-wasm", - "serde", - "serde_json", - "thiserror", - "tokio", - "tower", - "tracing", - "url", -] - -[[package]] -name = "alloy-transport-http" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a944f5310c690b62bbb3e7e5ce34527cbd36b2d18532a797af123271ce595a49" -dependencies = [ - "alloy-json-rpc", - "alloy-transport", - "reqwest", - "serde_json", - "tower", - "tracing", - "url", -] - -[[package]] -name = "ark-ff" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" -dependencies = [ - "ark-ff-asm 0.3.0", - "ark-ff-macros 0.3.0", - "ark-serialize 0.3.0", - "ark-std 0.3.0", - "derivative", - "num-bigint", - "num-traits", - "paste", - "rustc_version 0.3.3", - "zeroize", -] - -[[package]] -name = "ark-ff" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" -dependencies = [ - "ark-ff-asm 0.4.2", - "ark-ff-macros 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", - "derivative", - "digest 0.10.7", - "itertools 0.10.5", - "num-bigint", - "num-traits", - "paste", - "rustc_version 0.4.1", - "zeroize", -] - -[[package]] -name = "ark-ff-asm" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-asm" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-macros" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" -dependencies = [ - "num-bigint", - "num-traits", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-macros" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" -dependencies = [ - "num-bigint", - "num-traits", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-serialize" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" -dependencies = [ - "ark-std 0.3.0", - "digest 0.9.0", -] - -[[package]] -name = "ark-serialize" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" -dependencies = [ - "ark-std 0.4.0", - "digest 0.10.7", - "num-bigint", -] - -[[package]] -name = "ark-std" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" -dependencies = [ - "num-traits", - "rand", -] - -[[package]] -name = "ark-std" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" -dependencies = [ - "num-traits", - "rand", -] - -[[package]] -name = "arrayvec" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" - -[[package]] -name = "async-stream" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" -dependencies = [ - "async-stream-impl", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-stream-impl" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "async-trait" -version = "0.1.83" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "auto_impl" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "autocfg" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" - -[[package]] -name = "backtrace" -version = "0.3.74" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" -dependencies = [ - "addr2line", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", - "windows-targets", -] - -[[package]] -name = "base16ct" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" - -[[package]] -name = "base64" -version = "0.22.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" - -[[package]] -name = "base64ct" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" - -[[package]] -name = "bit-set" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" - -[[package]] -name = "bitflags" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" - -[[package]] -name = "bitvec" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" -dependencies = [ - "funty", - "radium", - "tap", - "wyz", -] - -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - -[[package]] -name = "blst" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4378725facc195f1a538864863f6de233b500a8862747e7f165078a419d5e874" -dependencies = [ - "cc", - "glob", - "threadpool", - "zeroize", -] - -[[package]] -name = "bumpalo" -version = "3.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" - -[[package]] -name = "byte-slice-cast" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "bytes" -version = "1.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" -dependencies = [ - "serde", -] - -[[package]] -name = "c-kzg" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0307f72feab3300336fb803a57134159f6e20139af1357f36c54cb90d8e8928" -dependencies = [ - "blst", - "cc", - "glob", - "hex", - "libc", - "once_cell", - "serde", -] - -[[package]] -name = "cartesi-prt-contracts" -version = "0.1.0" -dependencies = [ - "alloy", -] - -[[package]] -name = "cc" -version = "1.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9540e661f81799159abee814118cc139a2004b3a3aa3ea37724a1b66530b90e0" -dependencies = [ - "shlex", -] - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "const-hex" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94fb8a24a26d37e1ffd45343323dc9fe6654ceea44c12f2fcb3d7ac29e610bc6" -dependencies = [ - "cfg-if", - "cpufeatures", - "hex", - "proptest", - "serde", -] - -[[package]] -name = "const-oid" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" - -[[package]] -name = "core-foundation" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" - -[[package]] -name = "cpufeatures" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" -dependencies = [ - "libc", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" - -[[package]] -name = "crunchy" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" - -[[package]] -name = "crypto-bigint" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" -dependencies = [ - "generic-array", - "rand_core", - "subtle", - "zeroize", -] - -[[package]] -name = "crypto-common" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" -dependencies = [ - "generic-array", - "typenum", -] - -[[package]] -name = "dashmap" -version = "6.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" -dependencies = [ - "cfg-if", - "crossbeam-utils", - "hashbrown", - "lock_api", - "once_cell", - "parking_lot_core", -] - -[[package]] -name = "der" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" -dependencies = [ - "const-oid", - "zeroize", -] - -[[package]] -name = "derivative" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "derive_more" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" -dependencies = [ - "derive_more-impl", -] - -[[package]] -name = "derive_more-impl" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", - "unicode-xid", -] - -[[package]] -name = "digest" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" -dependencies = [ - "generic-array", -] - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer", - "const-oid", - "crypto-common", - "subtle", -] - -[[package]] -name = "dunce" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" - -[[package]] -name = "ecdsa" -version = "0.16.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" -dependencies = [ - "der", - "digest 0.10.7", - "elliptic-curve", - "rfc6979", - "signature", - "spki", -] - -[[package]] -name = "either" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" - -[[package]] -name = "elliptic-curve" -version = "0.13.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" -dependencies = [ - "base16ct", - "crypto-bigint", - "digest 0.10.7", - "ff", - "generic-array", - "group", - "pkcs8", - "rand_core", - "sec1", - "subtle", - "zeroize", -] - -[[package]] -name = "equivalent" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" - -[[package]] -name = "errno" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "fastrand" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" - -[[package]] -name = "fastrlp" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" -dependencies = [ - "arrayvec", - "auto_impl", - "bytes", -] - -[[package]] -name = "ff" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" -dependencies = [ - "rand_core", - "subtle", -] - -[[package]] -name = "fixed-hash" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" -dependencies = [ - "byteorder", - "rand", - "rustc-hex", - "static_assertions", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - -[[package]] -name = "form_urlencoded" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "funty" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" - -[[package]] -name = "futures" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" -dependencies = [ - "futures-core", - "futures-sink", -] - -[[package]] -name = "futures-core" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" - -[[package]] -name = "futures-executor" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" - -[[package]] -name = "futures-macro" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "futures-sink" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" - -[[package]] -name = "futures-task" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" - -[[package]] -name = "futures-util" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[package]] -name = "futures-utils-wasm" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", - "zeroize", -] - -[[package]] -name = "getrandom" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" -dependencies = [ - "cfg-if", - "libc", - "wasi", -] - -[[package]] -name = "gimli" -version = "0.31.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" - -[[package]] -name = "glob" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" - -[[package]] -name = "group" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" -dependencies = [ - "ff", - "rand_core", - "subtle", -] - -[[package]] -name = "hashbrown" -version = "0.14.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" -dependencies = [ - "ahash", - "allocator-api2", - "serde", -] - -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - -[[package]] -name = "hermit-abi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -dependencies = [ - "serde", -] - -[[package]] -name = "hex-literal" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" - -[[package]] -name = "hmac" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" -dependencies = [ - "digest 0.10.7", -] - -[[package]] -name = "http" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http-body" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" -dependencies = [ - "bytes", - "http", -] - -[[package]] -name = "http-body-util" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" -dependencies = [ - "bytes", - "futures-util", - "http", - "http-body", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" - -[[package]] -name = "hyper" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" -dependencies = [ - "bytes", - "futures-channel", - "futures-util", - "http", - "http-body", - "httparse", - "itoa", - "pin-project-lite", - "smallvec", - "tokio", - "want", -] - -[[package]] -name = "hyper-tls" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" -dependencies = [ - "bytes", - "http-body-util", - "hyper", - "hyper-util", - "native-tls", - "tokio", - "tokio-native-tls", - "tower-service", -] - -[[package]] -name = "hyper-util" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" -dependencies = [ - "bytes", - "futures-channel", - "futures-util", - "http", - "http-body", - "hyper", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", -] - -[[package]] -name = "idna" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" -dependencies = [ - "unicode-bidi", - "unicode-normalization", -] - -[[package]] -name = "impl-codec" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" -dependencies = [ - "parity-scale-codec", -] - -[[package]] -name = "impl-trait-for-tuples" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "indexmap" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" -dependencies = [ - "equivalent", - "hashbrown", - "serde", -] - -[[package]] -name = "ipnet" -version = "2.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4" - -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" - -[[package]] -name = "js-sys" -version = "0.3.70" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" -dependencies = [ - "wasm-bindgen", -] - -[[package]] -name = "k256" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" -dependencies = [ - "cfg-if", - "ecdsa", - "elliptic-curve", - "once_cell", - "sha2", -] - -[[package]] -name = "keccak" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" -dependencies = [ - "cpufeatures", -] - -[[package]] -name = "keccak-asm" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "505d1856a39b200489082f90d897c3f07c455563880bc5952e38eabf731c83b6" -dependencies = [ - "digest 0.10.7", - "sha3-asm", -] - -[[package]] -name = "lazy_static" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" - -[[package]] -name = "libc" -version = "0.2.159" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" - -[[package]] -name = "libm" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" - -[[package]] -name = "linux-raw-sys" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" - -[[package]] -name = "lock_api" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" -dependencies = [ - "autocfg", - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" - -[[package]] -name = "lru" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904" -dependencies = [ - "hashbrown", -] - -[[package]] -name = "memchr" -version = "2.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" - -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "miniz_oxide" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" -dependencies = [ - "adler2", -] - -[[package]] -name = "mio" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" -dependencies = [ - "hermit-abi", - "libc", - "wasi", - "windows-sys 0.52.0", -] - -[[package]] -name = "native-tls" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" -dependencies = [ - "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework", - "security-framework-sys", - "tempfile", -] - -[[package]] -name = "num-bigint" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" -dependencies = [ - "num-integer", - "num-traits", -] - -[[package]] -name = "num-integer" -version = "0.1.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" -dependencies = [ - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", - "libm", -] - -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi", - "libc", -] - -[[package]] -name = "num_enum" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" -dependencies = [ - "num_enum_derive", -] - -[[package]] -name = "num_enum_derive" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "object" -version = "0.36.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" -dependencies = [ - "memchr", -] - -[[package]] -name = "once_cell" -version = "1.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" - -[[package]] -name = "openssl" -version = "0.10.66" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" -dependencies = [ - "bitflags", - "cfg-if", - "foreign-types", - "libc", - "once_cell", - "openssl-macros", - "openssl-sys", -] - -[[package]] -name = "openssl-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "openssl-probe" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" - -[[package]] -name = "openssl-sys" -version = "0.9.103" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "parity-scale-codec" -version = "3.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" -dependencies = [ - "arrayvec", - "bitvec", - "byte-slice-cast", - "impl-trait-for-tuples", - "parity-scale-codec-derive", - "serde", -] - -[[package]] -name = "parity-scale-codec-derive" -version = "3.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-targets", -] - -[[package]] -name = "paste" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" - -[[package]] -name = "percent-encoding" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" - -[[package]] -name = "pest" -version = "2.7.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdbef9d1d47087a895abd220ed25eb4ad973a5e26f6a4367b038c25e28dfc2d9" -dependencies = [ - "memchr", - "thiserror", - "ucd-trie", -] - -[[package]] -name = "pin-project" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der", - "spki", -] - -[[package]] -name = "pkg-config" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" - -[[package]] -name = "ppv-lite86" -version = "0.2.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" -dependencies = [ - "zerocopy", -] - -[[package]] -name = "primitive-types" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" -dependencies = [ - "fixed-hash", - "impl-codec", - "uint", -] - -[[package]] -name = "proc-macro-crate" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" -dependencies = [ - "toml_edit", -] - -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "proc-macro2" -version = "1.0.86" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "proptest" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" -dependencies = [ - "bit-set", - "bit-vec", - "bitflags", - "lazy_static", - "num-traits", - "rand", - "rand_chacha", - "rand_xorshift", - "regex-syntax", - "rusty-fork", - "tempfile", - "unarray", -] - -[[package]] -name = "quick-error" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" - -[[package]] -name = "quote" -version = "1.0.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "radium" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha", - "rand_core", - "serde", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom", -] - -[[package]] -name = "rand_xorshift" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" -dependencies = [ - "rand_core", -] - -[[package]] -name = "redox_syscall" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "355ae415ccd3a04315d3f8246e86d67689ea74d88d915576e1589a351062a13b" -dependencies = [ - "bitflags", -] - -[[package]] -name = "regex-syntax" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" - -[[package]] -name = "reqwest" -version = "0.12.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63" -dependencies = [ - "base64", - "bytes", - "futures-core", - "futures-util", - "http", - "http-body", - "http-body-util", - "hyper", - "hyper-tls", - "hyper-util", - "ipnet", - "js-sys", - "log", - "mime", - "native-tls", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls-pemfile", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper 1.0.1", - "tokio", - "tokio-native-tls", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "windows-registry", -] - -[[package]] -name = "rfc6979" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" -dependencies = [ - "hmac", - "subtle", -] - -[[package]] -name = "rlp" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" -dependencies = [ - "bytes", - "rustc-hex", -] - -[[package]] -name = "ruint" -version = "1.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c3cc4c2511671f327125da14133d0c5c5d137f006a1017a16f557bc85b16286" -dependencies = [ - "alloy-rlp", - "ark-ff 0.3.0", - "ark-ff 0.4.2", - "bytes", - "fastrlp", - "num-bigint", - "num-traits", - "parity-scale-codec", - "primitive-types", - "proptest", - "rand", - "rlp", - "ruint-macro", - "serde", - "valuable", - "zeroize", -] - -[[package]] -name = "ruint-macro" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" - -[[package]] -name = "rustc-demangle" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" - -[[package]] -name = "rustc-hash" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" - -[[package]] -name = "rustc-hex" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" - -[[package]] -name = "rustc_version" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" -dependencies = [ - "semver 0.11.0", -] - -[[package]] -name = "rustc_version" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" -dependencies = [ - "semver 1.0.23", -] - -[[package]] -name = "rustix" -version = "0.38.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" -dependencies = [ - "bitflags", - "errno", - "libc", - "linux-raw-sys", - "windows-sys 0.52.0", -] - -[[package]] -name = "rustls-pemfile" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" -dependencies = [ - "base64", - "rustls-pki-types", -] - -[[package]] -name = "rustls-pki-types" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e696e35370c65c9c541198af4543ccd580cf17fc25d8e05c5a242b202488c55" - -[[package]] -name = "rustversion" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" - -[[package]] -name = "rusty-fork" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" -dependencies = [ - "fnv", - "quick-error", - "tempfile", - "wait-timeout", -] - -[[package]] -name = "ryu" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" - -[[package]] -name = "schannel" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" -dependencies = [ - "windows-sys 0.59.0", -] - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "sec1" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" -dependencies = [ - "base16ct", - "der", - "generic-array", - "pkcs8", - "subtle", - "zeroize", -] - -[[package]] -name = "security-framework" -version = "2.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" -dependencies = [ - "bitflags", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "semver" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" -dependencies = [ - "semver-parser", -] - -[[package]] -name = "semver" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" - -[[package]] -name = "semver-parser" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" -dependencies = [ - "pest", -] - -[[package]] -name = "serde" -version = "1.0.210" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.210" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "serde_json" -version = "1.0.128" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" -dependencies = [ - "itoa", - "memchr", - "ryu", - "serde", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "sha2" -version = "0.10.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest 0.10.7", -] - -[[package]] -name = "sha3" -version = "0.10.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" -dependencies = [ - "digest 0.10.7", - "keccak", -] - -[[package]] -name = "sha3-asm" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46" -dependencies = [ - "cc", - "cfg-if", -] - -[[package]] -name = "shlex" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - -[[package]] -name = "signature" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" -dependencies = [ - "digest 0.10.7", - "rand_core", -] - -[[package]] -name = "slab" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] - -[[package]] -name = "smallvec" -version = "1.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" - -[[package]] -name = "socket2" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "spki" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" -dependencies = [ - "base64ct", - "der", -] - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "strum" -version = "0.26.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" -dependencies = [ - "strum_macros", -] - -[[package]] -name = "strum_macros" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "rustversion", - "syn 2.0.79", -] - -[[package]] -name = "subtle" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn-solidity" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ab661c8148c2261222a4d641ad5477fd4bea79406a99056096a0b41b35617a5" -dependencies = [ - "paste", - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "sync_wrapper" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" - -[[package]] -name = "sync_wrapper" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" -dependencies = [ - "futures-core", -] - -[[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" - -[[package]] -name = "tempfile" -version = "3.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" -dependencies = [ - "cfg-if", - "fastrand", - "once_cell", - "rustix", - "windows-sys 0.59.0", -] - -[[package]] -name = "thiserror" -version = "1.0.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "threadpool" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" -dependencies = [ - "num_cpus", -] - -[[package]] -name = "tiny-keccak" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" -dependencies = [ - "crunchy", -] - -[[package]] -name = "tinyvec" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - -[[package]] -name = "tokio" -version = "1.40.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" -dependencies = [ - "backtrace", - "bytes", - "libc", - "mio", - "pin-project-lite", - "socket2", - "tokio-macros", - "windows-sys 0.52.0", -] - -[[package]] -name = "tokio-macros" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "tokio-native-tls" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" -dependencies = [ - "native-tls", - "tokio", -] - -[[package]] -name = "tokio-stream" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" -dependencies = [ - "futures-core", - "pin-project-lite", - "tokio", - "tokio-util", -] - -[[package]] -name = "tokio-util" -version = "0.7.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "toml_datetime" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" - -[[package]] -name = "toml_edit" -version = "0.22.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" -dependencies = [ - "indexmap", - "toml_datetime", - "winnow", -] - -[[package]] -name = "tower" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f" -dependencies = [ - "futures-core", - "futures-util", - "pin-project-lite", - "sync_wrapper 0.1.2", - "tower-layer", - "tower-service", -] - -[[package]] -name = "tower-layer" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" - -[[package]] -name = "tower-service" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" - -[[package]] -name = "tracing" -version = "0.1.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" -dependencies = [ - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "tracing-core" -version = "0.1.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" -dependencies = [ - "once_cell", -] - -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - -[[package]] -name = "typenum" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" - -[[package]] -name = "ucd-trie" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" - -[[package]] -name = "uint" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" -dependencies = [ - "byteorder", - "crunchy", - "hex", - "static_assertions", -] - -[[package]] -name = "unarray" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" - -[[package]] -name = "unicode-bidi" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" - -[[package]] -name = "unicode-ident" -version = "1.0.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" - -[[package]] -name = "unicode-normalization" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "unicode-xid" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - -[[package]] -name = "url" -version = "2.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", -] - -[[package]] -name = "valuable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" - -[[package]] -name = "vcpkg" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" - -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - -[[package]] -name = "wait-timeout" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" -dependencies = [ - "libc", -] - -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "wasm-bindgen" -version = "0.2.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" -dependencies = [ - "cfg-if", - "once_cell", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" -dependencies = [ - "bumpalo", - "log", - "once_cell", - "proc-macro2", - "quote", - "syn 2.0.79", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.43" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" -dependencies = [ - "cfg-if", - "js-sys", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" - -[[package]] -name = "web-sys" -version = "0.3.70" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "windows-registry" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" -dependencies = [ - "windows-result", - "windows-strings", - "windows-targets", -] - -[[package]] -name = "windows-result" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-strings" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" -dependencies = [ - "windows-result", - "windows-targets", -] - -[[package]] -name = "windows-sys" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "winnow" -version = "0.6.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" -dependencies = [ - "memchr", -] - -[[package]] -name = "wyz" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" -dependencies = [ - "tap", -] - -[[package]] -name = "zerocopy" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" -dependencies = [ - "byteorder", - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "zeroize" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" -dependencies = [ - "zeroize_derive", -] - -[[package]] -name = "zeroize_derive" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] diff --git a/prt/contracts/bindings-rs/src/contract/.gitignore b/prt/contracts/bindings-rs/src/contract/.gitignore deleted file mode 100644 index ccf02fb..0000000 --- a/prt/contracts/bindings-rs/src/contract/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -leaftournament.rs -nonleaftournament.rs -nonroottournament.rs -roottournament.rs -tournament.rs diff --git a/prt/contracts/bindings-rs/src/contract/bottomtournamentfactory.rs b/prt/contracts/bindings-rs/src/contract/bottomtournamentfactory.rs new file mode 100644 index 0000000..20a8634 --- /dev/null +++ b/prt/contracts/bindings-rs/src/contract/bottomtournamentfactory.rs @@ -0,0 +1,1839 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library Machine { + type Hash is bytes32; +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Machine { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Hash(alloy::sol_types::private::FixedBytes<32>); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue + for alloy::sol_types::private::FixedBytes<32> { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::FixedBytes<32>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl Hash { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: alloy::sol_types::private::FixedBytes<32>) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> alloy::sol_types::private::FixedBytes<32> { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Hash { + type RustType = alloy::sol_types::private::FixedBytes<32>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Hash { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Machine`](self) contract instance. + +See the [wrapper's documentation](`MachineInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MachineInstance { + MachineInstance::::new(address, provider) + } + /**A [`Machine`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Machine`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MachineInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MachineInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MachineInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MachineInstance { + /**Creates a new wrapper around an on-chain [`Machine`](self) contract instance. + +See the [wrapper's documentation](`MachineInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MachineInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MachineInstance { + MachineInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MachineInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MachineInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library Time { + type Duration is uint64; +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Time { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Duration(u64); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for u64 { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::Uint<64>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl Duration { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: u64) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> u64 { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Duration { + type RustType = u64; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Duration { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Time`](self) contract instance. + +See the [wrapper's documentation](`TimeInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(address: alloy_sol_types::private::Address, provider: P) -> TimeInstance { + TimeInstance::::new(address, provider) + } + /**A [`Time`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Time`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct TimeInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for TimeInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("TimeInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TimeInstance { + /**Creates a new wrapper around an on-chain [`Time`](self) contract instance. + +See the [wrapper's documentation](`TimeInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl TimeInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> TimeInstance { + TimeInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TimeInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TimeInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library Tree { + type Node is bytes32; +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Tree { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Node(alloy::sol_types::private::FixedBytes<32>); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue + for alloy::sol_types::private::FixedBytes<32> { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::FixedBytes<32>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl Node { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: alloy::sol_types::private::FixedBytes<32>) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> alloy::sol_types::private::FixedBytes<32> { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Node { + type RustType = alloy::sol_types::private::FixedBytes<32>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Node { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Tree`](self) contract instance. + +See the [wrapper's documentation](`TreeInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(address: alloy_sol_types::private::Address, provider: P) -> TreeInstance { + TreeInstance::::new(address, provider) + } + /**A [`Tree`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Tree`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct TreeInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for TreeInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("TreeInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TreeInstance { + /**Creates a new wrapper around an on-chain [`Tree`](self) contract instance. + +See the [wrapper's documentation](`TreeInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl TreeInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> TreeInstance { + TreeInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TreeInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TreeInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library Machine { + type Hash is bytes32; +} + +library Time { + type Duration is uint64; +} + +library Tree { + type Node is bytes32; +} + +interface BottomTournamentFactory { + struct TournamentParameters { + uint64 levels; + uint64 log2step; + uint64 height; + Time.Duration matchEffort; + Time.Duration maxAllowance; + } + + constructor(); + + function instantiate(Machine.Hash _initialHash, Tree.Node _contestedCommitmentOne, Machine.Hash _contestedFinalStateOne, Tree.Node _contestedCommitmentTwo, Machine.Hash _contestedFinalStateTwo, Time.Duration _allowance, uint256 _startCycle, uint64 _level, TournamentParameters memory _tournamentParameters, address _provider) external returns (address); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "instantiate", + "inputs": [ + { + "name": "_initialHash", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "_contestedCommitmentOne", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_contestedFinalStateOne", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "_contestedCommitmentTwo", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_contestedFinalStateTwo", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "_allowance", + "type": "uint64", + "internalType": "Time.Duration" + }, + { + "name": "_startCycle", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_level", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "_tournamentParameters", + "type": "tuple", + "internalType": "struct TournamentParameters", + "components": [ + { + "name": "levels", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "log2step", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "height", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "matchEffort", + "type": "uint64", + "internalType": "Time.Duration" + }, + { + "name": "maxAllowance", + "type": "uint64", + "internalType": "Time.Duration" + } + ] + }, + { + "name": "_provider", + "type": "address", + "internalType": "contract IDataProvider" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract BottomTournament" + } + ], + "stateMutability": "nonpayable" + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod BottomTournamentFactory { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608080604052346015576151ce908161001a8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c63d343b60c14610025575f80fd5b3461020d576101c036600319011261020d5760a43567ffffffffffffffff811680910361020d5760e4359167ffffffffffffffff831680930361020d5760a03661010319011261020d5760a0810181811067ffffffffffffffff8211176101f9576040526101043567ffffffffffffffff8116810361020d578152610124359067ffffffffffffffff8216820361020d5760208101918252610144359067ffffffffffffffff8216820361020d5760408101918252610164359467ffffffffffffffff8616860361020d57606082019586526101843567ffffffffffffffff8116810361020d57608083019081526101a4356001600160a01b038116939084900361020d5760405197614f8793848a01968a881067ffffffffffffffff8911176101f95767ffffffffffffffff8b99818098968197956101c09e60a08f8f9099869a610212903960043581526024356020820152604435604082015260643560608201526084356080820152015260c43560c08e015260e08d015251166101008b015251166101208901525116610140870152511661016085015251166101808301526101a08201520301905ff080156101ee576040516001600160a01b039091168152602090f35b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b5f80fdfe6102606040523461027457604051614f8738819003601f8101601f191683016001600160401b0381118482101761027857839282916040528339810103906101c08212610274578051602082015160408301519160608401519360808101519561006b60a0830161028c565b60c08301519160a061007f60e0860161028c565b9160ff1901126102745760405160a081016001600160401b03811182821017610278576040526100b2610100860161028c565b81526100c1610120860161028c565b90602081019182526100d6610140870161028c565b92604082019384526100eb610160880161028c565b95606083019687526101a06101036101808a0161028c565b60808501908152980151986001600160a01b038a168a036102745760805260a05260c052516001600160401b0390811660e0529051811661010052905181166101205242811661014052835181169190811682101561026d57505b61016052516001600160401b039081166101a052905116610180526101c0526101e052610200526102205261024052604051614ce690816102a182396080518161043e015260a05181818161064f0152610e73015260c05181610839015260e0518161080d01526101005181818161086801526112f501526101205181818161016c0152818161089701526112c501526101405181818161023b015261106a01526101605181818161021a0152611049015261018051816113fd01526101a051816113dc01526101c0518161192a01526101e05181610d6d015261020051818181610d4001526110c801526102205181610dc0015261024051818181610d960152818161110901526111370152f35b905061015e565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160401b03821682036102745756fe60806040526004361015610011575f80fd5b5f3560e01c80631d5bf796146100d45780635017746a146100cf5780635145236f146100ca5780636041ddd5146100c55780636a1a140d146100c05780637795820c146100bb5780638acc802d146100b65780639a9b4b2b146100b1578063a1af906b146100ac578063fcc6077d146100a7578063fcc85391146100a25763ff78e0ee1461009d575f80fd5b610a32565b61092e565b6108be565b6107ee565b61067c565b61062c565b6105c7565b61054f565b6104e4565b6104b5565b61033d565b61010d565b9181601f84011215610109578235916001600160401b038311610109576020808501948460051b01011161010957565b5f80fd5b34610109576080366003190112610109576004356024356001600160401b038111610109576101409036906004016100d9565b606435926044359291610151611044565b61031d5761015f85856110a0565b9282916001600160401b037f00000000000000000000000000000000000000000000000000000000000000001690610198818314610cf7565b5f925b8284106102cc5750505050820361027b577fe53537f202911d376d6e285835b2a2016e83e99fbe84a059d445cc2be48072629361027693826101df610266946110c6565b6101f1855f52600360205260405f2090565b55610204845f52600260205260405f2090565b61021561021082610c26565b61115c565b6102607f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000836111a8565b84611211565b6040519081529081906020820190565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f636f6d6d69746d656e74206c61737420737461746520646f65736e2774206d616044820152620e8c6d60eb1b6064820152608490fd5b909192936001906103026103106102e4888787611d88565b35926040519283916020830195869091604092825260208201520190565b03601f198101835282610bf4565b519020940192919061019b565b63ac57beef60e01b5f5260045ffd5b604090600319011261010957600490565b346101095760c0366003190112610109576103573661032c565b60643560443560843560a4356001600160401b0381116101095761037f9036906004016100d9565b93909261039361038d611450565b15610c4e565b6103a56103a03688610c64565b611468565b5f52600460205260405f206103c16103bc82610c8c565b61148b565b60016001600160401b0360806103d684610c8c565b0151160361046557610463966103f584846103f085610c8c565b6114cf565b61043c61040b82355f52600260205260405f2090565b61043361042460208501355f52600260205260405f2090565b9161042e816114db565b6114f5565b61042e816114db565b7f000000000000000000000000000000000000000000000000000000000000000091611602565b005b60405162461bcd60e51b815260206004820152602260248201527f6d61746368206973206e6f7420726561647920746f2062652066696e616c697a604482015261195960f21b6064820152608490fd5b34610109575f3660031901126101095760606104cf610d12565b90604051921515835260208301526040820152f35b346101095760a0366003190112610109576104fe3661032c565b60443560643591608435926001600160401b0384116101095736602385011215610109578360040135926001600160401b038411610109573660248587010111610109576024610463950192610deb565b34610109576040366003190112610109576105693661032c565b80355f526002602052602061058060405f20610c26565b9101355f52600260205261059f61059960405f20610c26565b91611b1b565b159081156105b6575b506040519015158152602090f35b6105c09150611b1b565b155f6105a8565b346101095760203660031901126101095760606004356105e5610f67565b50805f52600260205260405f20905f52600360205261060860405f205491610c26565b906001600160401b0360206040519382815116855201511660208301526040820152f35b3461010957602036600319011261010957602061067461064d600435610fb5565b7f000000000000000000000000000000000000000000000000000000000000000090611b56565b604051908152f35b34610109576040366003190112610109576106963661032c565b6106a161038d611450565b6106ca6103bc6106c56106b76103a03686610c64565b5f52600460205260405f2090565b610c8c565b6106dd81355f52600260205260405f2090565b6106f360208301355f52600260205260405f2090565b9061070561070082610c26565b6116c7565b61071161070083610c26565b61072961072561072083610c26565b611b1b565b1590565b91826107c8575b8215610763575b5050156107545761074f6103a0610463923690610c64565b611ae5565b633d0b930760e21b5f5260045ffd5b90915061077561072561072083610c26565b9182610785575b50505f80610737565b6107c19250906107b06107ab6107a56107a061072595610c26565b611b89565b92610c26565b611bcb565b6001600160401b0380911691161190565b5f8061077c565b91506107e86107256107dc6107a085610c26565b6107b06107ab85610c26565b91610730565b34610109575f3660031901126101095760806040516001600160401b037f00000000000000000000000000000000000000000000000000000000000000001681526001600160401b037f00000000000000000000000000000000000000000000000000000000000000001660208201526001600160401b037f00000000000000000000000000000000000000000000000000000000000000001660408201526001600160401b037f0000000000000000000000000000000000000000000000000000000000000000166060820152f35b346101095760203660031901126101095760e06108dc600435610fb5565b6001600160401b0360c060405192805184526020810151602085015260408101516040850152606081015160608501528260808201511660808501528260a08201511660a085015201511660c0820152f35b346101095760c0366003190112610109576109483661032c565b604435606435906084359260a43561096161038d611450565b61096e6103a03684610c64565b5f52600460205260405f20906109866103bc83610c8c565b60016001600160401b03608061099b85610c8c565b01511611156109ed5761046395858585856109c261042e9a60209a6103f06109c79a610c8c565b611c48565b6109dd61042e82355f52600260205260405f2090565b01355f52600260205260405f2090565b60405162461bcd60e51b815260206004820152601760248201527f6d617463682063616e277420626520616476616e6365640000000000000000006044820152606490fd5b3461010957608036600319011261010957610a4c3661032c565b606435604435610a5d61038d611450565b610a736103bc6106c56106b76103a03688610c64565b8235610a87815f52600260205260405f2090565b906020850135610a9f815f52600260205260405f2090565b90610aac61070085610c26565b610ab861070083610c26565b610ac461072085610c26565b80610b90575b15610b1957509383610463969383610b0d610b076107ab61074f9a610b02888887610afd6103a09f8490610b129f611d63565b61100c565b610c26565b83611d71565b611211565b3690610c64565b939592915093610b2e61072561072084610c26565b80610b7e575b15610b6f578561074f9585610b0d610b076107ab610b6a97610b0288886104639f9d610b656103a09f849083611d63565b610fd4565b610b12565b634d46ab2360e11b5f5260045ffd5b50610b8b61072086610c26565b610b34565b50610ba061072561072084610c26565b610aca565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b03821117610bd457604052565b610ba5565b60e081019081106001600160401b03821117610bd457604052565b90601f801991011681019081106001600160401b03821117610bd457604052565b60405190610c24604083610bf4565b565b90604051610c3381610bb9565b60206001600160401b03829454818116845260401c16910152565b15610c5557565b6395ddf15360e01b5f5260045ffd5b919082604091031261010957604051610c7c81610bb9565b6020808294803584520135910152565b90610c24604051610c9c81610bd9565b60c06001600160401b0360048396805485526001810154602086015260028101546040860152600381015460608601520154818116608085015281808260401c161660a085015260801c169101906001600160401b03169052565b15610cfe57565b634e487b7160e01b5f52600160045260245ffd5b610d1a611450565b15610de357610d31610d2a6116b5565b9190610cf7565b805f52600360205260405f20547f000000000000000000000000000000000000000000000000000000000000000081145f14610d9057506001917f00000000000000000000000000000000000000000000000000000000000000009190565b610dbb907f000000000000000000000000000000000000000000000000000000000000000014610cf7565b6001917f00000000000000000000000000000000000000000000000000000000000000009190565b5f905f905f90565b93909192610dfa61038d611450565b843590610e0f825f52600260205260405f2090565b928387610ea3610e98610e71610e546106b76103a0602087013596610e48610700610e428a5f52600260205260405f2090565b9a610c26565b610b126107008a610c26565b610e606103bc82610c8c565b6106c5610e6c82610c8c565b61171d565b7f00000000000000000000000000000000000000000000000000000000000000009061176d565b9692979190976118d9565b9285610eaf8a8a6110a0565b03610ede5750505093610c249693610b1293610ed5848861074f9a966103a09a14610f44565b610b0d826114db565b94509692509693509385610ef283836110a0565b03610f1257610c249661074f96610ed58588610b6a976103a09a14610f21565b630338061d60e31b5f5260045ffd5b15610f2a575050565b636e3fa03d60e11b5f52600260045260245260445260645ffd5b15610f4d575050565b636e3fa03d60e11b5f52600160045260245260445260645ffd5b60405190610f7482610bb9565b5f6020838281520152565b60405190610f8c82610bd9565b5f60c0838281528260208201528260408201528260608201528260808201528260a08201520152565b610fbd610f7f565b505f526004602052610fd160405f20610c8c565b90565b9291909215610fe257505050565b6084935060405192633ad7a6d360e11b845260026004850152602484015260448301526064820152fd5b929190921561101a57505050565b6084935060405192633ad7a6d360e11b845260016004850152602484015260448301526064820152fd5b61108e7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000612506565b6001600160401b034281169116111590565b9060405190602082019283526040820152604081526110c0606082610bf4565b51902090565b7f00000000000000000000000000000000000000000000000000000000000000008181148015611133575b156110fa575050565b63ca5aceb360e01b5f526004527f000000000000000000000000000000000000000000000000000000000000000060245260445260645ffd5b50817f0000000000000000000000000000000000000000000000000000000000000000146110f1565b516001600160401b031661116c57565b60405162461bcd60e51b815260206004820152601460248201527318db1bd8dac81a5cc81a5b9a5d1a585b1a5e995960621b6044820152606490fd5b90610c24926111c36111c9926001600160401b034216611dea565b90611e05565b90611e33565b906001600160401b03166001600160401b0319825416179055565b634e487b7160e01b5f52601160045260245ffd5b5f19811461120c5760010190565b6111ea565b92906112278461122184866110a0565b14610cf7565b61122f6116b5565b9390156114485761142d611443926113c47f32911001007d8c9879b608566be8acc2184592f0a43706f804f285455bb0f52e9561126a610f7f565b5061127f61127882876110a0565b8a14610cf7565b6113246106b760405161129181610bb9565b8a81528b6020820152604051936112a785610bd9565b8b855288602086015260408501525f60608501526001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168060808601526001600160401b037f00000000000000000000000000000000000000000000000000000000000000001660a086015260c0850152611468565b815181556020820151600182015560408201516002820155606082015160038201556080820151600491909101805467ffffffffffffffff19166001600160401b039283161781559160c09060a0810151845467ffffffffffffffff60401b191690841660401b67ffffffffffffffff60401b161784550151825467ffffffffffffffff60801b1916911660801b67ffffffffffffffff60801b16179055565b61042e6113d9875f52600260205260405f2090565b917f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000091611428838387611eaf565b611eaf565b5f805561026661143e6001546111fe565b600155565b0390a3565b505050505f55565b611458611044565b806114605790565b506001541590565b6040516020808201928051845201516040820152604081526110c0606082610bf4565b511561149357565b60405162461bcd60e51b81526020600482015260146024820152731b585d18da08191bd95cc81b9bdd08195e1a5cdd60621b6044820152606490fd5b90610c24929151611ef3565b6001600160401b03815460401c166114f05750565b610c24905b6115016107a082610c26565b6001600160401b0381161561156f578154610c24929060401c6001600160401b031661155057805467ffffffffffffffff60401b19164260401b67ffffffffffffffff60401b161781556111cf565b80546001600160801b0319166001600160401b03909216919091179055565b60405162461bcd60e51b815260206004820152602560248201527f63616e277420616476616e636520636c6f636b2077697468206e6f2074696d65604482015264081b19599d60da1b6064820152608490fd5b634e487b7160e01b5f52601260045260245ffd5b5f1981019190821161120c57565b156115ed575050565b63773af80160e01b5f5260045260245260445ffd5b9291859492610c24969299979893611626602061161e88610c8c565b015183141590565b156116a257506116369085611f9d565b9890995b6003860154908161165a5750505061165592508082146115e4565b6120d0565b600487015461165596959394506116929060801c6001600160401b03169160016001600160401b0381851616036116985735926115d6565b9161202a565b60200135926115d6565b6116ad915085611f49565b98909961163a565b5f905f5490816116c157565b60019250565b516001600160401b0316156116d857565b60405162461bcd60e51b815260206004820152601860248201527f636c6f636b206973206e6f7420696e697469616c697a656400000000000000006044820152606490fd5b608001516001600160401b031661173057565b60405162461bcd60e51b81526020600482015260156024820152741b585d18da081a5cc81b9bdd08199a5b9a5cda1959605a1b6044820152606490fd5b90916117866001600160401b0360808401511615610cf7565b61179282519383611b56565b916001606082015116155f146117af576117ab90612113565b9091565b6117ab906120ea565b9291926001600160401b038211610bd457604051916117e1601f8201601f191660200184610bf4565b829481845281830111610109578281602093845f960137010152565b6001600160401b036001911601906001600160401b03821161120c57565b906001820180921161120c57565b602001908160201161120c57565b9190820180921161120c57565b906020116101095790602090565b90929192836020116101095783116101095760200191601f190190565b35906020811061187d575090565b5f199060200360031b1b1690565b90816020910312610109575190565b91926060938192845260406020850152816040850152848401375f828201840152601f01601f1916010190565b6040513d5f823e3d90fd5b1561010957565b926118e2610c15565b926118ee3683836117b8565b84525f60208501526118fe610c15565b9385855260208501528394611915621000006115d6565b94611928681000000000000000006115d6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316919082611988575050505050506119689061181b565b1661197a5761197681612ade565b5190565b6119838161213c565b505190565b86949791929598939616155f14611abe575050506119af6119a98686611844565b9061186f565b936119b985611829565b6119c1610c15565b906119cd3689856117b8565b825260208201526119dc610c15565b948552602085015283958515155f14611ab05792602092611a20611a0f604494611a3c97611a098b611829565b91611852565b949092906001600160401b03161c90565b60405162f52de960e71b8152958694859384936004850161189a565b03915afa8015611aab5761198393611a6f925f92611a74575b5063ffffffff90611a678315156118d2565b169083612398565b61213c565b63ffffffff919250611a9d9060203d602011611aa4575b611a958183610bf4565b81019061188b565b9190611a55565b503d611a8b565b6118c7565b50505050611983915061213c565b945094509450611ace915061181b565b16611adc5761197690612ade565b6119839061213c565b600154801561120c575f19016001555f5260046020525f6004604082208281558260018201558260028201558260038201550155565b60208101516001600160401b03169081611b36575050600190565b6001600160401b03611b4f818093511693824216611dea565b1691161190565b60606001600160401b0360a08301511691015180821b916001828404911b149015171561120c57810180911161120c5790565b60208101516001600160401b031680611baa5750516001600160401b031690565b6111c36001600160401b03610fd1935116916001600160401b034216611dea565b60208101906001600160401b0382511615611c03576001600160401b03611bfa81610fd1945116824216611dea565b91511690611e05565b60405162461bcd60e51b815260206004820152601c60248201527f612070617573656420636c6f636b2063616e27742074696d656f7574000000006044820152606490fd5b9492939190936020611c5987610c8c565b01518214611cbc575092610b128383611c9a611ca0966103a0967f29ff393c59c37f91e930fad4d88447efc58cf5d7c048499e1f20edb36994137899611ef3565b876124b4565b82546001909301546040805194855260208501919091529092a2565b839150611d0383611cdb6001966001600160401b0396611d2095611ef3565b60048801938585541691611cf0888411610cf7565b60028a019081548b55888b01555561249f565b825467ffffffffffffffff19166001600160401b03909116178255565b54161b60038301805491820180921161120c577f29ff393c59c37f91e930fad4d88447efc58cf5d7c048499e1f20edb36994137892611ca0926103a09255610b12565b91611d6d916110a0565b1490565b6111c9610c24926001600160401b03835416611e05565b9190811015611d985760051b0190565b634e487b7160e01b5f52603260045260245ffd5b6001600160401b035f19911601906001600160401b03821161120c57565b906001600160401b03809116911603906001600160401b03821161120c57565b611e01906001600160401b03808094169116611dca565b1690565b6001600160401b03918216911681811015611e2157505f919050565b6001600160401b0391611e0191611dca565b906001600160401b03811615611e605781546001600160801b0319166001600160401b0391909116179055565b60405162461bcd60e51b815260206004820152602160248201527f63616e27742063726561746520636c6f636b2077697468207a65726f2074696d6044820152606560f81b6064820152608490fd5b9091611ec9610c2493611ec46107a085610c26565b612506565b6001600160401b0382166001600160401b038216115f14611eeb575090611e33565b905090611e33565b91611efd916110a0565b03611f0457565b60405162461bcd60e51b815260206004820152601e60248201527f6368696c64206e6f64657320646f6e2774206d6174636820706172656e7400006044820152606490fd5b906004820190611f6560016001600160401b0384541614610cf7565b60018301556001600160401b03198154169055600381018054916001830180931161120c576117ab92611f989255610c8c565b6120ea565b611fd9906117ab926004820190611fc060016001600160401b0384541614610cf7565b6002830155805467ffffffffffffffff19169055610c8c565b612113565b15611fe557565b60405162461bcd60e51b815260206004820152601960248201527f636f6d6d69746d656e74207374617465206d69736d61746368000000000000006044820152606490fd5b9594909391926001600160401b0390941691612047828414610cf7565b5f935b838510612061575050505050610c24919214611fde565b909192939460019061207683881c6001161590565b156120b6576103026120a761208c898888611d88565b60408051602081019586529135908201529182906060820190565b519020955b019392919061204a565b6103026120c76102e4898888611d88565b519020956120ac565b6120e76001600160401b0360048301541615610cf7565b55565b60c0810151909190600116612106576020604083015192015190565b6040602083015192015190565b60c081015190919060011661212f576040602083015192015190565b6020604083015192015190565b61215561215a61214e624000086148f4565b92906145e1565b614676565b612192602084019161216c835161471f565b925190604051602081019085825260208152612189604082610bf4565b519020916148cb565b83510361223d576121d2916121cd916121c09160031b67fffffffffffffff8165b6001600160401b03161b90565b6001600160c01b03191690565b614915565b906001600160401b0380831614612236576001600160401b036121f482612e81565b1661222f5761222561222b926122206122106240001085612f02565b61221a818661252f565b856125f0565b6117fd565b906144a4565b5f90565b5050600290565b5050600190565b60405162461bcd60e51b815260206004820152601c60248201527f5265616420776f726420726f6f7420646f65736e2774206d61746368000000006044820152606490fd5b60405190612291604083610bf4565b60138252721a599b1859dccb96481a5cc81b9bdd081cd95d606a1b6020830152565b63ffffffff60019116019063ffffffff821161120c57565b63ffffffff60089116019063ffffffff821161120c57565b63ffffffff60049116019063ffffffff821161120c57565b63ffffffff60029116019063ffffffff821161120c57565b9063ffffffff8091169116019063ffffffff821161120c57565b6040519061233c604083610bf4565b601f82527f434d494f20726573706f6e7365206461746120697320746f6f206c61726765006020830152565b63ffffffff6004199116019063ffffffff821161120c57565b63ffffffff16601f039063ffffffff821161120c57565b906123a561072583612bc2565b6124975763ffffffff831690816123fb575b50610c24926123f691506123cd62010000611dac565b5063ffffffff60206123ec6123e6640100000000611dac565b91505f90565b92161617826144ca565b612da9565b909261240681612c19565b93600563ffffffff86161061248e575b63ffffffff6001601f87161b161061247e575b601563ffffffff8516116124715761246b6123f692612465610c249661245f612459612459636000000093612368565b60ff1690565b90612d42565b85612d5e565b926123b7565b61247961232d565b612bda565b92612488906122b3565b92612429565b60059450612416565b612479612282565b6001600160401b0316801561120c575f190190565b906124ec90610c2493600260048501946001600160401b03865416936124dc60018611610cf7565b600182018054835555015561249f565b6001600160401b03166001600160401b0319825416179055565b906001600160401b038091169116016001600160401b03811161120c576001600160401b031690565b6003821661257a5763ffffffff91611e01916038600383901b1691603f916125619167fffffffffffffff81690612f11565b911663ffffffff6001600160401b0380931691161c1690565b60405162461bcd60e51b815260206004820152601d60248201527f6d6973616c69676e6564207265616455696e74333220616464726573730000006044820152606490fd5b604051906125ce604083610bf4565b601382527234b63632b3b0b61034b739ba393ab1ba34b7b760691b6020830152565b92919061707f811660130361260957610c2492936143ed565b61707f81166130030361262057610c2492936143ad565b61707f81166160630361263757610c249293614370565b61707f811660630361264d57610c249293614333565b61707f81166170130361266457610c2492936142d4565b63fe00707f811660330361267c57610c249293614284565b607f8116606f0361269157610c2492936141ac565b63fc00707f8116611013036126aa57610c24929361414f565b63fe00707f8116617033036126c357610c24929361410a565b61707f8116613023036126da57610c24929361409e565b607f81166037036126ef57610c249293614082565b61707f811660670361270557610c249293614007565b61707f8116601b0361271b57610c249293613fbc565b63fc00707f81166150130361273457610c249293613f78565b63fe00707f811661501b0361274d57610c249293613f36565b61707f81166110630361276457610c249293613ef9565b61707f81166120030361277b57610c249293613eb9565b607f811660170361279057610c249293613e73565b61707f8116617063036127a757610c249293613e2e565b63fe00707f8116603b036127bf57610c249293613dd5565b63fc00707f81166340005013036127da57610c249293613d70565b63fe00707f8116616033036127f357610c249293613d2b565b63fe00707f8116634000501b0361280e57610c249293613cba565b61707f81166150630361282557610c249293613c7b565b63fe00707f811663400000330361284057610c249293613c23565b61707f81166140030361285757610c249293613bde565b63fe00707f811661101b0361287057610c249293613b77565b63fe00707f81166150330361288957610c249293613b1b565b63fe00707f8116614033036128a257610c249293613acf565b61707f8116612023036128b957610c2492936139e1565b63fe00707f8116611033036128d257610c249293613977565b61707f8116614063036128e957610c2492936138b0565b61707f81166023036128ff57610c249293613777565b63fe00707f8116634000003b0361291a57610c249293613705565b61707f81166140130361293157610c2492936136a6565b63fe00707f811663400050330361294c57610c24929361362b565b61707f81166150030361296357610c2492936135e5565b61707f81166110230361297a57610c2492936134e0565b63fe00707f811661503b0361299357610c2492936134a2565b61707f8116616003036129aa57610c24929361343b565b63fe00707f811661103b036129c357610c2492936133f5565b61707f81166003036129d957610c2492936133b9565b63fe00707f8116613033036129f257610c24929361335a565b63fe00707f8116634000503b03612a0d57610c2492936132d7565b61707f811661100303612a2457610c24929361324b565b61707f811661601303612a3b57610c2492936131e6565b61707f811661301303612a5257610c249293613180565b63fe00707f811661203303612a6b57610c24929361310d565b61707f811661201303612a8257610c249293613089565b61707f8116600f03612a995750610c24919261495c565b63ffffffff1660738103612ab25750610c249192612fd5565b62100073849114612ac5576124796125bf565b612f71565b9060ff8091169116039060ff821161120c57565b612ae6610f67565b506001600160401b0362020000612b0781612b0081611dac565b1615610cf7565b168015612bbd5760116001600160401b03612b27926202000004166146c5565b60208201612b40612b38825161471f565b838351614796565b50835103612b7857612b74917f4de6115bdadc23724cf20c5580d718525ce81b294c8c149d3658020c380df10991516148cb565b9052565b60405162461bcd60e51b815260206004820152601f60248201527f577269746520726567696f6e20726f6f7420646f65736e2774206d61746368006044820152606490fd5b6115c2565b612bcd600191612ef0565b811c161561222b57600190565b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fd5b63ffffffff811615612cf15780610fd1915f9163ffff0000811615612cdd575b5063ff000000811615612cbe575b63f0000000811615612c9f575b63c0000000811615612c79575b63800000001661238157612c74906122b3565b612381565b90612c98612c8b6380000000926122fb565b9260021b63fffffffc1690565b9050612c61565b90612cac612cb9916122e3565b9160041b63fffffff01690565b612c54565b90612ccb612cd8916122cb565b9160081b63ffffff001690565b612c47565b60109250821b63ffff00001690505f612c39565b60405162461bcd60e51b8152602060048201526024808201527f456d756c61746f72436f6d7061743a206c6f673228302920697320756e6465666044820152631a5b995960e21b6064820152608490fd5b90612d5981610fd193612d53610f67565b50614605565b6146c5565b916020830191612d79612d71845161471f565b828551614796565b50845103612b7857612b7492516148cb565b603f610fd1921663ffffffff6001600160401b0380931691161b1690565b612b74612db582612ef0565b5f612e65612dd1612155612dca6102e86148f4565b9490614605565b916020860193612e3c612e3767fffffffffffffffd612df0885161471f565b93612e26612e1d8a518a6040516020810190612e14816103028d8560209181520190565b51902091614796565b508c5114614458565b1660c01b6001600160c01b03191690565b614b9c565b6001600160c01b031960039390931b67fffffffffffffff81683811c19929092169216901c1790565b9151916040516121898161030260208201948560209181520190565b61215590612e9b612e94624000006148f4565b93906145e1565b90612ecb6020820192612eae845161471f565b935190604051602081019086825260208152612189604082610bf4565b90510361223d57610fd1916121cd916121c09160031b67fffffffffffffff8166121b3565b61215590612e9b612e946102e86148f4565b612e9b612e94612155936148f4565b60078216612f2c576001600160401b03610fd1921690612f02565b60405162461bcd60e51b815260206004820152601d60248201527f6d6973616c69676e6564207265616455696e74363420616464726573730000006044820152606490fd5b604051612f7f604082610bf4565b600d8152604460208201916c1d585c98da0818589bdc9d1959609a1b835260405192839162461bcd60e51b8352602060048401525180918160248501528484015e5f828201840152601f01601f19168101030190fd5b906001600160401b03612fe783614924565b1660018103612ffb575050610c24906144e8565b600203613015578161300f610c2493614931565b5061495c565b604051613023604082610bf4565b601a8152604460208201917f756e737570706f72746564206563616c6c2066756e6374696f6e000000000000835260405192839162461bcd60e51b8352602060048401525180918160248501528484015e5f828201840152601f01601f19168101030190fd5b610c2492916130a48163ffffffff1660030b60141d60030b90565b6130ba600783901c601f165b92600f1c601f1690565b60ff83166130cb575b50505061495c565b6130dd6001600160401b03918561493e565b1660070b9060030b135f146130fe576130f690826149f6565b5f80806130c3565b61310890826149d6565b6130f6565b610c249291600781901c601f16613130600f83901c601f165b9260141c601f1690565b9060ff81166131415750505061495c565b6001600160401b036131658161315a6130f6968861493e565b1660070b938661493e565b1660070b5f9212613177575b83614a17565b60019150613171565b610c24929161319b8163ffffffff1660030b60141d60030b90565b6131ab600783901c601f166130b0565b60ff83166131bb5750505061495c565b6001600160401b036131ce81928661493e565b9260030b169116105f146130fe576130f690826149f6565b610c2492916132018163ffffffff1660030b60141d60030b90565b90613218600782901c601f165b91600f1c601f1690565b9160ff82166132295750505061495c565b6001600160401b0361323e6130f6948661493e565b9160030b16179083614a17565b610c24929161ffff6132a76132a161326f8463ffffffff1660030b60141d60030b90565b61328e613288600787901c601f165b96600f1c601f1690565b8761493e565b6001600160401b03809260030b16011690565b84614a36565b1660010b9060ff81166132bc575b505061495c565b6001600160401b036132d092169083614a17565b5f806132b5565b610c249291613333600782901c601f1691601f61331f6001600160401b0361331461330d600f86901c85165b9560141c601f1690565b948861493e565b1660030b928661493e565b169063ffffffff9060030b91161d60030b90565b9060ff811661334357505061495c565b6001600160401b036132d09260030b169083614a17565b610c249291600781901c601f16613377600f83901c601f16613126565b9060ff81166133885750505061495c565b61339f6133986130f6948661493e565b928561493e565b916001600160401b03805f94169116106131775783614a17565b610c24929160ff6133e26133dc61326f8463ffffffff1660030b60141d60030b90565b84614aae565b165f0b9060ff81166132bc57505061495c565b610c24929163ffffffff600782901c601f1691601f6134288361342061330d600f86901c8516613303565b16928661493e565b161b169060ff811661334357505061495c565b610c24929161348161347b61345c8363ffffffff1660030b60141d60030b90565b61328e613475600786901c601f165b95600f1c601f1690565b8661493e565b8361252f565b9060ff811661349157505061495c565b63ffffffff6132d092169083614a17565b610c24929163ffffffff600782901c601f1691601f6134cd8361342061330d600f86901c8516613303565b161c169060ff811661334357505061495c565b9190916135138363ffffffff8116600390810b60191d810b60051b63ffffffe01660079290921c601f1691909117900b90565b926001600160401b0361354661353f613538600f85901c601f165b9460141c601f1690565b938561493e565b928461493e565b9460030b160192600184166135a0578361359461359b9261357f600767fffffffffffffff8610c249916941663fffffff89060031b1690565b9061ffff61358d8588612f11565b9116614c0a565b9083614b39565b61495c565b60405162461bcd60e51b815260206004820152601e60248201527f6d6973616c69676e656420777269746555696e743136206164647265737300006044820152606490fd5b610c24929161360c61360661345c8363ffffffff1660030b60141d60030b90565b83614a36565b9060ff811661361c57505061495c565b61ffff6132d092169083614a17565b610c249291600781901c601f16613648600f83901c601f16613126565b9160ff82166136595750505061495c565b6130f692603f6136826001600160401b03613677613696958961493e565b1660070b928761493e565b169063ffffffff9060070b91161d60070b90565b6001600160401b03169083614a17565b610c2492916136c18163ffffffff1660030b60141d60030b90565b906136d2600782901c601f1661320e565b9160ff82166136e35750505061495c565b6001600160401b036136f86130f6948661493e565b9160030b16189083614a17565b610c249291600781901c601f166001600160401b036137498161373e613737600f87901c601f165b9660141c601f1690565b958761493e565b1660030b938561493e565b1660030b9160ff821661375e5750505061495c565b6130f692900360030b6001600160401b03169083614a17565b9190916137aa8363ffffffff8116600390810b60191d810b60051b63ffffffe01660079290921c601f1691909117900b90565b926137d46137c461353f613538600f85901c601f1661352e565b9460030b6001600160401b031690565b01603867fffffffffffffff882169160031b16906137f28184612f11565b604063ffffffff613804600886612313565b161161386057610c249561359b936138569060ff61383c61382f8361382a610100611dac565b612d8b565b196001600160401b031690565b93169063ffffffff6001600160401b0380931691161b1690565b9116179083614b39565b60405162461bcd60e51b815260206004820152602260248201527f636f70794269747320636f756e742065786365656473206c696d6974206f66206044820152610d8d60f21b6064820152608490fd5b91906138bb81614ae8565b906001600160401b036138e6816138db61330d600f86901c601f16613303565b1660070b928661493e565b1660070b136138f95750610c249161495c565b612b74916001600160401b039160030b82165b01165f612e65613924612155612dca624000106148f4565b916020860193612e3c612e3761393a875161471f565b9261396761395e8951896040516020810190612e14816103028c8560209181520190565b508b5114614458565b60c01b6001600160c01b03191690565b610c249291600781901c601f16613994600f83901c601f16613126565b9160ff82166139a55750505061495c565b6130f692603f6139c26139bb6139da948861493e565b928761493e565b1663ffffffff6001600160401b0380931691161b1690565b9083614a17565b919091613a148363ffffffff8116600390810b60191d810b60051b63ffffffe01660079290921c601f1691909117900b90565b926001600160401b0363ffffffff613a3f613538613a38600f86901c601f16613303565b948661493e565b169460030b16019260038416613a8a578361359461359b92613a79600767fffffffffffffff8610c249916941663fffffff89060031b1690565b90613a848487612f11565b90614c6d565b60405162461bcd60e51b815260206004820152601e60248201527f6d6973616c69676e656420777269746555696e743332206164647265737300006044820152606490fd5b610c249291600781901c601f16613aec600f83901c601f16613126565b60ff8216613afc5750505061495c565b613b13613b0c6130f6948661493e565b918561493e565b189083614a17565b610c249291600781901c601f16613b38600f83901c601f16613126565b9160ff8216613b495750505061495c565b6130f692603f613b5f6139bb6139da948861493e565b1663ffffffff6001600160401b0380931691161c1690565b610c249291601481901c601f1660030b9063ffffffff613bac613ba6600784901c601f165b93600f1c601f1690565b8561493e565b1660ff8216613bbd5750505061495c565b6130f692601f161b63ffffffff1660030b6001600160401b03169083614a17565b610c249291613c05613bff61345c8363ffffffff1660030b60141d60030b90565b83614aae565b9060ff8116613c1557505061495c565b60ff6132d092169083614a17565b610c249291600781901c601f16613c40600f83901c601f16613126565b9160ff8216613c515750505061495c565b6130f692613c71613c6a6001600160401b03938761493e565b918661493e565b9003169083614a17565b9190613c8681614ae8565b906001600160401b03613ca6816138db61330d600f86901c601f16613303565b1660070b13156138f95750610c249161495c565b610c249291601481901c601f1660030b906001600160401b03613ce6613ba6600784901c601f16613b9c565b1660030b60ff8216613cfa5750505061495c565b613d206001600160401b0391601f6130f695169063ffffffff9060030b91161d60030b90565b60030b169083614a17565b610c249291600781901c601f16613d48600f83901c601f16613126565b60ff8216613d585750505061495c565b613d68613b0c6130f6948661493e565b179083614a17565b610c249291601481901c603f1660030b90613d91600782901c601f1661320e565b60ff8216613da15750505061495c565b6130f692603f6001600160401b03613dbc613696948861493e565b1660070b91169063ffffffff9060070b91161d60070b90565b610c249291600781901c601f166001600160401b03613e018161373e613737600f87901c601f1661372d565b1660030b9160ff8216613e165750505061495c565b6130f6920160030b6001600160401b03169083614a17565b9190613e3981614ae8565b906001600160401b0380613e60613e5961330d600f86901c601f16613303565b938761493e565b16911610156138f95750610c249161495c565b610c249291613e8f63fffff000821660030b9160071c601f1690565b60ff8116613e9e57505061495c565b6001600160401b03806132d09360030b168501169083614a17565b610c24929163ffffffff613ee5613edf61326f8463ffffffff1660030b60141d60030b90565b8461252f565b1660030b9060ff81166132bc57505061495c565b9190613f0481614ae8565b906001600160401b0380613f24613e5961330d600f86901c601f16613303565b169116036138f95750610c249161495c565b610c24929163ffffffff601482901c601f1660030b601f82613f60613288600787901c841661327e565b1691161c1660030b9060ff81166132bc57505061495c565b610c249291601481901c603f1660030b90613f99600782901c601f1661320e565b60ff8216613fa95750505061495c565b6130f692603f6125616139da938761493e565b610c249291613fd78163ffffffff1660030b60141d60030b90565b906001600160401b03613ff3613ba6600784901c601f16613b9c565b1660030b60ff8216613e165750505061495c565b91612b749161390c67fffffffffffffffe9261402f8363ffffffff1660030b60141d60030b90565b90614049614043600786901c601f1661346b565b8861493e565b9360ff8116614064575b505060030b6001600160401b031690565b6001600160401b03600461407b9301169088614a17565b5f80614053565b610c249291601f600782901c169063fffff0001660030b613333565b61359b610c2493926001600160401b036140de8263ffffffff8116600390810b60191d810b60051b63ffffffe01660079290921c601f1691909117900b90565b91816140fd6139bb6140f6600f85901c601f1661352e565b938861493e565b9360030b16011683614b39565b610c249291600781901c601f16614127600f83901c601f16613126565b60ff82166141375750505061495c565b614147613b0c6130f6948661493e565b169083614a17565b610c249291601481901c603f1660030b90614170600782901c601f1661320e565b60ff82166141805750505061495c565b6130f692603f6141936139da938761493e565b911663ffffffff6001600160401b0380931691161b1690565b90610c249261425363ffffffff614260936141ec63fff000006141da84841660030b60030b601f1d60030b90565b841660141b1663ffffffff1660030b90565b6107fe601483901c1661421c614210600b85901b63fffff800165b601f1c60011690565b600b1b63fffff8001690565b91614230620ff00085169460071c601f1690565b60ff8116614266575b5084161717171660030b6001600160401b039060030b1690565b016001600160401b031690565b90614551565b61427e90600489016001600160401b0316908b614a17565b5f614239565b610c249291600781901c601f166142a1600f83901c601f16613126565b9160ff82166142b25750505061495c565b6130f6926142cb613c6a6001600160401b03938761493e565b01169083614a17565b610c2492916142ef8163ffffffff1660030b60141d60030b90565b90614300600782901c601f1661320e565b60ff82166143105750505061495c565b6130f6926143266001600160401b03928661493e565b9060030b16169083614a17565b919061433e81614ae8565b906001600160401b038061435e613e5961330d600f86901c601f16613303565b169116146138f95750610c249161495c565b919061437b81614ae8565b906001600160401b038061439b613e5961330d600f86901c601f16613303565b169116106138f95750610c249161495c565b610c2492916143d46143ce61345c8363ffffffff1660030b60141d60030b90565b83612f11565b60ff82166143e357505061495c565b6132d09183614a17565b610c2492916144088163ffffffff1660030b60141d60030b90565b90614419600782901c601f1661320e565b9160ff821661442a5750505061495c565b6001600160401b0361443f6130f6948661493e565b1660070b9060030b016001600160401b03169083614a17565b1561445f57565b60405162461bcd60e51b815260206004820152601d60248201527f577269746520776f726420726f6f7420646f65736e2774206d617463680000006044820152606490fd5b90612b749062400000612e656139246121555f6144c48562400008611dca565b94614605565b90612b7490610300612e656139246121555f6144c485610318611dca565b612b74624000006145066121555f6145008480611dca565b93614605565b612e656020850192614518845161471f565b61454461453b8651866040516020810190612e1481610302898560209181520190565b50885114614458565b612e3c600160c01b614b9c565b90612b749062400000612e656139246121555f6144c48562400010611dca565b915f612e65614588612155612dca612b74966148f4565b916020860193612e3c61459b865161471f565b916145cf6145c68851886040516020810190888252612e14816020840103601f198101835282610bf4565b508a5114614458565b60c01b6001600160c01b031916614b9c565b6145ee601f821615610cf7565b6707ffffffffffffff9060051c611e016001610cf7565b906146256001600160401b0391600160ff6001600160401b0392161b1690565b91614633601f821615610cf7565b60051c91614657826707ffffffffffffff8561464e85611dac565b16161615610cf7565b168015612bbd576707ffffffffffffff6001600160401b039216041690565b6001600160401b0390614687610f67565b50166146ad6001600160401b036146a5670800000000000000611dac565b168210610cf7565b604051906146ba82610bb9565b81525f602082015290565b906146ce610f67565b506001600160401b0391821691600160ff83161b811683029081169190820361120c5760ff91614707906707ffffffffffffff11610cf7565b6040519261471484610bb9565b835216602082015290565b80516020918201805191820183015192820191821061120c575290565b1561474357565b60405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420626520626967676572207468616e20746865207472656520696044820152643a39b2b63360d91b6064820152608490fd5b929190926147e66147de6147d26147b4612459602089015160ff1690565b966147c5603b60ff8a16111561473c565b516001600160401b031690565b6001600160401b031690565b94603b612aca565b935f9160ff8616915b826001600160401b0385161061480757505050509190565b9091929360016001600160401b0391845161483e60208701516148386147d28b67ffffffffffffffe09060051b1690565b90611837565b614846610c15565b918252602082015260016001600160401b03868116908a161c16614899578051602091820151018101516040805192830193845282015261488a8160608101610302565b519020955b01169291906147ef565b805160209182015101810151604080519283019182528201929092526148c28160608101610302565b5190209561488f565b916148d99060209284614796565b91909201611fe081519260051b16820180921161120c575290565b90610fd16001600160401b039267ffffffffffffffe0811693849116611dca565b61491e90614b9c565b60c01c90565b624000a0610fd191612f02565b62400098610fd191612f02565b6001600160401b0360f8610fd19360031b1662400018011690612f02565b90612b74905f612e65614977612155612dca624000106148f4565b916020860193612e3c612e376001600160401b036004614997895161471f565b946149c46149bb8b518b89604051612e148161030260208201948560209181520190565b508d5114614458565b011660c01b6001600160c01b03191690565b5f906001600160401b0360f8610c249460031b1662400018011690614571565b6001906001600160401b0360f8610c249460031b1662400018011690614571565b6001600160401b0360f8610c24949360031b1662400018011690614571565b60018216614a695761ffff91603f612561611e019367fffffffffffffff863fffffff86007861660031b16941690612f11565b60405162461bcd60e51b815260206004820152601d60248201527f6d6973616c69676e6564207265616455696e74313620616464726573730000006044820152606490fd5b60ff91614ad0611e019267fffffffffffffff860388460031b16931690612f11565b9063ffffffff6001600160401b0380931691161c1690565b63ffffffff90808216600390810b601f1d600c1b63fffff00016900b906107e0601482901c16614b2c614210614207600785901c601e169460181b63ff0000001690565b9284161717171660030b90565b91909160078316614b57576001600160401b03610c24931690614571565b60405162461bcd60e51b815260206004820152601e60248201527f6d6973616c69676e656420777269746555696e743634206164647265737300006044820152606490fd5b614c066001600160f81b0319603883901b16600883811b60ff60e01b1690601885901b60ff60e81b1690602886901b60ff60f01b169060ff60d81b9087901c16931717171760ff60d01b601884901c161760ff60c81b602884901c16179160381c60ff60c01b1690565b1790565b90919063ffffffff80831660100190811161120c5763ffffffff604091161161386057614c679063ffffffff603f614c4b61382f8661382a62010000611dac565b941691169063ffffffff6001600160401b0380931691161b1690565b91161790565b90919063ffffffff80831660200190811161120c5763ffffffff604091161161386057614c679063ffffffff603f614c4b61382f8661382a640100000000611dac56fea2646970667358221220f706b0c897d8fdd06e28be89c4e82fdf9319f67d352abc1c282b4f14a69e6bae64736f6c634300081b0033a2646970667358221220cf11e5d4d61c4128385deeef9d53de5aae59275a0df41c8ffb2d79fa5de84cbd64736f6c634300081b0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80\x80`@R4`\x15WaQ\xCE\x90\x81a\0\x1A\x829\xF3[_\x80\xFD\xFE`\x80\x80`@R`\x046\x10\x15a\0\x12W_\x80\xFD[_5`\xE0\x1Cc\xD3C\xB6\x0C\x14a\0%W_\x80\xFD[4a\x02\rWa\x01\xC06`\x03\x19\x01\x12a\x02\rW`\xA45g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x80\x91\x03a\x02\rW`\xE45\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x80\x93\x03a\x02\rW`\xA06a\x01\x03\x19\x01\x12a\x02\rW`\xA0\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01\xF9W`@Ra\x01\x045g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x02\rW\x81Ra\x01$5\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x02\rW` \x81\x01\x91\x82Ra\x01D5\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x02\rW`@\x81\x01\x91\x82Ra\x01d5\x94g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x86\x03a\x02\rW``\x82\x01\x95\x86Ra\x01\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x02\rW`\x80\x83\x01\x90\x81Ra\x01\xA45`\x01`\x01`\xA0\x1B\x03\x81\x16\x93\x90\x84\x90\x03a\x02\rW`@Q\x97aO\x87\x93\x84\x8A\x01\x96\x8A\x88\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x89\x11\x17a\x01\xF9Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8B\x99\x81\x80\x98\x96\x81\x97\x95a\x01\xC0\x9E`\xA0\x8F\x8F\x90\x99\x86\x9Aa\x02\x12\x909`\x045\x81R`$5` \x82\x01R`D5`@\x82\x01R`d5``\x82\x01R`\x845`\x80\x82\x01R\x01R`\xC45`\xC0\x8E\x01R`\xE0\x8D\x01RQ\x16a\x01\0\x8B\x01RQ\x16a\x01 \x89\x01RQ\x16a\x01@\x87\x01RQ\x16a\x01`\x85\x01RQ\x16a\x01\x80\x83\x01Ra\x01\xA0\x82\x01R\x03\x01\x90_\xF0\x80\x15a\x01\xEEW`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[`@Q=_\x82>=\x90\xFD[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[_\x80\xFD\xFEa\x02``@R4a\x02tW`@QaO\x878\x81\x90\x03`\x1F\x81\x01`\x1F\x19\x16\x83\x01`\x01`\x01`@\x1B\x03\x81\x11\x84\x82\x10\x17a\x02xW\x83\x92\x82\x91`@R\x839\x81\x01\x03\x90a\x01\xC0\x82\x12a\x02tW\x80Q` \x82\x01Q`@\x83\x01Q\x91``\x84\x01Q\x93`\x80\x81\x01Q\x95a\0k`\xA0\x83\x01a\x02\x8CV[`\xC0\x83\x01Q\x91`\xA0a\0\x7F`\xE0\x86\x01a\x02\x8CV[\x91`\xFF\x19\x01\x12a\x02tW`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17a\x02xW`@Ra\0\xB2a\x01\0\x86\x01a\x02\x8CV[\x81Ra\0\xC1a\x01 \x86\x01a\x02\x8CV[\x90` \x81\x01\x91\x82Ra\0\xD6a\x01@\x87\x01a\x02\x8CV[\x92`@\x82\x01\x93\x84Ra\0\xEBa\x01`\x88\x01a\x02\x8CV[\x95``\x83\x01\x96\x87Ra\x01\xA0a\x01\x03a\x01\x80\x8A\x01a\x02\x8CV[`\x80\x85\x01\x90\x81R\x98\x01Q\x98`\x01`\x01`\xA0\x1B\x03\x8A\x16\x8A\x03a\x02tW`\x80R`\xA0R`\xC0RQ`\x01`\x01`@\x1B\x03\x90\x81\x16`\xE0R\x90Q\x81\x16a\x01\0R\x90Q\x81\x16a\x01 RB\x81\x16a\x01@R\x83Q\x81\x16\x91\x90\x81\x16\x82\x10\x15a\x02mWP[a\x01`RQ`\x01`\x01`@\x1B\x03\x90\x81\x16a\x01\xA0R\x90Q\x16a\x01\x80Ra\x01\xC0Ra\x01\xE0Ra\x02\0Ra\x02 Ra\x02@R`@QaL\xE6\x90\x81a\x02\xA1\x829`\x80Q\x81a\x04>\x01R`\xA0Q\x81\x81\x81a\x06O\x01Ra\x0Es\x01R`\xC0Q\x81a\x089\x01R`\xE0Q\x81a\x08\r\x01Ra\x01\0Q\x81\x81\x81a\x08h\x01Ra\x12\xF5\x01Ra\x01 Q\x81\x81\x81a\x01l\x01R\x81\x81a\x08\x97\x01Ra\x12\xC5\x01Ra\x01@Q\x81\x81\x81a\x02;\x01Ra\x10j\x01Ra\x01`Q\x81\x81\x81a\x02\x1A\x01Ra\x10I\x01Ra\x01\x80Q\x81a\x13\xFD\x01Ra\x01\xA0Q\x81a\x13\xDC\x01Ra\x01\xC0Q\x81a\x19*\x01Ra\x01\xE0Q\x81a\rm\x01Ra\x02\0Q\x81\x81\x81a\r@\x01Ra\x10\xC8\x01Ra\x02 Q\x81a\r\xC0\x01Ra\x02@Q\x81\x81\x81a\r\x96\x01R\x81\x81a\x11\t\x01Ra\x117\x01R\xF3[\x90Pa\x01^V[_\x80\xFD[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[Q\x90`\x01`\x01`@\x1B\x03\x82\x16\x82\x03a\x02tWV\xFE`\x80`@R`\x046\x10\x15a\0\x11W_\x80\xFD[_5`\xE0\x1C\x80c\x1D[\xF7\x96\x14a\0\xD4W\x80cP\x17tj\x14a\0\xCFW\x80cQE#o\x14a\0\xCAW\x80c`A\xDD\xD5\x14a\0\xC5W\x80cj\x1A\x14\r\x14a\0\xC0W\x80cw\x95\x82\x0C\x14a\0\xBBW\x80c\x8A\xCC\x80-\x14a\0\xB6W\x80c\x9A\x9BK+\x14a\0\xB1W\x80c\xA1\xAF\x90k\x14a\0\xACW\x80c\xFC\xC6\x07}\x14a\0\xA7W\x80c\xFC\xC8S\x91\x14a\0\xA2Wc\xFFx\xE0\xEE\x14a\0\x9DW_\x80\xFD[a\n2V[a\t.V[a\x08\xBEV[a\x07\xEEV[a\x06|V[a\x06,V[a\x05\xC7V[a\x05OV[a\x04\xE4V[a\x04\xB5V[a\x03=V[a\x01\rV[\x91\x81`\x1F\x84\x01\x12\x15a\x01\tW\x825\x91`\x01`\x01`@\x1B\x03\x83\x11a\x01\tW` \x80\x85\x01\x94\x84`\x05\x1B\x01\x01\x11a\x01\tWV[_\x80\xFD[4a\x01\tW`\x806`\x03\x19\x01\x12a\x01\tW`\x045`$5`\x01`\x01`@\x1B\x03\x81\x11a\x01\tWa\x01@\x906\x90`\x04\x01a\0\xD9V[`d5\x92`D5\x92\x91a\x01Qa\x10DV[a\x03\x1DWa\x01_\x85\x85a\x10\xA0V[\x92\x82\x91`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90a\x01\x98\x81\x83\x14a\x0C\xF7V[_\x92[\x82\x84\x10a\x02\xCCWPPPP\x82\x03a\x02{W\x7F\xE557\xF2\x02\x91\x1D7mn(X5\xB2\xA2\x01n\x83\xE9\x9F\xBE\x84\xA0Y\xD4E\xCC+\xE4\x80rb\x93a\x02v\x93\x82a\x01\xDFa\x02f\x94a\x10\xC6V[a\x01\xF1\x85_R`\x03` R`@_ \x90V[Ua\x02\x04\x84_R`\x02` R`@_ \x90V[a\x02\x15a\x02\x10\x82a\x0C&V[a\x11\\V[a\x02`\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83a\x11\xA8V[\x84a\x12\x11V[`@Q\x90\x81R\x90\x81\x90` \x82\x01\x90V[\x03\x90\xA1\0[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7Fcommitment last state doesn't ma`D\x82\x01Rb\x0E\x8Cm`\xEB\x1B`d\x82\x01R`\x84\x90\xFD[\x90\x91\x92\x93`\x01\x90a\x03\x02a\x03\x10a\x02\xE4\x88\x87\x87a\x1D\x88V[5\x92`@Q\x92\x83\x91` \x83\x01\x95\x86\x90\x91`@\x92\x82R` \x82\x01R\x01\x90V[\x03`\x1F\x19\x81\x01\x83R\x82a\x0B\xF4V[Q\x90 \x94\x01\x92\x91\x90a\x01\x9BV[c\xACW\xBE\xEF`\xE0\x1B_R`\x04_\xFD[`@\x90`\x03\x19\x01\x12a\x01\tW`\x04\x90V[4a\x01\tW`\xC06`\x03\x19\x01\x12a\x01\tWa\x03W6a\x03,V[`d5`D5`\x845`\xA45`\x01`\x01`@\x1B\x03\x81\x11a\x01\tWa\x03\x7F\x906\x90`\x04\x01a\0\xD9V[\x93\x90\x92a\x03\x93a\x03\x8Da\x14PV[\x15a\x0CNV[a\x03\xA5a\x03\xA06\x88a\x0CdV[a\x14hV[_R`\x04` R`@_ a\x03\xC1a\x03\xBC\x82a\x0C\x8CV[a\x14\x8BV[`\x01`\x01`\x01`@\x1B\x03`\x80a\x03\xD6\x84a\x0C\x8CV[\x01Q\x16\x03a\x04eWa\x04c\x96a\x03\xF5\x84\x84a\x03\xF0\x85a\x0C\x8CV[a\x14\xCFV[a\x04`\x01Ta\x11\xFEV[`\x01UV[\x03\x90\xA3V[PPPP_UV[a\x14Xa\x10DV[\x80a\x14`W\x90V[P`\x01T\x15\x90V[`@Q` \x80\x82\x01\x92\x80Q\x84R\x01Q`@\x82\x01R`@\x81Ra\x10\xC0``\x82a\x0B\xF4V[Q\x15a\x14\x93WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rs\x1BX]\x18\xDA\x08\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`b\x1B`D\x82\x01R`d\x90\xFD[\x90a\x0C$\x92\x91Qa\x1E\xF3V[`\x01`\x01`@\x1B\x03\x81T`@\x1C\x16a\x14\xF0WPV[a\x0C$\x90[a\x15\x01a\x07\xA0\x82a\x0C&V[`\x01`\x01`@\x1B\x03\x81\x16\x15a\x15oW\x81Ta\x0C$\x92\x90`@\x1C`\x01`\x01`@\x1B\x03\x16a\x15PW\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@\x1B\x19\x16B`@\x1Bg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@\x1B\x16\x17\x81Ua\x11\xCFV[\x80T`\x01`\x01`\x80\x1B\x03\x19\x16`\x01`\x01`@\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90UV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7Fcan't advance clock with no time`D\x82\x01Rd\x08\x1B\x19Y\x9D`\xDA\x1B`d\x82\x01R`\x84\x90\xFD[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x19\x81\x01\x91\x90\x82\x11a\x12\x0CWV[\x15a\x15\xEDWPPV[cw:\xF8\x01`\xE0\x1B_R`\x04R`$R`D_\xFD[\x92\x91\x85\x94\x92a\x0C$\x96\x92\x99\x97\x98\x93a\x16&` a\x16\x1E\x88a\x0C\x8CV[\x01Q\x83\x14\x15\x90V[\x15a\x16\xA2WPa\x166\x90\x85a\x1F\x9DV[\x98\x90\x99[`\x03\x86\x01T\x90\x81a\x16ZWPPPa\x16U\x92P\x80\x82\x14a\x15\xE4V[a \xD0V[`\x04\x87\x01Ta\x16U\x96\x95\x93\x94Pa\x16\x92\x90`\x80\x1C`\x01`\x01`@\x1B\x03\x16\x91`\x01`\x01`\x01`@\x1B\x03\x81\x85\x16\x16\x03a\x16\x98W5\x92a\x15\xD6V[\x91a *V[` \x015\x92a\x15\xD6V[a\x16\xAD\x91P\x85a\x1FIV[\x98\x90\x99a\x16:V[_\x90_T\x90\x81a\x16\xC1WV[`\x01\x92PV[Q`\x01`\x01`@\x1B\x03\x16\x15a\x16\xD8WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7Fclock is not initialized\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[`\x80\x01Q`\x01`\x01`@\x1B\x03\x16a\x170WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x15`$\x82\x01Rt\x1BX]\x18\xDA\x08\x1A\\\xC8\x1B\x9B\xDD\x08\x19\x9A[\x9A\\\xDA\x19Y`Z\x1B`D\x82\x01R`d\x90\xFD[\x90\x91a\x17\x86`\x01`\x01`@\x1B\x03`\x80\x84\x01Q\x16\x15a\x0C\xF7V[a\x17\x92\x82Q\x93\x83a\x1BVV[\x91`\x01``\x82\x01Q\x16\x15_\x14a\x17\xAFWa\x17\xAB\x90a!\x13V[\x90\x91V[a\x17\xAB\x90a \xEAV[\x92\x91\x92`\x01`\x01`@\x1B\x03\x82\x11a\x0B\xD4W`@Q\x91a\x17\xE1`\x1F\x82\x01`\x1F\x19\x16` \x01\x84a\x0B\xF4V[\x82\x94\x81\x84R\x81\x83\x01\x11a\x01\tW\x82\x81` \x93\x84_\x96\x017\x01\x01RV[`\x01`\x01`@\x1B\x03`\x01\x91\x16\x01\x90`\x01`\x01`@\x1B\x03\x82\x11a\x12\x0CWV[\x90`\x01\x82\x01\x80\x92\x11a\x12\x0CWV[` \x01\x90\x81` \x11a\x12\x0CWV[\x91\x90\x82\x01\x80\x92\x11a\x12\x0CWV[\x90` \x11a\x01\tW\x90` \x90V[\x90\x92\x91\x92\x83` \x11a\x01\tW\x83\x11a\x01\tW` \x01\x91`\x1F\x19\x01\x90V[5\x90` \x81\x10a\x18}WP\x90V[_\x19\x90` \x03`\x03\x1B\x1B\x16\x90V[\x90\x81` \x91\x03\x12a\x01\tWQ\x90V[\x91\x92``\x93\x81\x92\x84R`@` \x85\x01R\x81`@\x85\x01R\x84\x84\x017_\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[`@Q=_\x82>=\x90\xFD[\x15a\x01\tWV[\x92a\x18\xE2a\x0C\x15V[\x92a\x18\xEE6\x83\x83a\x17\xB8V[\x84R_` \x85\x01Ra\x18\xFEa\x0C\x15V[\x93\x85\x85R` \x85\x01R\x83\x94a\x19\x15b\x10\0\0a\x15\xD6V[\x94a\x19(h\x10\0\0\0\0\0\0\0\0a\x15\xD6V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x91\x90\x82a\x19\x88WPPPPPPa\x19h\x90a\x18\x1BV[\x16a\x19zWa\x19v\x81a*\xDEV[Q\x90V[a\x19\x83\x81a!\xF9V[ap\x7F\x81\x16a \x03\x03a'{Wa\x0C$\x92\x93a>\xB9V[`\x7F\x81\x16`\x17\x03a'\x90Wa\x0C$\x92\x93a>sV[ap\x7F\x81\x16apc\x03a'\xA7Wa\x0C$\x92\x93a>.V[c\xFE\0p\x7F\x81\x16`;\x03a'\xBFWa\x0C$\x92\x93a=\xD5V[c\xFC\0p\x7F\x81\x16c@\0P\x13\x03a'\xDAWa\x0C$\x92\x93a=pV[c\xFE\0p\x7F\x81\x16a`3\x03a'\xF3Wa\x0C$\x92\x93a=+V[c\xFE\0p\x7F\x81\x16c@\0P\x1B\x03a(\x0EWa\x0C$\x92\x93a<\xBAV[ap\x7F\x81\x16aPc\x03a(%Wa\x0C$\x92\x93a<{V[c\xFE\0p\x7F\x81\x16c@\0\x003\x03a(@Wa\x0C$\x92\x93a<#V[ap\x7F\x81\x16a@\x03\x03a(WWa\x0C$\x92\x93a;\xDEV[c\xFE\0p\x7F\x81\x16a\x10\x1B\x03a(pWa\x0C$\x92\x93a;wV[c\xFE\0p\x7F\x81\x16aP3\x03a(\x89Wa\x0C$\x92\x93a;\x1BV[c\xFE\0p\x7F\x81\x16a@3\x03a(\xA2Wa\x0C$\x92\x93a:\xCFV[ap\x7F\x81\x16a #\x03a(\xB9Wa\x0C$\x92\x93a9\xE1V[c\xFE\0p\x7F\x81\x16a\x103\x03a(\xD2Wa\x0C$\x92\x93a9wV[ap\x7F\x81\x16a@c\x03a(\xE9Wa\x0C$\x92\x93a8\xB0V[ap\x7F\x81\x16`#\x03a(\xFFWa\x0C$\x92\x93a7wV[c\xFE\0p\x7F\x81\x16c@\0\0;\x03a)\x1AWa\x0C$\x92\x93a7\x05V[ap\x7F\x81\x16a@\x13\x03a)1Wa\x0C$\x92\x93a6\xA6V[c\xFE\0p\x7F\x81\x16c@\0P3\x03a)LWa\x0C$\x92\x93a6+V[ap\x7F\x81\x16aP\x03\x03a)cWa\x0C$\x92\x93a5\xE5V[ap\x7F\x81\x16a\x10#\x03a)zWa\x0C$\x92\x93a4\xE0V[c\xFE\0p\x7F\x81\x16aP;\x03a)\x93Wa\x0C$\x92\x93a4\xA2V[ap\x7F\x81\x16a`\x03\x03a)\xAAWa\x0C$\x92\x93a4;V[c\xFE\0p\x7F\x81\x16a\x10;\x03a)\xC3Wa\x0C$\x92\x93a3\xF5V[ap\x7F\x81\x16`\x03\x03a)\xD9Wa\x0C$\x92\x93a3\xB9V[c\xFE\0p\x7F\x81\x16a03\x03a)\xF2Wa\x0C$\x92\x93a3ZV[c\xFE\0p\x7F\x81\x16c@\0P;\x03a*\rWa\x0C$\x92\x93a2\xD7V[ap\x7F\x81\x16a\x10\x03\x03a*$Wa\x0C$\x92\x93a2KV[ap\x7F\x81\x16a`\x13\x03a*;Wa\x0C$\x92\x93a1\xE6V[ap\x7F\x81\x16a0\x13\x03a*RWa\x0C$\x92\x93a1\x80V[c\xFE\0p\x7F\x81\x16a 3\x03a*kWa\x0C$\x92\x93a1\rV[ap\x7F\x81\x16a \x13\x03a*\x82Wa\x0C$\x92\x93a0\x89V[ap\x7F\x81\x16`\x0F\x03a*\x99WPa\x0C$\x91\x92aI\\V[c\xFF\xFF\xFF\xFF\x16`s\x81\x03a*\xB2WPa\x0C$\x91\x92a/\xD5V[b\x10\0s\x84\x91\x14a*\xC5Wa$ya%\xBFV[a/qV[\x90`\xFF\x80\x91\x16\x91\x16\x03\x90`\xFF\x82\x11a\x12\x0CWV[a*\xE6a\x0FgV[P`\x01`\x01`@\x1B\x03b\x02\0\0a+\x07\x81a+\0\x81a\x1D\xACV[\x16\x15a\x0C\xF7V[\x16\x80\x15a+\xBDW`\x11`\x01`\x01`@\x1B\x03a+'\x92b\x02\0\0\x04\x16aF\xC5V[` \x82\x01a+@a+8\x82QaG\x1FV[\x83\x83QaG\x96V[P\x83Q\x03a+xWa+t\x91\x7FM\xE6\x11[\xDA\xDC#rL\xF2\x0CU\x80\xD7\x18R\\\xE8\x1B)L\x8C\x14\x9D6X\x02\x0C8\r\xF1\t\x91QaH\xCBV[\x90RV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FWrite region root doesn't match\0`D\x82\x01R`d\x90\xFD[a\x15\xC2V[a+\xCD`\x01\x91a.\xF0V[\x81\x1C\x16\x15a\"+W`\x01\x90V[`D` \x91`@Q\x92\x83\x91bF\x1B\xCD`\xE5\x1B\x83R\x81`\x04\x84\x01R\x80Q\x91\x82\x91\x82`$\x86\x01R\x01\x84\x84\x01^_\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x81\x01\x03\x01\x90\xFD[c\xFF\xFF\xFF\xFF\x81\x16\x15a,\xF1W\x80a\x0F\xD1\x91_\x91c\xFF\xFF\0\0\x81\x16\x15a,\xDDW[Pc\xFF\0\0\0\x81\x16\x15a,\xBEW[c\xF0\0\0\0\x81\x16\x15a,\x9FW[c\xC0\0\0\0\x81\x16\x15a,yW[c\x80\0\0\0\x16a#\x81Wa,t\x90a\"\xB3V[a#\x81V[\x90a,\x98a,\x8Bc\x80\0\0\0\x92a\"\xFBV[\x92`\x02\x1Bc\xFF\xFF\xFF\xFC\x16\x90V[\x90Pa,aV[\x90a,\xACa,\xB9\x91a\"\xE3V[\x91`\x04\x1Bc\xFF\xFF\xFF\xF0\x16\x90V[a,TV[\x90a,\xCBa,\xD8\x91a\"\xCBV[\x91`\x08\x1Bc\xFF\xFF\xFF\0\x16\x90V[a,GV[`\x10\x92P\x82\x1Bc\xFF\xFF\0\0\x16\x90P_a,9V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FEmulatorCompat: log2(0) is undef`D\x82\x01Rc\x1A[\x99Y`\xE2\x1B`d\x82\x01R`\x84\x90\xFD[\x90a-Y\x81a\x0F\xD1\x93a-Sa\x0FgV[PaF\x05V[aF\xC5V[\x91` \x83\x01\x91a-ya-q\x84QaG\x1FV[\x82\x85QaG\x96V[P\x84Q\x03a+xWa+t\x92QaH\xCBV[`?a\x0F\xD1\x92\x16c\xFF\xFF\xFF\xFF`\x01`\x01`@\x1B\x03\x80\x93\x16\x91\x16\x1B\x16\x90V[a+ta-\xB5\x82a.\xF0V[_a.ea-\xD1a!Ua-\xCAa\x02\xE8aH\xF4V[\x94\x90aF\x05V[\x91` \x86\x01\x93a.V[\x16`\x07\x0B\x90`\x03\x0B\x13_\x14a0\xFEWa0\xF6\x90\x82aI\xF6V[_\x80\x80a0\xC3V[a1\x08\x90\x82aI\xD6V[a0\xF6V[a\x0C$\x92\x91`\x07\x81\x90\x1C`\x1F\x16a10`\x0F\x83\x90\x1C`\x1F\x16[\x92`\x14\x1C`\x1F\x16\x90V[\x90`\xFF\x81\x16a1AWPPPaI\\V[`\x01`\x01`@\x1B\x03a1e\x81a1Za0\xF6\x96\x88aI>V[\x16`\x07\x0B\x93\x86aI>V[\x16`\x07\x0B_\x92\x12a1wW[\x83aJ\x17V[`\x01\x91Pa1qV[a\x0C$\x92\x91a1\x9B\x81c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[a1\xAB`\x07\x83\x90\x1C`\x1F\x16a0\xB0V[`\xFF\x83\x16a1\xBBWPPPaI\\V[`\x01`\x01`@\x1B\x03a1\xCE\x81\x92\x86aI>V[\x92`\x03\x0B\x16\x91\x16\x10_\x14a0\xFEWa0\xF6\x90\x82aI\xF6V[a\x0C$\x92\x91a2\x01\x81c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[\x90a2\x18`\x07\x82\x90\x1C`\x1F\x16[\x91`\x0F\x1C`\x1F\x16\x90V[\x91`\xFF\x82\x16a2)WPPPaI\\V[`\x01`\x01`@\x1B\x03a2>a0\xF6\x94\x86aI>V[\x91`\x03\x0B\x16\x17\x90\x83aJ\x17V[a\x0C$\x92\x91a\xFF\xFFa2\xA7a2\xA1a2o\x84c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[a2\x8Ea2\x88`\x07\x87\x90\x1C`\x1F\x16[\x96`\x0F\x1C`\x1F\x16\x90V[\x87aI>V[`\x01`\x01`@\x1B\x03\x80\x92`\x03\x0B\x16\x01\x16\x90V[\x84aJ6V[\x16`\x01\x0B\x90`\xFF\x81\x16a2\xBCW[PPaI\\V[`\x01`\x01`@\x1B\x03a2\xD0\x92\x16\x90\x83aJ\x17V[_\x80a2\xB5V[a\x0C$\x92\x91a33`\x07\x82\x90\x1C`\x1F\x16\x91`\x1Fa3\x1F`\x01`\x01`@\x1B\x03a3\x14a3\r`\x0F\x86\x90\x1C\x85\x16[\x95`\x14\x1C`\x1F\x16\x90V[\x94\x88aI>V[\x16`\x03\x0B\x92\x86aI>V[\x16\x90c\xFF\xFF\xFF\xFF\x90`\x03\x0B\x91\x16\x1D`\x03\x0B\x90V[\x90`\xFF\x81\x16a3CWPPaI\\V[`\x01`\x01`@\x1B\x03a2\xD0\x92`\x03\x0B\x16\x90\x83aJ\x17V[a\x0C$\x92\x91`\x07\x81\x90\x1C`\x1F\x16a3w`\x0F\x83\x90\x1C`\x1F\x16a1&V[\x90`\xFF\x81\x16a3\x88WPPPaI\\V[a3\x9Fa3\x98a0\xF6\x94\x86aI>V[\x92\x85aI>V[\x91`\x01`\x01`@\x1B\x03\x80_\x94\x16\x91\x16\x10a1wW\x83aJ\x17V[a\x0C$\x92\x91`\xFFa3\xE2a3\xDCa2o\x84c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[\x84aJ\xAEV[\x16_\x0B\x90`\xFF\x81\x16a2\xBCWPPaI\\V[a\x0C$\x92\x91c\xFF\xFF\xFF\xFF`\x07\x82\x90\x1C`\x1F\x16\x91`\x1Fa4(\x83a4 a3\r`\x0F\x86\x90\x1C\x85\x16a3\x03V[\x16\x92\x86aI>V[\x16\x1B\x16\x90`\xFF\x81\x16a3CWPPaI\\V[a\x0C$\x92\x91a4\x81a4{a4\\\x83c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[a2\x8Ea4u`\x07\x86\x90\x1C`\x1F\x16[\x95`\x0F\x1C`\x1F\x16\x90V[\x86aI>V[\x83a%/V[\x90`\xFF\x81\x16a4\x91WPPaI\\V[c\xFF\xFF\xFF\xFFa2\xD0\x92\x16\x90\x83aJ\x17V[a\x0C$\x92\x91c\xFF\xFF\xFF\xFF`\x07\x82\x90\x1C`\x1F\x16\x91`\x1Fa4\xCD\x83a4 a3\r`\x0F\x86\x90\x1C\x85\x16a3\x03V[\x16\x1C\x16\x90`\xFF\x81\x16a3CWPPaI\\V[\x91\x90\x91a5\x13\x83c\xFF\xFF\xFF\xFF\x81\x16`\x03\x90\x81\x0B`\x19\x1D\x81\x0B`\x05\x1Bc\xFF\xFF\xFF\xE0\x16`\x07\x92\x90\x92\x1C`\x1F\x16\x91\x90\x91\x17\x90\x0B\x90V[\x92`\x01`\x01`@\x1B\x03a5Fa5?a58`\x0F\x85\x90\x1C`\x1F\x16[\x94`\x14\x1C`\x1F\x16\x90V[\x93\x85aI>V[\x92\x84aI>V[\x94`\x03\x0B\x16\x01\x92`\x01\x84\x16a5\xA0W\x83a5\x94a5\x9B\x92a5\x7F`\x07g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF8a\x0C$\x99\x16\x94\x16c\xFF\xFF\xFF\xF8\x90`\x03\x1B\x16\x90V[\x90a\xFF\xFFa5\x8D\x85\x88a/\x11V[\x91\x16aL\nV[\x90\x83aK9V[aI\\V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7Fmisaligned writeUint16 address\0\0`D\x82\x01R`d\x90\xFD[a\x0C$\x92\x91a6\x0Ca6\x06a4\\\x83c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[\x83aJ6V[\x90`\xFF\x81\x16a6\x1CWPPaI\\V[a\xFF\xFFa2\xD0\x92\x16\x90\x83aJ\x17V[a\x0C$\x92\x91`\x07\x81\x90\x1C`\x1F\x16a6H`\x0F\x83\x90\x1C`\x1F\x16a1&V[\x91`\xFF\x82\x16a6YWPPPaI\\V[a0\xF6\x92`?a6\x82`\x01`\x01`@\x1B\x03a6wa6\x96\x95\x89aI>V[\x16`\x07\x0B\x92\x87aI>V[\x16\x90c\xFF\xFF\xFF\xFF\x90`\x07\x0B\x91\x16\x1D`\x07\x0B\x90V[`\x01`\x01`@\x1B\x03\x16\x90\x83aJ\x17V[a\x0C$\x92\x91a6\xC1\x81c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[\x90a6\xD2`\x07\x82\x90\x1C`\x1F\x16a2\x0EV[\x91`\xFF\x82\x16a6\xE3WPPPaI\\V[`\x01`\x01`@\x1B\x03a6\xF8a0\xF6\x94\x86aI>V[\x91`\x03\x0B\x16\x18\x90\x83aJ\x17V[a\x0C$\x92\x91`\x07\x81\x90\x1C`\x1F\x16`\x01`\x01`@\x1B\x03a7I\x81a7>a77`\x0F\x87\x90\x1C`\x1F\x16[\x96`\x14\x1C`\x1F\x16\x90V[\x95\x87aI>V[\x16`\x03\x0B\x93\x85aI>V[\x16`\x03\x0B\x91`\xFF\x82\x16a7^WPPPaI\\V[a0\xF6\x92\x90\x03`\x03\x0B`\x01`\x01`@\x1B\x03\x16\x90\x83aJ\x17V[\x91\x90\x91a7\xAA\x83c\xFF\xFF\xFF\xFF\x81\x16`\x03\x90\x81\x0B`\x19\x1D\x81\x0B`\x05\x1Bc\xFF\xFF\xFF\xE0\x16`\x07\x92\x90\x92\x1C`\x1F\x16\x91\x90\x91\x17\x90\x0B\x90V[\x92a7\xD4a7\xC4a5?a58`\x0F\x85\x90\x1C`\x1F\x16a5.V[\x94`\x03\x0B`\x01`\x01`@\x1B\x03\x16\x90V[\x01`8g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF8\x82\x16\x91`\x03\x1B\x16\x90a7\xF2\x81\x84a/\x11V[`@c\xFF\xFF\xFF\xFFa8\x04`\x08\x86a#\x13V[\x16\x11a8`Wa\x0C$\x95a5\x9B\x93a8V\x90`\xFFa8V[\x16`\x07\x0B\x13a8\xF9WPa\x0C$\x91aI\\V[a+t\x91`\x01`\x01`@\x1B\x03\x91`\x03\x0B\x82\x16[\x01\x16_a.ea9$a!Ua-\xCAb@\0\x10aH\xF4V[\x91` \x86\x01\x93a.V[\x92\x87aI>V[\x16c\xFF\xFF\xFF\xFF`\x01`\x01`@\x1B\x03\x80\x93\x16\x91\x16\x1B\x16\x90V[\x90\x83aJ\x17V[\x91\x90\x91a:\x14\x83c\xFF\xFF\xFF\xFF\x81\x16`\x03\x90\x81\x0B`\x19\x1D\x81\x0B`\x05\x1Bc\xFF\xFF\xFF\xE0\x16`\x07\x92\x90\x92\x1C`\x1F\x16\x91\x90\x91\x17\x90\x0B\x90V[\x92`\x01`\x01`@\x1B\x03c\xFF\xFF\xFF\xFFa:?a58a:8`\x0F\x86\x90\x1C`\x1F\x16a3\x03V[\x94\x86aI>V[\x16\x94`\x03\x0B\x16\x01\x92`\x03\x84\x16a:\x8AW\x83a5\x94a5\x9B\x92a:y`\x07g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF8a\x0C$\x99\x16\x94\x16c\xFF\xFF\xFF\xF8\x90`\x03\x1B\x16\x90V[\x90a:\x84\x84\x87a/\x11V[\x90aLmV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7Fmisaligned writeUint32 address\0\0`D\x82\x01R`d\x90\xFD[a\x0C$\x92\x91`\x07\x81\x90\x1C`\x1F\x16a:\xEC`\x0F\x83\x90\x1C`\x1F\x16a1&V[`\xFF\x82\x16a:\xFCWPPPaI\\V[a;\x13a;\x0Ca0\xF6\x94\x86aI>V[\x91\x85aI>V[\x18\x90\x83aJ\x17V[a\x0C$\x92\x91`\x07\x81\x90\x1C`\x1F\x16a;8`\x0F\x83\x90\x1C`\x1F\x16a1&V[\x91`\xFF\x82\x16a;IWPPPaI\\V[a0\xF6\x92`?a;_a9\xBBa9\xDA\x94\x88aI>V[\x16c\xFF\xFF\xFF\xFF`\x01`\x01`@\x1B\x03\x80\x93\x16\x91\x16\x1C\x16\x90V[a\x0C$\x92\x91`\x14\x81\x90\x1C`\x1F\x16`\x03\x0B\x90c\xFF\xFF\xFF\xFFa;\xACa;\xA6`\x07\x84\x90\x1C`\x1F\x16[\x93`\x0F\x1C`\x1F\x16\x90V[\x85aI>V[\x16`\xFF\x82\x16a;\xBDWPPPaI\\V[a0\xF6\x92`\x1F\x16\x1Bc\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x01`\x01`@\x1B\x03\x16\x90\x83aJ\x17V[a\x0C$\x92\x91a<\x05a;\xFFa4\\\x83c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[\x83aJ\xAEV[\x90`\xFF\x81\x16a<\x15WPPaI\\V[`\xFFa2\xD0\x92\x16\x90\x83aJ\x17V[a\x0C$\x92\x91`\x07\x81\x90\x1C`\x1F\x16a<@`\x0F\x83\x90\x1C`\x1F\x16a1&V[\x91`\xFF\x82\x16aV[\x91\x86aI>V[\x90\x03\x16\x90\x83aJ\x17V[\x91\x90a<\x86\x81aJ\xE8V[\x90`\x01`\x01`@\x1B\x03a<\xA6\x81a8\xDBa3\r`\x0F\x86\x90\x1C`\x1F\x16a3\x03V[\x16`\x07\x0B\x13\x15a8\xF9WPa\x0C$\x91aI\\V[a\x0C$\x92\x91`\x14\x81\x90\x1C`\x1F\x16`\x03\x0B\x90`\x01`\x01`@\x1B\x03a<\xE6a;\xA6`\x07\x84\x90\x1C`\x1F\x16a;\x9CV[\x16`\x03\x0B`\xFF\x82\x16a<\xFAWPPPaI\\V[a= `\x01`\x01`@\x1B\x03\x91`\x1Fa0\xF6\x95\x16\x90c\xFF\xFF\xFF\xFF\x90`\x03\x0B\x91\x16\x1D`\x03\x0B\x90V[`\x03\x0B\x16\x90\x83aJ\x17V[a\x0C$\x92\x91`\x07\x81\x90\x1C`\x1F\x16a=H`\x0F\x83\x90\x1C`\x1F\x16a1&V[`\xFF\x82\x16a=XWPPPaI\\V[a=ha;\x0Ca0\xF6\x94\x86aI>V[\x17\x90\x83aJ\x17V[a\x0C$\x92\x91`\x14\x81\x90\x1C`?\x16`\x03\x0B\x90a=\x91`\x07\x82\x90\x1C`\x1F\x16a2\x0EV[`\xFF\x82\x16a=\xA1WPPPaI\\V[a0\xF6\x92`?`\x01`\x01`@\x1B\x03a=\xBCa6\x96\x94\x88aI>V[\x16`\x07\x0B\x91\x16\x90c\xFF\xFF\xFF\xFF\x90`\x07\x0B\x91\x16\x1D`\x07\x0B\x90V[a\x0C$\x92\x91`\x07\x81\x90\x1C`\x1F\x16`\x01`\x01`@\x1B\x03a>\x01\x81a7>a77`\x0F\x87\x90\x1C`\x1F\x16a7-V[\x16`\x03\x0B\x91`\xFF\x82\x16a>\x16WPPPaI\\V[a0\xF6\x92\x01`\x03\x0B`\x01`\x01`@\x1B\x03\x16\x90\x83aJ\x17V[\x91\x90a>9\x81aJ\xE8V[\x90`\x01`\x01`@\x1B\x03\x80a>`a>Ya3\r`\x0F\x86\x90\x1C`\x1F\x16a3\x03V[\x93\x87aI>V[\x16\x91\x16\x10\x15a8\xF9WPa\x0C$\x91aI\\V[a\x0C$\x92\x91a>\x8Fc\xFF\xFF\xF0\0\x82\x16`\x03\x0B\x91`\x07\x1C`\x1F\x16\x90V[`\xFF\x81\x16a>\x9EWPPaI\\V[`\x01`\x01`@\x1B\x03\x80a2\xD0\x93`\x03\x0B\x16\x85\x01\x16\x90\x83aJ\x17V[a\x0C$\x92\x91c\xFF\xFF\xFF\xFFa>\xE5a>\xDFa2o\x84c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[\x84a%/V[\x16`\x03\x0B\x90`\xFF\x81\x16a2\xBCWPPaI\\V[\x91\x90a?\x04\x81aJ\xE8V[\x90`\x01`\x01`@\x1B\x03\x80a?$a>Ya3\r`\x0F\x86\x90\x1C`\x1F\x16a3\x03V[\x16\x91\x16\x03a8\xF9WPa\x0C$\x91aI\\V[a\x0C$\x92\x91c\xFF\xFF\xFF\xFF`\x14\x82\x90\x1C`\x1F\x16`\x03\x0B`\x1F\x82a?`a2\x88`\x07\x87\x90\x1C\x84\x16a2~V[\x16\x91\x16\x1C\x16`\x03\x0B\x90`\xFF\x81\x16a2\xBCWPPaI\\V[a\x0C$\x92\x91`\x14\x81\x90\x1C`?\x16`\x03\x0B\x90a?\x99`\x07\x82\x90\x1C`\x1F\x16a2\x0EV[`\xFF\x82\x16a?\xA9WPPPaI\\V[a0\xF6\x92`?a%aa9\xDA\x93\x87aI>V[a\x0C$\x92\x91a?\xD7\x81c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[\x90`\x01`\x01`@\x1B\x03a?\xF3a;\xA6`\x07\x84\x90\x1C`\x1F\x16a;\x9CV[\x16`\x03\x0B`\xFF\x82\x16a>\x16WPPPaI\\V[\x91a+t\x91a9\x0Cg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFE\x92a@/\x83c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[\x90a@Ia@C`\x07\x86\x90\x1C`\x1F\x16a4kV[\x88aI>V[\x93`\xFF\x81\x16a@dW[PP`\x03\x0B`\x01`\x01`@\x1B\x03\x16\x90V[`\x01`\x01`@\x1B\x03`\x04a@{\x93\x01\x16\x90\x88aJ\x17V[_\x80a@SV[a\x0C$\x92\x91`\x1F`\x07\x82\x90\x1C\x16\x90c\xFF\xFF\xF0\0\x16`\x03\x0Ba33V[a5\x9Ba\x0C$\x93\x92`\x01`\x01`@\x1B\x03a@\xDE\x82c\xFF\xFF\xFF\xFF\x81\x16`\x03\x90\x81\x0B`\x19\x1D\x81\x0B`\x05\x1Bc\xFF\xFF\xFF\xE0\x16`\x07\x92\x90\x92\x1C`\x1F\x16\x91\x90\x91\x17\x90\x0B\x90V[\x91\x81a@\xFDa9\xBBa@\xF6`\x0F\x85\x90\x1C`\x1F\x16a5.V[\x93\x88aI>V[\x93`\x03\x0B\x16\x01\x16\x83aK9V[a\x0C$\x92\x91`\x07\x81\x90\x1C`\x1F\x16aA'`\x0F\x83\x90\x1C`\x1F\x16a1&V[`\xFF\x82\x16aA7WPPPaI\\V[aAGa;\x0Ca0\xF6\x94\x86aI>V[\x16\x90\x83aJ\x17V[a\x0C$\x92\x91`\x14\x81\x90\x1C`?\x16`\x03\x0B\x90aAp`\x07\x82\x90\x1C`\x1F\x16a2\x0EV[`\xFF\x82\x16aA\x80WPPPaI\\V[a0\xF6\x92`?aA\x93a9\xDA\x93\x87aI>V[\x91\x16c\xFF\xFF\xFF\xFF`\x01`\x01`@\x1B\x03\x80\x93\x16\x91\x16\x1B\x16\x90V[\x90a\x0C$\x92aBSc\xFF\xFF\xFF\xFFaB`\x93aA\xECc\xFF\xF0\0\0aA\xDA\x84\x84\x16`\x03\x0B`\x03\x0B`\x1F\x1D`\x03\x0B\x90V[\x84\x16`\x14\x1B\x16c\xFF\xFF\xFF\xFF\x16`\x03\x0B\x90V[a\x07\xFE`\x14\x83\x90\x1C\x16aB\x1CaB\x10`\x0B\x85\x90\x1Bc\xFF\xFF\xF8\0\x16[`\x1F\x1C`\x01\x16\x90V[`\x0B\x1Bc\xFF\xFF\xF8\0\x16\x90V[\x91aB0b\x0F\xF0\0\x85\x16\x94`\x07\x1C`\x1F\x16\x90V[`\xFF\x81\x16aBfW[P\x84\x16\x17\x17\x17\x16`\x03\x0B`\x01`\x01`@\x1B\x03\x90`\x03\x0B\x16\x90V[\x01`\x01`\x01`@\x1B\x03\x16\x90V[\x90aEQV[aB~\x90`\x04\x89\x01`\x01`\x01`@\x1B\x03\x16\x90\x8BaJ\x17V[_aB9V[a\x0C$\x92\x91`\x07\x81\x90\x1C`\x1F\x16aB\xA1`\x0F\x83\x90\x1C`\x1F\x16a1&V[\x91`\xFF\x82\x16aB\xB2WPPPaI\\V[a0\xF6\x92aB\xCBaV[\x01\x16\x90\x83aJ\x17V[a\x0C$\x92\x91aB\xEF\x81c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[\x90aC\0`\x07\x82\x90\x1C`\x1F\x16a2\x0EV[`\xFF\x82\x16aC\x10WPPPaI\\V[a0\xF6\x92aC&`\x01`\x01`@\x1B\x03\x92\x86aI>V[\x90`\x03\x0B\x16\x16\x90\x83aJ\x17V[\x91\x90aC>\x81aJ\xE8V[\x90`\x01`\x01`@\x1B\x03\x80aC^a>Ya3\r`\x0F\x86\x90\x1C`\x1F\x16a3\x03V[\x16\x91\x16\x14a8\xF9WPa\x0C$\x91aI\\V[\x91\x90aC{\x81aJ\xE8V[\x90`\x01`\x01`@\x1B\x03\x80aC\x9Ba>Ya3\r`\x0F\x86\x90\x1C`\x1F\x16a3\x03V[\x16\x91\x16\x10a8\xF9WPa\x0C$\x91aI\\V[a\x0C$\x92\x91aC\xD4aC\xCEa4\\\x83c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[\x83a/\x11V[`\xFF\x82\x16aC\xE3WPPaI\\V[a2\xD0\x91\x83aJ\x17V[a\x0C$\x92\x91aD\x08\x81c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[\x90aD\x19`\x07\x82\x90\x1C`\x1F\x16a2\x0EV[\x91`\xFF\x82\x16aD*WPPPaI\\V[`\x01`\x01`@\x1B\x03aD?a0\xF6\x94\x86aI>V[\x16`\x07\x0B\x90`\x03\x0B\x01`\x01`\x01`@\x1B\x03\x16\x90\x83aJ\x17V[\x15aD_WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FWrite word root doesn't match\0\0\0`D\x82\x01R`d\x90\xFD[\x90a+t\x90b@\0\0a.ea9$a!U_aD\xC4\x85b@\0\x08a\x1D\xCAV[\x94aF\x05V[\x90a+t\x90a\x03\0a.ea9$a!U_aD\xC4\x85a\x03\x18a\x1D\xCAV[a+tb@\0\0aE\x06a!U_aE\0\x84\x80a\x1D\xCAV[\x93aF\x05V[a.e` \x85\x01\x92aE\x18\x84QaG\x1FV[aEDaE;\x86Q\x86`@Q` \x81\x01\x90a.\x14\x81a\x03\x02\x89\x85` \x91\x81R\x01\x90V[P\x88Q\x14aDXV[a.<`\x01`\xC0\x1BaK\x9CV[\x90a+t\x90b@\0\0a.ea9$a!U_aD\xC4\x85b@\0\x10a\x1D\xCAV[\x91_a.eaE\x88a!Ua-\xCAa+t\x96aH\xF4V[\x91` \x86\x01\x93a.` \x87\x01QaH8aG\xD2\x8Bg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x90`\x05\x1B\x16\x90V[\x90a\x187V[aHFa\x0C\x15V[\x91\x82R` \x82\x01R`\x01`\x01`\x01`@\x1B\x03\x86\x81\x16\x90\x8A\x16\x1C\x16aH\x99W\x80Q` \x91\x82\x01Q\x01\x81\x01Q`@\x80Q\x92\x83\x01\x93\x84R\x82\x01RaH\x8A\x81``\x81\x01a\x03\x02V[Q\x90 \x95[\x01\x16\x92\x91\x90aG\xEFV[\x80Q` \x91\x82\x01Q\x01\x81\x01Q`@\x80Q\x92\x83\x01\x91\x82R\x82\x01\x92\x90\x92RaH\xC2\x81``\x81\x01a\x03\x02V[Q\x90 \x95aH\x8FV[\x91aH\xD9\x90` \x92\x84aG\x96V[\x91\x90\x92\x01a\x1F\xE0\x81Q\x92`\x05\x1B\x16\x82\x01\x80\x92\x11a\x12\x0CWR\x90V[\x90a\x0F\xD1`\x01`\x01`@\x1B\x03\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x16\x93\x84\x91\x16a\x1D\xCAV[aI\x1E\x90aK\x9CV[`\xC0\x1C\x90V[b@\0\xA0a\x0F\xD1\x91a/\x02V[b@\0\x98a\x0F\xD1\x91a/\x02V[`\x01`\x01`@\x1B\x03`\xF8a\x0F\xD1\x93`\x03\x1B\x16b@\0\x18\x01\x16\x90a/\x02V[\x90a+t\x90_a.eaIwa!Ua-\xCAb@\0\x10aH\xF4V[\x91` \x86\x01\x93a.=\x90\xFD[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[_\x80\xFD\xFEa\x02``@R4a\x02tW`@QaO\x878\x81\x90\x03`\x1F\x81\x01`\x1F\x19\x16\x83\x01`\x01`\x01`@\x1B\x03\x81\x11\x84\x82\x10\x17a\x02xW\x83\x92\x82\x91`@R\x839\x81\x01\x03\x90a\x01\xC0\x82\x12a\x02tW\x80Q` \x82\x01Q`@\x83\x01Q\x91``\x84\x01Q\x93`\x80\x81\x01Q\x95a\0k`\xA0\x83\x01a\x02\x8CV[`\xC0\x83\x01Q\x91`\xA0a\0\x7F`\xE0\x86\x01a\x02\x8CV[\x91`\xFF\x19\x01\x12a\x02tW`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17a\x02xW`@Ra\0\xB2a\x01\0\x86\x01a\x02\x8CV[\x81Ra\0\xC1a\x01 \x86\x01a\x02\x8CV[\x90` \x81\x01\x91\x82Ra\0\xD6a\x01@\x87\x01a\x02\x8CV[\x92`@\x82\x01\x93\x84Ra\0\xEBa\x01`\x88\x01a\x02\x8CV[\x95``\x83\x01\x96\x87Ra\x01\xA0a\x01\x03a\x01\x80\x8A\x01a\x02\x8CV[`\x80\x85\x01\x90\x81R\x98\x01Q\x98`\x01`\x01`\xA0\x1B\x03\x8A\x16\x8A\x03a\x02tW`\x80R`\xA0R`\xC0RQ`\x01`\x01`@\x1B\x03\x90\x81\x16`\xE0R\x90Q\x81\x16a\x01\0R\x90Q\x81\x16a\x01 RB\x81\x16a\x01@R\x83Q\x81\x16\x91\x90\x81\x16\x82\x10\x15a\x02mWP[a\x01`RQ`\x01`\x01`@\x1B\x03\x90\x81\x16a\x01\xA0R\x90Q\x16a\x01\x80Ra\x01\xC0Ra\x01\xE0Ra\x02\0Ra\x02 Ra\x02@R`@QaL\xE6\x90\x81a\x02\xA1\x829`\x80Q\x81a\x04>\x01R`\xA0Q\x81\x81\x81a\x06O\x01Ra\x0Es\x01R`\xC0Q\x81a\x089\x01R`\xE0Q\x81a\x08\r\x01Ra\x01\0Q\x81\x81\x81a\x08h\x01Ra\x12\xF5\x01Ra\x01 Q\x81\x81\x81a\x01l\x01R\x81\x81a\x08\x97\x01Ra\x12\xC5\x01Ra\x01@Q\x81\x81\x81a\x02;\x01Ra\x10j\x01Ra\x01`Q\x81\x81\x81a\x02\x1A\x01Ra\x10I\x01Ra\x01\x80Q\x81a\x13\xFD\x01Ra\x01\xA0Q\x81a\x13\xDC\x01Ra\x01\xC0Q\x81a\x19*\x01Ra\x01\xE0Q\x81a\rm\x01Ra\x02\0Q\x81\x81\x81a\r@\x01Ra\x10\xC8\x01Ra\x02 Q\x81a\r\xC0\x01Ra\x02@Q\x81\x81\x81a\r\x96\x01R\x81\x81a\x11\t\x01Ra\x117\x01R\xF3[\x90Pa\x01^V[_\x80\xFD[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[Q\x90`\x01`\x01`@\x1B\x03\x82\x16\x82\x03a\x02tWV\xFE`\x80`@R`\x046\x10\x15a\0\x11W_\x80\xFD[_5`\xE0\x1C\x80c\x1D[\xF7\x96\x14a\0\xD4W\x80cP\x17tj\x14a\0\xCFW\x80cQE#o\x14a\0\xCAW\x80c`A\xDD\xD5\x14a\0\xC5W\x80cj\x1A\x14\r\x14a\0\xC0W\x80cw\x95\x82\x0C\x14a\0\xBBW\x80c\x8A\xCC\x80-\x14a\0\xB6W\x80c\x9A\x9BK+\x14a\0\xB1W\x80c\xA1\xAF\x90k\x14a\0\xACW\x80c\xFC\xC6\x07}\x14a\0\xA7W\x80c\xFC\xC8S\x91\x14a\0\xA2Wc\xFFx\xE0\xEE\x14a\0\x9DW_\x80\xFD[a\n2V[a\t.V[a\x08\xBEV[a\x07\xEEV[a\x06|V[a\x06,V[a\x05\xC7V[a\x05OV[a\x04\xE4V[a\x04\xB5V[a\x03=V[a\x01\rV[\x91\x81`\x1F\x84\x01\x12\x15a\x01\tW\x825\x91`\x01`\x01`@\x1B\x03\x83\x11a\x01\tW` \x80\x85\x01\x94\x84`\x05\x1B\x01\x01\x11a\x01\tWV[_\x80\xFD[4a\x01\tW`\x806`\x03\x19\x01\x12a\x01\tW`\x045`$5`\x01`\x01`@\x1B\x03\x81\x11a\x01\tWa\x01@\x906\x90`\x04\x01a\0\xD9V[`d5\x92`D5\x92\x91a\x01Qa\x10DV[a\x03\x1DWa\x01_\x85\x85a\x10\xA0V[\x92\x82\x91`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90a\x01\x98\x81\x83\x14a\x0C\xF7V[_\x92[\x82\x84\x10a\x02\xCCWPPPP\x82\x03a\x02{W\x7F\xE557\xF2\x02\x91\x1D7mn(X5\xB2\xA2\x01n\x83\xE9\x9F\xBE\x84\xA0Y\xD4E\xCC+\xE4\x80rb\x93a\x02v\x93\x82a\x01\xDFa\x02f\x94a\x10\xC6V[a\x01\xF1\x85_R`\x03` R`@_ \x90V[Ua\x02\x04\x84_R`\x02` R`@_ \x90V[a\x02\x15a\x02\x10\x82a\x0C&V[a\x11\\V[a\x02`\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83a\x11\xA8V[\x84a\x12\x11V[`@Q\x90\x81R\x90\x81\x90` \x82\x01\x90V[\x03\x90\xA1\0[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7Fcommitment last state doesn't ma`D\x82\x01Rb\x0E\x8Cm`\xEB\x1B`d\x82\x01R`\x84\x90\xFD[\x90\x91\x92\x93`\x01\x90a\x03\x02a\x03\x10a\x02\xE4\x88\x87\x87a\x1D\x88V[5\x92`@Q\x92\x83\x91` \x83\x01\x95\x86\x90\x91`@\x92\x82R` \x82\x01R\x01\x90V[\x03`\x1F\x19\x81\x01\x83R\x82a\x0B\xF4V[Q\x90 \x94\x01\x92\x91\x90a\x01\x9BV[c\xACW\xBE\xEF`\xE0\x1B_R`\x04_\xFD[`@\x90`\x03\x19\x01\x12a\x01\tW`\x04\x90V[4a\x01\tW`\xC06`\x03\x19\x01\x12a\x01\tWa\x03W6a\x03,V[`d5`D5`\x845`\xA45`\x01`\x01`@\x1B\x03\x81\x11a\x01\tWa\x03\x7F\x906\x90`\x04\x01a\0\xD9V[\x93\x90\x92a\x03\x93a\x03\x8Da\x14PV[\x15a\x0CNV[a\x03\xA5a\x03\xA06\x88a\x0CdV[a\x14hV[_R`\x04` R`@_ a\x03\xC1a\x03\xBC\x82a\x0C\x8CV[a\x14\x8BV[`\x01`\x01`\x01`@\x1B\x03`\x80a\x03\xD6\x84a\x0C\x8CV[\x01Q\x16\x03a\x04eWa\x04c\x96a\x03\xF5\x84\x84a\x03\xF0\x85a\x0C\x8CV[a\x14\xCFV[a\x04`\x01Ta\x11\xFEV[`\x01UV[\x03\x90\xA3V[PPPP_UV[a\x14Xa\x10DV[\x80a\x14`W\x90V[P`\x01T\x15\x90V[`@Q` \x80\x82\x01\x92\x80Q\x84R\x01Q`@\x82\x01R`@\x81Ra\x10\xC0``\x82a\x0B\xF4V[Q\x15a\x14\x93WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rs\x1BX]\x18\xDA\x08\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`b\x1B`D\x82\x01R`d\x90\xFD[\x90a\x0C$\x92\x91Qa\x1E\xF3V[`\x01`\x01`@\x1B\x03\x81T`@\x1C\x16a\x14\xF0WPV[a\x0C$\x90[a\x15\x01a\x07\xA0\x82a\x0C&V[`\x01`\x01`@\x1B\x03\x81\x16\x15a\x15oW\x81Ta\x0C$\x92\x90`@\x1C`\x01`\x01`@\x1B\x03\x16a\x15PW\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@\x1B\x19\x16B`@\x1Bg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@\x1B\x16\x17\x81Ua\x11\xCFV[\x80T`\x01`\x01`\x80\x1B\x03\x19\x16`\x01`\x01`@\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90UV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7Fcan't advance clock with no time`D\x82\x01Rd\x08\x1B\x19Y\x9D`\xDA\x1B`d\x82\x01R`\x84\x90\xFD[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x19\x81\x01\x91\x90\x82\x11a\x12\x0CWV[\x15a\x15\xEDWPPV[cw:\xF8\x01`\xE0\x1B_R`\x04R`$R`D_\xFD[\x92\x91\x85\x94\x92a\x0C$\x96\x92\x99\x97\x98\x93a\x16&` a\x16\x1E\x88a\x0C\x8CV[\x01Q\x83\x14\x15\x90V[\x15a\x16\xA2WPa\x166\x90\x85a\x1F\x9DV[\x98\x90\x99[`\x03\x86\x01T\x90\x81a\x16ZWPPPa\x16U\x92P\x80\x82\x14a\x15\xE4V[a \xD0V[`\x04\x87\x01Ta\x16U\x96\x95\x93\x94Pa\x16\x92\x90`\x80\x1C`\x01`\x01`@\x1B\x03\x16\x91`\x01`\x01`\x01`@\x1B\x03\x81\x85\x16\x16\x03a\x16\x98W5\x92a\x15\xD6V[\x91a *V[` \x015\x92a\x15\xD6V[a\x16\xAD\x91P\x85a\x1FIV[\x98\x90\x99a\x16:V[_\x90_T\x90\x81a\x16\xC1WV[`\x01\x92PV[Q`\x01`\x01`@\x1B\x03\x16\x15a\x16\xD8WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7Fclock is not initialized\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[`\x80\x01Q`\x01`\x01`@\x1B\x03\x16a\x170WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x15`$\x82\x01Rt\x1BX]\x18\xDA\x08\x1A\\\xC8\x1B\x9B\xDD\x08\x19\x9A[\x9A\\\xDA\x19Y`Z\x1B`D\x82\x01R`d\x90\xFD[\x90\x91a\x17\x86`\x01`\x01`@\x1B\x03`\x80\x84\x01Q\x16\x15a\x0C\xF7V[a\x17\x92\x82Q\x93\x83a\x1BVV[\x91`\x01``\x82\x01Q\x16\x15_\x14a\x17\xAFWa\x17\xAB\x90a!\x13V[\x90\x91V[a\x17\xAB\x90a \xEAV[\x92\x91\x92`\x01`\x01`@\x1B\x03\x82\x11a\x0B\xD4W`@Q\x91a\x17\xE1`\x1F\x82\x01`\x1F\x19\x16` \x01\x84a\x0B\xF4V[\x82\x94\x81\x84R\x81\x83\x01\x11a\x01\tW\x82\x81` \x93\x84_\x96\x017\x01\x01RV[`\x01`\x01`@\x1B\x03`\x01\x91\x16\x01\x90`\x01`\x01`@\x1B\x03\x82\x11a\x12\x0CWV[\x90`\x01\x82\x01\x80\x92\x11a\x12\x0CWV[` \x01\x90\x81` \x11a\x12\x0CWV[\x91\x90\x82\x01\x80\x92\x11a\x12\x0CWV[\x90` \x11a\x01\tW\x90` \x90V[\x90\x92\x91\x92\x83` \x11a\x01\tW\x83\x11a\x01\tW` \x01\x91`\x1F\x19\x01\x90V[5\x90` \x81\x10a\x18}WP\x90V[_\x19\x90` \x03`\x03\x1B\x1B\x16\x90V[\x90\x81` \x91\x03\x12a\x01\tWQ\x90V[\x91\x92``\x93\x81\x92\x84R`@` \x85\x01R\x81`@\x85\x01R\x84\x84\x017_\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[`@Q=_\x82>=\x90\xFD[\x15a\x01\tWV[\x92a\x18\xE2a\x0C\x15V[\x92a\x18\xEE6\x83\x83a\x17\xB8V[\x84R_` \x85\x01Ra\x18\xFEa\x0C\x15V[\x93\x85\x85R` \x85\x01R\x83\x94a\x19\x15b\x10\0\0a\x15\xD6V[\x94a\x19(h\x10\0\0\0\0\0\0\0\0a\x15\xD6V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x91\x90\x82a\x19\x88WPPPPPPa\x19h\x90a\x18\x1BV[\x16a\x19zWa\x19v\x81a*\xDEV[Q\x90V[a\x19\x83\x81a!\xF9V[ap\x7F\x81\x16a \x03\x03a'{Wa\x0C$\x92\x93a>\xB9V[`\x7F\x81\x16`\x17\x03a'\x90Wa\x0C$\x92\x93a>sV[ap\x7F\x81\x16apc\x03a'\xA7Wa\x0C$\x92\x93a>.V[c\xFE\0p\x7F\x81\x16`;\x03a'\xBFWa\x0C$\x92\x93a=\xD5V[c\xFC\0p\x7F\x81\x16c@\0P\x13\x03a'\xDAWa\x0C$\x92\x93a=pV[c\xFE\0p\x7F\x81\x16a`3\x03a'\xF3Wa\x0C$\x92\x93a=+V[c\xFE\0p\x7F\x81\x16c@\0P\x1B\x03a(\x0EWa\x0C$\x92\x93a<\xBAV[ap\x7F\x81\x16aPc\x03a(%Wa\x0C$\x92\x93a<{V[c\xFE\0p\x7F\x81\x16c@\0\x003\x03a(@Wa\x0C$\x92\x93a<#V[ap\x7F\x81\x16a@\x03\x03a(WWa\x0C$\x92\x93a;\xDEV[c\xFE\0p\x7F\x81\x16a\x10\x1B\x03a(pWa\x0C$\x92\x93a;wV[c\xFE\0p\x7F\x81\x16aP3\x03a(\x89Wa\x0C$\x92\x93a;\x1BV[c\xFE\0p\x7F\x81\x16a@3\x03a(\xA2Wa\x0C$\x92\x93a:\xCFV[ap\x7F\x81\x16a #\x03a(\xB9Wa\x0C$\x92\x93a9\xE1V[c\xFE\0p\x7F\x81\x16a\x103\x03a(\xD2Wa\x0C$\x92\x93a9wV[ap\x7F\x81\x16a@c\x03a(\xE9Wa\x0C$\x92\x93a8\xB0V[ap\x7F\x81\x16`#\x03a(\xFFWa\x0C$\x92\x93a7wV[c\xFE\0p\x7F\x81\x16c@\0\0;\x03a)\x1AWa\x0C$\x92\x93a7\x05V[ap\x7F\x81\x16a@\x13\x03a)1Wa\x0C$\x92\x93a6\xA6V[c\xFE\0p\x7F\x81\x16c@\0P3\x03a)LWa\x0C$\x92\x93a6+V[ap\x7F\x81\x16aP\x03\x03a)cWa\x0C$\x92\x93a5\xE5V[ap\x7F\x81\x16a\x10#\x03a)zWa\x0C$\x92\x93a4\xE0V[c\xFE\0p\x7F\x81\x16aP;\x03a)\x93Wa\x0C$\x92\x93a4\xA2V[ap\x7F\x81\x16a`\x03\x03a)\xAAWa\x0C$\x92\x93a4;V[c\xFE\0p\x7F\x81\x16a\x10;\x03a)\xC3Wa\x0C$\x92\x93a3\xF5V[ap\x7F\x81\x16`\x03\x03a)\xD9Wa\x0C$\x92\x93a3\xB9V[c\xFE\0p\x7F\x81\x16a03\x03a)\xF2Wa\x0C$\x92\x93a3ZV[c\xFE\0p\x7F\x81\x16c@\0P;\x03a*\rWa\x0C$\x92\x93a2\xD7V[ap\x7F\x81\x16a\x10\x03\x03a*$Wa\x0C$\x92\x93a2KV[ap\x7F\x81\x16a`\x13\x03a*;Wa\x0C$\x92\x93a1\xE6V[ap\x7F\x81\x16a0\x13\x03a*RWa\x0C$\x92\x93a1\x80V[c\xFE\0p\x7F\x81\x16a 3\x03a*kWa\x0C$\x92\x93a1\rV[ap\x7F\x81\x16a \x13\x03a*\x82Wa\x0C$\x92\x93a0\x89V[ap\x7F\x81\x16`\x0F\x03a*\x99WPa\x0C$\x91\x92aI\\V[c\xFF\xFF\xFF\xFF\x16`s\x81\x03a*\xB2WPa\x0C$\x91\x92a/\xD5V[b\x10\0s\x84\x91\x14a*\xC5Wa$ya%\xBFV[a/qV[\x90`\xFF\x80\x91\x16\x91\x16\x03\x90`\xFF\x82\x11a\x12\x0CWV[a*\xE6a\x0FgV[P`\x01`\x01`@\x1B\x03b\x02\0\0a+\x07\x81a+\0\x81a\x1D\xACV[\x16\x15a\x0C\xF7V[\x16\x80\x15a+\xBDW`\x11`\x01`\x01`@\x1B\x03a+'\x92b\x02\0\0\x04\x16aF\xC5V[` \x82\x01a+@a+8\x82QaG\x1FV[\x83\x83QaG\x96V[P\x83Q\x03a+xWa+t\x91\x7FM\xE6\x11[\xDA\xDC#rL\xF2\x0CU\x80\xD7\x18R\\\xE8\x1B)L\x8C\x14\x9D6X\x02\x0C8\r\xF1\t\x91QaH\xCBV[\x90RV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FWrite region root doesn't match\0`D\x82\x01R`d\x90\xFD[a\x15\xC2V[a+\xCD`\x01\x91a.\xF0V[\x81\x1C\x16\x15a\"+W`\x01\x90V[`D` \x91`@Q\x92\x83\x91bF\x1B\xCD`\xE5\x1B\x83R\x81`\x04\x84\x01R\x80Q\x91\x82\x91\x82`$\x86\x01R\x01\x84\x84\x01^_\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x81\x01\x03\x01\x90\xFD[c\xFF\xFF\xFF\xFF\x81\x16\x15a,\xF1W\x80a\x0F\xD1\x91_\x91c\xFF\xFF\0\0\x81\x16\x15a,\xDDW[Pc\xFF\0\0\0\x81\x16\x15a,\xBEW[c\xF0\0\0\0\x81\x16\x15a,\x9FW[c\xC0\0\0\0\x81\x16\x15a,yW[c\x80\0\0\0\x16a#\x81Wa,t\x90a\"\xB3V[a#\x81V[\x90a,\x98a,\x8Bc\x80\0\0\0\x92a\"\xFBV[\x92`\x02\x1Bc\xFF\xFF\xFF\xFC\x16\x90V[\x90Pa,aV[\x90a,\xACa,\xB9\x91a\"\xE3V[\x91`\x04\x1Bc\xFF\xFF\xFF\xF0\x16\x90V[a,TV[\x90a,\xCBa,\xD8\x91a\"\xCBV[\x91`\x08\x1Bc\xFF\xFF\xFF\0\x16\x90V[a,GV[`\x10\x92P\x82\x1Bc\xFF\xFF\0\0\x16\x90P_a,9V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FEmulatorCompat: log2(0) is undef`D\x82\x01Rc\x1A[\x99Y`\xE2\x1B`d\x82\x01R`\x84\x90\xFD[\x90a-Y\x81a\x0F\xD1\x93a-Sa\x0FgV[PaF\x05V[aF\xC5V[\x91` \x83\x01\x91a-ya-q\x84QaG\x1FV[\x82\x85QaG\x96V[P\x84Q\x03a+xWa+t\x92QaH\xCBV[`?a\x0F\xD1\x92\x16c\xFF\xFF\xFF\xFF`\x01`\x01`@\x1B\x03\x80\x93\x16\x91\x16\x1B\x16\x90V[a+ta-\xB5\x82a.\xF0V[_a.ea-\xD1a!Ua-\xCAa\x02\xE8aH\xF4V[\x94\x90aF\x05V[\x91` \x86\x01\x93a.V[\x16`\x07\x0B\x90`\x03\x0B\x13_\x14a0\xFEWa0\xF6\x90\x82aI\xF6V[_\x80\x80a0\xC3V[a1\x08\x90\x82aI\xD6V[a0\xF6V[a\x0C$\x92\x91`\x07\x81\x90\x1C`\x1F\x16a10`\x0F\x83\x90\x1C`\x1F\x16[\x92`\x14\x1C`\x1F\x16\x90V[\x90`\xFF\x81\x16a1AWPPPaI\\V[`\x01`\x01`@\x1B\x03a1e\x81a1Za0\xF6\x96\x88aI>V[\x16`\x07\x0B\x93\x86aI>V[\x16`\x07\x0B_\x92\x12a1wW[\x83aJ\x17V[`\x01\x91Pa1qV[a\x0C$\x92\x91a1\x9B\x81c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[a1\xAB`\x07\x83\x90\x1C`\x1F\x16a0\xB0V[`\xFF\x83\x16a1\xBBWPPPaI\\V[`\x01`\x01`@\x1B\x03a1\xCE\x81\x92\x86aI>V[\x92`\x03\x0B\x16\x91\x16\x10_\x14a0\xFEWa0\xF6\x90\x82aI\xF6V[a\x0C$\x92\x91a2\x01\x81c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[\x90a2\x18`\x07\x82\x90\x1C`\x1F\x16[\x91`\x0F\x1C`\x1F\x16\x90V[\x91`\xFF\x82\x16a2)WPPPaI\\V[`\x01`\x01`@\x1B\x03a2>a0\xF6\x94\x86aI>V[\x91`\x03\x0B\x16\x17\x90\x83aJ\x17V[a\x0C$\x92\x91a\xFF\xFFa2\xA7a2\xA1a2o\x84c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[a2\x8Ea2\x88`\x07\x87\x90\x1C`\x1F\x16[\x96`\x0F\x1C`\x1F\x16\x90V[\x87aI>V[`\x01`\x01`@\x1B\x03\x80\x92`\x03\x0B\x16\x01\x16\x90V[\x84aJ6V[\x16`\x01\x0B\x90`\xFF\x81\x16a2\xBCW[PPaI\\V[`\x01`\x01`@\x1B\x03a2\xD0\x92\x16\x90\x83aJ\x17V[_\x80a2\xB5V[a\x0C$\x92\x91a33`\x07\x82\x90\x1C`\x1F\x16\x91`\x1Fa3\x1F`\x01`\x01`@\x1B\x03a3\x14a3\r`\x0F\x86\x90\x1C\x85\x16[\x95`\x14\x1C`\x1F\x16\x90V[\x94\x88aI>V[\x16`\x03\x0B\x92\x86aI>V[\x16\x90c\xFF\xFF\xFF\xFF\x90`\x03\x0B\x91\x16\x1D`\x03\x0B\x90V[\x90`\xFF\x81\x16a3CWPPaI\\V[`\x01`\x01`@\x1B\x03a2\xD0\x92`\x03\x0B\x16\x90\x83aJ\x17V[a\x0C$\x92\x91`\x07\x81\x90\x1C`\x1F\x16a3w`\x0F\x83\x90\x1C`\x1F\x16a1&V[\x90`\xFF\x81\x16a3\x88WPPPaI\\V[a3\x9Fa3\x98a0\xF6\x94\x86aI>V[\x92\x85aI>V[\x91`\x01`\x01`@\x1B\x03\x80_\x94\x16\x91\x16\x10a1wW\x83aJ\x17V[a\x0C$\x92\x91`\xFFa3\xE2a3\xDCa2o\x84c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[\x84aJ\xAEV[\x16_\x0B\x90`\xFF\x81\x16a2\xBCWPPaI\\V[a\x0C$\x92\x91c\xFF\xFF\xFF\xFF`\x07\x82\x90\x1C`\x1F\x16\x91`\x1Fa4(\x83a4 a3\r`\x0F\x86\x90\x1C\x85\x16a3\x03V[\x16\x92\x86aI>V[\x16\x1B\x16\x90`\xFF\x81\x16a3CWPPaI\\V[a\x0C$\x92\x91a4\x81a4{a4\\\x83c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[a2\x8Ea4u`\x07\x86\x90\x1C`\x1F\x16[\x95`\x0F\x1C`\x1F\x16\x90V[\x86aI>V[\x83a%/V[\x90`\xFF\x81\x16a4\x91WPPaI\\V[c\xFF\xFF\xFF\xFFa2\xD0\x92\x16\x90\x83aJ\x17V[a\x0C$\x92\x91c\xFF\xFF\xFF\xFF`\x07\x82\x90\x1C`\x1F\x16\x91`\x1Fa4\xCD\x83a4 a3\r`\x0F\x86\x90\x1C\x85\x16a3\x03V[\x16\x1C\x16\x90`\xFF\x81\x16a3CWPPaI\\V[\x91\x90\x91a5\x13\x83c\xFF\xFF\xFF\xFF\x81\x16`\x03\x90\x81\x0B`\x19\x1D\x81\x0B`\x05\x1Bc\xFF\xFF\xFF\xE0\x16`\x07\x92\x90\x92\x1C`\x1F\x16\x91\x90\x91\x17\x90\x0B\x90V[\x92`\x01`\x01`@\x1B\x03a5Fa5?a58`\x0F\x85\x90\x1C`\x1F\x16[\x94`\x14\x1C`\x1F\x16\x90V[\x93\x85aI>V[\x92\x84aI>V[\x94`\x03\x0B\x16\x01\x92`\x01\x84\x16a5\xA0W\x83a5\x94a5\x9B\x92a5\x7F`\x07g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF8a\x0C$\x99\x16\x94\x16c\xFF\xFF\xFF\xF8\x90`\x03\x1B\x16\x90V[\x90a\xFF\xFFa5\x8D\x85\x88a/\x11V[\x91\x16aL\nV[\x90\x83aK9V[aI\\V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7Fmisaligned writeUint16 address\0\0`D\x82\x01R`d\x90\xFD[a\x0C$\x92\x91a6\x0Ca6\x06a4\\\x83c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[\x83aJ6V[\x90`\xFF\x81\x16a6\x1CWPPaI\\V[a\xFF\xFFa2\xD0\x92\x16\x90\x83aJ\x17V[a\x0C$\x92\x91`\x07\x81\x90\x1C`\x1F\x16a6H`\x0F\x83\x90\x1C`\x1F\x16a1&V[\x91`\xFF\x82\x16a6YWPPPaI\\V[a0\xF6\x92`?a6\x82`\x01`\x01`@\x1B\x03a6wa6\x96\x95\x89aI>V[\x16`\x07\x0B\x92\x87aI>V[\x16\x90c\xFF\xFF\xFF\xFF\x90`\x07\x0B\x91\x16\x1D`\x07\x0B\x90V[`\x01`\x01`@\x1B\x03\x16\x90\x83aJ\x17V[a\x0C$\x92\x91a6\xC1\x81c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[\x90a6\xD2`\x07\x82\x90\x1C`\x1F\x16a2\x0EV[\x91`\xFF\x82\x16a6\xE3WPPPaI\\V[`\x01`\x01`@\x1B\x03a6\xF8a0\xF6\x94\x86aI>V[\x91`\x03\x0B\x16\x18\x90\x83aJ\x17V[a\x0C$\x92\x91`\x07\x81\x90\x1C`\x1F\x16`\x01`\x01`@\x1B\x03a7I\x81a7>a77`\x0F\x87\x90\x1C`\x1F\x16[\x96`\x14\x1C`\x1F\x16\x90V[\x95\x87aI>V[\x16`\x03\x0B\x93\x85aI>V[\x16`\x03\x0B\x91`\xFF\x82\x16a7^WPPPaI\\V[a0\xF6\x92\x90\x03`\x03\x0B`\x01`\x01`@\x1B\x03\x16\x90\x83aJ\x17V[\x91\x90\x91a7\xAA\x83c\xFF\xFF\xFF\xFF\x81\x16`\x03\x90\x81\x0B`\x19\x1D\x81\x0B`\x05\x1Bc\xFF\xFF\xFF\xE0\x16`\x07\x92\x90\x92\x1C`\x1F\x16\x91\x90\x91\x17\x90\x0B\x90V[\x92a7\xD4a7\xC4a5?a58`\x0F\x85\x90\x1C`\x1F\x16a5.V[\x94`\x03\x0B`\x01`\x01`@\x1B\x03\x16\x90V[\x01`8g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF8\x82\x16\x91`\x03\x1B\x16\x90a7\xF2\x81\x84a/\x11V[`@c\xFF\xFF\xFF\xFFa8\x04`\x08\x86a#\x13V[\x16\x11a8`Wa\x0C$\x95a5\x9B\x93a8V\x90`\xFFa8V[\x16`\x07\x0B\x13a8\xF9WPa\x0C$\x91aI\\V[a+t\x91`\x01`\x01`@\x1B\x03\x91`\x03\x0B\x82\x16[\x01\x16_a.ea9$a!Ua-\xCAb@\0\x10aH\xF4V[\x91` \x86\x01\x93a.V[\x92\x87aI>V[\x16c\xFF\xFF\xFF\xFF`\x01`\x01`@\x1B\x03\x80\x93\x16\x91\x16\x1B\x16\x90V[\x90\x83aJ\x17V[\x91\x90\x91a:\x14\x83c\xFF\xFF\xFF\xFF\x81\x16`\x03\x90\x81\x0B`\x19\x1D\x81\x0B`\x05\x1Bc\xFF\xFF\xFF\xE0\x16`\x07\x92\x90\x92\x1C`\x1F\x16\x91\x90\x91\x17\x90\x0B\x90V[\x92`\x01`\x01`@\x1B\x03c\xFF\xFF\xFF\xFFa:?a58a:8`\x0F\x86\x90\x1C`\x1F\x16a3\x03V[\x94\x86aI>V[\x16\x94`\x03\x0B\x16\x01\x92`\x03\x84\x16a:\x8AW\x83a5\x94a5\x9B\x92a:y`\x07g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF8a\x0C$\x99\x16\x94\x16c\xFF\xFF\xFF\xF8\x90`\x03\x1B\x16\x90V[\x90a:\x84\x84\x87a/\x11V[\x90aLmV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7Fmisaligned writeUint32 address\0\0`D\x82\x01R`d\x90\xFD[a\x0C$\x92\x91`\x07\x81\x90\x1C`\x1F\x16a:\xEC`\x0F\x83\x90\x1C`\x1F\x16a1&V[`\xFF\x82\x16a:\xFCWPPPaI\\V[a;\x13a;\x0Ca0\xF6\x94\x86aI>V[\x91\x85aI>V[\x18\x90\x83aJ\x17V[a\x0C$\x92\x91`\x07\x81\x90\x1C`\x1F\x16a;8`\x0F\x83\x90\x1C`\x1F\x16a1&V[\x91`\xFF\x82\x16a;IWPPPaI\\V[a0\xF6\x92`?a;_a9\xBBa9\xDA\x94\x88aI>V[\x16c\xFF\xFF\xFF\xFF`\x01`\x01`@\x1B\x03\x80\x93\x16\x91\x16\x1C\x16\x90V[a\x0C$\x92\x91`\x14\x81\x90\x1C`\x1F\x16`\x03\x0B\x90c\xFF\xFF\xFF\xFFa;\xACa;\xA6`\x07\x84\x90\x1C`\x1F\x16[\x93`\x0F\x1C`\x1F\x16\x90V[\x85aI>V[\x16`\xFF\x82\x16a;\xBDWPPPaI\\V[a0\xF6\x92`\x1F\x16\x1Bc\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x01`\x01`@\x1B\x03\x16\x90\x83aJ\x17V[a\x0C$\x92\x91a<\x05a;\xFFa4\\\x83c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[\x83aJ\xAEV[\x90`\xFF\x81\x16a<\x15WPPaI\\V[`\xFFa2\xD0\x92\x16\x90\x83aJ\x17V[a\x0C$\x92\x91`\x07\x81\x90\x1C`\x1F\x16a<@`\x0F\x83\x90\x1C`\x1F\x16a1&V[\x91`\xFF\x82\x16aV[\x91\x86aI>V[\x90\x03\x16\x90\x83aJ\x17V[\x91\x90a<\x86\x81aJ\xE8V[\x90`\x01`\x01`@\x1B\x03a<\xA6\x81a8\xDBa3\r`\x0F\x86\x90\x1C`\x1F\x16a3\x03V[\x16`\x07\x0B\x13\x15a8\xF9WPa\x0C$\x91aI\\V[a\x0C$\x92\x91`\x14\x81\x90\x1C`\x1F\x16`\x03\x0B\x90`\x01`\x01`@\x1B\x03a<\xE6a;\xA6`\x07\x84\x90\x1C`\x1F\x16a;\x9CV[\x16`\x03\x0B`\xFF\x82\x16a<\xFAWPPPaI\\V[a= `\x01`\x01`@\x1B\x03\x91`\x1Fa0\xF6\x95\x16\x90c\xFF\xFF\xFF\xFF\x90`\x03\x0B\x91\x16\x1D`\x03\x0B\x90V[`\x03\x0B\x16\x90\x83aJ\x17V[a\x0C$\x92\x91`\x07\x81\x90\x1C`\x1F\x16a=H`\x0F\x83\x90\x1C`\x1F\x16a1&V[`\xFF\x82\x16a=XWPPPaI\\V[a=ha;\x0Ca0\xF6\x94\x86aI>V[\x17\x90\x83aJ\x17V[a\x0C$\x92\x91`\x14\x81\x90\x1C`?\x16`\x03\x0B\x90a=\x91`\x07\x82\x90\x1C`\x1F\x16a2\x0EV[`\xFF\x82\x16a=\xA1WPPPaI\\V[a0\xF6\x92`?`\x01`\x01`@\x1B\x03a=\xBCa6\x96\x94\x88aI>V[\x16`\x07\x0B\x91\x16\x90c\xFF\xFF\xFF\xFF\x90`\x07\x0B\x91\x16\x1D`\x07\x0B\x90V[a\x0C$\x92\x91`\x07\x81\x90\x1C`\x1F\x16`\x01`\x01`@\x1B\x03a>\x01\x81a7>a77`\x0F\x87\x90\x1C`\x1F\x16a7-V[\x16`\x03\x0B\x91`\xFF\x82\x16a>\x16WPPPaI\\V[a0\xF6\x92\x01`\x03\x0B`\x01`\x01`@\x1B\x03\x16\x90\x83aJ\x17V[\x91\x90a>9\x81aJ\xE8V[\x90`\x01`\x01`@\x1B\x03\x80a>`a>Ya3\r`\x0F\x86\x90\x1C`\x1F\x16a3\x03V[\x93\x87aI>V[\x16\x91\x16\x10\x15a8\xF9WPa\x0C$\x91aI\\V[a\x0C$\x92\x91a>\x8Fc\xFF\xFF\xF0\0\x82\x16`\x03\x0B\x91`\x07\x1C`\x1F\x16\x90V[`\xFF\x81\x16a>\x9EWPPaI\\V[`\x01`\x01`@\x1B\x03\x80a2\xD0\x93`\x03\x0B\x16\x85\x01\x16\x90\x83aJ\x17V[a\x0C$\x92\x91c\xFF\xFF\xFF\xFFa>\xE5a>\xDFa2o\x84c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[\x84a%/V[\x16`\x03\x0B\x90`\xFF\x81\x16a2\xBCWPPaI\\V[\x91\x90a?\x04\x81aJ\xE8V[\x90`\x01`\x01`@\x1B\x03\x80a?$a>Ya3\r`\x0F\x86\x90\x1C`\x1F\x16a3\x03V[\x16\x91\x16\x03a8\xF9WPa\x0C$\x91aI\\V[a\x0C$\x92\x91c\xFF\xFF\xFF\xFF`\x14\x82\x90\x1C`\x1F\x16`\x03\x0B`\x1F\x82a?`a2\x88`\x07\x87\x90\x1C\x84\x16a2~V[\x16\x91\x16\x1C\x16`\x03\x0B\x90`\xFF\x81\x16a2\xBCWPPaI\\V[a\x0C$\x92\x91`\x14\x81\x90\x1C`?\x16`\x03\x0B\x90a?\x99`\x07\x82\x90\x1C`\x1F\x16a2\x0EV[`\xFF\x82\x16a?\xA9WPPPaI\\V[a0\xF6\x92`?a%aa9\xDA\x93\x87aI>V[a\x0C$\x92\x91a?\xD7\x81c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[\x90`\x01`\x01`@\x1B\x03a?\xF3a;\xA6`\x07\x84\x90\x1C`\x1F\x16a;\x9CV[\x16`\x03\x0B`\xFF\x82\x16a>\x16WPPPaI\\V[\x91a+t\x91a9\x0Cg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFE\x92a@/\x83c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[\x90a@Ia@C`\x07\x86\x90\x1C`\x1F\x16a4kV[\x88aI>V[\x93`\xFF\x81\x16a@dW[PP`\x03\x0B`\x01`\x01`@\x1B\x03\x16\x90V[`\x01`\x01`@\x1B\x03`\x04a@{\x93\x01\x16\x90\x88aJ\x17V[_\x80a@SV[a\x0C$\x92\x91`\x1F`\x07\x82\x90\x1C\x16\x90c\xFF\xFF\xF0\0\x16`\x03\x0Ba33V[a5\x9Ba\x0C$\x93\x92`\x01`\x01`@\x1B\x03a@\xDE\x82c\xFF\xFF\xFF\xFF\x81\x16`\x03\x90\x81\x0B`\x19\x1D\x81\x0B`\x05\x1Bc\xFF\xFF\xFF\xE0\x16`\x07\x92\x90\x92\x1C`\x1F\x16\x91\x90\x91\x17\x90\x0B\x90V[\x91\x81a@\xFDa9\xBBa@\xF6`\x0F\x85\x90\x1C`\x1F\x16a5.V[\x93\x88aI>V[\x93`\x03\x0B\x16\x01\x16\x83aK9V[a\x0C$\x92\x91`\x07\x81\x90\x1C`\x1F\x16aA'`\x0F\x83\x90\x1C`\x1F\x16a1&V[`\xFF\x82\x16aA7WPPPaI\\V[aAGa;\x0Ca0\xF6\x94\x86aI>V[\x16\x90\x83aJ\x17V[a\x0C$\x92\x91`\x14\x81\x90\x1C`?\x16`\x03\x0B\x90aAp`\x07\x82\x90\x1C`\x1F\x16a2\x0EV[`\xFF\x82\x16aA\x80WPPPaI\\V[a0\xF6\x92`?aA\x93a9\xDA\x93\x87aI>V[\x91\x16c\xFF\xFF\xFF\xFF`\x01`\x01`@\x1B\x03\x80\x93\x16\x91\x16\x1B\x16\x90V[\x90a\x0C$\x92aBSc\xFF\xFF\xFF\xFFaB`\x93aA\xECc\xFF\xF0\0\0aA\xDA\x84\x84\x16`\x03\x0B`\x03\x0B`\x1F\x1D`\x03\x0B\x90V[\x84\x16`\x14\x1B\x16c\xFF\xFF\xFF\xFF\x16`\x03\x0B\x90V[a\x07\xFE`\x14\x83\x90\x1C\x16aB\x1CaB\x10`\x0B\x85\x90\x1Bc\xFF\xFF\xF8\0\x16[`\x1F\x1C`\x01\x16\x90V[`\x0B\x1Bc\xFF\xFF\xF8\0\x16\x90V[\x91aB0b\x0F\xF0\0\x85\x16\x94`\x07\x1C`\x1F\x16\x90V[`\xFF\x81\x16aBfW[P\x84\x16\x17\x17\x17\x16`\x03\x0B`\x01`\x01`@\x1B\x03\x90`\x03\x0B\x16\x90V[\x01`\x01`\x01`@\x1B\x03\x16\x90V[\x90aEQV[aB~\x90`\x04\x89\x01`\x01`\x01`@\x1B\x03\x16\x90\x8BaJ\x17V[_aB9V[a\x0C$\x92\x91`\x07\x81\x90\x1C`\x1F\x16aB\xA1`\x0F\x83\x90\x1C`\x1F\x16a1&V[\x91`\xFF\x82\x16aB\xB2WPPPaI\\V[a0\xF6\x92aB\xCBaV[\x01\x16\x90\x83aJ\x17V[a\x0C$\x92\x91aB\xEF\x81c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[\x90aC\0`\x07\x82\x90\x1C`\x1F\x16a2\x0EV[`\xFF\x82\x16aC\x10WPPPaI\\V[a0\xF6\x92aC&`\x01`\x01`@\x1B\x03\x92\x86aI>V[\x90`\x03\x0B\x16\x16\x90\x83aJ\x17V[\x91\x90aC>\x81aJ\xE8V[\x90`\x01`\x01`@\x1B\x03\x80aC^a>Ya3\r`\x0F\x86\x90\x1C`\x1F\x16a3\x03V[\x16\x91\x16\x14a8\xF9WPa\x0C$\x91aI\\V[\x91\x90aC{\x81aJ\xE8V[\x90`\x01`\x01`@\x1B\x03\x80aC\x9Ba>Ya3\r`\x0F\x86\x90\x1C`\x1F\x16a3\x03V[\x16\x91\x16\x10a8\xF9WPa\x0C$\x91aI\\V[a\x0C$\x92\x91aC\xD4aC\xCEa4\\\x83c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[\x83a/\x11V[`\xFF\x82\x16aC\xE3WPPaI\\V[a2\xD0\x91\x83aJ\x17V[a\x0C$\x92\x91aD\x08\x81c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[\x90aD\x19`\x07\x82\x90\x1C`\x1F\x16a2\x0EV[\x91`\xFF\x82\x16aD*WPPPaI\\V[`\x01`\x01`@\x1B\x03aD?a0\xF6\x94\x86aI>V[\x16`\x07\x0B\x90`\x03\x0B\x01`\x01`\x01`@\x1B\x03\x16\x90\x83aJ\x17V[\x15aD_WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FWrite word root doesn't match\0\0\0`D\x82\x01R`d\x90\xFD[\x90a+t\x90b@\0\0a.ea9$a!U_aD\xC4\x85b@\0\x08a\x1D\xCAV[\x94aF\x05V[\x90a+t\x90a\x03\0a.ea9$a!U_aD\xC4\x85a\x03\x18a\x1D\xCAV[a+tb@\0\0aE\x06a!U_aE\0\x84\x80a\x1D\xCAV[\x93aF\x05V[a.e` \x85\x01\x92aE\x18\x84QaG\x1FV[aEDaE;\x86Q\x86`@Q` \x81\x01\x90a.\x14\x81a\x03\x02\x89\x85` \x91\x81R\x01\x90V[P\x88Q\x14aDXV[a.<`\x01`\xC0\x1BaK\x9CV[\x90a+t\x90b@\0\0a.ea9$a!U_aD\xC4\x85b@\0\x10a\x1D\xCAV[\x91_a.eaE\x88a!Ua-\xCAa+t\x96aH\xF4V[\x91` \x86\x01\x93a.` \x87\x01QaH8aG\xD2\x8Bg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x90`\x05\x1B\x16\x90V[\x90a\x187V[aHFa\x0C\x15V[\x91\x82R` \x82\x01R`\x01`\x01`\x01`@\x1B\x03\x86\x81\x16\x90\x8A\x16\x1C\x16aH\x99W\x80Q` \x91\x82\x01Q\x01\x81\x01Q`@\x80Q\x92\x83\x01\x93\x84R\x82\x01RaH\x8A\x81``\x81\x01a\x03\x02V[Q\x90 \x95[\x01\x16\x92\x91\x90aG\xEFV[\x80Q` \x91\x82\x01Q\x01\x81\x01Q`@\x80Q\x92\x83\x01\x91\x82R\x82\x01\x92\x90\x92RaH\xC2\x81``\x81\x01a\x03\x02V[Q\x90 \x95aH\x8FV[\x91aH\xD9\x90` \x92\x84aG\x96V[\x91\x90\x92\x01a\x1F\xE0\x81Q\x92`\x05\x1B\x16\x82\x01\x80\x92\x11a\x12\x0CWR\x90V[\x90a\x0F\xD1`\x01`\x01`@\x1B\x03\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x16\x93\x84\x91\x16a\x1D\xCAV[aI\x1E\x90aK\x9CV[`\xC0\x1C\x90V[b@\0\xA0a\x0F\xD1\x91a/\x02V[b@\0\x98a\x0F\xD1\x91a/\x02V[`\x01`\x01`@\x1B\x03`\xF8a\x0F\xD1\x93`\x03\x1B\x16b@\0\x18\x01\x16\x90a/\x02V[\x90a+t\x90_a.eaIwa!Ua-\xCAb@\0\x10aH\xF4V[\x91` \x86\x01\x93a.::RustType, + pub maxAllowance: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + Time::Duration, + Time::Duration, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u64, + u64, + u64, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: TournamentParameters) -> Self { + ( + value.levels, + value.log2step, + value.height, + value.matchEffort, + value.maxAllowance, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for TournamentParameters { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + levels: tuple.0, + log2step: tuple.1, + height: tuple.2, + matchEffort: tuple.3, + maxAllowance: tuple.4, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for TournamentParameters { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for TournamentParameters { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.levels), + as alloy_sol_types::SolType>::tokenize(&self.log2step), + as alloy_sol_types::SolType>::tokenize(&self.height), + ::tokenize( + &self.matchEffort, + ), + ::tokenize( + &self.maxAllowance, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for TournamentParameters { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for TournamentParameters { + const NAME: &'static str = "TournamentParameters"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "TournamentParameters(uint64 levels,uint64 log2step,uint64 height,uint64 matchEffort,uint64 maxAllowance)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word(&self.levels) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.log2step) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.height) + .0, + ::eip712_data_word( + &self.matchEffort, + ) + .0, + ::eip712_data_word( + &self.maxAllowance, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for TournamentParameters { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.levels, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.log2step, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.height, + ) + + ::topic_preimage_length( + &rust.matchEffort, + ) + + ::topic_preimage_length( + &rust.maxAllowance, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.levels, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.log2step, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.height, + out, + ); + ::encode_topic_preimage( + &rust.matchEffort, + out, + ); + ::encode_topic_preimage( + &rust.maxAllowance, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Constructor`. +```solidity +constructor(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct constructorCall {} + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Function with signature `instantiate(bytes32,bytes32,bytes32,bytes32,bytes32,uint64,uint256,uint64,(uint64,uint64,uint64,uint64,uint64),address)` and selector `0xd343b60c`. +```solidity +function instantiate(Machine.Hash _initialHash, Tree.Node _contestedCommitmentOne, Machine.Hash _contestedFinalStateOne, Tree.Node _contestedCommitmentTwo, Machine.Hash _contestedFinalStateTwo, Time.Duration _allowance, uint256 _startCycle, uint64 _level, TournamentParameters memory _tournamentParameters, address _provider) external returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct instantiateCall { + pub _initialHash: ::RustType, + pub _contestedCommitmentOne: ::RustType, + pub _contestedFinalStateOne: ::RustType, + pub _contestedCommitmentTwo: ::RustType, + pub _contestedFinalStateTwo: ::RustType, + pub _allowance: ::RustType, + pub _startCycle: alloy::sol_types::private::primitives::aliases::U256, + pub _level: u64, + pub _tournamentParameters: ::RustType, + pub _provider: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`instantiate(bytes32,bytes32,bytes32,bytes32,bytes32,uint64,uint256,uint64,(uint64,uint64,uint64,uint64,uint64),address)`](instantiateCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct instantiateReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + Machine::Hash, + Tree::Node, + Machine::Hash, + Tree::Node, + Machine::Hash, + Time::Duration, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<64>, + TournamentParameters, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ::RustType, + ::RustType, + ::RustType, + ::RustType, + alloy::sol_types::private::primitives::aliases::U256, + u64, + ::RustType, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: instantiateCall) -> Self { + ( + value._initialHash, + value._contestedCommitmentOne, + value._contestedFinalStateOne, + value._contestedCommitmentTwo, + value._contestedFinalStateTwo, + value._allowance, + value._startCycle, + value._level, + value._tournamentParameters, + value._provider, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for instantiateCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _initialHash: tuple.0, + _contestedCommitmentOne: tuple.1, + _contestedFinalStateOne: tuple.2, + _contestedCommitmentTwo: tuple.3, + _contestedFinalStateTwo: tuple.4, + _allowance: tuple.5, + _startCycle: tuple.6, + _level: tuple.7, + _tournamentParameters: tuple.8, + _provider: tuple.9, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: instantiateReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for instantiateReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for instantiateCall { + type Parameters<'a> = ( + Machine::Hash, + Tree::Node, + Machine::Hash, + Tree::Node, + Machine::Hash, + Time::Duration, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<64>, + TournamentParameters, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = instantiateReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "instantiate(bytes32,bytes32,bytes32,bytes32,bytes32,uint64,uint256,uint64,(uint64,uint64,uint64,uint64,uint64),address)"; + const SELECTOR: [u8; 4] = [211u8, 67u8, 182u8, 12u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._initialHash, + ), + ::tokenize( + &self._contestedCommitmentOne, + ), + ::tokenize( + &self._contestedFinalStateOne, + ), + ::tokenize( + &self._contestedCommitmentTwo, + ), + ::tokenize( + &self._contestedFinalStateTwo, + ), + ::tokenize( + &self._allowance, + ), + as alloy_sol_types::SolType>::tokenize(&self._startCycle), + as alloy_sol_types::SolType>::tokenize(&self._level), + ::tokenize( + &self._tournamentParameters, + ), + ::tokenize( + &self._provider, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`BottomTournamentFactory`](self) function calls. + pub enum BottomTournamentFactoryCalls { + instantiate(instantiateCall), + } + #[automatically_derived] + impl BottomTournamentFactoryCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[211u8, 67u8, 182u8, 12u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for BottomTournamentFactoryCalls { + const NAME: &'static str = "BottomTournamentFactoryCalls"; + const MIN_DATA_LENGTH: usize = 448usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::instantiate(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn instantiate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(BottomTournamentFactoryCalls::instantiate) + } + instantiate + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + DECODE_SHIMS[idx](data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::instantiate(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::instantiate(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`BottomTournamentFactory`](self) contract instance. + +See the [wrapper's documentation](`BottomTournamentFactoryInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> BottomTournamentFactoryInstance { + BottomTournamentFactoryInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + BottomTournamentFactoryInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + BottomTournamentFactoryInstance::::deploy_builder(provider) + } + /**A [`BottomTournamentFactory`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`BottomTournamentFactory`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct BottomTournamentFactoryInstance< + T, + P, + N = alloy_contract::private::Ethereum, + > { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for BottomTournamentFactoryInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("BottomTournamentFactoryInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BottomTournamentFactoryInstance { + /**Creates a new wrapper around an on-chain [`BottomTournamentFactory`](self) contract instance. + +See the [wrapper's documentation](`BottomTournamentFactoryInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl BottomTournamentFactoryInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> BottomTournamentFactoryInstance { + BottomTournamentFactoryInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BottomTournamentFactoryInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`instantiate`] function. + pub fn instantiate( + &self, + _initialHash: ::RustType, + _contestedCommitmentOne: ::RustType, + _contestedFinalStateOne: ::RustType, + _contestedCommitmentTwo: ::RustType, + _contestedFinalStateTwo: ::RustType, + _allowance: ::RustType, + _startCycle: alloy::sol_types::private::primitives::aliases::U256, + _level: u64, + _tournamentParameters: ::RustType, + _provider: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &instantiateCall { + _initialHash, + _contestedCommitmentOne, + _contestedFinalStateOne, + _contestedCommitmentTwo, + _contestedFinalStateTwo, + _allowance, + _startCycle, + _level, + _tournamentParameters, + _provider, + }, + ) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BottomTournamentFactoryInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/prt/contracts/bindings-rs/src/contract/middletournamentfactory.rs b/prt/contracts/bindings-rs/src/contract/middletournamentfactory.rs new file mode 100644 index 0000000..33774e0 --- /dev/null +++ b/prt/contracts/bindings-rs/src/contract/middletournamentfactory.rs @@ -0,0 +1,1855 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library Machine { + type Hash is bytes32; +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Machine { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Hash(alloy::sol_types::private::FixedBytes<32>); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue + for alloy::sol_types::private::FixedBytes<32> { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::FixedBytes<32>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl Hash { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: alloy::sol_types::private::FixedBytes<32>) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> alloy::sol_types::private::FixedBytes<32> { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Hash { + type RustType = alloy::sol_types::private::FixedBytes<32>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Hash { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Machine`](self) contract instance. + +See the [wrapper's documentation](`MachineInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MachineInstance { + MachineInstance::::new(address, provider) + } + /**A [`Machine`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Machine`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MachineInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MachineInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MachineInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MachineInstance { + /**Creates a new wrapper around an on-chain [`Machine`](self) contract instance. + +See the [wrapper's documentation](`MachineInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MachineInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MachineInstance { + MachineInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MachineInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MachineInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library Time { + type Duration is uint64; +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Time { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Duration(u64); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for u64 { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::Uint<64>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl Duration { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: u64) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> u64 { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Duration { + type RustType = u64; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Duration { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Time`](self) contract instance. + +See the [wrapper's documentation](`TimeInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(address: alloy_sol_types::private::Address, provider: P) -> TimeInstance { + TimeInstance::::new(address, provider) + } + /**A [`Time`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Time`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct TimeInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for TimeInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("TimeInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TimeInstance { + /**Creates a new wrapper around an on-chain [`Time`](self) contract instance. + +See the [wrapper's documentation](`TimeInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl TimeInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> TimeInstance { + TimeInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TimeInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TimeInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library Tree { + type Node is bytes32; +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Tree { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Node(alloy::sol_types::private::FixedBytes<32>); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue + for alloy::sol_types::private::FixedBytes<32> { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::FixedBytes<32>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl Node { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: alloy::sol_types::private::FixedBytes<32>) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> alloy::sol_types::private::FixedBytes<32> { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Node { + type RustType = alloy::sol_types::private::FixedBytes<32>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Node { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Tree`](self) contract instance. + +See the [wrapper's documentation](`TreeInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(address: alloy_sol_types::private::Address, provider: P) -> TreeInstance { + TreeInstance::::new(address, provider) + } + /**A [`Tree`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Tree`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct TreeInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for TreeInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("TreeInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TreeInstance { + /**Creates a new wrapper around an on-chain [`Tree`](self) contract instance. + +See the [wrapper's documentation](`TreeInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl TreeInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> TreeInstance { + TreeInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TreeInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TreeInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library Machine { + type Hash is bytes32; +} + +library Time { + type Duration is uint64; +} + +library Tree { + type Node is bytes32; +} + +interface MiddleTournamentFactory { + struct TournamentParameters { + uint64 levels; + uint64 log2step; + uint64 height; + Time.Duration matchEffort; + Time.Duration maxAllowance; + } + + constructor(); + + function instantiate(Machine.Hash _initialHash, Tree.Node _contestedCommitmentOne, Machine.Hash _contestedFinalStateOne, Tree.Node _contestedCommitmentTwo, Machine.Hash _contestedFinalStateTwo, Time.Duration _allowance, uint256 _startCycle, uint64 _level, TournamentParameters memory _tournamentParameters, address _provider, address _tournamentFactory) external returns (address); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "instantiate", + "inputs": [ + { + "name": "_initialHash", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "_contestedCommitmentOne", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_contestedFinalStateOne", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "_contestedCommitmentTwo", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_contestedFinalStateTwo", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "_allowance", + "type": "uint64", + "internalType": "Time.Duration" + }, + { + "name": "_startCycle", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_level", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "_tournamentParameters", + "type": "tuple", + "internalType": "struct TournamentParameters", + "components": [ + { + "name": "levels", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "log2step", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "height", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "matchEffort", + "type": "uint64", + "internalType": "Time.Duration" + }, + { + "name": "maxAllowance", + "type": "uint64", + "internalType": "Time.Duration" + } + ] + }, + { + "name": "_provider", + "type": "address", + "internalType": "contract IDataProvider" + }, + { + "name": "_tournamentFactory", + "type": "address", + "internalType": "contract IMultiLevelTournamentFactory" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract MiddleTournament" + } + ], + "stateMutability": "nonpayable" + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod MiddleTournamentFactory { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60808060405234601557612528908161001a8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c63fab1737714610025575f80fd5b3461022c576101e036600319011261022c5760a43567ffffffffffffffff811680910361022c5760e4359167ffffffffffffffff831680930361022c5760a03661010319011261022c5760a0810181811067ffffffffffffffff821117610218576040526101043567ffffffffffffffff8116810361022c578152610124359067ffffffffffffffff8216820361022c5760208101918252610144359067ffffffffffffffff8216820361022c5760408101918252610164359467ffffffffffffffff8616860361022c5760608201958652610184359067ffffffffffffffff8216820361022c57608083019182526101a4356001600160a01b038116929083900361022c576101c4356001600160a01b038116949085900361022c57604051986122c293848b01978b891067ffffffffffffffff8a11176102185767ffffffffffffffff8c9a818098968197956101e09f8f8f9091859960e09361023190396004358252602435602083015260443560408301526064356060830152608435608083015260a082015260c43560c0820152015251166101008c015251166101208a01525116610140880152511661016086015251166101808401526101a08301526101c08201520301905ff0801561020d576040516001600160a01b039091168152602090f35b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b5f80fdfe610280604052346102b0576040516122c238819003601f8101601f191683016001600160401b038111848210176102b457839282916040528339810103906101e082126102b0578051602082015160408301519160608401519360808101519561006b60a083016102c8565b9060c08301519160a061008060e086016102c8565b9260ff1901126102b05760405160a081016001600160401b038111828210176102b4576040526100b361010086016102c8565b81526100c261012086016102c8565b602082019081526100d661014087016102c8565b91604081019283526100eb61016088016102c8565b946060820195865261010061018089016102c8565b608083019081526101a0890151989097906001600160a01b038a168a036102b0576101c00151996001600160a01b038b168b036102b05760805260a05260c052516001600160401b0390811660e052905181166101005290518116610120524281166101405283518116919081168210156102a957505b61016052516001600160401b039081166101a052905116610180526101c0526101e05261020052610220526102405261026052604051611fe590816102dd823960805181610c59015260a05181610a38015260c0518181816108520152610d2c015260e0518181816108260152610d6801526101005181818161088101526118d20152610120518181816108b00152818161124a01526118a301526101405181818161132701526117ac015261016051818181611353015261178b0152610180518161199301526101a051816119b501526101c051818181610dcd0152610ef301526101e051818181610dfb0152610f210152610200518161168d01526102205181818161128c0152611660015261024051816116e00152610260518181816113d70152818161140501526116b60152f35b9050610177565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160401b03821682036102b05756fe60806040526004361015610011575f80fd5b5f3560e01c80631d5bf796146111eb5780633f36e2fe14610b705780635145236f14610b415780636a1a140d14610ad55780637795820c14610a655780638acc802d14610a155780639a9b4b2b146108d7578063a1af906b14610807578063b401865c14610523578063fcc6077d146104b3578063fcc853911461029d5763ff78e0ee1461009d575f80fd5b346102995736600319016080811261029957604013610299576044356064356100c4611786565b8061028f575b610280576100df6100da3661158d565b611a3c565b5f5260046020526100fa6100f560405f206115b5565b611b8d565b60043591825f52600260205260405f20602435805f52600260205260405f209061012b61012684611565565b611bd1565b61013761012683611565565b61014861014384611565565b611b4f565b8061026d575b156101db575061015e84846117e2565b85036101b0579361019561018f61017f61017a61019a98611565565b611c6e565b6001600160401b03855416611e20565b83611e52565b611808565b6101ae6101a96100da3661158d565b611cf1565b005b608485858560405192633ad7a6d360e11b845260016004850152602484015260448301526064820152fd5b9450906101ea61014382611565565b158061025b575b1561024c5761020084846117e2565b8503610221579361019561018f61017f61017a61021c98611565565b61019a565b608485858560405192633ad7a6d360e11b845260026004850152602484015260448301526064820152fd5b634d46ab2360e11b5f5260045ffd5b5061026861014383611565565b6101f1565b5061027a61014383611565565b1561014e565b6395ddf15360e01b5f5260045ffd5b50600154156100ca565b5f80fd5b3461029957366003190160c08112610299576040136102995760643560a4356084356044356102ca611786565b806104a9575b610280576102e06100da3661158d565b5f52600460205260405f20936102f86100f5866115b5565b60016001600160401b03608061030d886115b5565b01511611156104645761032a8183610324886115b5565b51611f1b565b6020610335866115b5565b015182146103fd575081610355846001600160401b039461037e94611f1b565b6004850193838554169161036b60018411611610565b6001870180548855556002860155611f71565b166001600160401b03198254161790555b7f29ff393c59c37f91e930fad4d88447efc58cf5d7c048499e1f20edb36994137860406103be6100da3661158d565b926001815491015482519182526020820152a26004355f5260026020526103e760405f20611d27565b6024355f5260026020526101ae60405f20611d27565b8391506104428361041a6001966001600160401b03968795611f1b565b6004870193838554169161042f888411611610565b600289019081548a55888a015555611f71565b16821982541617815554161b61045d60038301918254611aa0565b905561038f565b60405162461bcd60e51b815260206004820152601760248201527f6d617463682063616e277420626520616476616e6365640000000000000000006044820152606490fd5b50600154156102d0565b346102995760203660031901126102995760e06104d1600435611767565b6001600160401b0360c060405192805184526020810151602085015260408101516040850152606081015160608501528260808201511660808501528260a08201511660a085015201511660c0820152f35b34610299576060366003190112610299576004356001600160a01b0381169081900361029957602435604435610557611786565b806107fd575b61028057825f52600560205260405f20549081156107c257815f5260046020526001600160401b03608061059f60405f2061059a6100f5826115b5565b6115b5565b01511661078557604051635145236f60e01b8152606081600481885afa9081156106c4575f5f915f93610739575b501561072a5780156106e5576105e383866117e2565b908082036106cf575060405191631de5608360e21b83526004830152606082602481895afa9182156106c4575f92610655575b50936101a9929185610645965f52600260205261019561018f60405f209361064061012686611565565b611c27565b5f90815260056020526040812055005b8093925060609591953d6060116106bd575b6106718183611544565b810103606081126102995760401361029957610645946101a9936106ae60206040519261069d846114fa565b6106a68161171d565b84520161171d565b60208201529293509094610616565b503d610667565b6040513d5f823e3d90fd5b9063d74cbd1f60e01b5f5260045260245260445ffd5b60405162461bcd60e51b815260206004820152601760248201527f74726565206e6f646520646f65736e27742065786973740000000000000000006044820152606490fd5b636f05f46160e11b5f5260045ffd5b925050506060813d60601161077d575b8161075660609383611544565b810103126102995780518015158103610299576040602083015192015190919091876105cd565b3d9150610749565b60405162461bcd60e51b81526020600482015260156024820152741b585d18da081a5cc81b9bdd08199a5b9a5cda1959605a1b6044820152606490fd5b60405162461bcd60e51b81526020600482015260136024820152721b585d18da08191bd95cdb89dd08195e1a5cdd606a1b6044820152606490fd5b506001541561055d565b34610299575f3660031901126102995760806040516001600160401b037f00000000000000000000000000000000000000000000000000000000000000001681526001600160401b037f00000000000000000000000000000000000000000000000000000000000000001660208201526001600160401b037f00000000000000000000000000000000000000000000000000000000000000001660408201526001600160401b037f0000000000000000000000000000000000000000000000000000000000000000166060820152f35b34610299576040366003190112610299576108f0611786565b80610a0b575b610280576109066100da3661158d565b5f52600460205261091c6100f560405f206115b5565b6004355f90815260026020526040808220602435835291209061094161012682611565565b61094d61012683611565565b61095961014382611565565b1591826109dd575b821561098d575b50501561097e576101ae6101a96100da3661158d565b633d0b930760e21b5f5260045ffd5b90915061099c61014382611565565b1591826109ad575b50508180610968565b6001600160401b039192506109d161017a6109cb6106408594611565565b94611565565b169116111581806109a4565b91506109eb61064083611565565b6001600160401b0380610a0061017a85611565565b169116111591610961565b50600154156108f6565b34610299576020366003190112610299576020610a5d610a36600435611767565b7f000000000000000000000000000000000000000000000000000000000000000090611aad565b604051908152f35b346102995760203660031901126102995760606004355f6020604051610a8a816114fa565b8281520152805f52600260205260405f20905f526003602052610ab160405f205491611565565b906001600160401b0360206040519382815116855201511660208301526040820152f35b34610299576040366003190112610299576004355f5260026020526020610afe60405f20611565565b6024355f5260028252610b1c610b1660405f20611565565b91611b4f565b15908115610b30575b506040519015158152f35b610b3a9150611b4f565b1582610b25565b34610299575f366003190112610299576060610b5b61162b565b90604051921515835260208301526040820152f35b3461029957366003190160c08112610299576040136102995760643560443560843560a4356001600160401b03811161029957610bb19036906004016114ca565b9190610bbb611786565b806111e1575b61028057610bd16100da3661158d565b5f52600460205260405f209160016001600160401b036080610bf2866115b5565b0151160361119157610c088686610324866115b5565b60043592835f52600260205260405f2096610c5660243598895f526002602052610c50610c4a60405f2092610c3c81611a5f565b610c4584611a5f565b611565565b91611565565b90611a7f565b967f0000000000000000000000000000000000000000000000000000000000000000916020610c84856115b5565b0151821461111457506004830190610ca860016001600160401b0384541614611610565b6002840155805467ffffffffffffffff19169055610cc5826115b5565b93600160c086015116155f1461110557604060208601519501515b94965b60038401549182610fd557505050808303610fbe5750610a36610d20915b610d186001600160401b0360048301541615611610565b8381556115b5565b60016001600160401b037f00000000000000000000000000000000000000000000000000000000000000001601906001600160401b038211610faa575f196001600160401b037f00000000000000000000000000000000000000000000000000000000000000001601966001600160401b038811610faa576001600160401b03602098166001600160401b038416145f14610edb57610df694604051998a988998630c67874d60e11b8a527f00000000000000000000000000000000000000000000000000000000000000009760048b01611afd565b03815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af19081156106c4575f91610e99575b506001600160a01b03165b6001600160a01b0316610e536100da3661158d565b815f52600560205260405f20557f166b786700a644dcec96aa84a92c26ecfee11b50956409c8cc83616042290d796020610e8f6100da3661158d565b92604051908152a2005b90506020813d602011610ed3575b81610eb460209383611544565b8101031261029957516001600160a01b03811681036102995781610e33565b3d9150610ea7565b610f1c94604051998a988998631961e5cb60e31b8a527f00000000000000000000000000000000000000000000000000000000000000009760048b01611afd565b03815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af19081156106c4575f91610f68575b506001600160a01b0316610e3e565b90506020813d602011610fa2575b81610f8360209383611544565b8101031261029957516001600160a01b03811681036102995781610f59565b3d9150610f76565b634e487b7160e01b5f52601160045260245ffd5b905063773af80160e01b5f5260045260245260445ffd5b90919250600484015460801c906001806001600160401b0384169316145f146110fe5787925b5f198501948511610faa579391908694611016818414611610565b5f935b83851061107b5750505050500361103657610a36610d2091610d01565b60405162461bcd60e51b815260206004820152601960248201527f636f6d6d69746d656e74207374617465206d69736d61746368000000000000006044820152606490fd5b90919293956001908183891c16155f146110c95761109a888587611dfc565b3560405190602082019283526040820152604081526110ba606082611544565b519020965b0193929190611019565b6110d4888587611dfc565b359060405190602082019283526040820152604081526110f5606082611544565b519020966110bf565b8a92610ffb565b60206040860151950151610ce0565b9050600483019061113160016001600160401b0384541614611610565b60018401556001600160401b031981541690556003820180549060018201809211610faa5755611160826115b5565b93600160c086015116155f1461118257602060408601519501515b9496610ce3565b6040602086015195015161117b565b60405162461bcd60e51b815260206004820152602260248201527f6d61746368206973206e6f7420726561647920746f2062652066696e616c697a604482015261195960f21b6064820152608490fd5b5060015415610bc1565b34610299576080366003190112610299576004356024356001600160401b0381116102995761121e9036906004016114ca565b60643592604435929161122f611786565b6114bb5761123d85856117e2565b9282916001600160401b037f00000000000000000000000000000000000000000000000000000000000000001690611276818314611610565b5f925b82841061147b5750505050820361142a577f00000000000000000000000000000000000000000000000000000000000000008181148015611401575b156113c85750815f52600360205260405f2055805f52600260205260405f206001600160401b036112e582611565565b511661138c577fe53537f202911d376d6e285835b2a2016e83e99fbe84a059d445cc2be4807262936020936113839261137d6113776001600160401b036113507f00000000000000000000000000000000000000000000000000000000000000008216428316611add565b167f0000000000000000000000000000000000000000000000000000000000000000611e20565b82611e52565b84611808565b604051908152a1005b60405162461bcd60e51b815260206004820152601460248201527318db1bd8dac81a5cc81a5b9a5d1a585b1a5e995960621b6044820152606490fd5b63ca5aceb360e01b5f526004527f000000000000000000000000000000000000000000000000000000000000000060245260445260645ffd5b50817f0000000000000000000000000000000000000000000000000000000000000000146112b5565b60405162461bcd60e51b815260206004820152602360248201527f636f6d6d69746d656e74206c61737420737461746520646f65736e2774206d616044820152620e8c6d60eb1b6064820152608490fd5b9091929360019061148d868585611dfc565b359060405190602082019283526040820152604081526114ae606082611544565b5190209401929190611279565b63ac57beef60e01b5f5260045ffd5b9181601f84011215610299578235916001600160401b038311610299576020808501948460051b01011161029957565b604081019081106001600160401b0382111761151557604052565b634e487b7160e01b5f52604160045260245ffd5b60e081019081106001600160401b0382111761151557604052565b90601f801991011681019081106001600160401b0382111761151557604052565b90604051611572816114fa565b60206001600160401b03829454818116845260401c16910152565b604090600319011261029957604051906115a6826114fa565b60043582526024356020830152565b906040516115c281611529565b60c06001600160401b03600483958054855260018101546020860152600281015460408601526003810154606086015201548181166080850152818160401c1660a085015260801c16910152565b1561161757565b634e487b7160e01b5f52600160045260245ffd5b611633611786565b80611713575b1561170b575f5f549081611703575b61165190611610565b805f52600360205260405f20547f000000000000000000000000000000000000000000000000000000000000000081145f146116b057506001917f00000000000000000000000000000000000000000000000000000000000000009190565b6116db907f000000000000000000000000000000000000000000000000000000000000000014611610565b6001917f00000000000000000000000000000000000000000000000000000000000000009190565b506001611648565b5f905f905f90565b5060015415611639565b51906001600160401b038216820361029957565b6040519061173e82611529565b5f60c0838281528260208201528260408201528260608201528260808201528260a08201520152565b61176f611731565b505f52600460205261178360405f206115b5565b90565b6117d07f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611f86565b6001600160401b038042169116111590565b906040519060208201928352604082015260408152611802606082611544565b51902090565b929190916118208461181a83856117e2565b14611610565b5f925f549384611a34575b15611a2c576119ea9161183c611731565b5061185161184a82866117e2565b8714611610565b60405161185d816114fa565b8581528660208201526119586001600160401b036040519261187e84611529565b8884528180600460208701968b885260408101988952606081015f81526080820199847f000000000000000000000000000000000000000000000000000000000000000016998a8c5261190060a0850198877f0000000000000000000000000000000000000000000000000000000000000000168a5260c086019c8d52611a3c565b5f528460205260405f2093518455516001840155516002830155516003820155019651161682198654161785555116839067ffffffffffffffff60401b82549160401b169067ffffffffffffffff60401b1916179055565b51815467ffffffffffffffff60801b191660809190911b67ffffffffffffffff60801b161790555f848152600260205260409020906119e5907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906119e0838387611ed7565b611ed7565b611d27565b5f80556001545f198114610faa577f32911001007d8c9879b608566be8acc2184592f0a43706f804f285455bb0f52e91600160209201600155604051908152a3565b505050505f55565b50600161182b565b604051602080820192805184520151604082015260408152611802606082611544565b6001600160401b03815460401c16611a745750565b611a7d90611d27565b565b6001600160401b03809151169151168082115f14611a9b575090565b905090565b91908201809211610faa57565b60606001600160401b0360a08301511691015180821b916001828404911b1490151715610faa5761178391611aa0565b906001600160401b03809116911603906001600160401b038211610faa57565b9793946001600160401b0395610100989487949c9b98939c6101208c019d8c5260208c015260408b015260608a015260808901521660a087015260c08601521660e084015260018060a01b0316910152565b60208101516001600160401b03169081611b6a575050600190565b6001600160401b03611b8781808094511694168280421616611add565b16161090565b5115611b9557565b60405162461bcd60e51b81526020600482015260146024820152731b585d18da08191bd95cc81b9bdd08195e1a5cdd60621b6044820152606490fd5b516001600160401b031615611be257565b60405162461bcd60e51b815260206004820152601860248201527f636c6f636b206973206e6f7420696e697469616c697a656400000000000000006044820152606490fd5b60208101516001600160401b031680611c485750516001600160401b031690565b6001600160401b03611c67818061178395511693168280421616611add565b1690611e20565b60208101906001600160401b0382511615611cac576001600160401b0380611ca28180611783965116168280421616611add565b1691511690611e20565b60405162461bcd60e51b815260206004820152601c60248201527f612070617573656420636c6f636b2063616e27742074696d656f7574000000006044820152606490fd5b6001548015610faa575f19016001555f5260046020525f6004604082208281558260018201558260028201558260038201550155565b611d3361064082611565565b6001600160401b03811615611da9576001600160401b039081835460401c16155f14611d9257825467ffffffffffffffff60401b191642831660401b67ffffffffffffffff60401b161783555b166001600160401b0319825416179055565b825467ffffffffffffffff60401b19168355611d80565b60405162461bcd60e51b815260206004820152602560248201527f63616e277420616476616e636520636c6f636b2077697468206e6f2074696d65604482015264081b19599d60da1b6064820152608490fd5b9190811015611e0c5760051b0190565b634e487b7160e01b5f52603260045260245ffd5b6001600160401b03918216911681811015611e3c57505f919050565b6001600160401b0391611e4e91611add565b1690565b906001600160401b03811615611e885781546fffffffffffffffffffffffffffffffff19166001600160401b0391909116179055565b60405162461bcd60e51b815260206004820152602160248201527f63616e27742063726561746520636c6f636b2077697468207a65726f2074696d6044820152606560f81b6064820152608490fd5b9091611ef1611a7d93611eec61064085611565565b611f86565b6001600160401b0382166001600160401b038216115f14611f13575090611e52565b905090611e52565b91611f25916117e2565b03611f2c57565b60405162461bcd60e51b815260206004820152601e60248201527f6368696c64206e6f64657320646f6e2774206d6174636820706172656e7400006044820152606490fd5b6001600160401b03168015610faa575f190190565b906001600160401b038091169116016001600160401b038111610faa576001600160401b03169056fea2646970667358221220f302165059f551dc59f2bf5086c273bd2ead509cf8dfe22aaa3114681706d31f64736f6c634300081b0033a2646970667358221220105a0abc689642ff01bcf3523e143bce0b8f5802a7ae713039402cf0a335d61864736f6c634300081b0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80\x80`@R4`\x15Wa%(\x90\x81a\0\x1A\x829\xF3[_\x80\xFD\xFE`\x80\x80`@R`\x046\x10\x15a\0\x12W_\x80\xFD[_5`\xE0\x1Cc\xFA\xB1sw\x14a\0%W_\x80\xFD[4a\x02,Wa\x01\xE06`\x03\x19\x01\x12a\x02,W`\xA45g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x80\x91\x03a\x02,W`\xE45\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x80\x93\x03a\x02,W`\xA06a\x01\x03\x19\x01\x12a\x02,W`\xA0\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x02\x18W`@Ra\x01\x045g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x02,W\x81Ra\x01$5\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x02,W` \x81\x01\x91\x82Ra\x01D5\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x02,W`@\x81\x01\x91\x82Ra\x01d5\x94g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x86\x03a\x02,W``\x82\x01\x95\x86Ra\x01\x845\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x02,W`\x80\x83\x01\x91\x82Ra\x01\xA45`\x01`\x01`\xA0\x1B\x03\x81\x16\x92\x90\x83\x90\x03a\x02,Wa\x01\xC45`\x01`\x01`\xA0\x1B\x03\x81\x16\x94\x90\x85\x90\x03a\x02,W`@Q\x98a\"\xC2\x93\x84\x8B\x01\x97\x8B\x89\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8A\x11\x17a\x02\x18Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8C\x9A\x81\x80\x98\x96\x81\x97\x95a\x01\xE0\x9F\x8F\x8F\x90\x91\x85\x99`\xE0\x93a\x021\x909`\x045\x82R`$5` \x83\x01R`D5`@\x83\x01R`d5``\x83\x01R`\x845`\x80\x83\x01R`\xA0\x82\x01R`\xC45`\xC0\x82\x01R\x01RQ\x16a\x01\0\x8C\x01RQ\x16a\x01 \x8A\x01RQ\x16a\x01@\x88\x01RQ\x16a\x01`\x86\x01RQ\x16a\x01\x80\x84\x01Ra\x01\xA0\x83\x01Ra\x01\xC0\x82\x01R\x03\x01\x90_\xF0\x80\x15a\x02\rW`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[`@Q=_\x82>=\x90\xFD[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[_\x80\xFD\xFEa\x02\x80`@R4a\x02\xB0W`@Qa\"\xC28\x81\x90\x03`\x1F\x81\x01`\x1F\x19\x16\x83\x01`\x01`\x01`@\x1B\x03\x81\x11\x84\x82\x10\x17a\x02\xB4W\x83\x92\x82\x91`@R\x839\x81\x01\x03\x90a\x01\xE0\x82\x12a\x02\xB0W\x80Q` \x82\x01Q`@\x83\x01Q\x91``\x84\x01Q\x93`\x80\x81\x01Q\x95a\0k`\xA0\x83\x01a\x02\xC8V[\x90`\xC0\x83\x01Q\x91`\xA0a\0\x80`\xE0\x86\x01a\x02\xC8V[\x92`\xFF\x19\x01\x12a\x02\xB0W`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17a\x02\xB4W`@Ra\0\xB3a\x01\0\x86\x01a\x02\xC8V[\x81Ra\0\xC2a\x01 \x86\x01a\x02\xC8V[` \x82\x01\x90\x81Ra\0\xD6a\x01@\x87\x01a\x02\xC8V[\x91`@\x81\x01\x92\x83Ra\0\xEBa\x01`\x88\x01a\x02\xC8V[\x94``\x82\x01\x95\x86Ra\x01\0a\x01\x80\x89\x01a\x02\xC8V[`\x80\x83\x01\x90\x81Ra\x01\xA0\x89\x01Q\x98\x90\x97\x90`\x01`\x01`\xA0\x1B\x03\x8A\x16\x8A\x03a\x02\xB0Wa\x01\xC0\x01Q\x99`\x01`\x01`\xA0\x1B\x03\x8B\x16\x8B\x03a\x02\xB0W`\x80R`\xA0R`\xC0RQ`\x01`\x01`@\x1B\x03\x90\x81\x16`\xE0R\x90Q\x81\x16a\x01\0R\x90Q\x81\x16a\x01 RB\x81\x16a\x01@R\x83Q\x81\x16\x91\x90\x81\x16\x82\x10\x15a\x02\xA9WP[a\x01`RQ`\x01`\x01`@\x1B\x03\x90\x81\x16a\x01\xA0R\x90Q\x16a\x01\x80Ra\x01\xC0Ra\x01\xE0Ra\x02\0Ra\x02 Ra\x02@Ra\x02`R`@Qa\x1F\xE5\x90\x81a\x02\xDD\x829`\x80Q\x81a\x0CY\x01R`\xA0Q\x81a\n8\x01R`\xC0Q\x81\x81\x81a\x08R\x01Ra\r,\x01R`\xE0Q\x81\x81\x81a\x08&\x01Ra\rh\x01Ra\x01\0Q\x81\x81\x81a\x08\x81\x01Ra\x18\xD2\x01Ra\x01 Q\x81\x81\x81a\x08\xB0\x01R\x81\x81a\x12J\x01Ra\x18\xA3\x01Ra\x01@Q\x81\x81\x81a\x13'\x01Ra\x17\xAC\x01Ra\x01`Q\x81\x81\x81a\x13S\x01Ra\x17\x8B\x01Ra\x01\x80Q\x81a\x19\x93\x01Ra\x01\xA0Q\x81a\x19\xB5\x01Ra\x01\xC0Q\x81\x81\x81a\r\xCD\x01Ra\x0E\xF3\x01Ra\x01\xE0Q\x81\x81\x81a\r\xFB\x01Ra\x0F!\x01Ra\x02\0Q\x81a\x16\x8D\x01Ra\x02 Q\x81\x81\x81a\x12\x8C\x01Ra\x16`\x01Ra\x02@Q\x81a\x16\xE0\x01Ra\x02`Q\x81\x81\x81a\x13\xD7\x01R\x81\x81a\x14\x05\x01Ra\x16\xB6\x01R\xF3[\x90Pa\x01wV[_\x80\xFD[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[Q\x90`\x01`\x01`@\x1B\x03\x82\x16\x82\x03a\x02\xB0WV\xFE`\x80`@R`\x046\x10\x15a\0\x11W_\x80\xFD[_5`\xE0\x1C\x80c\x1D[\xF7\x96\x14a\x11\xEBW\x80c?6\xE2\xFE\x14a\x0BpW\x80cQE#o\x14a\x0BAW\x80cj\x1A\x14\r\x14a\n\xD5W\x80cw\x95\x82\x0C\x14a\neW\x80c\x8A\xCC\x80-\x14a\n\x15W\x80c\x9A\x9BK+\x14a\x08\xD7W\x80c\xA1\xAF\x90k\x14a\x08\x07W\x80c\xB4\x01\x86\\\x14a\x05#W\x80c\xFC\xC6\x07}\x14a\x04\xB3W\x80c\xFC\xC8S\x91\x14a\x02\x9DWc\xFFx\xE0\xEE\x14a\0\x9DW_\x80\xFD[4a\x02\x99W6`\x03\x19\x01`\x80\x81\x12a\x02\x99W`@\x13a\x02\x99W`D5`d5a\0\xC4a\x17\x86V[\x80a\x02\x8FW[a\x02\x80Wa\0\xDFa\0\xDA6a\x15\x8DV[a\x1A=\x90\xFD[\x90c\xD7L\xBD\x1F`\xE0\x1B_R`\x04R`$R`D_\xFD[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7Ftree node doesn't exist\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[co\x05\xF4a`\xE1\x1B_R`\x04_\xFD[\x92PPP``\x81=``\x11a\x07}W[\x81a\x07V``\x93\x83a\x15DV[\x81\x01\x03\x12a\x02\x99W\x80Q\x80\x15\x15\x81\x03a\x02\x99W`@` \x83\x01Q\x92\x01Q\x90\x91\x90\x91\x87a\x05\xCDV[=\x91Pa\x07IV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x15`$\x82\x01Rt\x1BX]\x18\xDA\x08\x1A\\\xC8\x1B\x9B\xDD\x08\x19\x9A[\x9A\\\xDA\x19Y`Z\x1B`D\x82\x01R`d\x90\xFD[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x1BX]\x18\xDA\x08\x19\x1B\xD9\\\xDB\x89\xDD\x08\x19^\x1A\\\xDD`j\x1B`D\x82\x01R`d\x90\xFD[P`\x01T\x15a\x05]V[4a\x02\x99W_6`\x03\x19\x01\x12a\x02\x99W`\x80`@Q`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x81R`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16` \x82\x01R`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16`@\x82\x01R`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16``\x82\x01R\xF3[4a\x02\x99W`@6`\x03\x19\x01\x12a\x02\x99Wa\x08\xF0a\x17\x86V[\x80a\n\x0BW[a\x02\x80Wa\t\x06a\0\xDA6a\x15\x8DV[_R`\x04` Ra\t\x1Ca\0\xF5`@_ a\x15\xB5V[`\x045_\x90\x81R`\x02` R`@\x80\x82 `$5\x83R\x91 \x90a\tAa\x01&\x82a\x15eV[a\tMa\x01&\x83a\x15eV[a\tYa\x01C\x82a\x15eV[\x15\x91\x82a\t\xDDW[\x82\x15a\t\x8DW[PP\x15a\t~Wa\x01\xAEa\x01\xA9a\0\xDA6a\x15\x8DV[c=\x0B\x93\x07`\xE2\x1B_R`\x04_\xFD[\x90\x91Pa\t\x9Ca\x01C\x82a\x15eV[\x15\x91\x82a\t\xADW[PP\x81\x80a\thV[`\x01`\x01`@\x1B\x03\x91\x92Pa\t\xD1a\x01za\t\xCBa\x06@\x85\x94a\x15eV[\x94a\x15eV[\x16\x91\x16\x11\x15\x81\x80a\t\xA4V[\x91Pa\t\xEBa\x06@\x83a\x15eV[`\x01`\x01`@\x1B\x03\x80a\n\0a\x01z\x85a\x15eV[\x16\x91\x16\x11\x15\x91a\taV[P`\x01T\x15a\x08\xF6V[4a\x02\x99W` 6`\x03\x19\x01\x12a\x02\x99W` a\n]a\n6`\x045a\x17gV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90a\x1A\xADV[`@Q\x90\x81R\xF3[4a\x02\x99W` 6`\x03\x19\x01\x12a\x02\x99W```\x045_` `@Qa\n\x8A\x81a\x14\xFAV[\x82\x81R\x01R\x80_R`\x02` R`@_ \x90_R`\x03` Ra\n\xB1`@_ T\x91a\x15eV[\x90`\x01`\x01`@\x1B\x03` `@Q\x93\x82\x81Q\x16\x85R\x01Q\x16` \x83\x01R`@\x82\x01R\xF3[4a\x02\x99W`@6`\x03\x19\x01\x12a\x02\x99W`\x045_R`\x02` R` a\n\xFE`@_ a\x15eV[`$5_R`\x02\x82Ra\x0B\x1Ca\x0B\x16`@_ a\x15eV[\x91a\x1BOV[\x15\x90\x81\x15a\x0B0W[P`@Q\x90\x15\x15\x81R\xF3[a\x0B:\x91Pa\x1BOV[\x15\x82a\x0B%V[4a\x02\x99W_6`\x03\x19\x01\x12a\x02\x99W``a\x0B[a\x16+V[\x90`@Q\x92\x15\x15\x83R` \x83\x01R`@\x82\x01R\xF3[4a\x02\x99W6`\x03\x19\x01`\xC0\x81\x12a\x02\x99W`@\x13a\x02\x99W`d5`D5`\x845`\xA45`\x01`\x01`@\x1B\x03\x81\x11a\x02\x99Wa\x0B\xB1\x906\x90`\x04\x01a\x14\xCAV[\x91\x90a\x0B\xBBa\x17\x86V[\x80a\x11\xE1W[a\x02\x80Wa\x0B\xD1a\0\xDA6a\x15\x8DV[_R`\x04` R`@_ \x91`\x01`\x01`\x01`@\x1B\x03`\x80a\x0B\xF2\x86a\x15\xB5V[\x01Q\x16\x03a\x11\x91Wa\x0C\x08\x86\x86a\x03$\x86a\x15\xB5V[`\x045\x92\x83_R`\x02` R`@_ \x96a\x0CV`$5\x98\x89_R`\x02` Ra\x0CPa\x0CJ`@_ \x92a\x0C<\x81a\x1A_V[a\x0CE\x84a\x1A_V[a\x15eV[\x91a\x15eV[\x90a\x1A\x7FV[\x96\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91` a\x0C\x84\x85a\x15\xB5V[\x01Q\x82\x14a\x11\x14WP`\x04\x83\x01\x90a\x0C\xA8`\x01`\x01`\x01`@\x1B\x03\x84T\x16\x14a\x16\x10V[`\x02\x84\x01U\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90Ua\x0C\xC5\x82a\x15\xB5V[\x93`\x01`\xC0\x86\x01Q\x16\x15_\x14a\x11\x05W`@` \x86\x01Q\x95\x01Q[\x94\x96[`\x03\x84\x01T\x91\x82a\x0F\xD5WPPP\x80\x83\x03a\x0F\xBEWPa\n6a\r \x91[a\r\x18`\x01`\x01`@\x1B\x03`\x04\x83\x01T\x16\x15a\x16\x10V[\x83\x81Ua\x15\xB5V[`\x01`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x01\x90`\x01`\x01`@\x1B\x03\x82\x11a\x0F\xAAW_\x19`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x01\x96`\x01`\x01`@\x1B\x03\x88\x11a\x0F\xAAW`\x01`\x01`@\x1B\x03` \x98\x16`\x01`\x01`@\x1B\x03\x84\x16\x14_\x14a\x0E\xDBWa\r\xF6\x94`@Q\x99\x8A\x98\x89\x98c\x0Cg\x87M`\xE1\x1B\x8AR\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x97`\x04\x8B\x01a\x1A\xFDV[\x03\x81_\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xF1\x90\x81\x15a\x06\xC4W_\x91a\x0E\x99W[P`\x01`\x01`\xA0\x1B\x03\x16[`\x01`\x01`\xA0\x1B\x03\x16a\x0ESa\0\xDA6a\x15\x8DV[\x81_R`\x05` R`@_ U\x7F\x16kxg\0\xA6D\xDC\xEC\x96\xAA\x84\xA9,&\xEC\xFE\xE1\x1BP\x95d\t\xC8\xCC\x83a`B)\ry` a\x0E\x8Fa\0\xDA6a\x15\x8DV[\x92`@Q\x90\x81R\xA2\0[\x90P` \x81=` \x11a\x0E\xD3W[\x81a\x0E\xB4` \x93\x83a\x15DV[\x81\x01\x03\x12a\x02\x99WQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x02\x99W\x81a\x0E3V[=\x91Pa\x0E\xA7V[a\x0F\x1C\x94`@Q\x99\x8A\x98\x89\x98c\x19a\xE5\xCB`\xE3\x1B\x8AR\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x97`\x04\x8B\x01a\x1A\xFDV[\x03\x81_\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xF1\x90\x81\x15a\x06\xC4W_\x91a\x0FhW[P`\x01`\x01`\xA0\x1B\x03\x16a\x0E>V[\x90P` \x81=` \x11a\x0F\xA2W[\x81a\x0F\x83` \x93\x83a\x15DV[\x81\x01\x03\x12a\x02\x99WQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x02\x99W\x81a\x0FYV[=\x91Pa\x0FvV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x90Pcw:\xF8\x01`\xE0\x1B_R`\x04R`$R`D_\xFD[\x90\x91\x92P`\x04\x84\x01T`\x80\x1C\x90`\x01\x80`\x01`\x01`@\x1B\x03\x84\x16\x93\x16\x14_\x14a\x10\xFEW\x87\x92[_\x19\x85\x01\x94\x85\x11a\x0F\xAAW\x93\x91\x90\x86\x94a\x10\x16\x81\x84\x14a\x16\x10V[_\x93[\x83\x85\x10a\x10{WPPPPP\x03a\x106Wa\n6a\r \x91a\r\x01V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7Fcommitment state mismatch\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x90\x91\x92\x93\x95`\x01\x90\x81\x83\x89\x1C\x16\x15_\x14a\x10\xC9Wa\x10\x9A\x88\x85\x87a\x1D\xFCV[5`@Q\x90` \x82\x01\x92\x83R`@\x82\x01R`@\x81Ra\x10\xBA``\x82a\x15DV[Q\x90 \x96[\x01\x93\x92\x91\x90a\x10\x19V[a\x10\xD4\x88\x85\x87a\x1D\xFCV[5\x90`@Q\x90` \x82\x01\x92\x83R`@\x82\x01R`@\x81Ra\x10\xF5``\x82a\x15DV[Q\x90 \x96a\x10\xBFV[\x8A\x92a\x0F\xFBV[` `@\x86\x01Q\x95\x01Qa\x0C\xE0V[\x90P`\x04\x83\x01\x90a\x111`\x01`\x01`\x01`@\x1B\x03\x84T\x16\x14a\x16\x10V[`\x01\x84\x01U`\x01`\x01`@\x1B\x03\x19\x81T\x16\x90U`\x03\x82\x01\x80T\x90`\x01\x82\x01\x80\x92\x11a\x0F\xAAWUa\x11`\x82a\x15\xB5V[\x93`\x01`\xC0\x86\x01Q\x16\x15_\x14a\x11\x82W` `@\x86\x01Q\x95\x01Q[\x94\x96a\x0C\xE3V[`@` \x86\x01Q\x95\x01Qa\x11{V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7Fmatch is not ready to be finaliz`D\x82\x01Ra\x19Y`\xF2\x1B`d\x82\x01R`\x84\x90\xFD[P`\x01T\x15a\x0B\xC1V[4a\x02\x99W`\x806`\x03\x19\x01\x12a\x02\x99W`\x045`$5`\x01`\x01`@\x1B\x03\x81\x11a\x02\x99Wa\x12\x1E\x906\x90`\x04\x01a\x14\xCAV[`d5\x92`D5\x92\x91a\x12/a\x17\x86V[a\x14\xBBWa\x12=\x85\x85a\x17\xE2V[\x92\x82\x91`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90a\x12v\x81\x83\x14a\x16\x10V[_\x92[\x82\x84\x10a\x14{WPPPP\x82\x03a\x14*W\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x81\x14\x80\x15a\x14\x01W[\x15a\x13\xC8WP\x81_R`\x03` R`@_ U\x80_R`\x02` R`@_ `\x01`\x01`@\x1B\x03a\x12\xE5\x82a\x15eV[Q\x16a\x13\x8CW\x7F\xE557\xF2\x02\x91\x1D7mn(X5\xB2\xA2\x01n\x83\xE9\x9F\xBE\x84\xA0Y\xD4E\xCC+\xE4\x80rb\x93` \x93a\x13\x83\x92a\x13}a\x13w`\x01`\x01`@\x1B\x03a\x13P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16B\x83\x16a\x1A\xDDV[\x16\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x1E V[\x82a\x1ERV[\x84a\x18\x08V[`@Q\x90\x81R\xA1\0[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rs\x18\xDB\x1B\xD8\xDA\xC8\x1A\\\xC8\x1A[\x9A]\x1AX[\x1A^\x99Y`b\x1B`D\x82\x01R`d\x90\xFD[c\xCAZ\xCE\xB3`\xE0\x1B_R`\x04R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`$R`DR`d_\xFD[P\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x14a\x12\xB5V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7Fcommitment last state doesn't ma`D\x82\x01Rb\x0E\x8Cm`\xEB\x1B`d\x82\x01R`\x84\x90\xFD[\x90\x91\x92\x93`\x01\x90a\x14\x8D\x86\x85\x85a\x1D\xFCV[5\x90`@Q\x90` \x82\x01\x92\x83R`@\x82\x01R`@\x81Ra\x14\xAE``\x82a\x15DV[Q\x90 \x94\x01\x92\x91\x90a\x12yV[c\xACW\xBE\xEF`\xE0\x1B_R`\x04_\xFD[\x91\x81`\x1F\x84\x01\x12\x15a\x02\x99W\x825\x91`\x01`\x01`@\x1B\x03\x83\x11a\x02\x99W` \x80\x85\x01\x94\x84`\x05\x1B\x01\x01\x11a\x02\x99WV[`@\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17a\x15\x15W`@RV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`\xE0\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17a\x15\x15W`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17a\x15\x15W`@RV[\x90`@Qa\x15r\x81a\x14\xFAV[` `\x01`\x01`@\x1B\x03\x82\x94T\x81\x81\x16\x84R`@\x1C\x16\x91\x01RV[`@\x90`\x03\x19\x01\x12a\x02\x99W`@Q\x90a\x15\xA6\x82a\x14\xFAV[`\x045\x82R`$5` \x83\x01RV[\x90`@Qa\x15\xC2\x81a\x15)V[`\xC0`\x01`\x01`@\x1B\x03`\x04\x83\x95\x80T\x85R`\x01\x81\x01T` \x86\x01R`\x02\x81\x01T`@\x86\x01R`\x03\x81\x01T``\x86\x01R\x01T\x81\x81\x16`\x80\x85\x01R\x81\x81`@\x1C\x16`\xA0\x85\x01R`\x80\x1C\x16\x91\x01RV[\x15a\x16\x17WV[cNH{q`\xE0\x1B_R`\x01`\x04R`$_\xFD[a\x163a\x17\x86V[\x80a\x17\x13W[\x15a\x17\x0BW__T\x90\x81a\x17\x03W[a\x16Q\x90a\x16\x10V[\x80_R`\x03` R`@_ T\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x14_\x14a\x16\xB0WP`\x01\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x90V[a\x16\xDB\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x14a\x16\x10V[`\x01\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x90V[P`\x01a\x16HV[_\x90_\x90_\x90V[P`\x01T\x15a\x169V[Q\x90`\x01`\x01`@\x1B\x03\x82\x16\x82\x03a\x02\x99WV[`@Q\x90a\x17>\x82a\x15)V[_`\xC0\x83\x82\x81R\x82` \x82\x01R\x82`@\x82\x01R\x82``\x82\x01R\x82`\x80\x82\x01R\x82`\xA0\x82\x01R\x01RV[a\x17oa\x171V[P_R`\x04` Ra\x17\x83`@_ a\x15\xB5V[\x90V[a\x17\xD0\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x1F\x86V[`\x01`\x01`@\x1B\x03\x80B\x16\x91\x16\x11\x15\x90V[\x90`@Q\x90` \x82\x01\x92\x83R`@\x82\x01R`@\x81Ra\x18\x02``\x82a\x15DV[Q\x90 \x90V[\x92\x91\x90\x91a\x18 \x84a\x18\x1A\x83\x85a\x17\xE2V[\x14a\x16\x10V[_\x92_T\x93\x84a\x1A4W[\x15a\x1A,Wa\x19\xEA\x91a\x18\x14;\xCE\x0B\x8FX\x02\xA7\xAEq09@,\xF0\xA35\xD6\x18dsolcC\0\x08\x1B\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x6080806040526004361015610012575f80fd5b5f3560e01c63fab1737714610025575f80fd5b3461022c576101e036600319011261022c5760a43567ffffffffffffffff811680910361022c5760e4359167ffffffffffffffff831680930361022c5760a03661010319011261022c5760a0810181811067ffffffffffffffff821117610218576040526101043567ffffffffffffffff8116810361022c578152610124359067ffffffffffffffff8216820361022c5760208101918252610144359067ffffffffffffffff8216820361022c5760408101918252610164359467ffffffffffffffff8616860361022c5760608201958652610184359067ffffffffffffffff8216820361022c57608083019182526101a4356001600160a01b038116929083900361022c576101c4356001600160a01b038116949085900361022c57604051986122c293848b01978b891067ffffffffffffffff8a11176102185767ffffffffffffffff8c9a818098968197956101e09f8f8f9091859960e09361023190396004358252602435602083015260443560408301526064356060830152608435608083015260a082015260c43560c0820152015251166101008c015251166101208a01525116610140880152511661016086015251166101808401526101a08301526101c08201520301905ff0801561020d576040516001600160a01b039091168152602090f35b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b5f80fdfe610280604052346102b0576040516122c238819003601f8101601f191683016001600160401b038111848210176102b457839282916040528339810103906101e082126102b0578051602082015160408301519160608401519360808101519561006b60a083016102c8565b9060c08301519160a061008060e086016102c8565b9260ff1901126102b05760405160a081016001600160401b038111828210176102b4576040526100b361010086016102c8565b81526100c261012086016102c8565b602082019081526100d661014087016102c8565b91604081019283526100eb61016088016102c8565b946060820195865261010061018089016102c8565b608083019081526101a0890151989097906001600160a01b038a168a036102b0576101c00151996001600160a01b038b168b036102b05760805260a05260c052516001600160401b0390811660e052905181166101005290518116610120524281166101405283518116919081168210156102a957505b61016052516001600160401b039081166101a052905116610180526101c0526101e05261020052610220526102405261026052604051611fe590816102dd823960805181610c59015260a05181610a38015260c0518181816108520152610d2c015260e0518181816108260152610d6801526101005181818161088101526118d20152610120518181816108b00152818161124a01526118a301526101405181818161132701526117ac015261016051818181611353015261178b0152610180518161199301526101a051816119b501526101c051818181610dcd0152610ef301526101e051818181610dfb0152610f210152610200518161168d01526102205181818161128c0152611660015261024051816116e00152610260518181816113d70152818161140501526116b60152f35b9050610177565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160401b03821682036102b05756fe60806040526004361015610011575f80fd5b5f3560e01c80631d5bf796146111eb5780633f36e2fe14610b705780635145236f14610b415780636a1a140d14610ad55780637795820c14610a655780638acc802d14610a155780639a9b4b2b146108d7578063a1af906b14610807578063b401865c14610523578063fcc6077d146104b3578063fcc853911461029d5763ff78e0ee1461009d575f80fd5b346102995736600319016080811261029957604013610299576044356064356100c4611786565b8061028f575b610280576100df6100da3661158d565b611a3c565b5f5260046020526100fa6100f560405f206115b5565b611b8d565b60043591825f52600260205260405f20602435805f52600260205260405f209061012b61012684611565565b611bd1565b61013761012683611565565b61014861014384611565565b611b4f565b8061026d575b156101db575061015e84846117e2565b85036101b0579361019561018f61017f61017a61019a98611565565b611c6e565b6001600160401b03855416611e20565b83611e52565b611808565b6101ae6101a96100da3661158d565b611cf1565b005b608485858560405192633ad7a6d360e11b845260016004850152602484015260448301526064820152fd5b9450906101ea61014382611565565b158061025b575b1561024c5761020084846117e2565b8503610221579361019561018f61017f61017a61021c98611565565b61019a565b608485858560405192633ad7a6d360e11b845260026004850152602484015260448301526064820152fd5b634d46ab2360e11b5f5260045ffd5b5061026861014383611565565b6101f1565b5061027a61014383611565565b1561014e565b6395ddf15360e01b5f5260045ffd5b50600154156100ca565b5f80fd5b3461029957366003190160c08112610299576040136102995760643560a4356084356044356102ca611786565b806104a9575b610280576102e06100da3661158d565b5f52600460205260405f20936102f86100f5866115b5565b60016001600160401b03608061030d886115b5565b01511611156104645761032a8183610324886115b5565b51611f1b565b6020610335866115b5565b015182146103fd575081610355846001600160401b039461037e94611f1b565b6004850193838554169161036b60018411611610565b6001870180548855556002860155611f71565b166001600160401b03198254161790555b7f29ff393c59c37f91e930fad4d88447efc58cf5d7c048499e1f20edb36994137860406103be6100da3661158d565b926001815491015482519182526020820152a26004355f5260026020526103e760405f20611d27565b6024355f5260026020526101ae60405f20611d27565b8391506104428361041a6001966001600160401b03968795611f1b565b6004870193838554169161042f888411611610565b600289019081548a55888a015555611f71565b16821982541617815554161b61045d60038301918254611aa0565b905561038f565b60405162461bcd60e51b815260206004820152601760248201527f6d617463682063616e277420626520616476616e6365640000000000000000006044820152606490fd5b50600154156102d0565b346102995760203660031901126102995760e06104d1600435611767565b6001600160401b0360c060405192805184526020810151602085015260408101516040850152606081015160608501528260808201511660808501528260a08201511660a085015201511660c0820152f35b34610299576060366003190112610299576004356001600160a01b0381169081900361029957602435604435610557611786565b806107fd575b61028057825f52600560205260405f20549081156107c257815f5260046020526001600160401b03608061059f60405f2061059a6100f5826115b5565b6115b5565b01511661078557604051635145236f60e01b8152606081600481885afa9081156106c4575f5f915f93610739575b501561072a5780156106e5576105e383866117e2565b908082036106cf575060405191631de5608360e21b83526004830152606082602481895afa9182156106c4575f92610655575b50936101a9929185610645965f52600260205261019561018f60405f209361064061012686611565565b611c27565b5f90815260056020526040812055005b8093925060609591953d6060116106bd575b6106718183611544565b810103606081126102995760401361029957610645946101a9936106ae60206040519261069d846114fa565b6106a68161171d565b84520161171d565b60208201529293509094610616565b503d610667565b6040513d5f823e3d90fd5b9063d74cbd1f60e01b5f5260045260245260445ffd5b60405162461bcd60e51b815260206004820152601760248201527f74726565206e6f646520646f65736e27742065786973740000000000000000006044820152606490fd5b636f05f46160e11b5f5260045ffd5b925050506060813d60601161077d575b8161075660609383611544565b810103126102995780518015158103610299576040602083015192015190919091876105cd565b3d9150610749565b60405162461bcd60e51b81526020600482015260156024820152741b585d18da081a5cc81b9bdd08199a5b9a5cda1959605a1b6044820152606490fd5b60405162461bcd60e51b81526020600482015260136024820152721b585d18da08191bd95cdb89dd08195e1a5cdd606a1b6044820152606490fd5b506001541561055d565b34610299575f3660031901126102995760806040516001600160401b037f00000000000000000000000000000000000000000000000000000000000000001681526001600160401b037f00000000000000000000000000000000000000000000000000000000000000001660208201526001600160401b037f00000000000000000000000000000000000000000000000000000000000000001660408201526001600160401b037f0000000000000000000000000000000000000000000000000000000000000000166060820152f35b34610299576040366003190112610299576108f0611786565b80610a0b575b610280576109066100da3661158d565b5f52600460205261091c6100f560405f206115b5565b6004355f90815260026020526040808220602435835291209061094161012682611565565b61094d61012683611565565b61095961014382611565565b1591826109dd575b821561098d575b50501561097e576101ae6101a96100da3661158d565b633d0b930760e21b5f5260045ffd5b90915061099c61014382611565565b1591826109ad575b50508180610968565b6001600160401b039192506109d161017a6109cb6106408594611565565b94611565565b169116111581806109a4565b91506109eb61064083611565565b6001600160401b0380610a0061017a85611565565b169116111591610961565b50600154156108f6565b34610299576020366003190112610299576020610a5d610a36600435611767565b7f000000000000000000000000000000000000000000000000000000000000000090611aad565b604051908152f35b346102995760203660031901126102995760606004355f6020604051610a8a816114fa565b8281520152805f52600260205260405f20905f526003602052610ab160405f205491611565565b906001600160401b0360206040519382815116855201511660208301526040820152f35b34610299576040366003190112610299576004355f5260026020526020610afe60405f20611565565b6024355f5260028252610b1c610b1660405f20611565565b91611b4f565b15908115610b30575b506040519015158152f35b610b3a9150611b4f565b1582610b25565b34610299575f366003190112610299576060610b5b61162b565b90604051921515835260208301526040820152f35b3461029957366003190160c08112610299576040136102995760643560443560843560a4356001600160401b03811161029957610bb19036906004016114ca565b9190610bbb611786565b806111e1575b61028057610bd16100da3661158d565b5f52600460205260405f209160016001600160401b036080610bf2866115b5565b0151160361119157610c088686610324866115b5565b60043592835f52600260205260405f2096610c5660243598895f526002602052610c50610c4a60405f2092610c3c81611a5f565b610c4584611a5f565b611565565b91611565565b90611a7f565b967f0000000000000000000000000000000000000000000000000000000000000000916020610c84856115b5565b0151821461111457506004830190610ca860016001600160401b0384541614611610565b6002840155805467ffffffffffffffff19169055610cc5826115b5565b93600160c086015116155f1461110557604060208601519501515b94965b60038401549182610fd557505050808303610fbe5750610a36610d20915b610d186001600160401b0360048301541615611610565b8381556115b5565b60016001600160401b037f00000000000000000000000000000000000000000000000000000000000000001601906001600160401b038211610faa575f196001600160401b037f00000000000000000000000000000000000000000000000000000000000000001601966001600160401b038811610faa576001600160401b03602098166001600160401b038416145f14610edb57610df694604051998a988998630c67874d60e11b8a527f00000000000000000000000000000000000000000000000000000000000000009760048b01611afd565b03815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af19081156106c4575f91610e99575b506001600160a01b03165b6001600160a01b0316610e536100da3661158d565b815f52600560205260405f20557f166b786700a644dcec96aa84a92c26ecfee11b50956409c8cc83616042290d796020610e8f6100da3661158d565b92604051908152a2005b90506020813d602011610ed3575b81610eb460209383611544565b8101031261029957516001600160a01b03811681036102995781610e33565b3d9150610ea7565b610f1c94604051998a988998631961e5cb60e31b8a527f00000000000000000000000000000000000000000000000000000000000000009760048b01611afd565b03815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af19081156106c4575f91610f68575b506001600160a01b0316610e3e565b90506020813d602011610fa2575b81610f8360209383611544565b8101031261029957516001600160a01b03811681036102995781610f59565b3d9150610f76565b634e487b7160e01b5f52601160045260245ffd5b905063773af80160e01b5f5260045260245260445ffd5b90919250600484015460801c906001806001600160401b0384169316145f146110fe5787925b5f198501948511610faa579391908694611016818414611610565b5f935b83851061107b5750505050500361103657610a36610d2091610d01565b60405162461bcd60e51b815260206004820152601960248201527f636f6d6d69746d656e74207374617465206d69736d61746368000000000000006044820152606490fd5b90919293956001908183891c16155f146110c95761109a888587611dfc565b3560405190602082019283526040820152604081526110ba606082611544565b519020965b0193929190611019565b6110d4888587611dfc565b359060405190602082019283526040820152604081526110f5606082611544565b519020966110bf565b8a92610ffb565b60206040860151950151610ce0565b9050600483019061113160016001600160401b0384541614611610565b60018401556001600160401b031981541690556003820180549060018201809211610faa5755611160826115b5565b93600160c086015116155f1461118257602060408601519501515b9496610ce3565b6040602086015195015161117b565b60405162461bcd60e51b815260206004820152602260248201527f6d61746368206973206e6f7420726561647920746f2062652066696e616c697a604482015261195960f21b6064820152608490fd5b5060015415610bc1565b34610299576080366003190112610299576004356024356001600160401b0381116102995761121e9036906004016114ca565b60643592604435929161122f611786565b6114bb5761123d85856117e2565b9282916001600160401b037f00000000000000000000000000000000000000000000000000000000000000001690611276818314611610565b5f925b82841061147b5750505050820361142a577f00000000000000000000000000000000000000000000000000000000000000008181148015611401575b156113c85750815f52600360205260405f2055805f52600260205260405f206001600160401b036112e582611565565b511661138c577fe53537f202911d376d6e285835b2a2016e83e99fbe84a059d445cc2be4807262936020936113839261137d6113776001600160401b036113507f00000000000000000000000000000000000000000000000000000000000000008216428316611add565b167f0000000000000000000000000000000000000000000000000000000000000000611e20565b82611e52565b84611808565b604051908152a1005b60405162461bcd60e51b815260206004820152601460248201527318db1bd8dac81a5cc81a5b9a5d1a585b1a5e995960621b6044820152606490fd5b63ca5aceb360e01b5f526004527f000000000000000000000000000000000000000000000000000000000000000060245260445260645ffd5b50817f0000000000000000000000000000000000000000000000000000000000000000146112b5565b60405162461bcd60e51b815260206004820152602360248201527f636f6d6d69746d656e74206c61737420737461746520646f65736e2774206d616044820152620e8c6d60eb1b6064820152608490fd5b9091929360019061148d868585611dfc565b359060405190602082019283526040820152604081526114ae606082611544565b5190209401929190611279565b63ac57beef60e01b5f5260045ffd5b9181601f84011215610299578235916001600160401b038311610299576020808501948460051b01011161029957565b604081019081106001600160401b0382111761151557604052565b634e487b7160e01b5f52604160045260245ffd5b60e081019081106001600160401b0382111761151557604052565b90601f801991011681019081106001600160401b0382111761151557604052565b90604051611572816114fa565b60206001600160401b03829454818116845260401c16910152565b604090600319011261029957604051906115a6826114fa565b60043582526024356020830152565b906040516115c281611529565b60c06001600160401b03600483958054855260018101546020860152600281015460408601526003810154606086015201548181166080850152818160401c1660a085015260801c16910152565b1561161757565b634e487b7160e01b5f52600160045260245ffd5b611633611786565b80611713575b1561170b575f5f549081611703575b61165190611610565b805f52600360205260405f20547f000000000000000000000000000000000000000000000000000000000000000081145f146116b057506001917f00000000000000000000000000000000000000000000000000000000000000009190565b6116db907f000000000000000000000000000000000000000000000000000000000000000014611610565b6001917f00000000000000000000000000000000000000000000000000000000000000009190565b506001611648565b5f905f905f90565b5060015415611639565b51906001600160401b038216820361029957565b6040519061173e82611529565b5f60c0838281528260208201528260408201528260608201528260808201528260a08201520152565b61176f611731565b505f52600460205261178360405f206115b5565b90565b6117d07f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611f86565b6001600160401b038042169116111590565b906040519060208201928352604082015260408152611802606082611544565b51902090565b929190916118208461181a83856117e2565b14611610565b5f925f549384611a34575b15611a2c576119ea9161183c611731565b5061185161184a82866117e2565b8714611610565b60405161185d816114fa565b8581528660208201526119586001600160401b036040519261187e84611529565b8884528180600460208701968b885260408101988952606081015f81526080820199847f000000000000000000000000000000000000000000000000000000000000000016998a8c5261190060a0850198877f0000000000000000000000000000000000000000000000000000000000000000168a5260c086019c8d52611a3c565b5f528460205260405f2093518455516001840155516002830155516003820155019651161682198654161785555116839067ffffffffffffffff60401b82549160401b169067ffffffffffffffff60401b1916179055565b51815467ffffffffffffffff60801b191660809190911b67ffffffffffffffff60801b161790555f848152600260205260409020906119e5907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906119e0838387611ed7565b611ed7565b611d27565b5f80556001545f198114610faa577f32911001007d8c9879b608566be8acc2184592f0a43706f804f285455bb0f52e91600160209201600155604051908152a3565b505050505f55565b50600161182b565b604051602080820192805184520151604082015260408152611802606082611544565b6001600160401b03815460401c16611a745750565b611a7d90611d27565b565b6001600160401b03809151169151168082115f14611a9b575090565b905090565b91908201809211610faa57565b60606001600160401b0360a08301511691015180821b916001828404911b1490151715610faa5761178391611aa0565b906001600160401b03809116911603906001600160401b038211610faa57565b9793946001600160401b0395610100989487949c9b98939c6101208c019d8c5260208c015260408b015260608a015260808901521660a087015260c08601521660e084015260018060a01b0316910152565b60208101516001600160401b03169081611b6a575050600190565b6001600160401b03611b8781808094511694168280421616611add565b16161090565b5115611b9557565b60405162461bcd60e51b81526020600482015260146024820152731b585d18da08191bd95cc81b9bdd08195e1a5cdd60621b6044820152606490fd5b516001600160401b031615611be257565b60405162461bcd60e51b815260206004820152601860248201527f636c6f636b206973206e6f7420696e697469616c697a656400000000000000006044820152606490fd5b60208101516001600160401b031680611c485750516001600160401b031690565b6001600160401b03611c67818061178395511693168280421616611add565b1690611e20565b60208101906001600160401b0382511615611cac576001600160401b0380611ca28180611783965116168280421616611add565b1691511690611e20565b60405162461bcd60e51b815260206004820152601c60248201527f612070617573656420636c6f636b2063616e27742074696d656f7574000000006044820152606490fd5b6001548015610faa575f19016001555f5260046020525f6004604082208281558260018201558260028201558260038201550155565b611d3361064082611565565b6001600160401b03811615611da9576001600160401b039081835460401c16155f14611d9257825467ffffffffffffffff60401b191642831660401b67ffffffffffffffff60401b161783555b166001600160401b0319825416179055565b825467ffffffffffffffff60401b19168355611d80565b60405162461bcd60e51b815260206004820152602560248201527f63616e277420616476616e636520636c6f636b2077697468206e6f2074696d65604482015264081b19599d60da1b6064820152608490fd5b9190811015611e0c5760051b0190565b634e487b7160e01b5f52603260045260245ffd5b6001600160401b03918216911681811015611e3c57505f919050565b6001600160401b0391611e4e91611add565b1690565b906001600160401b03811615611e885781546fffffffffffffffffffffffffffffffff19166001600160401b0391909116179055565b60405162461bcd60e51b815260206004820152602160248201527f63616e27742063726561746520636c6f636b2077697468207a65726f2074696d6044820152606560f81b6064820152608490fd5b9091611ef1611a7d93611eec61064085611565565b611f86565b6001600160401b0382166001600160401b038216115f14611f13575090611e52565b905090611e52565b91611f25916117e2565b03611f2c57565b60405162461bcd60e51b815260206004820152601e60248201527f6368696c64206e6f64657320646f6e2774206d6174636820706172656e7400006044820152606490fd5b6001600160401b03168015610faa575f190190565b906001600160401b038091169116016001600160401b038111610faa576001600160401b03169056fea2646970667358221220f302165059f551dc59f2bf5086c273bd2ead509cf8dfe22aaa3114681706d31f64736f6c634300081b0033a2646970667358221220105a0abc689642ff01bcf3523e143bce0b8f5802a7ae713039402cf0a335d61864736f6c634300081b0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80\x80`@R`\x046\x10\x15a\0\x12W_\x80\xFD[_5`\xE0\x1Cc\xFA\xB1sw\x14a\0%W_\x80\xFD[4a\x02,Wa\x01\xE06`\x03\x19\x01\x12a\x02,W`\xA45g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x80\x91\x03a\x02,W`\xE45\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x80\x93\x03a\x02,W`\xA06a\x01\x03\x19\x01\x12a\x02,W`\xA0\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x02\x18W`@Ra\x01\x045g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x02,W\x81Ra\x01$5\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x02,W` \x81\x01\x91\x82Ra\x01D5\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x02,W`@\x81\x01\x91\x82Ra\x01d5\x94g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x86\x03a\x02,W``\x82\x01\x95\x86Ra\x01\x845\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x02,W`\x80\x83\x01\x91\x82Ra\x01\xA45`\x01`\x01`\xA0\x1B\x03\x81\x16\x92\x90\x83\x90\x03a\x02,Wa\x01\xC45`\x01`\x01`\xA0\x1B\x03\x81\x16\x94\x90\x85\x90\x03a\x02,W`@Q\x98a\"\xC2\x93\x84\x8B\x01\x97\x8B\x89\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8A\x11\x17a\x02\x18Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8C\x9A\x81\x80\x98\x96\x81\x97\x95a\x01\xE0\x9F\x8F\x8F\x90\x91\x85\x99`\xE0\x93a\x021\x909`\x045\x82R`$5` \x83\x01R`D5`@\x83\x01R`d5``\x83\x01R`\x845`\x80\x83\x01R`\xA0\x82\x01R`\xC45`\xC0\x82\x01R\x01RQ\x16a\x01\0\x8C\x01RQ\x16a\x01 \x8A\x01RQ\x16a\x01@\x88\x01RQ\x16a\x01`\x86\x01RQ\x16a\x01\x80\x84\x01Ra\x01\xA0\x83\x01Ra\x01\xC0\x82\x01R\x03\x01\x90_\xF0\x80\x15a\x02\rW`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[`@Q=_\x82>=\x90\xFD[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[_\x80\xFD\xFEa\x02\x80`@R4a\x02\xB0W`@Qa\"\xC28\x81\x90\x03`\x1F\x81\x01`\x1F\x19\x16\x83\x01`\x01`\x01`@\x1B\x03\x81\x11\x84\x82\x10\x17a\x02\xB4W\x83\x92\x82\x91`@R\x839\x81\x01\x03\x90a\x01\xE0\x82\x12a\x02\xB0W\x80Q` \x82\x01Q`@\x83\x01Q\x91``\x84\x01Q\x93`\x80\x81\x01Q\x95a\0k`\xA0\x83\x01a\x02\xC8V[\x90`\xC0\x83\x01Q\x91`\xA0a\0\x80`\xE0\x86\x01a\x02\xC8V[\x92`\xFF\x19\x01\x12a\x02\xB0W`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17a\x02\xB4W`@Ra\0\xB3a\x01\0\x86\x01a\x02\xC8V[\x81Ra\0\xC2a\x01 \x86\x01a\x02\xC8V[` \x82\x01\x90\x81Ra\0\xD6a\x01@\x87\x01a\x02\xC8V[\x91`@\x81\x01\x92\x83Ra\0\xEBa\x01`\x88\x01a\x02\xC8V[\x94``\x82\x01\x95\x86Ra\x01\0a\x01\x80\x89\x01a\x02\xC8V[`\x80\x83\x01\x90\x81Ra\x01\xA0\x89\x01Q\x98\x90\x97\x90`\x01`\x01`\xA0\x1B\x03\x8A\x16\x8A\x03a\x02\xB0Wa\x01\xC0\x01Q\x99`\x01`\x01`\xA0\x1B\x03\x8B\x16\x8B\x03a\x02\xB0W`\x80R`\xA0R`\xC0RQ`\x01`\x01`@\x1B\x03\x90\x81\x16`\xE0R\x90Q\x81\x16a\x01\0R\x90Q\x81\x16a\x01 RB\x81\x16a\x01@R\x83Q\x81\x16\x91\x90\x81\x16\x82\x10\x15a\x02\xA9WP[a\x01`RQ`\x01`\x01`@\x1B\x03\x90\x81\x16a\x01\xA0R\x90Q\x16a\x01\x80Ra\x01\xC0Ra\x01\xE0Ra\x02\0Ra\x02 Ra\x02@Ra\x02`R`@Qa\x1F\xE5\x90\x81a\x02\xDD\x829`\x80Q\x81a\x0CY\x01R`\xA0Q\x81a\n8\x01R`\xC0Q\x81\x81\x81a\x08R\x01Ra\r,\x01R`\xE0Q\x81\x81\x81a\x08&\x01Ra\rh\x01Ra\x01\0Q\x81\x81\x81a\x08\x81\x01Ra\x18\xD2\x01Ra\x01 Q\x81\x81\x81a\x08\xB0\x01R\x81\x81a\x12J\x01Ra\x18\xA3\x01Ra\x01@Q\x81\x81\x81a\x13'\x01Ra\x17\xAC\x01Ra\x01`Q\x81\x81\x81a\x13S\x01Ra\x17\x8B\x01Ra\x01\x80Q\x81a\x19\x93\x01Ra\x01\xA0Q\x81a\x19\xB5\x01Ra\x01\xC0Q\x81\x81\x81a\r\xCD\x01Ra\x0E\xF3\x01Ra\x01\xE0Q\x81\x81\x81a\r\xFB\x01Ra\x0F!\x01Ra\x02\0Q\x81a\x16\x8D\x01Ra\x02 Q\x81\x81\x81a\x12\x8C\x01Ra\x16`\x01Ra\x02@Q\x81a\x16\xE0\x01Ra\x02`Q\x81\x81\x81a\x13\xD7\x01R\x81\x81a\x14\x05\x01Ra\x16\xB6\x01R\xF3[\x90Pa\x01wV[_\x80\xFD[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[Q\x90`\x01`\x01`@\x1B\x03\x82\x16\x82\x03a\x02\xB0WV\xFE`\x80`@R`\x046\x10\x15a\0\x11W_\x80\xFD[_5`\xE0\x1C\x80c\x1D[\xF7\x96\x14a\x11\xEBW\x80c?6\xE2\xFE\x14a\x0BpW\x80cQE#o\x14a\x0BAW\x80cj\x1A\x14\r\x14a\n\xD5W\x80cw\x95\x82\x0C\x14a\neW\x80c\x8A\xCC\x80-\x14a\n\x15W\x80c\x9A\x9BK+\x14a\x08\xD7W\x80c\xA1\xAF\x90k\x14a\x08\x07W\x80c\xB4\x01\x86\\\x14a\x05#W\x80c\xFC\xC6\x07}\x14a\x04\xB3W\x80c\xFC\xC8S\x91\x14a\x02\x9DWc\xFFx\xE0\xEE\x14a\0\x9DW_\x80\xFD[4a\x02\x99W6`\x03\x19\x01`\x80\x81\x12a\x02\x99W`@\x13a\x02\x99W`D5`d5a\0\xC4a\x17\x86V[\x80a\x02\x8FW[a\x02\x80Wa\0\xDFa\0\xDA6a\x15\x8DV[a\x1A=\x90\xFD[\x90c\xD7L\xBD\x1F`\xE0\x1B_R`\x04R`$R`D_\xFD[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7Ftree node doesn't exist\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[co\x05\xF4a`\xE1\x1B_R`\x04_\xFD[\x92PPP``\x81=``\x11a\x07}W[\x81a\x07V``\x93\x83a\x15DV[\x81\x01\x03\x12a\x02\x99W\x80Q\x80\x15\x15\x81\x03a\x02\x99W`@` \x83\x01Q\x92\x01Q\x90\x91\x90\x91\x87a\x05\xCDV[=\x91Pa\x07IV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x15`$\x82\x01Rt\x1BX]\x18\xDA\x08\x1A\\\xC8\x1B\x9B\xDD\x08\x19\x9A[\x9A\\\xDA\x19Y`Z\x1B`D\x82\x01R`d\x90\xFD[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x1BX]\x18\xDA\x08\x19\x1B\xD9\\\xDB\x89\xDD\x08\x19^\x1A\\\xDD`j\x1B`D\x82\x01R`d\x90\xFD[P`\x01T\x15a\x05]V[4a\x02\x99W_6`\x03\x19\x01\x12a\x02\x99W`\x80`@Q`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x81R`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16` \x82\x01R`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16`@\x82\x01R`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16``\x82\x01R\xF3[4a\x02\x99W`@6`\x03\x19\x01\x12a\x02\x99Wa\x08\xF0a\x17\x86V[\x80a\n\x0BW[a\x02\x80Wa\t\x06a\0\xDA6a\x15\x8DV[_R`\x04` Ra\t\x1Ca\0\xF5`@_ a\x15\xB5V[`\x045_\x90\x81R`\x02` R`@\x80\x82 `$5\x83R\x91 \x90a\tAa\x01&\x82a\x15eV[a\tMa\x01&\x83a\x15eV[a\tYa\x01C\x82a\x15eV[\x15\x91\x82a\t\xDDW[\x82\x15a\t\x8DW[PP\x15a\t~Wa\x01\xAEa\x01\xA9a\0\xDA6a\x15\x8DV[c=\x0B\x93\x07`\xE2\x1B_R`\x04_\xFD[\x90\x91Pa\t\x9Ca\x01C\x82a\x15eV[\x15\x91\x82a\t\xADW[PP\x81\x80a\thV[`\x01`\x01`@\x1B\x03\x91\x92Pa\t\xD1a\x01za\t\xCBa\x06@\x85\x94a\x15eV[\x94a\x15eV[\x16\x91\x16\x11\x15\x81\x80a\t\xA4V[\x91Pa\t\xEBa\x06@\x83a\x15eV[`\x01`\x01`@\x1B\x03\x80a\n\0a\x01z\x85a\x15eV[\x16\x91\x16\x11\x15\x91a\taV[P`\x01T\x15a\x08\xF6V[4a\x02\x99W` 6`\x03\x19\x01\x12a\x02\x99W` a\n]a\n6`\x045a\x17gV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90a\x1A\xADV[`@Q\x90\x81R\xF3[4a\x02\x99W` 6`\x03\x19\x01\x12a\x02\x99W```\x045_` `@Qa\n\x8A\x81a\x14\xFAV[\x82\x81R\x01R\x80_R`\x02` R`@_ \x90_R`\x03` Ra\n\xB1`@_ T\x91a\x15eV[\x90`\x01`\x01`@\x1B\x03` `@Q\x93\x82\x81Q\x16\x85R\x01Q\x16` \x83\x01R`@\x82\x01R\xF3[4a\x02\x99W`@6`\x03\x19\x01\x12a\x02\x99W`\x045_R`\x02` R` a\n\xFE`@_ a\x15eV[`$5_R`\x02\x82Ra\x0B\x1Ca\x0B\x16`@_ a\x15eV[\x91a\x1BOV[\x15\x90\x81\x15a\x0B0W[P`@Q\x90\x15\x15\x81R\xF3[a\x0B:\x91Pa\x1BOV[\x15\x82a\x0B%V[4a\x02\x99W_6`\x03\x19\x01\x12a\x02\x99W``a\x0B[a\x16+V[\x90`@Q\x92\x15\x15\x83R` \x83\x01R`@\x82\x01R\xF3[4a\x02\x99W6`\x03\x19\x01`\xC0\x81\x12a\x02\x99W`@\x13a\x02\x99W`d5`D5`\x845`\xA45`\x01`\x01`@\x1B\x03\x81\x11a\x02\x99Wa\x0B\xB1\x906\x90`\x04\x01a\x14\xCAV[\x91\x90a\x0B\xBBa\x17\x86V[\x80a\x11\xE1W[a\x02\x80Wa\x0B\xD1a\0\xDA6a\x15\x8DV[_R`\x04` R`@_ \x91`\x01`\x01`\x01`@\x1B\x03`\x80a\x0B\xF2\x86a\x15\xB5V[\x01Q\x16\x03a\x11\x91Wa\x0C\x08\x86\x86a\x03$\x86a\x15\xB5V[`\x045\x92\x83_R`\x02` R`@_ \x96a\x0CV`$5\x98\x89_R`\x02` Ra\x0CPa\x0CJ`@_ \x92a\x0C<\x81a\x1A_V[a\x0CE\x84a\x1A_V[a\x15eV[\x91a\x15eV[\x90a\x1A\x7FV[\x96\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91` a\x0C\x84\x85a\x15\xB5V[\x01Q\x82\x14a\x11\x14WP`\x04\x83\x01\x90a\x0C\xA8`\x01`\x01`\x01`@\x1B\x03\x84T\x16\x14a\x16\x10V[`\x02\x84\x01U\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90Ua\x0C\xC5\x82a\x15\xB5V[\x93`\x01`\xC0\x86\x01Q\x16\x15_\x14a\x11\x05W`@` \x86\x01Q\x95\x01Q[\x94\x96[`\x03\x84\x01T\x91\x82a\x0F\xD5WPPP\x80\x83\x03a\x0F\xBEWPa\n6a\r \x91[a\r\x18`\x01`\x01`@\x1B\x03`\x04\x83\x01T\x16\x15a\x16\x10V[\x83\x81Ua\x15\xB5V[`\x01`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x01\x90`\x01`\x01`@\x1B\x03\x82\x11a\x0F\xAAW_\x19`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x01\x96`\x01`\x01`@\x1B\x03\x88\x11a\x0F\xAAW`\x01`\x01`@\x1B\x03` \x98\x16`\x01`\x01`@\x1B\x03\x84\x16\x14_\x14a\x0E\xDBWa\r\xF6\x94`@Q\x99\x8A\x98\x89\x98c\x0Cg\x87M`\xE1\x1B\x8AR\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x97`\x04\x8B\x01a\x1A\xFDV[\x03\x81_\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xF1\x90\x81\x15a\x06\xC4W_\x91a\x0E\x99W[P`\x01`\x01`\xA0\x1B\x03\x16[`\x01`\x01`\xA0\x1B\x03\x16a\x0ESa\0\xDA6a\x15\x8DV[\x81_R`\x05` R`@_ U\x7F\x16kxg\0\xA6D\xDC\xEC\x96\xAA\x84\xA9,&\xEC\xFE\xE1\x1BP\x95d\t\xC8\xCC\x83a`B)\ry` a\x0E\x8Fa\0\xDA6a\x15\x8DV[\x92`@Q\x90\x81R\xA2\0[\x90P` \x81=` \x11a\x0E\xD3W[\x81a\x0E\xB4` \x93\x83a\x15DV[\x81\x01\x03\x12a\x02\x99WQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x02\x99W\x81a\x0E3V[=\x91Pa\x0E\xA7V[a\x0F\x1C\x94`@Q\x99\x8A\x98\x89\x98c\x19a\xE5\xCB`\xE3\x1B\x8AR\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x97`\x04\x8B\x01a\x1A\xFDV[\x03\x81_\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xF1\x90\x81\x15a\x06\xC4W_\x91a\x0FhW[P`\x01`\x01`\xA0\x1B\x03\x16a\x0E>V[\x90P` \x81=` \x11a\x0F\xA2W[\x81a\x0F\x83` \x93\x83a\x15DV[\x81\x01\x03\x12a\x02\x99WQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x02\x99W\x81a\x0FYV[=\x91Pa\x0FvV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x90Pcw:\xF8\x01`\xE0\x1B_R`\x04R`$R`D_\xFD[\x90\x91\x92P`\x04\x84\x01T`\x80\x1C\x90`\x01\x80`\x01`\x01`@\x1B\x03\x84\x16\x93\x16\x14_\x14a\x10\xFEW\x87\x92[_\x19\x85\x01\x94\x85\x11a\x0F\xAAW\x93\x91\x90\x86\x94a\x10\x16\x81\x84\x14a\x16\x10V[_\x93[\x83\x85\x10a\x10{WPPPPP\x03a\x106Wa\n6a\r \x91a\r\x01V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7Fcommitment state mismatch\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x90\x91\x92\x93\x95`\x01\x90\x81\x83\x89\x1C\x16\x15_\x14a\x10\xC9Wa\x10\x9A\x88\x85\x87a\x1D\xFCV[5`@Q\x90` \x82\x01\x92\x83R`@\x82\x01R`@\x81Ra\x10\xBA``\x82a\x15DV[Q\x90 \x96[\x01\x93\x92\x91\x90a\x10\x19V[a\x10\xD4\x88\x85\x87a\x1D\xFCV[5\x90`@Q\x90` \x82\x01\x92\x83R`@\x82\x01R`@\x81Ra\x10\xF5``\x82a\x15DV[Q\x90 \x96a\x10\xBFV[\x8A\x92a\x0F\xFBV[` `@\x86\x01Q\x95\x01Qa\x0C\xE0V[\x90P`\x04\x83\x01\x90a\x111`\x01`\x01`\x01`@\x1B\x03\x84T\x16\x14a\x16\x10V[`\x01\x84\x01U`\x01`\x01`@\x1B\x03\x19\x81T\x16\x90U`\x03\x82\x01\x80T\x90`\x01\x82\x01\x80\x92\x11a\x0F\xAAWUa\x11`\x82a\x15\xB5V[\x93`\x01`\xC0\x86\x01Q\x16\x15_\x14a\x11\x82W` `@\x86\x01Q\x95\x01Q[\x94\x96a\x0C\xE3V[`@` \x86\x01Q\x95\x01Qa\x11{V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7Fmatch is not ready to be finaliz`D\x82\x01Ra\x19Y`\xF2\x1B`d\x82\x01R`\x84\x90\xFD[P`\x01T\x15a\x0B\xC1V[4a\x02\x99W`\x806`\x03\x19\x01\x12a\x02\x99W`\x045`$5`\x01`\x01`@\x1B\x03\x81\x11a\x02\x99Wa\x12\x1E\x906\x90`\x04\x01a\x14\xCAV[`d5\x92`D5\x92\x91a\x12/a\x17\x86V[a\x14\xBBWa\x12=\x85\x85a\x17\xE2V[\x92\x82\x91`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90a\x12v\x81\x83\x14a\x16\x10V[_\x92[\x82\x84\x10a\x14{WPPPP\x82\x03a\x14*W\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x81\x14\x80\x15a\x14\x01W[\x15a\x13\xC8WP\x81_R`\x03` R`@_ U\x80_R`\x02` R`@_ `\x01`\x01`@\x1B\x03a\x12\xE5\x82a\x15eV[Q\x16a\x13\x8CW\x7F\xE557\xF2\x02\x91\x1D7mn(X5\xB2\xA2\x01n\x83\xE9\x9F\xBE\x84\xA0Y\xD4E\xCC+\xE4\x80rb\x93` \x93a\x13\x83\x92a\x13}a\x13w`\x01`\x01`@\x1B\x03a\x13P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16B\x83\x16a\x1A\xDDV[\x16\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x1E V[\x82a\x1ERV[\x84a\x18\x08V[`@Q\x90\x81R\xA1\0[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rs\x18\xDB\x1B\xD8\xDA\xC8\x1A\\\xC8\x1A[\x9A]\x1AX[\x1A^\x99Y`b\x1B`D\x82\x01R`d\x90\xFD[c\xCAZ\xCE\xB3`\xE0\x1B_R`\x04R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`$R`DR`d_\xFD[P\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x14a\x12\xB5V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7Fcommitment last state doesn't ma`D\x82\x01Rb\x0E\x8Cm`\xEB\x1B`d\x82\x01R`\x84\x90\xFD[\x90\x91\x92\x93`\x01\x90a\x14\x8D\x86\x85\x85a\x1D\xFCV[5\x90`@Q\x90` \x82\x01\x92\x83R`@\x82\x01R`@\x81Ra\x14\xAE``\x82a\x15DV[Q\x90 \x94\x01\x92\x91\x90a\x12yV[c\xACW\xBE\xEF`\xE0\x1B_R`\x04_\xFD[\x91\x81`\x1F\x84\x01\x12\x15a\x02\x99W\x825\x91`\x01`\x01`@\x1B\x03\x83\x11a\x02\x99W` \x80\x85\x01\x94\x84`\x05\x1B\x01\x01\x11a\x02\x99WV[`@\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17a\x15\x15W`@RV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`\xE0\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17a\x15\x15W`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17a\x15\x15W`@RV[\x90`@Qa\x15r\x81a\x14\xFAV[` `\x01`\x01`@\x1B\x03\x82\x94T\x81\x81\x16\x84R`@\x1C\x16\x91\x01RV[`@\x90`\x03\x19\x01\x12a\x02\x99W`@Q\x90a\x15\xA6\x82a\x14\xFAV[`\x045\x82R`$5` \x83\x01RV[\x90`@Qa\x15\xC2\x81a\x15)V[`\xC0`\x01`\x01`@\x1B\x03`\x04\x83\x95\x80T\x85R`\x01\x81\x01T` \x86\x01R`\x02\x81\x01T`@\x86\x01R`\x03\x81\x01T``\x86\x01R\x01T\x81\x81\x16`\x80\x85\x01R\x81\x81`@\x1C\x16`\xA0\x85\x01R`\x80\x1C\x16\x91\x01RV[\x15a\x16\x17WV[cNH{q`\xE0\x1B_R`\x01`\x04R`$_\xFD[a\x163a\x17\x86V[\x80a\x17\x13W[\x15a\x17\x0BW__T\x90\x81a\x17\x03W[a\x16Q\x90a\x16\x10V[\x80_R`\x03` R`@_ T\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x14_\x14a\x16\xB0WP`\x01\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x90V[a\x16\xDB\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x14a\x16\x10V[`\x01\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x90V[P`\x01a\x16HV[_\x90_\x90_\x90V[P`\x01T\x15a\x169V[Q\x90`\x01`\x01`@\x1B\x03\x82\x16\x82\x03a\x02\x99WV[`@Q\x90a\x17>\x82a\x15)V[_`\xC0\x83\x82\x81R\x82` \x82\x01R\x82`@\x82\x01R\x82``\x82\x01R\x82`\x80\x82\x01R\x82`\xA0\x82\x01R\x01RV[a\x17oa\x171V[P_R`\x04` Ra\x17\x83`@_ a\x15\xB5V[\x90V[a\x17\xD0\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x1F\x86V[`\x01`\x01`@\x1B\x03\x80B\x16\x91\x16\x11\x15\x90V[\x90`@Q\x90` \x82\x01\x92\x83R`@\x82\x01R`@\x81Ra\x18\x02``\x82a\x15DV[Q\x90 \x90V[\x92\x91\x90\x91a\x18 \x84a\x18\x1A\x83\x85a\x17\xE2V[\x14a\x16\x10V[_\x92_T\x93\x84a\x1A4W[\x15a\x1A,Wa\x19\xEA\x91a\x18\x14;\xCE\x0B\x8FX\x02\xA7\xAEq09@,\xF0\xA35\xD6\x18dsolcC\0\x08\x1B\x003", + ); + /**```solidity +struct TournamentParameters { uint64 levels; uint64 log2step; uint64 height; Time.Duration matchEffort; Time.Duration maxAllowance; } +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct TournamentParameters { + pub levels: u64, + pub log2step: u64, + pub height: u64, + pub matchEffort: ::RustType, + pub maxAllowance: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + Time::Duration, + Time::Duration, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u64, + u64, + u64, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: TournamentParameters) -> Self { + ( + value.levels, + value.log2step, + value.height, + value.matchEffort, + value.maxAllowance, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for TournamentParameters { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + levels: tuple.0, + log2step: tuple.1, + height: tuple.2, + matchEffort: tuple.3, + maxAllowance: tuple.4, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for TournamentParameters { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for TournamentParameters { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.levels), + as alloy_sol_types::SolType>::tokenize(&self.log2step), + as alloy_sol_types::SolType>::tokenize(&self.height), + ::tokenize( + &self.matchEffort, + ), + ::tokenize( + &self.maxAllowance, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for TournamentParameters { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for TournamentParameters { + const NAME: &'static str = "TournamentParameters"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "TournamentParameters(uint64 levels,uint64 log2step,uint64 height,uint64 matchEffort,uint64 maxAllowance)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word(&self.levels) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.log2step) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.height) + .0, + ::eip712_data_word( + &self.matchEffort, + ) + .0, + ::eip712_data_word( + &self.maxAllowance, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for TournamentParameters { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.levels, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.log2step, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.height, + ) + + ::topic_preimage_length( + &rust.matchEffort, + ) + + ::topic_preimage_length( + &rust.maxAllowance, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.levels, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.log2step, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.height, + out, + ); + ::encode_topic_preimage( + &rust.matchEffort, + out, + ); + ::encode_topic_preimage( + &rust.maxAllowance, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Constructor`. +```solidity +constructor(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct constructorCall {} + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Function with signature `instantiate(bytes32,bytes32,bytes32,bytes32,bytes32,uint64,uint256,uint64,(uint64,uint64,uint64,uint64,uint64),address,address)` and selector `0xfab17377`. +```solidity +function instantiate(Machine.Hash _initialHash, Tree.Node _contestedCommitmentOne, Machine.Hash _contestedFinalStateOne, Tree.Node _contestedCommitmentTwo, Machine.Hash _contestedFinalStateTwo, Time.Duration _allowance, uint256 _startCycle, uint64 _level, TournamentParameters memory _tournamentParameters, address _provider, address _tournamentFactory) external returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct instantiateCall { + pub _initialHash: ::RustType, + pub _contestedCommitmentOne: ::RustType, + pub _contestedFinalStateOne: ::RustType, + pub _contestedCommitmentTwo: ::RustType, + pub _contestedFinalStateTwo: ::RustType, + pub _allowance: ::RustType, + pub _startCycle: alloy::sol_types::private::primitives::aliases::U256, + pub _level: u64, + pub _tournamentParameters: ::RustType, + pub _provider: alloy::sol_types::private::Address, + pub _tournamentFactory: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`instantiate(bytes32,bytes32,bytes32,bytes32,bytes32,uint64,uint256,uint64,(uint64,uint64,uint64,uint64,uint64),address,address)`](instantiateCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct instantiateReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + Machine::Hash, + Tree::Node, + Machine::Hash, + Tree::Node, + Machine::Hash, + Time::Duration, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<64>, + TournamentParameters, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ::RustType, + ::RustType, + ::RustType, + ::RustType, + alloy::sol_types::private::primitives::aliases::U256, + u64, + ::RustType, + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: instantiateCall) -> Self { + ( + value._initialHash, + value._contestedCommitmentOne, + value._contestedFinalStateOne, + value._contestedCommitmentTwo, + value._contestedFinalStateTwo, + value._allowance, + value._startCycle, + value._level, + value._tournamentParameters, + value._provider, + value._tournamentFactory, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for instantiateCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _initialHash: tuple.0, + _contestedCommitmentOne: tuple.1, + _contestedFinalStateOne: tuple.2, + _contestedCommitmentTwo: tuple.3, + _contestedFinalStateTwo: tuple.4, + _allowance: tuple.5, + _startCycle: tuple.6, + _level: tuple.7, + _tournamentParameters: tuple.8, + _provider: tuple.9, + _tournamentFactory: tuple.10, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: instantiateReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for instantiateReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for instantiateCall { + type Parameters<'a> = ( + Machine::Hash, + Tree::Node, + Machine::Hash, + Tree::Node, + Machine::Hash, + Time::Duration, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<64>, + TournamentParameters, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = instantiateReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "instantiate(bytes32,bytes32,bytes32,bytes32,bytes32,uint64,uint256,uint64,(uint64,uint64,uint64,uint64,uint64),address,address)"; + const SELECTOR: [u8; 4] = [250u8, 177u8, 115u8, 119u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._initialHash, + ), + ::tokenize( + &self._contestedCommitmentOne, + ), + ::tokenize( + &self._contestedFinalStateOne, + ), + ::tokenize( + &self._contestedCommitmentTwo, + ), + ::tokenize( + &self._contestedFinalStateTwo, + ), + ::tokenize( + &self._allowance, + ), + as alloy_sol_types::SolType>::tokenize(&self._startCycle), + as alloy_sol_types::SolType>::tokenize(&self._level), + ::tokenize( + &self._tournamentParameters, + ), + ::tokenize( + &self._provider, + ), + ::tokenize( + &self._tournamentFactory, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`MiddleTournamentFactory`](self) function calls. + pub enum MiddleTournamentFactoryCalls { + instantiate(instantiateCall), + } + #[automatically_derived] + impl MiddleTournamentFactoryCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[250u8, 177u8, 115u8, 119u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MiddleTournamentFactoryCalls { + const NAME: &'static str = "MiddleTournamentFactoryCalls"; + const MIN_DATA_LENGTH: usize = 480usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::instantiate(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn instantiate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MiddleTournamentFactoryCalls::instantiate) + } + instantiate + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + DECODE_SHIMS[idx](data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::instantiate(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::instantiate(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`MiddleTournamentFactory`](self) contract instance. + +See the [wrapper's documentation](`MiddleTournamentFactoryInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MiddleTournamentFactoryInstance { + MiddleTournamentFactoryInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + MiddleTournamentFactoryInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + MiddleTournamentFactoryInstance::::deploy_builder(provider) + } + /**A [`MiddleTournamentFactory`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`MiddleTournamentFactory`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MiddleTournamentFactoryInstance< + T, + P, + N = alloy_contract::private::Ethereum, + > { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MiddleTournamentFactoryInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MiddleTournamentFactoryInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MiddleTournamentFactoryInstance { + /**Creates a new wrapper around an on-chain [`MiddleTournamentFactory`](self) contract instance. + +See the [wrapper's documentation](`MiddleTournamentFactoryInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MiddleTournamentFactoryInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MiddleTournamentFactoryInstance { + MiddleTournamentFactoryInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MiddleTournamentFactoryInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`instantiate`] function. + pub fn instantiate( + &self, + _initialHash: ::RustType, + _contestedCommitmentOne: ::RustType, + _contestedFinalStateOne: ::RustType, + _contestedCommitmentTwo: ::RustType, + _contestedFinalStateTwo: ::RustType, + _allowance: ::RustType, + _startCycle: alloy::sol_types::private::primitives::aliases::U256, + _level: u64, + _tournamentParameters: ::RustType, + _provider: alloy::sol_types::private::Address, + _tournamentFactory: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &instantiateCall { + _initialHash, + _contestedCommitmentOne, + _contestedFinalStateOne, + _contestedCommitmentTwo, + _contestedFinalStateTwo, + _allowance, + _startCycle, + _level, + _tournamentParameters, + _provider, + _tournamentFactory, + }, + ) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MiddleTournamentFactoryInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/prt/contracts/bindings-rs/src/contract/mod.rs b/prt/contracts/bindings-rs/src/contract/mod.rs index 7cbea44..1c7b171 100644 --- a/prt/contracts/bindings-rs/src/contract/mod.rs +++ b/prt/contracts/bindings-rs/src/contract/mod.rs @@ -3,8 +3,13 @@ //! This is autogenerated code. //! Do not manually edit these files. //! These files may be overwritten by the codegen system at any time. +pub mod bottomtournamentfactory; pub mod leaftournament; +pub mod middletournamentfactory; +pub mod multileveltournamentfactory; pub mod nonleaftournament; pub mod nonroottournament; pub mod roottournament; +pub mod singleleveltournamentfactory; +pub mod toptournamentfactory; pub mod tournament; diff --git a/prt/contracts/bindings-rs/src/contract/multileveltournamentfactory.rs b/prt/contracts/bindings-rs/src/contract/multileveltournamentfactory.rs new file mode 100644 index 0000000..e14ae95 --- /dev/null +++ b/prt/contracts/bindings-rs/src/contract/multileveltournamentfactory.rs @@ -0,0 +1,3613 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library Machine { + type Hash is bytes32; +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Machine { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Hash(alloy::sol_types::private::FixedBytes<32>); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue + for alloy::sol_types::private::FixedBytes<32> { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::FixedBytes<32>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl Hash { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: alloy::sol_types::private::FixedBytes<32>) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> alloy::sol_types::private::FixedBytes<32> { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Hash { + type RustType = alloy::sol_types::private::FixedBytes<32>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Hash { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Machine`](self) contract instance. + +See the [wrapper's documentation](`MachineInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MachineInstance { + MachineInstance::::new(address, provider) + } + /**A [`Machine`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Machine`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MachineInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MachineInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MachineInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MachineInstance { + /**Creates a new wrapper around an on-chain [`Machine`](self) contract instance. + +See the [wrapper's documentation](`MachineInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MachineInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MachineInstance { + MachineInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MachineInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MachineInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library Time { + type Duration is uint64; +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Time { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Duration(u64); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for u64 { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::Uint<64>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl Duration { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: u64) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> u64 { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Duration { + type RustType = u64; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Duration { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Time`](self) contract instance. + +See the [wrapper's documentation](`TimeInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(address: alloy_sol_types::private::Address, provider: P) -> TimeInstance { + TimeInstance::::new(address, provider) + } + /**A [`Time`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Time`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct TimeInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for TimeInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("TimeInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TimeInstance { + /**Creates a new wrapper around an on-chain [`Time`](self) contract instance. + +See the [wrapper's documentation](`TimeInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl TimeInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> TimeInstance { + TimeInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TimeInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TimeInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library Tree { + type Node is bytes32; +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Tree { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Node(alloy::sol_types::private::FixedBytes<32>); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue + for alloy::sol_types::private::FixedBytes<32> { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::FixedBytes<32>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl Node { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: alloy::sol_types::private::FixedBytes<32>) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> alloy::sol_types::private::FixedBytes<32> { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Node { + type RustType = alloy::sol_types::private::FixedBytes<32>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Node { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Tree`](self) contract instance. + +See the [wrapper's documentation](`TreeInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(address: alloy_sol_types::private::Address, provider: P) -> TreeInstance { + TreeInstance::::new(address, provider) + } + /**A [`Tree`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Tree`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct TreeInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for TreeInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("TreeInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TreeInstance { + /**Creates a new wrapper around an on-chain [`Tree`](self) contract instance. + +See the [wrapper's documentation](`TreeInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl TreeInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> TreeInstance { + TreeInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TreeInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TreeInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library Machine { + type Hash is bytes32; +} + +library Time { + type Duration is uint64; +} + +library Tree { + type Node is bytes32; +} + +interface MultiLevelTournamentFactory { + struct CommitmentStructure { + uint64 log2step; + uint64 height; + } + struct DisputeParameters { + TimeConstants timeConstants; + CommitmentStructure[] commitmentStructures; + } + struct TimeConstants { + Time.Duration matchEffort; + Time.Duration maxAllowance; + } + + error CommitmentStructuresArrayLengthTooLarge(); + error CommitmentStructuresArrayLengthTooSmall(); + + event tournamentCreated(address); + + constructor(address _topFactory, address _middleFactory, address _bottomFactory, DisputeParameters _disputeParameters); + + function instantiate(Machine.Hash _initialHash, address _provider) external returns (address); + function instantiateBottom(Machine.Hash _initialHash, Tree.Node _contestedCommitmentOne, Machine.Hash _contestedFinalStateOne, Tree.Node _contestedCommitmentTwo, Machine.Hash _contestedFinalStateTwo, Time.Duration _allowance, uint256 _startCycle, uint64 _level, address _provider) external returns (address); + function instantiateMiddle(Machine.Hash _initialHash, Tree.Node _contestedCommitmentOne, Machine.Hash _contestedFinalStateOne, Tree.Node _contestedCommitmentTwo, Machine.Hash _contestedFinalStateTwo, Time.Duration _allowance, uint256 _startCycle, uint64 _level, address _provider) external returns (address); + function instantiateTop(Machine.Hash _initialHash, address _provider) external returns (address); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_topFactory", + "type": "address", + "internalType": "contract TopTournamentFactory" + }, + { + "name": "_middleFactory", + "type": "address", + "internalType": "contract MiddleTournamentFactory" + }, + { + "name": "_bottomFactory", + "type": "address", + "internalType": "contract BottomTournamentFactory" + }, + { + "name": "_disputeParameters", + "type": "tuple", + "internalType": "struct DisputeParameters", + "components": [ + { + "name": "timeConstants", + "type": "tuple", + "internalType": "struct TimeConstants", + "components": [ + { + "name": "matchEffort", + "type": "uint64", + "internalType": "Time.Duration" + }, + { + "name": "maxAllowance", + "type": "uint64", + "internalType": "Time.Duration" + } + ] + }, + { + "name": "commitmentStructures", + "type": "tuple[]", + "internalType": "struct CommitmentStructure[]", + "components": [ + { + "name": "log2step", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "height", + "type": "uint64", + "internalType": "uint64" + } + ] + } + ] + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "instantiate", + "inputs": [ + { + "name": "_initialHash", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "_provider", + "type": "address", + "internalType": "contract IDataProvider" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ITournament" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "instantiateBottom", + "inputs": [ + { + "name": "_initialHash", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "_contestedCommitmentOne", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_contestedFinalStateOne", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "_contestedCommitmentTwo", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_contestedFinalStateTwo", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "_allowance", + "type": "uint64", + "internalType": "Time.Duration" + }, + { + "name": "_startCycle", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_level", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "_provider", + "type": "address", + "internalType": "contract IDataProvider" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract BottomTournament" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "instantiateMiddle", + "inputs": [ + { + "name": "_initialHash", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "_contestedCommitmentOne", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_contestedFinalStateOne", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "_contestedCommitmentTwo", + "type": "bytes32", + "internalType": "Tree.Node" + }, + { + "name": "_contestedFinalStateTwo", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "_allowance", + "type": "uint64", + "internalType": "Time.Duration" + }, + { + "name": "_startCycle", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_level", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "_provider", + "type": "address", + "internalType": "contract IDataProvider" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract MiddleTournament" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "instantiateTop", + "inputs": [ + { + "name": "_initialHash", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "_provider", + "type": "address", + "internalType": "contract IDataProvider" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract TopTournament" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "tournamentCreated", + "inputs": [ + { + "name": "", + "type": "address", + "indexed": false, + "internalType": "contract Tournament" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "CommitmentStructuresArrayLengthTooLarge", + "inputs": [] + }, + { + "type": "error", + "name": "CommitmentStructuresArrayLengthTooSmall", + "inputs": [] + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod MultiLevelTournamentFactory { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6101806040523461034757610b348038038061001a8161036a565b928339810190608081830312610347578051906001600160a01b03821682036103475760208101516001600160a01b0381168103610347576040820151916001600160a01b0383168303610347576060810151906001600160401b038211610347570192838503936060851261034757604061009461034b565b9512610347576100a261034b565b6100ab8261038f565b81526100b96020830161038f565b602082015285526040810151906001600160401b038211610347570185601f82011215610347578051906001600160401b0382116102d95761010060208360051b0161036a565b9660208089858152019360061b8301019181831161034757602001925b82841061030b57505050506020840194855260805260a05260c0526001825151106102fc578151516001600160401b03106102ed578151516001600160401b0390811660e0528151518116610100529051602001518116610120528151610183906103a3565b5151166101405280516001600160401b03906020906101a1906103a3565b5101511661016052518051906801000000000000000082116102d9575f54825f558083106102a9575b505f80805291905f516020610b145f395f51905f52906020015b82841061025a5760405161074f90816103c58239608051816102d6015260a0518160e1015260c051816103da015260e0518181816101b0015261068c01526101005181818161023a01526106c201526101205181818161026901526106f1015261014051816101dc0152610160518161020b0152f35b8051805183546020928301516fffffffffffffffff000000000000000060409190911b166001600160401b039092166001600160801b03199091161717835560019485019490920191016101e4565b5f80525f516020610b145f395f51905f529081019083015b8181106102ce57506101ca565b5f81556001016102c1565b634e487b7160e01b5f52604160045260245ffd5b630726799d60e31b5f5260045ffd5b633258c5cd60e21b5f5260045ffd5b60408483031261034757602060409161032261034b565b61032b8761038f565b815261033883880161038f565b8382015281520193019261011d565b5f80fd5b60408051919082016001600160401b038111838210176102d957604052565b6040519190601f01601f191682016001600160401b038111838210176102d957604052565b51906001600160401b038216820361034757565b8051156103b05760200190565b634e487b7160e01b5f52603260045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c9081630b64d79b1461041d5750806318cf0e9a1461034857806370cabc6e146101775763cb0f2e5814610048575f80fd5b346101605760046001600160401b036100ba81610064366104e3565b9a9798949195909661007888959495610648565b996040519d8e63fab1737760e01b8152015260248d015260448c015260648b015260848a01521660a488015260c48701521660e48501526101048401906105b6565b6001600160a01b039081166101a4830152306101c483015260209082906101e49082905f907f0000000000000000000000000000000000000000000000000000000000000000165af1801561016c575f90610125575b6040516001600160a01b039091168152602090f35b506020813d602011610164575b8161013f60209383610576565b8101031261016057516001600160a01b038116810361016057602090610110565b5f80fd5b3d9150610132565b6040513d5f823e3d90fd5b34610160576040366003190112610160576101906104cd565b6101986105f4565b50604051906101a682610547565b6001600160401b037f00000000000000000000000000000000000000000000000000000000000000001682526001600160401b037f00000000000000000000000000000000000000000000000000000000000000001660208301526001600160401b037f00000000000000000000000000000000000000000000000000000000000000001660408301526001600160401b037f00000000000000000000000000000000000000000000000000000000000000001660608301526001600160401b037f00000000000000000000000000000000000000000000000000000000000000001660808301526102b16040519263085a736360e41b8452600435600485015260248401906105b6565b6001600160a01b0390811660c48301523060e483015260209082906101049082905f907f0000000000000000000000000000000000000000000000000000000000000000165af1801561016c576020915f9161031b575b506040516001600160a01b039091168152f35b61033b9150823d8411610341575b6103338183610576565b810190610597565b82610308565b503d610329565b346101605760046001600160401b036103ba81610364366104e3565b9a9798949195909661037888959495610648565b996040519d8e6334d0ed8360e21b8152015260248d015260448c015260648b015260848a01521660a488015260c48701521660e48501526101048401906105b6565b6001600160a01b039081166101a483015260209082906101c49082905f907f0000000000000000000000000000000000000000000000000000000000000000165af1801561016c575f90610125576040516001600160a01b039091168152602090f35b34610160576040366003190112610160576104366104cd565b6338655e3760e11b825260048035908301526001600160a01b031660248201526020816044815f305af1801561016c576020915f916104b0575b506040516001600160a01b03909116808252907f68952387ba736c9928265c63b28112a625425d9dfbe48705686ea5bed1f92efb908390a1604051908152f35b6104c79150823d8411610341576103338183610576565b82610470565b602435906001600160a01b038216820361016057565b61012090600319011261016057600435906024359060443590606435906084359060a4356001600160401b0381168103610160579060c4359060e4356001600160401b03811681036101605790610104356001600160a01b03811681036101605790565b60a081019081106001600160401b0382111761056257604052565b634e487b7160e01b5f52604160045260245ffd5b90601f801991011681019081106001600160401b0382111761056257604052565b9081602091031261016057516001600160a01b03811681036101605790565b6001600160401b0360808092828151168552826020820151166020860152826040820151166040860152826060820151166060860152015116910152565b6040519061060182610547565b5f6080838281528260208201528260408201528260608201520152565b5f54811015610634575f805260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b6106506105f4565b506001600160401b0361066f816106668461061e565b5054169261061e565b505460401c166040519161068283610547565b6001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168352602083015260408201526001600160401b037f00000000000000000000000000000000000000000000000000000000000000001660608201526001600160401b037f00000000000000000000000000000000000000000000000000000000000000001660808201529056fea264697066735822122097b876decd0968bffa8aa040f5327ebb29847e0221db2e5bbcf4f51dab386c5a64736f6c634300081b0033290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"a\x01\x80`@R4a\x03GWa\x0B4\x808\x03\x80a\0\x1A\x81a\x03jV[\x92\x839\x81\x01\x90`\x80\x81\x83\x03\x12a\x03GW\x80Q\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x03GW` \x81\x01Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x03GW`@\x82\x01Q\x91`\x01`\x01`\xA0\x1B\x03\x83\x16\x83\x03a\x03GW``\x81\x01Q\x90`\x01`\x01`@\x1B\x03\x82\x11a\x03GW\x01\x92\x83\x85\x03\x93``\x85\x12a\x03GW`@a\0\x94a\x03KV[\x95\x12a\x03GWa\0\xA2a\x03KV[a\0\xAB\x82a\x03\x8FV[\x81Ra\0\xB9` \x83\x01a\x03\x8FV[` \x82\x01R\x85R`@\x81\x01Q\x90`\x01`\x01`@\x1B\x03\x82\x11a\x03GW\x01\x85`\x1F\x82\x01\x12\x15a\x03GW\x80Q\x90`\x01`\x01`@\x1B\x03\x82\x11a\x02\xD9Wa\x01\0` \x83`\x05\x1B\x01a\x03jV[\x96` \x80\x89\x85\x81R\x01\x93`\x06\x1B\x83\x01\x01\x91\x81\x83\x11a\x03GW` \x01\x92[\x82\x84\x10a\x03\x0BWPPPP` \x84\x01\x94\x85R`\x80R`\xA0R`\xC0R`\x01\x82QQ\x10a\x02\xFCW\x81QQ`\x01`\x01`@\x1B\x03\x10a\x02\xEDW\x81QQ`\x01`\x01`@\x1B\x03\x90\x81\x16`\xE0R\x81QQ\x81\x16a\x01\0R\x90Q` \x01Q\x81\x16a\x01 R\x81Qa\x01\x83\x90a\x03\xA3V[QQ\x16a\x01@R\x80Q`\x01`\x01`@\x1B\x03\x90` \x90a\x01\xA1\x90a\x03\xA3V[Q\x01Q\x16a\x01`RQ\x80Q\x90h\x01\0\0\0\0\0\0\0\0\x82\x11a\x02\xD9W_T\x82_U\x80\x83\x10a\x02\xA9W[P_\x80\x80R\x91\x90_Q` a\x0B\x14_9_Q\x90_R\x90` \x01[\x82\x84\x10a\x02ZW`@Qa\x07O\x90\x81a\x03\xC5\x829`\x80Q\x81a\x02\xD6\x01R`\xA0Q\x81`\xE1\x01R`\xC0Q\x81a\x03\xDA\x01R`\xE0Q\x81\x81\x81a\x01\xB0\x01Ra\x06\x8C\x01Ra\x01\0Q\x81\x81\x81a\x02:\x01Ra\x06\xC2\x01Ra\x01 Q\x81\x81\x81a\x02i\x01Ra\x06\xF1\x01Ra\x01@Q\x81a\x01\xDC\x01Ra\x01`Q\x81a\x02\x0B\x01R\xF3[\x80Q\x80Q\x83T` \x92\x83\x01Qo\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0`@\x91\x90\x91\x1B\x16`\x01`\x01`@\x1B\x03\x90\x92\x16`\x01`\x01`\x80\x1B\x03\x19\x90\x91\x16\x17\x17\x83U`\x01\x94\x85\x01\x94\x90\x92\x01\x91\x01a\x01\xE4V[_\x80R_Q` a\x0B\x14_9_Q\x90_R\x90\x81\x01\x90\x83\x01[\x81\x81\x10a\x02\xCEWPa\x01\xCAV[_\x81U`\x01\x01a\x02\xC1V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[c\x07&y\x9D`\xE3\x1B_R`\x04_\xFD[c2X\xC5\xCD`\xE2\x1B_R`\x04_\xFD[`@\x84\x83\x03\x12a\x03GW` `@\x91a\x03\"a\x03KV[a\x03+\x87a\x03\x8FV[\x81Ra\x038\x83\x88\x01a\x03\x8FV[\x83\x82\x01R\x81R\x01\x93\x01\x92a\x01\x1DV[_\x80\xFD[`@\x80Q\x91\x90\x82\x01`\x01`\x01`@\x1B\x03\x81\x11\x83\x82\x10\x17a\x02\xD9W`@RV[`@Q\x91\x90`\x1F\x01`\x1F\x19\x16\x82\x01`\x01`\x01`@\x1B\x03\x81\x11\x83\x82\x10\x17a\x02\xD9W`@RV[Q\x90`\x01`\x01`@\x1B\x03\x82\x16\x82\x03a\x03GWV[\x80Q\x15a\x03\xB0W` \x01\x90V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD\xFE`\x80\x80`@R`\x046\x10\x15a\0\x12W_\x80\xFD[_5`\xE0\x1C\x90\x81c\x0Bd\xD7\x9B\x14a\x04\x1DWP\x80c\x18\xCF\x0E\x9A\x14a\x03HW\x80cp\xCA\xBCn\x14a\x01wWc\xCB\x0F.X\x14a\0HW_\x80\xFD[4a\x01`W`\x04`\x01`\x01`@\x1B\x03a\0\xBA\x81a\0d6a\x04\xE3V[\x9A\x97\x98\x94\x91\x95\x90\x96a\0x\x88\x95\x94\x95a\x06HV[\x99`@Q\x9D\x8Ec\xFA\xB1sw`\xE0\x1B\x81R\x01R`$\x8D\x01R`D\x8C\x01R`d\x8B\x01R`\x84\x8A\x01R\x16`\xA4\x88\x01R`\xC4\x87\x01R\x16`\xE4\x85\x01Ra\x01\x04\x84\x01\x90a\x05\xB6V[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16a\x01\xA4\x83\x01R0a\x01\xC4\x83\x01R` \x90\x82\x90a\x01\xE4\x90\x82\x90_\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16Z\xF1\x80\x15a\x01lW_\x90a\x01%W[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[P` \x81=` \x11a\x01dW[\x81a\x01?` \x93\x83a\x05vV[\x81\x01\x03\x12a\x01`WQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x01`W` \x90a\x01\x10V[_\x80\xFD[=\x91Pa\x012V[`@Q=_\x82>=\x90\xFD[4a\x01`W`@6`\x03\x19\x01\x12a\x01`Wa\x01\x90a\x04\xCDV[a\x01\x98a\x05\xF4V[P`@Q\x90a\x01\xA6\x82a\x05GV[`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x82R`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16` \x83\x01R`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16`@\x83\x01R`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16``\x83\x01R`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16`\x80\x83\x01Ra\x02\xB1`@Q\x92c\x08Zsc`\xE4\x1B\x84R`\x045`\x04\x85\x01R`$\x84\x01\x90a\x05\xB6V[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\xC4\x83\x01R0`\xE4\x83\x01R` \x90\x82\x90a\x01\x04\x90\x82\x90_\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16Z\xF1\x80\x15a\x01lW` \x91_\x91a\x03\x1BW[P`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R\xF3[a\x03;\x91P\x82=\x84\x11a\x03AW[a\x033\x81\x83a\x05vV[\x81\x01\x90a\x05\x97V[\x82a\x03\x08V[P=a\x03)V[4a\x01`W`\x04`\x01`\x01`@\x1B\x03a\x03\xBA\x81a\x03d6a\x04\xE3V[\x9A\x97\x98\x94\x91\x95\x90\x96a\x03x\x88\x95\x94\x95a\x06HV[\x99`@Q\x9D\x8Ec4\xD0\xED\x83`\xE2\x1B\x81R\x01R`$\x8D\x01R`D\x8C\x01R`d\x8B\x01R`\x84\x8A\x01R\x16`\xA4\x88\x01R`\xC4\x87\x01R\x16`\xE4\x85\x01Ra\x01\x04\x84\x01\x90a\x05\xB6V[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16a\x01\xA4\x83\x01R` \x90\x82\x90a\x01\xC4\x90\x82\x90_\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16Z\xF1\x80\x15a\x01lW_\x90a\x01%W`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x01`W`@6`\x03\x19\x01\x12a\x01`Wa\x046a\x04\xCDV[c8e^7`\xE1\x1B\x82R`\x04\x805\x90\x83\x01R`\x01`\x01`\xA0\x1B\x03\x16`$\x82\x01R` \x81`D\x81_0Z\xF1\x80\x15a\x01lW` \x91_\x91a\x04\xB0W[P`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x80\x82R\x90\x7Fh\x95#\x87\xBAsl\x99(&\\c\xB2\x81\x12\xA6%B]\x9D\xFB\xE4\x87\x05hn\xA5\xBE\xD1\xF9.\xFB\x90\x83\x90\xA1`@Q\x90\x81R\xF3[a\x04\xC7\x91P\x82=\x84\x11a\x03AWa\x033\x81\x83a\x05vV[\x82a\x04pV[`$5\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x01`WV[a\x01 \x90`\x03\x19\x01\x12a\x01`W`\x045\x90`$5\x90`D5\x90`d5\x90`\x845\x90`\xA45`\x01`\x01`@\x1B\x03\x81\x16\x81\x03a\x01`W\x90`\xC45\x90`\xE45`\x01`\x01`@\x1B\x03\x81\x16\x81\x03a\x01`W\x90a\x01\x045`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x01`W\x90V[`\xA0\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17a\x05bW`@RV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17a\x05bW`@RV[\x90\x81` \x91\x03\x12a\x01`WQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x01`W\x90V[`\x01`\x01`@\x1B\x03`\x80\x80\x92\x82\x81Q\x16\x85R\x82` \x82\x01Q\x16` \x86\x01R\x82`@\x82\x01Q\x16`@\x86\x01R\x82``\x82\x01Q\x16``\x86\x01R\x01Q\x16\x91\x01RV[`@Q\x90a\x06\x01\x82a\x05GV[_`\x80\x83\x82\x81R\x82` \x82\x01R\x82`@\x82\x01R\x82``\x82\x01R\x01RV[_T\x81\x10\x15a\x064W_\x80R` _ \x01\x90_\x90V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[a\x06Pa\x05\xF4V[P`\x01`\x01`@\x1B\x03a\x06o\x81a\x06f\x84a\x06\x1EV[PT\x16\x92a\x06\x1EV[PT`@\x1C\x16`@Q\x91a\x06\x82\x83a\x05GV[`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x83R` \x83\x01R`@\x82\x01R`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16``\x82\x01R`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16`\x80\x82\x01R\x90V\xFE\xA2dipfsX\"\x12 \x97\xB8v\xDE\xCD\th\xBF\xFA\x8A\xA0@\xF52~\xBB)\x84~\x02!\xDB.[\xBC\xF4\xF5\x1D\xAB8lZdsolcC\0\x08\x1B\x003)\r\xEC\xD9T\x8Bb\xA8\xD6\x03E\xA9\x888o\xC8K\xA6\xBC\x95H@\x08\xF66/\x93\x16\x0E\xF3\xE5c", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x6080806040526004361015610012575f80fd5b5f3560e01c9081630b64d79b1461041d5750806318cf0e9a1461034857806370cabc6e146101775763cb0f2e5814610048575f80fd5b346101605760046001600160401b036100ba81610064366104e3565b9a9798949195909661007888959495610648565b996040519d8e63fab1737760e01b8152015260248d015260448c015260648b015260848a01521660a488015260c48701521660e48501526101048401906105b6565b6001600160a01b039081166101a4830152306101c483015260209082906101e49082905f907f0000000000000000000000000000000000000000000000000000000000000000165af1801561016c575f90610125575b6040516001600160a01b039091168152602090f35b506020813d602011610164575b8161013f60209383610576565b8101031261016057516001600160a01b038116810361016057602090610110565b5f80fd5b3d9150610132565b6040513d5f823e3d90fd5b34610160576040366003190112610160576101906104cd565b6101986105f4565b50604051906101a682610547565b6001600160401b037f00000000000000000000000000000000000000000000000000000000000000001682526001600160401b037f00000000000000000000000000000000000000000000000000000000000000001660208301526001600160401b037f00000000000000000000000000000000000000000000000000000000000000001660408301526001600160401b037f00000000000000000000000000000000000000000000000000000000000000001660608301526001600160401b037f00000000000000000000000000000000000000000000000000000000000000001660808301526102b16040519263085a736360e41b8452600435600485015260248401906105b6565b6001600160a01b0390811660c48301523060e483015260209082906101049082905f907f0000000000000000000000000000000000000000000000000000000000000000165af1801561016c576020915f9161031b575b506040516001600160a01b039091168152f35b61033b9150823d8411610341575b6103338183610576565b810190610597565b82610308565b503d610329565b346101605760046001600160401b036103ba81610364366104e3565b9a9798949195909661037888959495610648565b996040519d8e6334d0ed8360e21b8152015260248d015260448c015260648b015260848a01521660a488015260c48701521660e48501526101048401906105b6565b6001600160a01b039081166101a483015260209082906101c49082905f907f0000000000000000000000000000000000000000000000000000000000000000165af1801561016c575f90610125576040516001600160a01b039091168152602090f35b34610160576040366003190112610160576104366104cd565b6338655e3760e11b825260048035908301526001600160a01b031660248201526020816044815f305af1801561016c576020915f916104b0575b506040516001600160a01b03909116808252907f68952387ba736c9928265c63b28112a625425d9dfbe48705686ea5bed1f92efb908390a1604051908152f35b6104c79150823d8411610341576103338183610576565b82610470565b602435906001600160a01b038216820361016057565b61012090600319011261016057600435906024359060443590606435906084359060a4356001600160401b0381168103610160579060c4359060e4356001600160401b03811681036101605790610104356001600160a01b03811681036101605790565b60a081019081106001600160401b0382111761056257604052565b634e487b7160e01b5f52604160045260245ffd5b90601f801991011681019081106001600160401b0382111761056257604052565b9081602091031261016057516001600160a01b03811681036101605790565b6001600160401b0360808092828151168552826020820151166020860152826040820151166040860152826060820151166060860152015116910152565b6040519061060182610547565b5f6080838281528260208201528260408201528260608201520152565b5f54811015610634575f805260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b6106506105f4565b506001600160401b0361066f816106668461061e565b5054169261061e565b505460401c166040519161068283610547565b6001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168352602083015260408201526001600160401b037f00000000000000000000000000000000000000000000000000000000000000001660608201526001600160401b037f00000000000000000000000000000000000000000000000000000000000000001660808201529056fea264697066735822122097b876decd0968bffa8aa040f5327ebb29847e0221db2e5bbcf4f51dab386c5a64736f6c634300081b0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80\x80`@R`\x046\x10\x15a\0\x12W_\x80\xFD[_5`\xE0\x1C\x90\x81c\x0Bd\xD7\x9B\x14a\x04\x1DWP\x80c\x18\xCF\x0E\x9A\x14a\x03HW\x80cp\xCA\xBCn\x14a\x01wWc\xCB\x0F.X\x14a\0HW_\x80\xFD[4a\x01`W`\x04`\x01`\x01`@\x1B\x03a\0\xBA\x81a\0d6a\x04\xE3V[\x9A\x97\x98\x94\x91\x95\x90\x96a\0x\x88\x95\x94\x95a\x06HV[\x99`@Q\x9D\x8Ec\xFA\xB1sw`\xE0\x1B\x81R\x01R`$\x8D\x01R`D\x8C\x01R`d\x8B\x01R`\x84\x8A\x01R\x16`\xA4\x88\x01R`\xC4\x87\x01R\x16`\xE4\x85\x01Ra\x01\x04\x84\x01\x90a\x05\xB6V[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16a\x01\xA4\x83\x01R0a\x01\xC4\x83\x01R` \x90\x82\x90a\x01\xE4\x90\x82\x90_\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16Z\xF1\x80\x15a\x01lW_\x90a\x01%W[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[P` \x81=` \x11a\x01dW[\x81a\x01?` \x93\x83a\x05vV[\x81\x01\x03\x12a\x01`WQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x01`W` \x90a\x01\x10V[_\x80\xFD[=\x91Pa\x012V[`@Q=_\x82>=\x90\xFD[4a\x01`W`@6`\x03\x19\x01\x12a\x01`Wa\x01\x90a\x04\xCDV[a\x01\x98a\x05\xF4V[P`@Q\x90a\x01\xA6\x82a\x05GV[`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x82R`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16` \x83\x01R`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16`@\x83\x01R`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16``\x83\x01R`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16`\x80\x83\x01Ra\x02\xB1`@Q\x92c\x08Zsc`\xE4\x1B\x84R`\x045`\x04\x85\x01R`$\x84\x01\x90a\x05\xB6V[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\xC4\x83\x01R0`\xE4\x83\x01R` \x90\x82\x90a\x01\x04\x90\x82\x90_\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16Z\xF1\x80\x15a\x01lW` \x91_\x91a\x03\x1BW[P`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R\xF3[a\x03;\x91P\x82=\x84\x11a\x03AW[a\x033\x81\x83a\x05vV[\x81\x01\x90a\x05\x97V[\x82a\x03\x08V[P=a\x03)V[4a\x01`W`\x04`\x01`\x01`@\x1B\x03a\x03\xBA\x81a\x03d6a\x04\xE3V[\x9A\x97\x98\x94\x91\x95\x90\x96a\x03x\x88\x95\x94\x95a\x06HV[\x99`@Q\x9D\x8Ec4\xD0\xED\x83`\xE2\x1B\x81R\x01R`$\x8D\x01R`D\x8C\x01R`d\x8B\x01R`\x84\x8A\x01R\x16`\xA4\x88\x01R`\xC4\x87\x01R\x16`\xE4\x85\x01Ra\x01\x04\x84\x01\x90a\x05\xB6V[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16a\x01\xA4\x83\x01R` \x90\x82\x90a\x01\xC4\x90\x82\x90_\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16Z\xF1\x80\x15a\x01lW_\x90a\x01%W`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x01`W`@6`\x03\x19\x01\x12a\x01`Wa\x046a\x04\xCDV[c8e^7`\xE1\x1B\x82R`\x04\x805\x90\x83\x01R`\x01`\x01`\xA0\x1B\x03\x16`$\x82\x01R` \x81`D\x81_0Z\xF1\x80\x15a\x01lW` \x91_\x91a\x04\xB0W[P`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x80\x82R\x90\x7Fh\x95#\x87\xBAsl\x99(&\\c\xB2\x81\x12\xA6%B]\x9D\xFB\xE4\x87\x05hn\xA5\xBE\xD1\xF9.\xFB\x90\x83\x90\xA1`@Q\x90\x81R\xF3[a\x04\xC7\x91P\x82=\x84\x11a\x03AWa\x033\x81\x83a\x05vV[\x82a\x04pV[`$5\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x01`WV[a\x01 \x90`\x03\x19\x01\x12a\x01`W`\x045\x90`$5\x90`D5\x90`d5\x90`\x845\x90`\xA45`\x01`\x01`@\x1B\x03\x81\x16\x81\x03a\x01`W\x90`\xC45\x90`\xE45`\x01`\x01`@\x1B\x03\x81\x16\x81\x03a\x01`W\x90a\x01\x045`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x01`W\x90V[`\xA0\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17a\x05bW`@RV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17a\x05bW`@RV[\x90\x81` \x91\x03\x12a\x01`WQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x01`W\x90V[`\x01`\x01`@\x1B\x03`\x80\x80\x92\x82\x81Q\x16\x85R\x82` \x82\x01Q\x16` \x86\x01R\x82`@\x82\x01Q\x16`@\x86\x01R\x82``\x82\x01Q\x16``\x86\x01R\x01Q\x16\x91\x01RV[`@Q\x90a\x06\x01\x82a\x05GV[_`\x80\x83\x82\x81R\x82` \x82\x01R\x82`@\x82\x01R\x82``\x82\x01R\x01RV[_T\x81\x10\x15a\x064W_\x80R` _ \x01\x90_\x90V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[a\x06Pa\x05\xF4V[P`\x01`\x01`@\x1B\x03a\x06o\x81a\x06f\x84a\x06\x1EV[PT\x16\x92a\x06\x1EV[PT`@\x1C\x16`@Q\x91a\x06\x82\x83a\x05GV[`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x83R` \x83\x01R`@\x82\x01R`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16``\x82\x01R`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16`\x80\x82\x01R\x90V\xFE\xA2dipfsX\"\x12 \x97\xB8v\xDE\xCD\th\xBF\xFA\x8A\xA0@\xF52~\xBB)\x84~\x02!\xDB.[\xBC\xF4\xF5\x1D\xAB8lZdsolcC\0\x08\x1B\x003", + ); + /**```solidity +struct CommitmentStructure { uint64 log2step; uint64 height; } +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct CommitmentStructure { + pub log2step: u64, + pub height: u64, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u64, u64); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: CommitmentStructure) -> Self { + (value.log2step, value.height) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for CommitmentStructure { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + log2step: tuple.0, + height: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for CommitmentStructure { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for CommitmentStructure { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.log2step), + as alloy_sol_types::SolType>::tokenize(&self.height), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for CommitmentStructure { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for CommitmentStructure { + const NAME: &'static str = "CommitmentStructure"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "CommitmentStructure(uint64 log2step,uint64 height)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word(&self.log2step) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.height) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for CommitmentStructure { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.log2step, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.height, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.log2step, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.height, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct DisputeParameters { TimeConstants timeConstants; CommitmentStructure[] commitmentStructures; } +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct DisputeParameters { + pub timeConstants: ::RustType, + pub commitmentStructures: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + TimeConstants, + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: DisputeParameters) -> Self { + (value.timeConstants, value.commitmentStructures) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for DisputeParameters { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + timeConstants: tuple.0, + commitmentStructures: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for DisputeParameters { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for DisputeParameters { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.timeConstants, + ), + as alloy_sol_types::SolType>::tokenize(&self.commitmentStructures), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for DisputeParameters { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for DisputeParameters { + const NAME: &'static str = "DisputeParameters"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "DisputeParameters(TimeConstants timeConstants,CommitmentStructure[] commitmentStructures)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + let mut components = alloy_sol_types::private::Vec::with_capacity(2); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.timeConstants, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.commitmentStructures, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for DisputeParameters { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.timeConstants, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.commitmentStructures, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.timeConstants, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.commitmentStructures, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct TimeConstants { Time.Duration matchEffort; Time.Duration maxAllowance; } +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct TimeConstants { + pub matchEffort: ::RustType, + pub maxAllowance: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (Time::Duration, Time::Duration); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: TimeConstants) -> Self { + (value.matchEffort, value.maxAllowance) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for TimeConstants { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + matchEffort: tuple.0, + maxAllowance: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for TimeConstants { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for TimeConstants { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.matchEffort, + ), + ::tokenize( + &self.maxAllowance, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for TimeConstants { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for TimeConstants { + const NAME: &'static str = "TimeConstants"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "TimeConstants(uint64 matchEffort,uint64 maxAllowance)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.matchEffort, + ) + .0, + ::eip712_data_word( + &self.maxAllowance, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for TimeConstants { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.matchEffort, + ) + + ::topic_preimage_length( + &rust.maxAllowance, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.matchEffort, + out, + ); + ::encode_topic_preimage( + &rust.maxAllowance, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Custom error with signature `CommitmentStructuresArrayLengthTooLarge()` and selector `0x3933cce8`. +```solidity +error CommitmentStructuresArrayLengthTooLarge(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct CommitmentStructuresArrayLengthTooLarge {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: CommitmentStructuresArrayLengthTooLarge) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for CommitmentStructuresArrayLengthTooLarge { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for CommitmentStructuresArrayLengthTooLarge { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "CommitmentStructuresArrayLengthTooLarge()"; + const SELECTOR: [u8; 4] = [57u8, 51u8, 204u8, 232u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `CommitmentStructuresArrayLengthTooSmall()` and selector `0xc9631734`. +```solidity +error CommitmentStructuresArrayLengthTooSmall(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct CommitmentStructuresArrayLengthTooSmall {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: CommitmentStructuresArrayLengthTooSmall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for CommitmentStructuresArrayLengthTooSmall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for CommitmentStructuresArrayLengthTooSmall { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "CommitmentStructuresArrayLengthTooSmall()"; + const SELECTOR: [u8; 4] = [201u8, 99u8, 23u8, 52u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Event with signature `tournamentCreated(address)` and selector `0x68952387ba736c9928265c63b28112a625425d9dfbe48705686ea5bed1f92efb`. +```solidity +event tournamentCreated(address); +```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct tournamentCreated { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for tournamentCreated { + type DataTuple<'a> = (alloy::sol_types::sol_data::Address,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "tournamentCreated(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 104u8, + 149u8, + 35u8, + 135u8, + 186u8, + 115u8, + 108u8, + 153u8, + 40u8, + 38u8, + 92u8, + 99u8, + 178u8, + 129u8, + 18u8, + 166u8, + 37u8, + 66u8, + 93u8, + 157u8, + 251u8, + 228u8, + 135u8, + 5u8, + 104u8, + 110u8, + 165u8, + 190u8, + 209u8, + 249u8, + 46u8, + 251u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self._0, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for tournamentCreated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&tournamentCreated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &tournamentCreated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. +```solidity +constructor(address _topFactory, address _middleFactory, address _bottomFactory, DisputeParameters _disputeParameters); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct constructorCall { + pub _topFactory: alloy::sol_types::private::Address, + pub _middleFactory: alloy::sol_types::private::Address, + pub _bottomFactory: alloy::sol_types::private::Address, + pub _disputeParameters: ::RustType, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + DisputeParameters, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + ( + value._topFactory, + value._middleFactory, + value._bottomFactory, + value._disputeParameters, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _topFactory: tuple.0, + _middleFactory: tuple.1, + _bottomFactory: tuple.2, + _disputeParameters: tuple.3, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + DisputeParameters, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._topFactory, + ), + ::tokenize( + &self._middleFactory, + ), + ::tokenize( + &self._bottomFactory, + ), + ::tokenize( + &self._disputeParameters, + ), + ) + } + } + }; + /**Function with signature `instantiate(bytes32,address)` and selector `0x0b64d79b`. +```solidity +function instantiate(Machine.Hash _initialHash, address _provider) external returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct instantiateCall { + pub _initialHash: ::RustType, + pub _provider: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`instantiate(bytes32,address)`](instantiateCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct instantiateReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + Machine::Hash, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: instantiateCall) -> Self { + (value._initialHash, value._provider) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for instantiateCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _initialHash: tuple.0, + _provider: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: instantiateReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for instantiateReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for instantiateCall { + type Parameters<'a> = (Machine::Hash, alloy::sol_types::sol_data::Address); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = instantiateReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "instantiate(bytes32,address)"; + const SELECTOR: [u8; 4] = [11u8, 100u8, 215u8, 155u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._initialHash, + ), + ::tokenize( + &self._provider, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `instantiateBottom(bytes32,bytes32,bytes32,bytes32,bytes32,uint64,uint256,uint64,address)` and selector `0x18cf0e9a`. +```solidity +function instantiateBottom(Machine.Hash _initialHash, Tree.Node _contestedCommitmentOne, Machine.Hash _contestedFinalStateOne, Tree.Node _contestedCommitmentTwo, Machine.Hash _contestedFinalStateTwo, Time.Duration _allowance, uint256 _startCycle, uint64 _level, address _provider) external returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct instantiateBottomCall { + pub _initialHash: ::RustType, + pub _contestedCommitmentOne: ::RustType, + pub _contestedFinalStateOne: ::RustType, + pub _contestedCommitmentTwo: ::RustType, + pub _contestedFinalStateTwo: ::RustType, + pub _allowance: ::RustType, + pub _startCycle: alloy::sol_types::private::primitives::aliases::U256, + pub _level: u64, + pub _provider: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`instantiateBottom(bytes32,bytes32,bytes32,bytes32,bytes32,uint64,uint256,uint64,address)`](instantiateBottomCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct instantiateBottomReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + Machine::Hash, + Tree::Node, + Machine::Hash, + Tree::Node, + Machine::Hash, + Time::Duration, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ::RustType, + ::RustType, + ::RustType, + ::RustType, + alloy::sol_types::private::primitives::aliases::U256, + u64, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: instantiateBottomCall) -> Self { + ( + value._initialHash, + value._contestedCommitmentOne, + value._contestedFinalStateOne, + value._contestedCommitmentTwo, + value._contestedFinalStateTwo, + value._allowance, + value._startCycle, + value._level, + value._provider, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for instantiateBottomCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _initialHash: tuple.0, + _contestedCommitmentOne: tuple.1, + _contestedFinalStateOne: tuple.2, + _contestedCommitmentTwo: tuple.3, + _contestedFinalStateTwo: tuple.4, + _allowance: tuple.5, + _startCycle: tuple.6, + _level: tuple.7, + _provider: tuple.8, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: instantiateBottomReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for instantiateBottomReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for instantiateBottomCall { + type Parameters<'a> = ( + Machine::Hash, + Tree::Node, + Machine::Hash, + Tree::Node, + Machine::Hash, + Time::Duration, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = instantiateBottomReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "instantiateBottom(bytes32,bytes32,bytes32,bytes32,bytes32,uint64,uint256,uint64,address)"; + const SELECTOR: [u8; 4] = [24u8, 207u8, 14u8, 154u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._initialHash, + ), + ::tokenize( + &self._contestedCommitmentOne, + ), + ::tokenize( + &self._contestedFinalStateOne, + ), + ::tokenize( + &self._contestedCommitmentTwo, + ), + ::tokenize( + &self._contestedFinalStateTwo, + ), + ::tokenize( + &self._allowance, + ), + as alloy_sol_types::SolType>::tokenize(&self._startCycle), + as alloy_sol_types::SolType>::tokenize(&self._level), + ::tokenize( + &self._provider, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `instantiateMiddle(bytes32,bytes32,bytes32,bytes32,bytes32,uint64,uint256,uint64,address)` and selector `0xcb0f2e58`. +```solidity +function instantiateMiddle(Machine.Hash _initialHash, Tree.Node _contestedCommitmentOne, Machine.Hash _contestedFinalStateOne, Tree.Node _contestedCommitmentTwo, Machine.Hash _contestedFinalStateTwo, Time.Duration _allowance, uint256 _startCycle, uint64 _level, address _provider) external returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct instantiateMiddleCall { + pub _initialHash: ::RustType, + pub _contestedCommitmentOne: ::RustType, + pub _contestedFinalStateOne: ::RustType, + pub _contestedCommitmentTwo: ::RustType, + pub _contestedFinalStateTwo: ::RustType, + pub _allowance: ::RustType, + pub _startCycle: alloy::sol_types::private::primitives::aliases::U256, + pub _level: u64, + pub _provider: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`instantiateMiddle(bytes32,bytes32,bytes32,bytes32,bytes32,uint64,uint256,uint64,address)`](instantiateMiddleCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct instantiateMiddleReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + Machine::Hash, + Tree::Node, + Machine::Hash, + Tree::Node, + Machine::Hash, + Time::Duration, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ::RustType, + ::RustType, + ::RustType, + ::RustType, + alloy::sol_types::private::primitives::aliases::U256, + u64, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: instantiateMiddleCall) -> Self { + ( + value._initialHash, + value._contestedCommitmentOne, + value._contestedFinalStateOne, + value._contestedCommitmentTwo, + value._contestedFinalStateTwo, + value._allowance, + value._startCycle, + value._level, + value._provider, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for instantiateMiddleCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _initialHash: tuple.0, + _contestedCommitmentOne: tuple.1, + _contestedFinalStateOne: tuple.2, + _contestedCommitmentTwo: tuple.3, + _contestedFinalStateTwo: tuple.4, + _allowance: tuple.5, + _startCycle: tuple.6, + _level: tuple.7, + _provider: tuple.8, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: instantiateMiddleReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for instantiateMiddleReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for instantiateMiddleCall { + type Parameters<'a> = ( + Machine::Hash, + Tree::Node, + Machine::Hash, + Tree::Node, + Machine::Hash, + Time::Duration, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = instantiateMiddleReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "instantiateMiddle(bytes32,bytes32,bytes32,bytes32,bytes32,uint64,uint256,uint64,address)"; + const SELECTOR: [u8; 4] = [203u8, 15u8, 46u8, 88u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._initialHash, + ), + ::tokenize( + &self._contestedCommitmentOne, + ), + ::tokenize( + &self._contestedFinalStateOne, + ), + ::tokenize( + &self._contestedCommitmentTwo, + ), + ::tokenize( + &self._contestedFinalStateTwo, + ), + ::tokenize( + &self._allowance, + ), + as alloy_sol_types::SolType>::tokenize(&self._startCycle), + as alloy_sol_types::SolType>::tokenize(&self._level), + ::tokenize( + &self._provider, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `instantiateTop(bytes32,address)` and selector `0x70cabc6e`. +```solidity +function instantiateTop(Machine.Hash _initialHash, address _provider) external returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct instantiateTopCall { + pub _initialHash: ::RustType, + pub _provider: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`instantiateTop(bytes32,address)`](instantiateTopCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct instantiateTopReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + Machine::Hash, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: instantiateTopCall) -> Self { + (value._initialHash, value._provider) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for instantiateTopCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _initialHash: tuple.0, + _provider: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: instantiateTopReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for instantiateTopReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for instantiateTopCall { + type Parameters<'a> = (Machine::Hash, alloy::sol_types::sol_data::Address); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = instantiateTopReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "instantiateTop(bytes32,address)"; + const SELECTOR: [u8; 4] = [112u8, 202u8, 188u8, 110u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._initialHash, + ), + ::tokenize( + &self._provider, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`MultiLevelTournamentFactory`](self) function calls. + pub enum MultiLevelTournamentFactoryCalls { + instantiate(instantiateCall), + instantiateBottom(instantiateBottomCall), + instantiateMiddle(instantiateMiddleCall), + instantiateTop(instantiateTopCall), + } + #[automatically_derived] + impl MultiLevelTournamentFactoryCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [11u8, 100u8, 215u8, 155u8], + [24u8, 207u8, 14u8, 154u8], + [112u8, 202u8, 188u8, 110u8], + [203u8, 15u8, 46u8, 88u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MultiLevelTournamentFactoryCalls { + const NAME: &'static str = "MultiLevelTournamentFactoryCalls"; + const MIN_DATA_LENGTH: usize = 64usize; + const COUNT: usize = 4usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::instantiate(_) => { + ::SELECTOR + } + Self::instantiateBottom(_) => { + ::SELECTOR + } + Self::instantiateMiddle(_) => { + ::SELECTOR + } + Self::instantiateTop(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn instantiate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MultiLevelTournamentFactoryCalls::instantiate) + } + instantiate + }, + { + fn instantiateBottom( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MultiLevelTournamentFactoryCalls::instantiateBottom) + } + instantiateBottom + }, + { + fn instantiateTop( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MultiLevelTournamentFactoryCalls::instantiateTop) + } + instantiateTop + }, + { + fn instantiateMiddle( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MultiLevelTournamentFactoryCalls::instantiateMiddle) + } + instantiateMiddle + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + DECODE_SHIMS[idx](data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::instantiate(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::instantiateBottom(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::instantiateMiddle(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::instantiateTop(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::instantiate(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::instantiateBottom(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::instantiateMiddle(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::instantiateTop(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`MultiLevelTournamentFactory`](self) custom errors. + pub enum MultiLevelTournamentFactoryErrors { + CommitmentStructuresArrayLengthTooLarge(CommitmentStructuresArrayLengthTooLarge), + CommitmentStructuresArrayLengthTooSmall(CommitmentStructuresArrayLengthTooSmall), + } + #[automatically_derived] + impl MultiLevelTournamentFactoryErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [57u8, 51u8, 204u8, 232u8], + [201u8, 99u8, 23u8, 52u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MultiLevelTournamentFactoryErrors { + const NAME: &'static str = "MultiLevelTournamentFactoryErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 2usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::CommitmentStructuresArrayLengthTooLarge(_) => { + ::SELECTOR + } + Self::CommitmentStructuresArrayLengthTooSmall(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn CommitmentStructuresArrayLengthTooLarge( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + MultiLevelTournamentFactoryErrors::CommitmentStructuresArrayLengthTooLarge, + ) + } + CommitmentStructuresArrayLengthTooLarge + }, + { + fn CommitmentStructuresArrayLengthTooSmall( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + MultiLevelTournamentFactoryErrors::CommitmentStructuresArrayLengthTooSmall, + ) + } + CommitmentStructuresArrayLengthTooSmall + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + DECODE_SHIMS[idx](data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::CommitmentStructuresArrayLengthTooLarge(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::CommitmentStructuresArrayLengthTooSmall(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::CommitmentStructuresArrayLengthTooLarge(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::CommitmentStructuresArrayLengthTooSmall(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`MultiLevelTournamentFactory`](self) events. + pub enum MultiLevelTournamentFactoryEvents { + tournamentCreated(tournamentCreated), + } + #[automatically_derived] + impl MultiLevelTournamentFactoryEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 104u8, + 149u8, + 35u8, + 135u8, + 186u8, + 115u8, + 108u8, + 153u8, + 40u8, + 38u8, + 92u8, + 99u8, + 178u8, + 129u8, + 18u8, + 166u8, + 37u8, + 66u8, + 93u8, + 157u8, + 251u8, + 228u8, + 135u8, + 5u8, + 104u8, + 110u8, + 165u8, + 190u8, + 209u8, + 249u8, + 46u8, + 251u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for MultiLevelTournamentFactoryEvents { + const NAME: &'static str = "MultiLevelTournamentFactoryEvents"; + const COUNT: usize = 1usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::tournamentCreated) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for MultiLevelTournamentFactoryEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::tournamentCreated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::tournamentCreated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`MultiLevelTournamentFactory`](self) contract instance. + +See the [wrapper's documentation](`MultiLevelTournamentFactoryInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MultiLevelTournamentFactoryInstance { + MultiLevelTournamentFactoryInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _topFactory: alloy::sol_types::private::Address, + _middleFactory: alloy::sol_types::private::Address, + _bottomFactory: alloy::sol_types::private::Address, + _disputeParameters: ::RustType, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + MultiLevelTournamentFactoryInstance::< + T, + P, + N, + >::deploy( + provider, + _topFactory, + _middleFactory, + _bottomFactory, + _disputeParameters, + ) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _topFactory: alloy::sol_types::private::Address, + _middleFactory: alloy::sol_types::private::Address, + _bottomFactory: alloy::sol_types::private::Address, + _disputeParameters: ::RustType, + ) -> alloy_contract::RawCallBuilder { + MultiLevelTournamentFactoryInstance::< + T, + P, + N, + >::deploy_builder( + provider, + _topFactory, + _middleFactory, + _bottomFactory, + _disputeParameters, + ) + } + /**A [`MultiLevelTournamentFactory`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`MultiLevelTournamentFactory`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MultiLevelTournamentFactoryInstance< + T, + P, + N = alloy_contract::private::Ethereum, + > { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MultiLevelTournamentFactoryInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MultiLevelTournamentFactoryInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MultiLevelTournamentFactoryInstance { + /**Creates a new wrapper around an on-chain [`MultiLevelTournamentFactory`](self) contract instance. + +See the [wrapper's documentation](`MultiLevelTournamentFactoryInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _topFactory: alloy::sol_types::private::Address, + _middleFactory: alloy::sol_types::private::Address, + _bottomFactory: alloy::sol_types::private::Address, + _disputeParameters: ::RustType, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder( + provider, + _topFactory, + _middleFactory, + _bottomFactory, + _disputeParameters, + ); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _topFactory: alloy::sol_types::private::Address, + _middleFactory: alloy::sol_types::private::Address, + _bottomFactory: alloy::sol_types::private::Address, + _disputeParameters: ::RustType, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode( + &constructorCall { + _topFactory, + _middleFactory, + _bottomFactory, + _disputeParameters, + }, + )[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MultiLevelTournamentFactoryInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider( + self, + ) -> MultiLevelTournamentFactoryInstance { + MultiLevelTournamentFactoryInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MultiLevelTournamentFactoryInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`instantiate`] function. + pub fn instantiate( + &self, + _initialHash: ::RustType, + _provider: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &instantiateCall { + _initialHash, + _provider, + }, + ) + } + ///Creates a new call builder for the [`instantiateBottom`] function. + pub fn instantiateBottom( + &self, + _initialHash: ::RustType, + _contestedCommitmentOne: ::RustType, + _contestedFinalStateOne: ::RustType, + _contestedCommitmentTwo: ::RustType, + _contestedFinalStateTwo: ::RustType, + _allowance: ::RustType, + _startCycle: alloy::sol_types::private::primitives::aliases::U256, + _level: u64, + _provider: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &instantiateBottomCall { + _initialHash, + _contestedCommitmentOne, + _contestedFinalStateOne, + _contestedCommitmentTwo, + _contestedFinalStateTwo, + _allowance, + _startCycle, + _level, + _provider, + }, + ) + } + ///Creates a new call builder for the [`instantiateMiddle`] function. + pub fn instantiateMiddle( + &self, + _initialHash: ::RustType, + _contestedCommitmentOne: ::RustType, + _contestedFinalStateOne: ::RustType, + _contestedCommitmentTwo: ::RustType, + _contestedFinalStateTwo: ::RustType, + _allowance: ::RustType, + _startCycle: alloy::sol_types::private::primitives::aliases::U256, + _level: u64, + _provider: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &instantiateMiddleCall { + _initialHash, + _contestedCommitmentOne, + _contestedFinalStateOne, + _contestedCommitmentTwo, + _contestedFinalStateTwo, + _allowance, + _startCycle, + _level, + _provider, + }, + ) + } + ///Creates a new call builder for the [`instantiateTop`] function. + pub fn instantiateTop( + &self, + _initialHash: ::RustType, + _provider: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &instantiateTopCall { + _initialHash, + _provider, + }, + ) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MultiLevelTournamentFactoryInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`tournamentCreated`] event. + pub fn tournamentCreated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/prt/contracts/bindings-rs/src/contract/singleleveltournamentfactory.rs b/prt/contracts/bindings-rs/src/contract/singleleveltournamentfactory.rs new file mode 100644 index 0000000..239aef3 --- /dev/null +++ b/prt/contracts/bindings-rs/src/contract/singleleveltournamentfactory.rs @@ -0,0 +1,1687 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library Machine { + type Hash is bytes32; +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Machine { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Hash(alloy::sol_types::private::FixedBytes<32>); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue + for alloy::sol_types::private::FixedBytes<32> { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::FixedBytes<32>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl Hash { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: alloy::sol_types::private::FixedBytes<32>) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> alloy::sol_types::private::FixedBytes<32> { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Hash { + type RustType = alloy::sol_types::private::FixedBytes<32>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Hash { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Machine`](self) contract instance. + +See the [wrapper's documentation](`MachineInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MachineInstance { + MachineInstance::::new(address, provider) + } + /**A [`Machine`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Machine`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MachineInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MachineInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MachineInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MachineInstance { + /**Creates a new wrapper around an on-chain [`Machine`](self) contract instance. + +See the [wrapper's documentation](`MachineInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MachineInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MachineInstance { + MachineInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MachineInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MachineInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library Time { + type Duration is uint64; +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Time { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Duration(u64); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for u64 { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::Uint<64>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl Duration { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: u64) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> u64 { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Duration { + type RustType = u64; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Duration { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Time`](self) contract instance. + +See the [wrapper's documentation](`TimeInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(address: alloy_sol_types::private::Address, provider: P) -> TimeInstance { + TimeInstance::::new(address, provider) + } + /**A [`Time`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Time`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct TimeInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for TimeInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("TimeInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TimeInstance { + /**Creates a new wrapper around an on-chain [`Time`](self) contract instance. + +See the [wrapper's documentation](`TimeInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl TimeInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> TimeInstance { + TimeInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TimeInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TimeInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library Machine { + type Hash is bytes32; +} + +library Time { + type Duration is uint64; +} + +interface SingleLevelTournamentFactory { + event tournamentCreated(address); + + constructor(Time.Duration _matchEffort, Time.Duration _maxAllowance, uint64 _log2step, uint64 _height); + + function instantiate(Machine.Hash _initialHash, address _provider) external returns (address); + function instantiateSingleLevel(Machine.Hash _initialHash, address _provider) external returns (address); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_matchEffort", + "type": "uint64", + "internalType": "Time.Duration" + }, + { + "name": "_maxAllowance", + "type": "uint64", + "internalType": "Time.Duration" + }, + { + "name": "_log2step", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "_height", + "type": "uint64", + "internalType": "uint64" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "instantiate", + "inputs": [ + { + "name": "_initialHash", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "_provider", + "type": "address", + "internalType": "contract IDataProvider" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ITournament" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "instantiateSingleLevel", + "inputs": [ + { + "name": "_initialHash", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "_provider", + "type": "address", + "internalType": "contract IDataProvider" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract SingleLevelTournament" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "tournamentCreated", + "inputs": [ + { + "name": "", + "type": "address", + "indexed": false, + "internalType": "contract Tournament" + } + ], + "anonymous": false + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod SingleLevelTournamentFactory { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x610100346100aa57601f6151e738819003918201601f19168301916001600160401b038311848410176100ae578084926080946040528339810103126100aa57610048816100c2565b90610055602082016100c2565b61006d6060610066604085016100c2565b93016100c2565b9260c05260e05260805260a05260405161511090816100d78239608051816087015260a0518160b9015260c0518160eb015260e0518161011c0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160401b03821682036100aa5756fe6080806040526004361015610012575f80fd5b5f3560e01c9081630b64d79b1461021b575063722df96514610032575f80fd5b3461021757610040366102ce565b5f608060405161004f816102f4565b828152826020820152826040820152826060820152015260405191610073836102f4565b60018352602083019267ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168452604081019267ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168452606082019467ffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686526080830167ffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016815260405196614dca908189019589871067ffffffffffffffff8811176102035760e09867ffffffffffffffff8096818096948e9c82968e61031190398c52511660208b0152511660408901525116606087015251166080850152511660a08301526001600160a01b031660c08201520301905ff080156101f8576040516001600160a01b039091168082526020917f68952387ba736c9928265c63b28112a625425d9dfbe48705686ea5bed1f92efb908390a1604051908152f35b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b3461021757610229366102ce565b63722df96560e01b835260048301919091526001600160a01b031660248201526020816044815f305af180156101f8575f90610275575b6040516001600160a01b039091168152602090f35b5060203d6020116102c7575b601f8101601f1916820167ffffffffffffffff8111838210176102035760209183916040528101031261021757516001600160a01b038116810361021757602090610260565b503d610281565b604090600319011261021757600435906024356001600160a01b03811681036102175790565b60a0810190811067ffffffffffffffff8211176102035760405256fe6101e0604052346101f357604051614dca38819003601f8101601f191683016001600160401b038111848210176101f7578392829160405283398101039060e082126101f35760a0815192601f1901126101f3576040519160a083016001600160401b038111848210176101f75760405261007c6020830161020b565b835261008a6040830161020b565b906020840191825261009e6060840161020b565b604085019081526100b16080850161020b565b92606086019384526100c560a0860161020b565b6080870181815260c0969096015196906001600160a01b03881688036101f3576080949094525f60a081905260c052516001600160401b0390811660e0529051811661010052905181166101205242811661014052835181169116818111156101ec57505b61016052516001600160401b039081166101a052905116610180526101c052604051614baa9081610220823960805181610435015260a0518181816106170152610d76015260c05181610801015260e051816107d501526101005181818161083001526111b901526101205181818161016c0152818161085f01526111890152610140518181816102320152610fc40152610160518181816102110152610fa3015261018051816112c101526101a051816112a001526101c051816117dc0152f35b905061012a565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160401b03821682036101f35756fe60806040526004361015610011575f80fd5b5f3560e01c80631d5bf796146100d45780635017746a146100cf5780636041ddd5146100ca5780636a1a140d146100c55780637795820c146100c05780638acc802d146100bb5780639a9b4b2b146100b6578063a1af906b146100b1578063cb2773db146100ac578063fcc6077d146100a7578063fcc85391146100a25763ff78e0ee1461009d575f80fd5b610a29565b610925565b6108b5565b610886565b6107b6565b610644565b6105f4565b61058f565b610517565b6104ac565b610334565b61010d565b9181601f84011215610109578235916001600160401b038311610109576020808501948460051b01011161010957565b5f80fd5b34610109576080366003190112610109576004356024356001600160401b038111610109576101409036906004016100d9565b606435926044359291610151610f9e565b6103145761015f8585610ffa565b9282916001600160401b037f00000000000000000000000000000000000000000000000000000000000000001690610198818314610e82565b5f925b8284106102c357505050508203610272577fe53537f202911d376d6e285835b2a2016e83e99fbe84a059d445cc2be48072629361026d9361025d926101e8855f52600360205260405f2090565b556101fb845f52600260205260405f2090565b61020c61020782610c1d565b611020565b6102577f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008361106c565b846110d5565b6040519081529081906020820190565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f636f6d6d69746d656e74206c61737420737461746520646f65736e2774206d616044820152620e8c6d60eb1b6064820152608490fd5b909192936001906102f96103076102db888787611c4c565b35926040519283916020830195869091604092825260208201520190565b03601f198101835282610beb565b519020940192919061019b565b63ac57beef60e01b5f5260045ffd5b604090600319011261010957600490565b346101095760c03660031901126101095761034e36610323565b60643560443560843560a4356001600160401b038111610109576103769036906004016100d9565b93909261038a610384611314565b15610c45565b61039c6103973688610c5b565b61132c565b5f52600460205260405f206103b86103b382610c83565b61134f565b60016001600160401b0360806103cd84610c83565b0151160361045c5761045a966103ec84846103e785610c83565b611393565b61043361040282355f52600260205260405f2090565b61042a61041b60208501355f52600260205260405f2090565b916104258161139f565b6113b9565b6104258161139f565b7f0000000000000000000000000000000000000000000000000000000000000000916114c6565b005b60405162461bcd60e51b815260206004820152602260248201527f6d61746368206973206e6f7420726561647920746f2062652066696e616c697a604482015261195960f21b6064820152608490fd5b346101095760a0366003190112610109576104c636610323565b60443560643591608435926001600160401b0384116101095736602385011215610109578360040135926001600160401b03841161010957366024858701011161010957602461045a950192610cee565b346101095760403660031901126101095761053136610323565b80355f526002602052602061054860405f20610c1d565b9101355f52600260205261056761056160405f20610c1d565b916119cd565b1590811561057e575b506040519015158152602090f35b61058891506119cd565b155f610570565b346101095760203660031901126101095760606004356105ad610e6a565b50805f52600260205260405f20905f5260036020526105d060405f205491610c1d565b906001600160401b0360206040519382815116855201511660208301526040820152f35b3461010957602036600319011261010957602061063c610615600435610f0f565b7f000000000000000000000000000000000000000000000000000000000000000090611a08565b604051908152f35b346101095760403660031901126101095761065e36610323565b610669610384611314565b6106926103b361068d61067f6103973686610c5b565b5f52600460205260405f2090565b610c83565b6106a581355f52600260205260405f2090565b6106bb60208301355f52600260205260405f2090565b906106cd6106c882610c1d565b611579565b6106d96106c883610c1d565b6106f16106ed6106e883610c1d565b6119cd565b1590565b9182610790575b821561072b575b50501561071c5761071761039761045a923690610c5b565b611997565b633d0b930760e21b5f5260045ffd5b90915061073d6106ed6106e883610c1d565b918261074d575b50505f806106ff565b61078992509061077861077361076d6107686106ed95610c1d565b611a3b565b92610c1d565b611a7d565b6001600160401b0380911691161190565b5f80610744565b91506107b06106ed6107a461076885610c1d565b61077861077385610c1d565b916106f8565b34610109575f3660031901126101095760806040516001600160401b037f00000000000000000000000000000000000000000000000000000000000000001681526001600160401b037f00000000000000000000000000000000000000000000000000000000000000001660208201526001600160401b037f00000000000000000000000000000000000000000000000000000000000000001660408201526001600160401b037f0000000000000000000000000000000000000000000000000000000000000000166060820152f35b34610109575f3660031901126101095760606108a0610e9d565b90604051921515835260208301526040820152f35b346101095760203660031901126101095760e06108d3600435610f0f565b6001600160401b0360c060405192805184526020810151602085015260408101516040850152606081015160608501528260808201511660808501528260a08201511660a085015201511660c0820152f35b346101095760c03660031901126101095761093f36610323565b604435606435906084359260a435610958610384611314565b6109656103973684610c5b565b5f52600460205260405f209061097d6103b383610c83565b60016001600160401b03608061099285610c83565b01511611156109e45761045a95858585856109b96104259a60209a6103e76109be9a610c83565b611b0c565b6109d461042582355f52600260205260405f2090565b01355f52600260205260405f2090565b60405162461bcd60e51b815260206004820152601760248201527f6d617463682063616e277420626520616476616e6365640000000000000000006044820152606490fd5b3461010957608036600319011261010957610a4336610323565b606435604435610a54610384611314565b610a6a6103b361068d61067f6103973688610c5b565b8235610a7e815f52600260205260405f2090565b906020850135610a96815f52600260205260405f2090565b90610aa36106c885610c1d565b610aaf6106c883610c1d565b610abb6106e885610c1d565b80610b87575b15610b105750938361045a969383610b04610afe6107736107179a610af9888887610af46103979f8490610b099f611c27565b610f66565b610c1d565b83611c35565b6110d5565b3690610c5b565b939592915093610b256106ed6106e884610c1d565b80610b75575b15610b6657856107179585610b04610afe610773610b6197610af9888861045a9f9d610b5c6103979f849083611c27565b610f2e565b610b09565b634d46ab2360e11b5f5260045ffd5b50610b826106e886610c1d565b610b2b565b50610b976106ed6106e884610c1d565b610ac1565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b03821117610bcb57604052565b610b9c565b60e081019081106001600160401b03821117610bcb57604052565b90601f801991011681019081106001600160401b03821117610bcb57604052565b60405190610c1b604083610beb565b565b90604051610c2a81610bb0565b60206001600160401b03829454818116845260401c16910152565b15610c4c57565b6395ddf15360e01b5f5260045ffd5b919082604091031261010957604051610c7381610bb0565b6020808294803584520135910152565b90610c1b604051610c9381610bd0565b60c06001600160401b0360048396805485526001810154602086015260028101546040860152600381015460608601520154818116608085015281808260401c161660a085015260801c169101906001600160401b03169052565b93909192610cfd610384611314565b843590610d12825f52600260205260405f2090565b928387610da6610d9b610d74610d5761067f610397602087013596610d4b6106c8610d458a5f52600260205260405f2090565b9a610c1d565b610b096106c88a610c1d565b610d636103b382610c83565b61068d610d6f82610c83565b6115cf565b7f00000000000000000000000000000000000000000000000000000000000000009061161f565b96929791909761178b565b9285610db28a8a610ffa565b03610de15750505093610c1b9693610b0993610dd884886107179a966103979a14610e47565b610b048261139f565b94509692509693509385610df58383610ffa565b03610e1557610c1b9661071796610dd88588610b61976103979a14610e24565b630338061d60e31b5f5260045ffd5b15610e2d575050565b636e3fa03d60e11b5f52600260045260245260445260645ffd5b15610e50575050565b636e3fa03d60e11b5f52600160045260245260445260645ffd5b60405190610e7782610bb0565b5f6020838281520152565b15610e8957565b634e487b7160e01b5f52600160045260245ffd5b610ea5611314565b15610ed157610ebd90610eb6611afa565b9290610e82565b5f8281526003602052604090205460019291565b5f905f905f90565b60405190610ee682610bd0565b5f60c0838281528260208201528260408201528260608201528260808201528260a08201520152565b610f17610ed9565b505f526004602052610f2b60405f20610c83565b90565b9291909215610f3c57505050565b6084935060405192633ad7a6d360e11b845260026004850152602484015260448301526064820152fd5b9291909215610f7457505050565b6084935060405192633ad7a6d360e11b845260016004850152602484015260448301526064820152fd5b610fe87f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006123ca565b6001600160401b034281169116111590565b90604051906020820192835260408201526040815261101a606082610beb565b51902090565b516001600160401b031661103057565b60405162461bcd60e51b815260206004820152601460248201527318db1bd8dac81a5cc81a5b9a5d1a585b1a5e995960621b6044820152606490fd5b90610c1b9261108761108d926001600160401b034216611cae565b90611cc9565b90611cf7565b906001600160401b03166001600160401b0319825416179055565b634e487b7160e01b5f52601160045260245ffd5b5f1981146110d05760010190565b6110ae565b92906110eb846110e58486610ffa565b14610e82565b6110f3611afa565b93901561130c576112f1611307926112887f32911001007d8c9879b608566be8acc2184592f0a43706f804f285455bb0f52e9561112e610ed9565b5061114361113c8287610ffa565b8a14610e82565b6111e861067f60405161115581610bb0565b8a81528b60208201526040519361116b85610bd0565b8b855288602086015260408501525f60608501526001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168060808601526001600160401b037f00000000000000000000000000000000000000000000000000000000000000001660a086015260c085015261132c565b815181556020820151600182015560408201516002820155606082015160038201556080820151600491909101805467ffffffffffffffff19166001600160401b039283161781559160c09060a0810151845467ffffffffffffffff60401b191690841660401b67ffffffffffffffff60401b161784550151825467ffffffffffffffff60801b1916911660801b67ffffffffffffffff60801b16179055565b61042561129d875f52600260205260405f2090565b917f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000916112ec838387611d73565b611d73565b5f805561025d6113026001546110c2565b600155565b0390a3565b505050505f55565b61131c610f9e565b806113245790565b506001541590565b60405160208082019280518452015160408201526040815261101a606082610beb565b511561135757565b60405162461bcd60e51b81526020600482015260146024820152731b585d18da08191bd95cc81b9bdd08195e1a5cdd60621b6044820152606490fd5b90610c1b929151611db7565b6001600160401b03815460401c166113b45750565b610c1b905b6113c561076882610c1d565b6001600160401b03811615611433578154610c1b929060401c6001600160401b031661141457805467ffffffffffffffff60401b19164260401b67ffffffffffffffff60401b16178155611093565b80546001600160801b0319166001600160401b03909216919091179055565b60405162461bcd60e51b815260206004820152602560248201527f63616e277420616476616e636520636c6f636b2077697468206e6f2074696d65604482015264081b19599d60da1b6064820152608490fd5b634e487b7160e01b5f52601260045260245ffd5b5f198101919082116110d057565b156114b1575050565b63773af80160e01b5f5260045260245260445ffd5b9291859492610c1b9692999798936114ea60206114e288610c83565b015183141590565b1561156657506114fa9085611e61565b9890995b6003860154908161151e5750505061151992508082146114a8565b611f94565b600487015461151996959394506115569060801c6001600160401b03169160016001600160401b03818516160361155c57359261149a565b91611eee565b602001359261149a565b611571915085611e0d565b9890996114fe565b516001600160401b03161561158a57565b60405162461bcd60e51b815260206004820152601860248201527f636c6f636b206973206e6f7420696e697469616c697a656400000000000000006044820152606490fd5b608001516001600160401b03166115e257565b60405162461bcd60e51b81526020600482015260156024820152741b585d18da081a5cc81b9bdd08199a5b9a5cda1959605a1b6044820152606490fd5b90916116386001600160401b0360808401511615610e82565b61164482519383611a08565b916001606082015116155f146116615761165d90611fd7565b9091565b61165d90611fae565b9291926001600160401b038211610bcb5760405191611693601f8201601f191660200184610beb565b829481845281830111610109578281602093845f960137010152565b6001600160401b036001911601906001600160401b0382116110d057565b90600182018092116110d057565b60200190816020116110d057565b919082018092116110d057565b906020116101095790602090565b90929192836020116101095783116101095760200191601f190190565b35906020811061172f575090565b5f199060200360031b1b1690565b90816020910312610109575190565b91926060938192845260406020850152816040850152848401375f828201840152601f01601f1916010190565b6040513d5f823e3d90fd5b1561010957565b92611794610c0c565b926117a036838361166a565b84525f60208501526117b0610c0c565b93858552602085015283946117c76210000061149a565b946117da6810000000000000000061149a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691908261183a5750505050505061181a906116cd565b1661182c57611828816129a2565b5190565b61183581612000565b505190565b86949791929598939616155f146119705750505061186161185b86866116f6565b90611721565b9361186b856116db565b611873610c0c565b9061187f36898561166a565b8252602082015261188e610c0c565b948552602085015283958515155f1461196257926020926118d26118c16044946118ee976118bb8b6116db565b91611704565b949092906001600160401b03161c90565b60405162f52de960e71b8152958694859384936004850161174c565b03915afa801561195d5761183593611921925f92611926575b5063ffffffff90611919831515611784565b16908361225c565b612000565b63ffffffff91925061194f9060203d602011611956575b6119478183610beb565b81019061173d565b9190611907565b503d61193d565b611779565b505050506118359150612000565b94509450945061198091506116cd565b1661198e57611828906129a2565b61183590612000565b60015480156110d0575f19016001555f5260046020525f6004604082208281558260018201558260028201558260038201550155565b60208101516001600160401b031690816119e8575050600190565b6001600160401b03611a01818093511693824216611cae565b1691161190565b60606001600160401b0360a08301511691015180821b916001828404911b14901517156110d05781018091116110d05790565b60208101516001600160401b031680611a5c5750516001600160401b031690565b6110876001600160401b03610f2b935116916001600160401b034216611cae565b60208101906001600160401b0382511615611ab5576001600160401b03611aac81610f2b945116824216611cae565b91511690611cc9565b60405162461bcd60e51b815260206004820152601c60248201527f612070617573656420636c6f636b2063616e27742074696d656f7574000000006044820152606490fd5b5f905f549081611b0657565b60019250565b9492939190936020611b1d87610c83565b01518214611b80575092610b098383611b5e611b6496610397967f29ff393c59c37f91e930fad4d88447efc58cf5d7c048499e1f20edb36994137899611db7565b87612378565b82546001909301546040805194855260208501919091529092a2565b839150611bc783611b9f6001966001600160401b0396611be495611db7565b60048801938585541691611bb4888411610e82565b60028a019081548b55888b015555612363565b825467ffffffffffffffff19166001600160401b03909116178255565b54161b6003830180549182018092116110d0577f29ff393c59c37f91e930fad4d88447efc58cf5d7c048499e1f20edb36994137892611b64926103979255610b09565b91611c3191610ffa565b1490565b61108d610c1b926001600160401b03835416611cc9565b9190811015611c5c5760051b0190565b634e487b7160e01b5f52603260045260245ffd5b6001600160401b035f19911601906001600160401b0382116110d057565b906001600160401b03809116911603906001600160401b0382116110d057565b611cc5906001600160401b03808094169116611c8e565b1690565b6001600160401b03918216911681811015611ce557505f919050565b6001600160401b0391611cc591611c8e565b906001600160401b03811615611d245781546001600160801b0319166001600160401b0391909116179055565b60405162461bcd60e51b815260206004820152602160248201527f63616e27742063726561746520636c6f636b2077697468207a65726f2074696d6044820152606560f81b6064820152608490fd5b9091611d8d610c1b93611d8861076885610c1d565b6123ca565b6001600160401b0382166001600160401b038216115f14611daf575090611cf7565b905090611cf7565b91611dc191610ffa565b03611dc857565b60405162461bcd60e51b815260206004820152601e60248201527f6368696c64206e6f64657320646f6e2774206d6174636820706172656e7400006044820152606490fd5b906004820190611e2960016001600160401b0384541614610e82565b60018301556001600160401b0319815416905560038101805491600183018093116110d05761165d92611e5c9255610c83565b611fae565b611e9d9061165d926004820190611e8460016001600160401b0384541614610e82565b6002830155805467ffffffffffffffff19169055610c83565b611fd7565b15611ea957565b60405162461bcd60e51b815260206004820152601960248201527f636f6d6d69746d656e74207374617465206d69736d61746368000000000000006044820152606490fd5b9594909391926001600160401b0390941691611f0b828414610e82565b5f935b838510611f25575050505050610c1b919214611ea2565b9091929394600190611f3a83881c6001161590565b15611f7a576102f9611f6b611f50898888611c4c565b60408051602081019586529135908201529182906060820190565b519020955b0193929190611f0e565b6102f9611f8b6102db898888611c4c565b51902095611f70565b611fab6001600160401b0360048301541615610e82565b55565b60c0810151909190600116611fca576020604083015192015190565b6040602083015192015190565b60c0810151909190600116611ff3576040602083015192015190565b6020604083015192015190565b61201961201e612012624000086147b8565b92906144a5565b61453a565b612056602084019161203083516145e3565b92519060405160208101908582526020815261204d604082610beb565b5190209161478f565b8351036121015761209691612091916120849160031b67fffffffffffffff8165b6001600160401b03161b90565b6001600160c01b03191690565b6147d9565b906001600160401b03808316146120fa576001600160401b036120b882612d45565b166120f3576120e96120ef926120e46120d46240001085612dc6565b6120de81866123f3565b856124b4565b6116af565b90614368565b5f90565b5050600290565b5050600190565b60405162461bcd60e51b815260206004820152601c60248201527f5265616420776f726420726f6f7420646f65736e2774206d61746368000000006044820152606490fd5b60405190612155604083610beb565b60138252721a599b1859dccb96481a5cc81b9bdd081cd95d606a1b6020830152565b63ffffffff60019116019063ffffffff82116110d057565b63ffffffff60089116019063ffffffff82116110d057565b63ffffffff60049116019063ffffffff82116110d057565b63ffffffff60029116019063ffffffff82116110d057565b9063ffffffff8091169116019063ffffffff82116110d057565b60405190612200604083610beb565b601f82527f434d494f20726573706f6e7365206461746120697320746f6f206c61726765006020830152565b63ffffffff6004199116019063ffffffff82116110d057565b63ffffffff16601f039063ffffffff82116110d057565b906122696106ed83612a86565b61235b5763ffffffff831690816122bf575b50610c1b926122ba915061229162010000611c70565b5063ffffffff60206122b06122aa640100000000611c70565b91505f90565b921616178261438e565b612c6d565b90926122ca81612add565b93600563ffffffff861610612352575b63ffffffff6001601f87161b1610612342575b601563ffffffff8516116123355761232f6122ba92612329610c1b9661232361231d61231d63600000009361222c565b60ff1690565b90612c06565b85612c22565b9261227b565b61233d6121f1565b612a9e565b9261234c90612177565b926122ed565b600594506122da565b61233d612146565b6001600160401b031680156110d0575f190190565b906123b090610c1b93600260048501946001600160401b03865416936123a060018611610e82565b6001820180548355550155612363565b6001600160401b03166001600160401b0319825416179055565b906001600160401b038091169116016001600160401b0381116110d0576001600160401b031690565b6003821661243e5763ffffffff91611cc5916038600383901b1691603f916124259167fffffffffffffff81690612dd5565b911663ffffffff6001600160401b0380931691161c1690565b60405162461bcd60e51b815260206004820152601d60248201527f6d6973616c69676e6564207265616455696e74333220616464726573730000006044820152606490fd5b60405190612492604083610beb565b601382527234b63632b3b0b61034b739ba393ab1ba34b7b760691b6020830152565b92919061707f81166013036124cd57610c1b92936142b1565b61707f8116613003036124e457610c1b9293614271565b61707f8116616063036124fb57610c1b9293614234565b61707f811660630361251157610c1b92936141f7565b61707f81166170130361252857610c1b9293614198565b63fe00707f811660330361254057610c1b9293614148565b607f8116606f0361255557610c1b9293614070565b63fc00707f81166110130361256e57610c1b9293614013565b63fe00707f81166170330361258757610c1b9293613fce565b61707f81166130230361259e57610c1b9293613f62565b607f81166037036125b357610c1b9293613f46565b61707f81166067036125c957610c1b9293613ecb565b61707f8116601b036125df57610c1b9293613e80565b63fc00707f8116615013036125f857610c1b9293613e3c565b63fe00707f811661501b0361261157610c1b9293613dfa565b61707f81166110630361262857610c1b9293613dbd565b61707f81166120030361263f57610c1b9293613d7d565b607f811660170361265457610c1b9293613d37565b61707f81166170630361266b57610c1b9293613cf2565b63fe00707f8116603b0361268357610c1b9293613c99565b63fc00707f811663400050130361269e57610c1b9293613c34565b63fe00707f8116616033036126b757610c1b9293613bef565b63fe00707f8116634000501b036126d257610c1b9293613b7e565b61707f8116615063036126e957610c1b9293613b3f565b63fe00707f811663400000330361270457610c1b9293613ae7565b61707f81166140030361271b57610c1b9293613aa2565b63fe00707f811661101b0361273457610c1b9293613a3b565b63fe00707f81166150330361274d57610c1b92936139df565b63fe00707f81166140330361276657610c1b9293613993565b61707f81166120230361277d57610c1b92936138a5565b63fe00707f81166110330361279657610c1b929361383b565b61707f8116614063036127ad57610c1b9293613774565b61707f81166023036127c357610c1b929361363b565b63fe00707f8116634000003b036127de57610c1b92936135c9565b61707f8116614013036127f557610c1b929361356a565b63fe00707f811663400050330361281057610c1b92936134ef565b61707f81166150030361282757610c1b92936134a9565b61707f81166110230361283e57610c1b92936133a4565b63fe00707f811661503b0361285757610c1b9293613366565b61707f81166160030361286e57610c1b92936132ff565b63fe00707f811661103b0361288757610c1b92936132b9565b61707f811660030361289d57610c1b929361327d565b63fe00707f8116613033036128b657610c1b929361321e565b63fe00707f8116634000503b036128d157610c1b929361319b565b61707f8116611003036128e857610c1b929361310f565b61707f8116616013036128ff57610c1b92936130aa565b61707f81166130130361291657610c1b9293613044565b63fe00707f81166120330361292f57610c1b9293612fd1565b61707f81166120130361294657610c1b9293612f4d565b61707f8116600f0361295d5750610c1b9192614820565b63ffffffff16607381036129765750610c1b9192612e99565b621000738491146129895761233d612483565b612e35565b9060ff8091169116039060ff82116110d057565b6129aa610e6a565b506001600160401b03620200006129cb816129c481611c70565b1615610e82565b168015612a815760116001600160401b036129eb92620200000416614589565b60208201612a046129fc82516145e3565b83835161465a565b50835103612a3c57612a38917f4de6115bdadc23724cf20c5580d718525ce81b294c8c149d3658020c380df109915161478f565b9052565b60405162461bcd60e51b815260206004820152601f60248201527f577269746520726567696f6e20726f6f7420646f65736e2774206d61746368006044820152606490fd5b611486565b612a91600191612db4565b811c16156120ef57600190565b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fd5b63ffffffff811615612bb55780610f2b915f9163ffff0000811615612ba1575b5063ff000000811615612b82575b63f0000000811615612b63575b63c0000000811615612b3d575b63800000001661224557612b3890612177565b612245565b90612b5c612b4f6380000000926121bf565b9260021b63fffffffc1690565b9050612b25565b90612b70612b7d916121a7565b9160041b63fffffff01690565b612b18565b90612b8f612b9c9161218f565b9160081b63ffffff001690565b612b0b565b60109250821b63ffff00001690505f612afd565b60405162461bcd60e51b8152602060048201526024808201527f456d756c61746f72436f6d7061743a206c6f673228302920697320756e6465666044820152631a5b995960e21b6064820152608490fd5b90612c1d81610f2b93612c17610e6a565b506144c9565b614589565b916020830191612c3d612c3584516145e3565b82855161465a565b50845103612a3c57612a38925161478f565b603f610f2b921663ffffffff6001600160401b0380931691161b1690565b612a38612c7982612db4565b5f612d29612c95612019612c8e6102e86147b8565b94906144c9565b916020860193612d00612cfb67fffffffffffffffd612cb488516145e3565b93612cea612ce18a518a6040516020810190612cd8816102f98d8560209181520190565b5190209161465a565b508c511461431c565b1660c01b6001600160c01b03191690565b614a60565b6001600160c01b031960039390931b67fffffffffffffff81683811c19929092169216901c1790565b91519160405161204d816102f960208201948560209181520190565b61201990612d5f612d58624000006147b8565b93906144a5565b90612d8f6020820192612d7284516145e3565b93519060405160208101908682526020815261204d604082610beb565b90510361210157610f2b91612091916120849160031b67fffffffffffffff816612077565b61201990612d5f612d586102e86147b8565b612d5f612d58612019936147b8565b60078216612df0576001600160401b03610f2b921690612dc6565b60405162461bcd60e51b815260206004820152601d60248201527f6d6973616c69676e6564207265616455696e74363420616464726573730000006044820152606490fd5b604051612e43604082610beb565b600d8152604460208201916c1d585c98da0818589bdc9d1959609a1b835260405192839162461bcd60e51b8352602060048401525180918160248501528484015e5f828201840152601f01601f19168101030190fd5b906001600160401b03612eab836147e8565b1660018103612ebf575050610c1b906143ac565b600203612ed95781612ed3610c1b936147f5565b50614820565b604051612ee7604082610beb565b601a8152604460208201917f756e737570706f72746564206563616c6c2066756e6374696f6e000000000000835260405192839162461bcd60e51b8352602060048401525180918160248501528484015e5f828201840152601f01601f19168101030190fd5b610c1b9291612f688163ffffffff1660030b60141d60030b90565b612f7e600783901c601f165b92600f1c601f1690565b60ff8316612f8f575b505050614820565b612fa16001600160401b039185614802565b1660070b9060030b135f14612fc257612fba90826148ba565b5f8080612f87565b612fcc908261489a565b612fba565b610c1b9291600781901c601f16612ff4600f83901c601f165b9260141c601f1690565b9060ff811661300557505050614820565b6001600160401b036130298161301e612fba9688614802565b1660070b9386614802565b1660070b5f921261303b575b836148db565b60019150613035565b610c1b929161305f8163ffffffff1660030b60141d60030b90565b61306f600783901c601f16612f74565b60ff831661307f57505050614820565b6001600160401b03613092819286614802565b9260030b169116105f14612fc257612fba90826148ba565b610c1b92916130c58163ffffffff1660030b60141d60030b90565b906130dc600782901c601f165b91600f1c601f1690565b9160ff82166130ed57505050614820565b6001600160401b03613102612fba9486614802565b9160030b161790836148db565b610c1b929161ffff61316b6131656131338463ffffffff1660030b60141d60030b90565b61315261314c600787901c601f165b96600f1c601f1690565b87614802565b6001600160401b03809260030b16011690565b846148fa565b1660010b9060ff8116613180575b5050614820565b6001600160401b03613194921690836148db565b5f80613179565b610c1b92916131f7600782901c601f1691601f6131e36001600160401b036131d86131d1600f86901c85165b9560141c601f1690565b9488614802565b1660030b9286614802565b169063ffffffff9060030b91161d60030b90565b9060ff8116613207575050614820565b6001600160401b036131949260030b1690836148db565b610c1b9291600781901c601f1661323b600f83901c601f16612fea565b9060ff811661324c57505050614820565b61326361325c612fba9486614802565b9285614802565b916001600160401b03805f941691161061303b57836148db565b610c1b929160ff6132a66132a06131338463ffffffff1660030b60141d60030b90565b84614972565b165f0b9060ff8116613180575050614820565b610c1b929163ffffffff600782901c601f1691601f6132ec836132e46131d1600f86901c85166131c7565b169286614802565b161b169060ff8116613207575050614820565b610c1b929161334561333f6133208363ffffffff1660030b60141d60030b90565b613152613339600786901c601f165b95600f1c601f1690565b86614802565b836123f3565b9060ff8116613355575050614820565b63ffffffff613194921690836148db565b610c1b929163ffffffff600782901c601f1691601f613391836132e46131d1600f86901c85166131c7565b161c169060ff8116613207575050614820565b9190916133d78363ffffffff8116600390810b60191d810b60051b63ffffffe01660079290921c601f1691909117900b90565b926001600160401b0361340a6134036133fc600f85901c601f165b9460141c601f1690565b9385614802565b9284614802565b9460030b16019260018416613464578361345861345f92613443600767fffffffffffffff8610c1b9916941663fffffff89060031b1690565b9061ffff6134518588612dd5565b9116614ace565b90836149fd565b614820565b60405162461bcd60e51b815260206004820152601e60248201527f6d6973616c69676e656420777269746555696e743136206164647265737300006044820152606490fd5b610c1b92916134d06134ca6133208363ffffffff1660030b60141d60030b90565b836148fa565b9060ff81166134e0575050614820565b61ffff613194921690836148db565b610c1b9291600781901c601f1661350c600f83901c601f16612fea565b9160ff821661351d57505050614820565b612fba92603f6135466001600160401b0361353b61355a9589614802565b1660070b9287614802565b169063ffffffff9060070b91161d60070b90565b6001600160401b031690836148db565b610c1b92916135858163ffffffff1660030b60141d60030b90565b90613596600782901c601f166130d2565b9160ff82166135a757505050614820565b6001600160401b036135bc612fba9486614802565b9160030b161890836148db565b610c1b9291600781901c601f166001600160401b0361360d816136026135fb600f87901c601f165b9660141c601f1690565b9587614802565b1660030b9385614802565b1660030b9160ff821661362257505050614820565b612fba92900360030b6001600160401b031690836148db565b91909161366e8363ffffffff8116600390810b60191d810b60051b63ffffffe01660079290921c601f1691909117900b90565b926136986136886134036133fc600f85901c601f166133f2565b9460030b6001600160401b031690565b01603867fffffffffffffff882169160031b16906136b68184612dd5565b604063ffffffff6136c86008866121d7565b161161372457610c1b9561345f9361371a9060ff6137006136f3836136ee610100611c70565b612c4f565b196001600160401b031690565b93169063ffffffff6001600160401b0380931691161b1690565b91161790836149fd565b60405162461bcd60e51b815260206004820152602260248201527f636f70794269747320636f756e742065786365656473206c696d6974206f66206044820152610d8d60f21b6064820152608490fd5b919061377f816149ac565b906001600160401b036137aa8161379f6131d1600f86901c601f166131c7565b1660070b9286614802565b1660070b136137bd5750610c1b91614820565b612a38916001600160401b039160030b82165b01165f612d296137e8612019612c8e624000106147b8565b916020860193612d00612cfb6137fe87516145e3565b9261382b6138228951896040516020810190612cd8816102f98c8560209181520190565b508b511461431c565b60c01b6001600160c01b03191690565b610c1b9291600781901c601f16613858600f83901c601f16612fea565b9160ff821661386957505050614820565b612fba92603f61388661387f61389e9488614802565b9287614802565b1663ffffffff6001600160401b0380931691161b1690565b90836148db565b9190916138d88363ffffffff8116600390810b60191d810b60051b63ffffffe01660079290921c601f1691909117900b90565b926001600160401b0363ffffffff6139036133fc6138fc600f86901c601f166131c7565b9486614802565b169460030b1601926003841661394e578361345861345f9261393d600767fffffffffffffff8610c1b9916941663fffffff89060031b1690565b906139488487612dd5565b90614b31565b60405162461bcd60e51b815260206004820152601e60248201527f6d6973616c69676e656420777269746555696e743332206164647265737300006044820152606490fd5b610c1b9291600781901c601f166139b0600f83901c601f16612fea565b60ff82166139c057505050614820565b6139d76139d0612fba9486614802565b9185614802565b1890836148db565b610c1b9291600781901c601f166139fc600f83901c601f16612fea565b9160ff8216613a0d57505050614820565b612fba92603f613a2361387f61389e9488614802565b1663ffffffff6001600160401b0380931691161c1690565b610c1b9291601481901c601f1660030b9063ffffffff613a70613a6a600784901c601f165b93600f1c601f1690565b85614802565b1660ff8216613a8157505050614820565b612fba92601f161b63ffffffff1660030b6001600160401b031690836148db565b610c1b9291613ac9613ac36133208363ffffffff1660030b60141d60030b90565b83614972565b9060ff8116613ad9575050614820565b60ff613194921690836148db565b610c1b9291600781901c601f16613b04600f83901c601f16612fea565b9160ff8216613b1557505050614820565b612fba92613b35613b2e6001600160401b039387614802565b9186614802565b90031690836148db565b9190613b4a816149ac565b906001600160401b03613b6a8161379f6131d1600f86901c601f166131c7565b1660070b13156137bd5750610c1b91614820565b610c1b9291601481901c601f1660030b906001600160401b03613baa613a6a600784901c601f16613a60565b1660030b60ff8216613bbe57505050614820565b613be46001600160401b0391601f612fba95169063ffffffff9060030b91161d60030b90565b60030b1690836148db565b610c1b9291600781901c601f16613c0c600f83901c601f16612fea565b60ff8216613c1c57505050614820565b613c2c6139d0612fba9486614802565b1790836148db565b610c1b9291601481901c603f1660030b90613c55600782901c601f166130d2565b60ff8216613c6557505050614820565b612fba92603f6001600160401b03613c8061355a9488614802565b1660070b91169063ffffffff9060070b91161d60070b90565b610c1b9291600781901c601f166001600160401b03613cc5816136026135fb600f87901c601f166135f1565b1660030b9160ff8216613cda57505050614820565b612fba920160030b6001600160401b031690836148db565b9190613cfd816149ac565b906001600160401b0380613d24613d1d6131d1600f86901c601f166131c7565b9387614802565b16911610156137bd5750610c1b91614820565b610c1b9291613d5363fffff000821660030b9160071c601f1690565b60ff8116613d62575050614820565b6001600160401b03806131949360030b1685011690836148db565b610c1b929163ffffffff613da9613da36131338463ffffffff1660030b60141d60030b90565b846123f3565b1660030b9060ff8116613180575050614820565b9190613dc8816149ac565b906001600160401b0380613de8613d1d6131d1600f86901c601f166131c7565b169116036137bd5750610c1b91614820565b610c1b929163ffffffff601482901c601f1660030b601f82613e2461314c600787901c8416613142565b1691161c1660030b9060ff8116613180575050614820565b610c1b9291601481901c603f1660030b90613e5d600782901c601f166130d2565b60ff8216613e6d57505050614820565b612fba92603f61242561389e9387614802565b610c1b9291613e9b8163ffffffff1660030b60141d60030b90565b906001600160401b03613eb7613a6a600784901c601f16613a60565b1660030b60ff8216613cda57505050614820565b91612a38916137d067fffffffffffffffe92613ef38363ffffffff1660030b60141d60030b90565b90613f0d613f07600786901c601f1661332f565b88614802565b9360ff8116613f28575b505060030b6001600160401b031690565b6001600160401b036004613f3f93011690886148db565b5f80613f17565b610c1b9291601f600782901c169063fffff0001660030b6131f7565b61345f610c1b93926001600160401b03613fa28263ffffffff8116600390810b60191d810b60051b63ffffffe01660079290921c601f1691909117900b90565b9181613fc161387f613fba600f85901c601f166133f2565b9388614802565b9360030b160116836149fd565b610c1b9291600781901c601f16613feb600f83901c601f16612fea565b60ff8216613ffb57505050614820565b61400b6139d0612fba9486614802565b1690836148db565b610c1b9291601481901c603f1660030b90614034600782901c601f166130d2565b60ff821661404457505050614820565b612fba92603f61405761389e9387614802565b911663ffffffff6001600160401b0380931691161b1690565b90610c1b9261411763ffffffff614124936140b063fff0000061409e84841660030b60030b601f1d60030b90565b841660141b1663ffffffff1660030b90565b6107fe601483901c166140e06140d4600b85901b63fffff800165b601f1c60011690565b600b1b63fffff8001690565b916140f4620ff00085169460071c601f1690565b60ff811661412a575b5084161717171660030b6001600160401b039060030b1690565b016001600160401b031690565b90614415565b61414290600489016001600160401b0316908b6148db565b5f6140fd565b610c1b9291600781901c601f16614165600f83901c601f16612fea565b9160ff821661417657505050614820565b612fba9261418f613b2e6001600160401b039387614802565b011690836148db565b610c1b92916141b38163ffffffff1660030b60141d60030b90565b906141c4600782901c601f166130d2565b60ff82166141d457505050614820565b612fba926141ea6001600160401b039286614802565b9060030b161690836148db565b9190614202816149ac565b906001600160401b0380614222613d1d6131d1600f86901c601f166131c7565b169116146137bd5750610c1b91614820565b919061423f816149ac565b906001600160401b038061425f613d1d6131d1600f86901c601f166131c7565b169116106137bd5750610c1b91614820565b610c1b92916142986142926133208363ffffffff1660030b60141d60030b90565b83612dd5565b60ff82166142a7575050614820565b61319491836148db565b610c1b92916142cc8163ffffffff1660030b60141d60030b90565b906142dd600782901c601f166130d2565b9160ff82166142ee57505050614820565b6001600160401b03614303612fba9486614802565b1660070b9060030b016001600160401b031690836148db565b1561432357565b60405162461bcd60e51b815260206004820152601d60248201527f577269746520776f726420726f6f7420646f65736e2774206d617463680000006044820152606490fd5b90612a389062400000612d296137e86120195f6143888562400008611c8e565b946144c9565b90612a3890610300612d296137e86120195f61438885610318611c8e565b612a38624000006143ca6120195f6143c48480611c8e565b936144c9565b612d2960208501926143dc84516145e3565b6144086143ff8651866040516020810190612cd8816102f9898560209181520190565b5088511461431c565b612d00600160c01b614a60565b90612a389062400000612d296137e86120195f6143888562400010611c8e565b915f612d2961444c612019612c8e612a38966147b8565b916020860193612d0061445f86516145e3565b9161449361448a8851886040516020810190888252612cd8816020840103601f198101835282610beb565b508a511461431c565b60c01b6001600160c01b031916614a60565b6144b2601f821615610e82565b6707ffffffffffffff9060051c611cc56001610e82565b906144e96001600160401b0391600160ff6001600160401b0392161b1690565b916144f7601f821615610e82565b60051c9161451b826707ffffffffffffff8561451285611c70565b16161615610e82565b168015612a81576707ffffffffffffff6001600160401b039216041690565b6001600160401b039061454b610e6a565b50166145716001600160401b03614569670800000000000000611c70565b168210610e82565b6040519061457e82610bb0565b81525f602082015290565b90614592610e6a565b506001600160401b0391821691600160ff83161b81168302908116919082036110d05760ff916145cb906707ffffffffffffff11610e82565b604051926145d884610bb0565b835216602082015290565b8051602091820180519182018301519282019182106110d0575290565b1561460757565b60405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420626520626967676572207468616e20746865207472656520696044820152643a39b2b63360d91b6064820152608490fd5b929190926146aa6146a261469661467861231d602089015160ff1690565b96614689603b60ff8a161115614600565b516001600160401b031690565b6001600160401b031690565b94603b61298e565b935f9160ff8616915b826001600160401b038516106146cb57505050509190565b9091929360016001600160401b0391845161470260208701516146fc6146968b67ffffffffffffffe09060051b1690565b906116e9565b61470a610c0c565b918252602082015260016001600160401b03868116908a161c1661475d578051602091820151018101516040805192830193845282015261474e81606081016102f9565b519020955b01169291906146b3565b8051602091820151018101516040805192830191825282019290925261478681606081016102f9565b51902095614753565b9161479d906020928461465a565b91909201611fe081519260051b1682018092116110d0575290565b90610f2b6001600160401b039267ffffffffffffffe0811693849116611c8e565b6147e290614a60565b60c01c90565b624000a0610f2b91612dc6565b62400098610f2b91612dc6565b6001600160401b0360f8610f2b9360031b1662400018011690612dc6565b90612a38905f612d2961483b612019612c8e624000106147b8565b916020860193612d00612cfb6001600160401b03600461485b89516145e3565b9461488861487f8b518b89604051612cd8816102f960208201948560209181520190565b508d511461431c565b011660c01b6001600160c01b03191690565b5f906001600160401b0360f8610c1b9460031b1662400018011690614435565b6001906001600160401b0360f8610c1b9460031b1662400018011690614435565b6001600160401b0360f8610c1b949360031b1662400018011690614435565b6001821661492d5761ffff91603f612425611cc59367fffffffffffffff863fffffff86007861660031b16941690612dd5565b60405162461bcd60e51b815260206004820152601d60248201527f6d6973616c69676e6564207265616455696e74313620616464726573730000006044820152606490fd5b60ff91614994611cc59267fffffffffffffff860388460031b16931690612dd5565b9063ffffffff6001600160401b0380931691161c1690565b63ffffffff90808216600390810b601f1d600c1b63fffff00016900b906107e0601482901c166149f06140d46140cb600785901c601e169460181b63ff0000001690565b9284161717171660030b90565b91909160078316614a1b576001600160401b03610c1b931690614435565b60405162461bcd60e51b815260206004820152601e60248201527f6d6973616c69676e656420777269746555696e743634206164647265737300006044820152606490fd5b614aca6001600160f81b0319603883901b16600883811b60ff60e01b1690601885901b60ff60e81b1690602886901b60ff60f01b169060ff60d81b9087901c16931717171760ff60d01b601884901c161760ff60c81b602884901c16179160381c60ff60c01b1690565b1790565b90919063ffffffff8083166010019081116110d05763ffffffff604091161161372457614b2b9063ffffffff603f614b0f6136f3866136ee62010000611c70565b941691169063ffffffff6001600160401b0380931691161b1690565b91161790565b90919063ffffffff8083166020019081116110d05763ffffffff604091161161372457614b2b9063ffffffff603f614b0f6136f3866136ee640100000000611c7056fea2646970667358221220da9162a42d481547699d970ec81fee658058e52b21ef8dc3d9ef6f4e2d3fcdce64736f6c634300081b0033a2646970667358221220ef811d3b91b0bbb7ef0b83e7c554dcb853f30d5f7219196955886d1fd312816f64736f6c634300081b0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"a\x01\x004a\0\xAAW`\x1FaQ\xE78\x81\x90\x03\x91\x82\x01`\x1F\x19\x16\x83\x01\x91`\x01`\x01`@\x1B\x03\x83\x11\x84\x84\x10\x17a\0\xAEW\x80\x84\x92`\x80\x94`@R\x839\x81\x01\x03\x12a\0\xAAWa\0H\x81a\0\xC2V[\x90a\0U` \x82\x01a\0\xC2V[a\0m``a\0f`@\x85\x01a\0\xC2V[\x93\x01a\0\xC2V[\x92`\xC0R`\xE0R`\x80R`\xA0R`@QaQ\x10\x90\x81a\0\xD7\x829`\x80Q\x81`\x87\x01R`\xA0Q\x81`\xB9\x01R`\xC0Q\x81`\xEB\x01R`\xE0Q\x81a\x01\x1C\x01R\xF3[_\x80\xFD[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[Q\x90`\x01`\x01`@\x1B\x03\x82\x16\x82\x03a\0\xAAWV\xFE`\x80\x80`@R`\x046\x10\x15a\0\x12W_\x80\xFD[_5`\xE0\x1C\x90\x81c\x0Bd\xD7\x9B\x14a\x02\x1BWPcr-\xF9e\x14a\x002W_\x80\xFD[4a\x02\x17Wa\0@6a\x02\xCEV[_`\x80`@Qa\0O\x81a\x02\xF4V[\x82\x81R\x82` \x82\x01R\x82`@\x82\x01R\x82``\x82\x01R\x01R`@Q\x91a\0s\x83a\x02\xF4V[`\x01\x83R` \x83\x01\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x84R`@\x81\x01\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x84R``\x82\x01\x94g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x86R`\x80\x83\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x81R`@Q\x96aM\xCA\x90\x81\x89\x01\x95\x89\x87\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x88\x11\x17a\x02\x03W`\xE0\x98g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x96\x81\x80\x96\x94\x8E\x9C\x82\x96\x8Ea\x03\x11\x909\x8CRQ\x16` \x8B\x01RQ\x16`@\x89\x01RQ\x16``\x87\x01RQ\x16`\x80\x85\x01RQ\x16`\xA0\x83\x01R`\x01`\x01`\xA0\x1B\x03\x16`\xC0\x82\x01R\x03\x01\x90_\xF0\x80\x15a\x01\xF8W`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x80\x82R` \x91\x7Fh\x95#\x87\xBAsl\x99(&\\c\xB2\x81\x12\xA6%B]\x9D\xFB\xE4\x87\x05hn\xA5\xBE\xD1\xF9.\xFB\x90\x83\x90\xA1`@Q\x90\x81R\xF3[`@Q=_\x82>=\x90\xFD[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[_\x80\xFD[4a\x02\x17Wa\x02)6a\x02\xCEV[cr-\xF9e`\xE0\x1B\x83R`\x04\x83\x01\x91\x90\x91R`\x01`\x01`\xA0\x1B\x03\x16`$\x82\x01R` \x81`D\x81_0Z\xF1\x80\x15a\x01\xF8W_\x90a\x02uW[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[P` =` \x11a\x02\xC7W[`\x1F\x81\x01`\x1F\x19\x16\x82\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x83\x82\x10\x17a\x02\x03W` \x91\x83\x91`@R\x81\x01\x03\x12a\x02\x17WQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x02\x17W` \x90a\x02`V[P=a\x02\x81V[`@\x90`\x03\x19\x01\x12a\x02\x17W`\x045\x90`$5`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x02\x17W\x90V[`\xA0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x02\x03W`@RV\xFEa\x01\xE0`@R4a\x01\xF3W`@QaM\xCA8\x81\x90\x03`\x1F\x81\x01`\x1F\x19\x16\x83\x01`\x01`\x01`@\x1B\x03\x81\x11\x84\x82\x10\x17a\x01\xF7W\x83\x92\x82\x91`@R\x839\x81\x01\x03\x90`\xE0\x82\x12a\x01\xF3W`\xA0\x81Q\x92`\x1F\x19\x01\x12a\x01\xF3W`@Q\x91`\xA0\x83\x01`\x01`\x01`@\x1B\x03\x81\x11\x84\x82\x10\x17a\x01\xF7W`@Ra\0|` \x83\x01a\x02\x0BV[\x83Ra\0\x8A`@\x83\x01a\x02\x0BV[\x90` \x84\x01\x91\x82Ra\0\x9E``\x84\x01a\x02\x0BV[`@\x85\x01\x90\x81Ra\0\xB1`\x80\x85\x01a\x02\x0BV[\x92``\x86\x01\x93\x84Ra\0\xC5`\xA0\x86\x01a\x02\x0BV[`\x80\x87\x01\x81\x81R`\xC0\x96\x90\x96\x01Q\x96\x90`\x01`\x01`\xA0\x1B\x03\x88\x16\x88\x03a\x01\xF3W`\x80\x94\x90\x94R_`\xA0\x81\x90R`\xC0RQ`\x01`\x01`@\x1B\x03\x90\x81\x16`\xE0R\x90Q\x81\x16a\x01\0R\x90Q\x81\x16a\x01 RB\x81\x16a\x01@R\x83Q\x81\x16\x91\x16\x81\x81\x11\x15a\x01\xECWP[a\x01`RQ`\x01`\x01`@\x1B\x03\x90\x81\x16a\x01\xA0R\x90Q\x16a\x01\x80Ra\x01\xC0R`@QaK\xAA\x90\x81a\x02 \x829`\x80Q\x81a\x045\x01R`\xA0Q\x81\x81\x81a\x06\x17\x01Ra\rv\x01R`\xC0Q\x81a\x08\x01\x01R`\xE0Q\x81a\x07\xD5\x01Ra\x01\0Q\x81\x81\x81a\x080\x01Ra\x11\xB9\x01Ra\x01 Q\x81\x81\x81a\x01l\x01R\x81\x81a\x08_\x01Ra\x11\x89\x01Ra\x01@Q\x81\x81\x81a\x022\x01Ra\x0F\xC4\x01Ra\x01`Q\x81\x81\x81a\x02\x11\x01Ra\x0F\xA3\x01Ra\x01\x80Q\x81a\x12\xC1\x01Ra\x01\xA0Q\x81a\x12\xA0\x01Ra\x01\xC0Q\x81a\x17\xDC\x01R\xF3[\x90Pa\x01*V[_\x80\xFD[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[Q\x90`\x01`\x01`@\x1B\x03\x82\x16\x82\x03a\x01\xF3WV\xFE`\x80`@R`\x046\x10\x15a\0\x11W_\x80\xFD[_5`\xE0\x1C\x80c\x1D[\xF7\x96\x14a\0\xD4W\x80cP\x17tj\x14a\0\xCFW\x80c`A\xDD\xD5\x14a\0\xCAW\x80cj\x1A\x14\r\x14a\0\xC5W\x80cw\x95\x82\x0C\x14a\0\xC0W\x80c\x8A\xCC\x80-\x14a\0\xBBW\x80c\x9A\x9BK+\x14a\0\xB6W\x80c\xA1\xAF\x90k\x14a\0\xB1W\x80c\xCB's\xDB\x14a\0\xACW\x80c\xFC\xC6\x07}\x14a\0\xA7W\x80c\xFC\xC8S\x91\x14a\0\xA2Wc\xFFx\xE0\xEE\x14a\0\x9DW_\x80\xFD[a\n)V[a\t%V[a\x08\xB5V[a\x08\x86V[a\x07\xB6V[a\x06DV[a\x05\xF4V[a\x05\x8FV[a\x05\x17V[a\x04\xACV[a\x034V[a\x01\rV[\x91\x81`\x1F\x84\x01\x12\x15a\x01\tW\x825\x91`\x01`\x01`@\x1B\x03\x83\x11a\x01\tW` \x80\x85\x01\x94\x84`\x05\x1B\x01\x01\x11a\x01\tWV[_\x80\xFD[4a\x01\tW`\x806`\x03\x19\x01\x12a\x01\tW`\x045`$5`\x01`\x01`@\x1B\x03\x81\x11a\x01\tWa\x01@\x906\x90`\x04\x01a\0\xD9V[`d5\x92`D5\x92\x91a\x01Qa\x0F\x9EV[a\x03\x14Wa\x01_\x85\x85a\x0F\xFAV[\x92\x82\x91`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90a\x01\x98\x81\x83\x14a\x0E\x82V[_\x92[\x82\x84\x10a\x02\xC3WPPPP\x82\x03a\x02rW\x7F\xE557\xF2\x02\x91\x1D7mn(X5\xB2\xA2\x01n\x83\xE9\x9F\xBE\x84\xA0Y\xD4E\xCC+\xE4\x80rb\x93a\x02m\x93a\x02]\x92a\x01\xE8\x85_R`\x03` R`@_ \x90V[Ua\x01\xFB\x84_R`\x02` R`@_ \x90V[a\x02\x0Ca\x02\x07\x82a\x0C\x1DV[a\x10 V[a\x02W\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83a\x10lV[\x84a\x10\xD5V[`@Q\x90\x81R\x90\x81\x90` \x82\x01\x90V[\x03\x90\xA1\0[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7Fcommitment last state doesn't ma`D\x82\x01Rb\x0E\x8Cm`\xEB\x1B`d\x82\x01R`\x84\x90\xFD[\x90\x91\x92\x93`\x01\x90a\x02\xF9a\x03\x07a\x02\xDB\x88\x87\x87a\x1CLV[5\x92`@Q\x92\x83\x91` \x83\x01\x95\x86\x90\x91`@\x92\x82R` \x82\x01R\x01\x90V[\x03`\x1F\x19\x81\x01\x83R\x82a\x0B\xEBV[Q\x90 \x94\x01\x92\x91\x90a\x01\x9BV[c\xACW\xBE\xEF`\xE0\x1B_R`\x04_\xFD[`@\x90`\x03\x19\x01\x12a\x01\tW`\x04\x90V[4a\x01\tW`\xC06`\x03\x19\x01\x12a\x01\tWa\x03N6a\x03#V[`d5`D5`\x845`\xA45`\x01`\x01`@\x1B\x03\x81\x11a\x01\tWa\x03v\x906\x90`\x04\x01a\0\xD9V[\x93\x90\x92a\x03\x8Aa\x03\x84a\x13\x14V[\x15a\x0CEV[a\x03\x9Ca\x03\x976\x88a\x0C[V[a\x13,V[_R`\x04` R`@_ a\x03\xB8a\x03\xB3\x82a\x0C\x83V[a\x13OV[`\x01`\x01`\x01`@\x1B\x03`\x80a\x03\xCD\x84a\x0C\x83V[\x01Q\x16\x03a\x04\\Wa\x04Z\x96a\x03\xEC\x84\x84a\x03\xE7\x85a\x0C\x83V[a\x13\x93V[a\x043a\x04\x02\x825_R`\x02` R`@_ \x90V[a\x04*a\x04\x1B` \x85\x015_R`\x02` R`@_ \x90V[\x91a\x04%\x81a\x13\x9FV[a\x13\xB9V[a\x04%\x81a\x13\x9FV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91a\x14\xC6V[\0[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7Fmatch is not ready to be finaliz`D\x82\x01Ra\x19Y`\xF2\x1B`d\x82\x01R`\x84\x90\xFD[4a\x01\tW`\xA06`\x03\x19\x01\x12a\x01\tWa\x04\xC66a\x03#V[`D5`d5\x91`\x845\x92`\x01`\x01`@\x1B\x03\x84\x11a\x01\tW6`#\x85\x01\x12\x15a\x01\tW\x83`\x04\x015\x92`\x01`\x01`@\x1B\x03\x84\x11a\x01\tW6`$\x85\x87\x01\x01\x11a\x01\tW`$a\x04Z\x95\x01\x92a\x0C\xEEV[4a\x01\tW`@6`\x03\x19\x01\x12a\x01\tWa\x0516a\x03#V[\x805_R`\x02` R` a\x05H`@_ a\x0C\x1DV[\x91\x015_R`\x02` Ra\x05ga\x05a`@_ a\x0C\x1DV[\x91a\x19\xCDV[\x15\x90\x81\x15a\x05~W[P`@Q\x90\x15\x15\x81R` \x90\xF3[a\x05\x88\x91Pa\x19\xCDV[\x15_a\x05pV[4a\x01\tW` 6`\x03\x19\x01\x12a\x01\tW```\x045a\x05\xADa\x0EjV[P\x80_R`\x02` R`@_ \x90_R`\x03` Ra\x05\xD0`@_ T\x91a\x0C\x1DV[\x90`\x01`\x01`@\x1B\x03` `@Q\x93\x82\x81Q\x16\x85R\x01Q\x16` \x83\x01R`@\x82\x01R\xF3[4a\x01\tW` 6`\x03\x19\x01\x12a\x01\tW` a\x06=\x90\xFD[\x15a\x01\tWV[\x92a\x17\x94a\x0C\x0CV[\x92a\x17\xA06\x83\x83a\x16jV[\x84R_` \x85\x01Ra\x17\xB0a\x0C\x0CV[\x93\x85\x85R` \x85\x01R\x83\x94a\x17\xC7b\x10\0\0a\x14\x9AV[\x94a\x17\xDAh\x10\0\0\0\0\0\0\0\0a\x14\x9AV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x91\x90\x82a\x18:WPPPPPPa\x18\x1A\x90a\x16\xCDV[\x16a\x18,Wa\x18(\x81a)\xA2V[Q\x90V[a\x185\x81a \0V[PQ\x90V[\x86\x94\x97\x91\x92\x95\x98\x93\x96\x16\x15_\x14a\x19pWPPPa\x18aa\x18[\x86\x86a\x16\xF6V[\x90a\x17!V[\x93a\x18k\x85a\x16\xDBV[a\x18sa\x0C\x0CV[\x90a\x18\x7F6\x89\x85a\x16jV[\x82R` \x82\x01Ra\x18\x8Ea\x0C\x0CV[\x94\x85R` \x85\x01R\x83\x95\x85\x15\x15_\x14a\x19bW\x92` \x92a\x18\xD2a\x18\xC1`D\x94a\x18\xEE\x97a\x18\xBB\x8Ba\x16\xDBV[\x91a\x17\x04V[\x94\x90\x92\x90`\x01`\x01`@\x1B\x03\x16\x1C\x90V[`@Qb\xF5-\xE9`\xE7\x1B\x81R\x95\x86\x94\x85\x93\x84\x93`\x04\x85\x01a\x17LV[\x03\x91Z\xFA\x80\x15a\x19]Wa\x185\x93a\x19!\x92_\x92a\x19&W[Pc\xFF\xFF\xFF\xFF\x90a\x19\x19\x83\x15\x15a\x17\x84V[\x16\x90\x83a\"\\V[a \0V[c\xFF\xFF\xFF\xFF\x91\x92Pa\x19O\x90` =` \x11a\x19VW[a\x19G\x81\x83a\x0B\xEBV[\x81\x01\x90a\x17=V[\x91\x90a\x19\x07V[P=a\x19=V[a\x17yV[PPPPa\x185\x91Pa \0V[\x94P\x94P\x94Pa\x19\x80\x91Pa\x16\xCDV[\x16a\x19\x8EWa\x18(\x90a)\xA2V[a\x185\x90a \0V[`\x01T\x80\x15a\x10\xD0W_\x19\x01`\x01U_R`\x04` R_`\x04`@\x82 \x82\x81U\x82`\x01\x82\x01U\x82`\x02\x82\x01U\x82`\x03\x82\x01U\x01UV[` \x81\x01Q`\x01`\x01`@\x1B\x03\x16\x90\x81a\x19\xE8WPP`\x01\x90V[`\x01`\x01`@\x1B\x03a\x1A\x01\x81\x80\x93Q\x16\x93\x82B\x16a\x1C\xAEV[\x16\x91\x16\x11\x90V[```\x01`\x01`@\x1B\x03`\xA0\x83\x01Q\x16\x91\x01Q\x80\x82\x1B\x91`\x01\x82\x84\x04\x91\x1B\x14\x90\x15\x17\x15a\x10\xD0W\x81\x01\x80\x91\x11a\x10\xD0W\x90V[` \x81\x01Q`\x01`\x01`@\x1B\x03\x16\x80a\x1A\\WPQ`\x01`\x01`@\x1B\x03\x16\x90V[a\x10\x87`\x01`\x01`@\x1B\x03a\x0F+\x93Q\x16\x91`\x01`\x01`@\x1B\x03B\x16a\x1C\xAEV[` \x81\x01\x90`\x01`\x01`@\x1B\x03\x82Q\x16\x15a\x1A\xB5W`\x01`\x01`@\x1B\x03a\x1A\xAC\x81a\x0F+\x94Q\x16\x82B\x16a\x1C\xAEV[\x91Q\x16\x90a\x1C\xC9V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1C`$\x82\x01R\x7Fa paused clock can't timeout\0\0\0\0`D\x82\x01R`d\x90\xFD[_\x90_T\x90\x81a\x1B\x06WV[`\x01\x92PV[\x94\x92\x93\x91\x90\x93` a\x1B\x1D\x87a\x0C\x83V[\x01Q\x82\x14a\x1B\x80WP\x92a\x0B\t\x83\x83a\x1B^a\x1Bd\x96a\x03\x97\x96\x7F)\xFF9Wc\xFF\xFF\xFF\xFF\x91a\x1C\xC5\x91`8`\x03\x83\x90\x1B\x16\x91`?\x91a$%\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF8\x16\x90a-\xD5V[\x91\x16c\xFF\xFF\xFF\xFF`\x01`\x01`@\x1B\x03\x80\x93\x16\x91\x16\x1C\x16\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7Fmisaligned readUint32 address\0\0\0`D\x82\x01R`d\x90\xFD[`@Q\x90a$\x92`@\x83a\x0B\xEBV[`\x13\x82Rr4\xB662\xB3\xB0\xB6\x104\xB79\xBA9:\xB1\xBA4\xB7\xB7`i\x1B` \x83\x01RV[\x92\x91\x90ap\x7F\x81\x16`\x13\x03a$\xCDWa\x0C\x1B\x92\x93aB\xB1V[ap\x7F\x81\x16a0\x03\x03a$\xE4Wa\x0C\x1B\x92\x93aBqV[ap\x7F\x81\x16a`c\x03a$\xFBWa\x0C\x1B\x92\x93aB4V[ap\x7F\x81\x16`c\x03a%\x11Wa\x0C\x1B\x92\x93aA\xF7V[ap\x7F\x81\x16ap\x13\x03a%(Wa\x0C\x1B\x92\x93aA\x98V[c\xFE\0p\x7F\x81\x16`3\x03a%@Wa\x0C\x1B\x92\x93aAHV[`\x7F\x81\x16`o\x03a%UWa\x0C\x1B\x92\x93a@pV[c\xFC\0p\x7F\x81\x16a\x10\x13\x03a%nWa\x0C\x1B\x92\x93a@\x13V[c\xFE\0p\x7F\x81\x16ap3\x03a%\x87Wa\x0C\x1B\x92\x93a?\xCEV[ap\x7F\x81\x16a0#\x03a%\x9EWa\x0C\x1B\x92\x93a?bV[`\x7F\x81\x16`7\x03a%\xB3Wa\x0C\x1B\x92\x93a?FV[ap\x7F\x81\x16`g\x03a%\xC9Wa\x0C\x1B\x92\x93a>\xCBV[ap\x7F\x81\x16`\x1B\x03a%\xDFWa\x0C\x1B\x92\x93a>\x80V[c\xFC\0p\x7F\x81\x16aP\x13\x03a%\xF8Wa\x0C\x1B\x92\x93a>Wa\x0C\x1B\x92\x93a3\xA4V[c\xFE\0p\x7F\x81\x16aP;\x03a(WWa\x0C\x1B\x92\x93a3fV[ap\x7F\x81\x16a`\x03\x03a(nWa\x0C\x1B\x92\x93a2\xFFV[c\xFE\0p\x7F\x81\x16a\x10;\x03a(\x87Wa\x0C\x1B\x92\x93a2\xB9V[ap\x7F\x81\x16`\x03\x03a(\x9DWa\x0C\x1B\x92\x93a2}V[c\xFE\0p\x7F\x81\x16a03\x03a(\xB6Wa\x0C\x1B\x92\x93a2\x1EV[c\xFE\0p\x7F\x81\x16c@\0P;\x03a(\xD1Wa\x0C\x1B\x92\x93a1\x9BV[ap\x7F\x81\x16a\x10\x03\x03a(\xE8Wa\x0C\x1B\x92\x93a1\x0FV[ap\x7F\x81\x16a`\x13\x03a(\xFFWa\x0C\x1B\x92\x93a0\xAAV[ap\x7F\x81\x16a0\x13\x03a)\x16Wa\x0C\x1B\x92\x93a0DV[c\xFE\0p\x7F\x81\x16a 3\x03a)/Wa\x0C\x1B\x92\x93a/\xD1V[ap\x7F\x81\x16a \x13\x03a)FWa\x0C\x1B\x92\x93a/MV[ap\x7F\x81\x16`\x0F\x03a)]WPa\x0C\x1B\x91\x92aH V[c\xFF\xFF\xFF\xFF\x16`s\x81\x03a)vWPa\x0C\x1B\x91\x92a.\x99V[b\x10\0s\x84\x91\x14a)\x89Wa#=a$\x83V[a.5V[\x90`\xFF\x80\x91\x16\x91\x16\x03\x90`\xFF\x82\x11a\x10\xD0WV[a)\xAAa\x0EjV[P`\x01`\x01`@\x1B\x03b\x02\0\0a)\xCB\x81a)\xC4\x81a\x1CpV[\x16\x15a\x0E\x82V[\x16\x80\x15a*\x81W`\x11`\x01`\x01`@\x1B\x03a)\xEB\x92b\x02\0\0\x04\x16aE\x89V[` \x82\x01a*\x04a)\xFC\x82QaE\xE3V[\x83\x83QaFZV[P\x83Q\x03a*$a1L`\x07\x87\x90\x1C\x84\x16a1BV[\x16\x91\x16\x1C\x16`\x03\x0B\x90`\xFF\x81\x16a1\x80WPPaH V[a\x0C\x1B\x92\x91`\x14\x81\x90\x1C`?\x16`\x03\x0B\x90a>]`\x07\x82\x90\x1C`\x1F\x16a0\xD2V[`\xFF\x82\x16a>mWPPPaH V[a/\xBA\x92`?a$%a8\x9E\x93\x87aH\x02V[a\x0C\x1B\x92\x91a>\x9B\x81c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[\x90`\x01`\x01`@\x1B\x03a>\xB7a:j`\x07\x84\x90\x1C`\x1F\x16a:`V[\x16`\x03\x0B`\xFF\x82\x16a<\xDAWPPPaH V[\x91a*8\x91a7\xD0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFE\x92a>\xF3\x83c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[\x90a?\ra?\x07`\x07\x86\x90\x1C`\x1F\x16a3/V[\x88aH\x02V[\x93`\xFF\x81\x16a?(W[PP`\x03\x0B`\x01`\x01`@\x1B\x03\x16\x90V[`\x01`\x01`@\x1B\x03`\x04a??\x93\x01\x16\x90\x88aH\xDBV[_\x80a?\x17V[a\x0C\x1B\x92\x91`\x1F`\x07\x82\x90\x1C\x16\x90c\xFF\xFF\xF0\0\x16`\x03\x0Ba1\xF7V[a4_a\x0C\x1B\x93\x92`\x01`\x01`@\x1B\x03a?\xA2\x82c\xFF\xFF\xFF\xFF\x81\x16`\x03\x90\x81\x0B`\x19\x1D\x81\x0B`\x05\x1Bc\xFF\xFF\xFF\xE0\x16`\x07\x92\x90\x92\x1C`\x1F\x16\x91\x90\x91\x17\x90\x0B\x90V[\x91\x81a?\xC1a8\x7Fa?\xBA`\x0F\x85\x90\x1C`\x1F\x16a3\xF2V[\x93\x88aH\x02V[\x93`\x03\x0B\x16\x01\x16\x83aI\xFDV[a\x0C\x1B\x92\x91`\x07\x81\x90\x1C`\x1F\x16a?\xEB`\x0F\x83\x90\x1C`\x1F\x16a/\xEAV[`\xFF\x82\x16a?\xFBWPPPaH V[a@\x0Ba9\xD0a/\xBA\x94\x86aH\x02V[\x16\x90\x83aH\xDBV[a\x0C\x1B\x92\x91`\x14\x81\x90\x1C`?\x16`\x03\x0B\x90a@4`\x07\x82\x90\x1C`\x1F\x16a0\xD2V[`\xFF\x82\x16a@DWPPPaH V[a/\xBA\x92`?a@Wa8\x9E\x93\x87aH\x02V[\x91\x16c\xFF\xFF\xFF\xFF`\x01`\x01`@\x1B\x03\x80\x93\x16\x91\x16\x1B\x16\x90V[\x90a\x0C\x1B\x92aA\x17c\xFF\xFF\xFF\xFFaA$\x93a@\xB0c\xFF\xF0\0\0a@\x9E\x84\x84\x16`\x03\x0B`\x03\x0B`\x1F\x1D`\x03\x0B\x90V[\x84\x16`\x14\x1B\x16c\xFF\xFF\xFF\xFF\x16`\x03\x0B\x90V[a\x07\xFE`\x14\x83\x90\x1C\x16a@\xE0a@\xD4`\x0B\x85\x90\x1Bc\xFF\xFF\xF8\0\x16[`\x1F\x1C`\x01\x16\x90V[`\x0B\x1Bc\xFF\xFF\xF8\0\x16\x90V[\x91a@\xF4b\x0F\xF0\0\x85\x16\x94`\x07\x1C`\x1F\x16\x90V[`\xFF\x81\x16aA*W[P\x84\x16\x17\x17\x17\x16`\x03\x0B`\x01`\x01`@\x1B\x03\x90`\x03\x0B\x16\x90V[\x01`\x01`\x01`@\x1B\x03\x16\x90V[\x90aD\x15V[aAB\x90`\x04\x89\x01`\x01`\x01`@\x1B\x03\x16\x90\x8BaH\xDBV[_a@\xFDV[a\x0C\x1B\x92\x91`\x07\x81\x90\x1C`\x1F\x16aAe`\x0F\x83\x90\x1C`\x1F\x16a/\xEAV[\x91`\xFF\x82\x16aAvWPPPaH V[a/\xBA\x92aA\x8Fa;.`\x01`\x01`@\x1B\x03\x93\x87aH\x02V[\x01\x16\x90\x83aH\xDBV[a\x0C\x1B\x92\x91aA\xB3\x81c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[\x90aA\xC4`\x07\x82\x90\x1C`\x1F\x16a0\xD2V[`\xFF\x82\x16aA\xD4WPPPaH V[a/\xBA\x92aA\xEA`\x01`\x01`@\x1B\x03\x92\x86aH\x02V[\x90`\x03\x0B\x16\x16\x90\x83aH\xDBV[\x91\x90aB\x02\x81aI\xACV[\x90`\x01`\x01`@\x1B\x03\x80aB\"a=\x1Da1\xD1`\x0F\x86\x90\x1C`\x1F\x16a1\xC7V[\x16\x91\x16\x14a7\xBDWPa\x0C\x1B\x91aH V[\x91\x90aB?\x81aI\xACV[\x90`\x01`\x01`@\x1B\x03\x80aB_a=\x1Da1\xD1`\x0F\x86\x90\x1C`\x1F\x16a1\xC7V[\x16\x91\x16\x10a7\xBDWPa\x0C\x1B\x91aH V[a\x0C\x1B\x92\x91aB\x98aB\x92a3 \x83c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[\x83a-\xD5V[`\xFF\x82\x16aB\xA7WPPaH V[a1\x94\x91\x83aH\xDBV[a\x0C\x1B\x92\x91aB\xCC\x81c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[\x90aB\xDD`\x07\x82\x90\x1C`\x1F\x16a0\xD2V[\x91`\xFF\x82\x16aB\xEEWPPPaH V[`\x01`\x01`@\x1B\x03aC\x03a/\xBA\x94\x86aH\x02V[\x16`\x07\x0B\x90`\x03\x0B\x01`\x01`\x01`@\x1B\x03\x16\x90\x83aH\xDBV[\x15aC#WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FWrite word root doesn't match\0\0\0`D\x82\x01R`d\x90\xFD[\x90a*8\x90b@\0\0a-)a7\xE8a \x19_aC\x88\x85b@\0\x08a\x1C\x8EV[\x94aD\xC9V[\x90a*8\x90a\x03\0a-)a7\xE8a \x19_aC\x88\x85a\x03\x18a\x1C\x8EV[a*8b@\0\0aC\xCAa \x19_aC\xC4\x84\x80a\x1C\x8EV[\x93aD\xC9V[a-)` \x85\x01\x92aC\xDC\x84QaE\xE3V[aD\x08aC\xFF\x86Q\x86`@Q` \x81\x01\x90a,\xD8\x81a\x02\xF9\x89\x85` \x91\x81R\x01\x90V[P\x88Q\x14aC\x1CV[a-\0`\x01`\xC0\x1BaJ`V[\x90a*8\x90b@\0\0a-)a7\xE8a \x19_aC\x88\x85b@\0\x10a\x1C\x8EV[\x91_a-)aDLa \x19a,\x8Ea*8\x96aG\xB8V[\x91` \x86\x01\x93a-\0aD_\x86QaE\xE3V[\x91aD\x93aD\x8A\x88Q\x88`@Q` \x81\x01\x90\x88\x82Ra,\xD8\x81` \x84\x01\x03`\x1F\x19\x81\x01\x83R\x82a\x0B\xEBV[P\x8AQ\x14aC\x1CV[`\xC0\x1B`\x01`\x01`\xC0\x1B\x03\x19\x16aJ`V[aD\xB2`\x1F\x82\x16\x15a\x0E\x82V[g\x07\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90`\x05\x1Ca\x1C\xC5`\x01a\x0E\x82V[\x90aD\xE9`\x01`\x01`@\x1B\x03\x91`\x01`\xFF`\x01`\x01`@\x1B\x03\x92\x16\x1B\x16\x90V[\x91aD\xF7`\x1F\x82\x16\x15a\x0E\x82V[`\x05\x1C\x91aE\x1B\x82g\x07\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85aE\x12\x85a\x1CpV[\x16\x16\x16\x15a\x0E\x82V[\x16\x80\x15a*\x81Wg\x07\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x01`\x01`@\x1B\x03\x92\x16\x04\x16\x90V[`\x01`\x01`@\x1B\x03\x90aEKa\x0EjV[P\x16aEq`\x01`\x01`@\x1B\x03aEig\x08\0\0\0\0\0\0\0a\x1CpV[\x16\x82\x10a\x0E\x82V[`@Q\x90aE~\x82a\x0B\xB0V[\x81R_` \x82\x01R\x90V[\x90aE\x92a\x0EjV[P`\x01`\x01`@\x1B\x03\x91\x82\x16\x91`\x01`\xFF\x83\x16\x1B\x81\x16\x83\x02\x90\x81\x16\x91\x90\x82\x03a\x10\xD0W`\xFF\x91aE\xCB\x90g\x07\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x11a\x0E\x82V[`@Q\x92aE\xD8\x84a\x0B\xB0V[\x83R\x16` \x82\x01R\x90V[\x80Q` \x91\x82\x01\x80Q\x91\x82\x01\x83\x01Q\x92\x82\x01\x91\x82\x10a\x10\xD0WR\x90V[\x15aF\x07WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FCannot be bigger than the tree i`D\x82\x01Rd:9\xB2\xB63`\xD9\x1B`d\x82\x01R`\x84\x90\xFD[\x92\x91\x90\x92aF\xAAaF\xA2aF\x96aFxa#\x1D` \x89\x01Q`\xFF\x16\x90V[\x96aF\x89`;`\xFF\x8A\x16\x11\x15aF\0V[Q`\x01`\x01`@\x1B\x03\x16\x90V[`\x01`\x01`@\x1B\x03\x16\x90V[\x94`;a)\x8EV[\x93_\x91`\xFF\x86\x16\x91[\x82`\x01`\x01`@\x1B\x03\x85\x16\x10aF\xCBWPPPP\x91\x90V[\x90\x91\x92\x93`\x01`\x01`\x01`@\x1B\x03\x91\x84QaG\x02` \x87\x01QaF\xFCaF\x96\x8Bg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x90`\x05\x1B\x16\x90V[\x90a\x16\xE9V[aG\na\x0C\x0CV[\x91\x82R` \x82\x01R`\x01`\x01`\x01`@\x1B\x03\x86\x81\x16\x90\x8A\x16\x1C\x16aG]W\x80Q` \x91\x82\x01Q\x01\x81\x01Q`@\x80Q\x92\x83\x01\x93\x84R\x82\x01RaGN\x81``\x81\x01a\x02\xF9V[Q\x90 \x95[\x01\x16\x92\x91\x90aF\xB3V[\x80Q` \x91\x82\x01Q\x01\x81\x01Q`@\x80Q\x92\x83\x01\x91\x82R\x82\x01\x92\x90\x92RaG\x86\x81``\x81\x01a\x02\xF9V[Q\x90 \x95aGSV[\x91aG\x9D\x90` \x92\x84aFZV[\x91\x90\x92\x01a\x1F\xE0\x81Q\x92`\x05\x1B\x16\x82\x01\x80\x92\x11a\x10\xD0WR\x90V[\x90a\x0F+`\x01`\x01`@\x1B\x03\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x16\x93\x84\x91\x16a\x1C\x8EV[aG\xE2\x90aJ`V[`\xC0\x1C\x90V[b@\0\xA0a\x0F+\x91a-\xC6V[b@\0\x98a\x0F+\x91a-\xC6V[`\x01`\x01`@\x1B\x03`\xF8a\x0F+\x93`\x03\x1B\x16b@\0\x18\x01\x16\x90a-\xC6V[\x90a*8\x90_a-)aH;a \x19a,\x8Eb@\0\x10aG\xB8V[\x91` \x86\x01\x93a-\0a,\xFB`\x01`\x01`@\x1B\x03`\x04aH[\x89QaE\xE3V[\x94aH\x88aH\x7F\x8BQ\x8B\x89`@Qa,\xD8\x81a\x02\xF9` \x82\x01\x94\x85` \x91\x81R\x01\x90V[P\x8DQ\x14aC\x1CV[\x01\x16`\xC0\x1B`\x01`\x01`\xC0\x1B\x03\x19\x16\x90V[_\x90`\x01`\x01`@\x1B\x03`\xF8a\x0C\x1B\x94`\x03\x1B\x16b@\0\x18\x01\x16\x90aD5V[`\x01\x90`\x01`\x01`@\x1B\x03`\xF8a\x0C\x1B\x94`\x03\x1B\x16b@\0\x18\x01\x16\x90aD5V[`\x01`\x01`@\x1B\x03`\xF8a\x0C\x1B\x94\x93`\x03\x1B\x16b@\0\x18\x01\x16\x90aD5V[`\x01\x82\x16aI-Wa\xFF\xFF\x91`?a$%a\x1C\xC5\x93g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF8c\xFF\xFF\xFF\xF8`\x07\x86\x16`\x03\x1B\x16\x94\x16\x90a-\xD5V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7Fmisaligned readUint16 address\0\0\0`D\x82\x01R`d\x90\xFD[`\xFF\x91aI\x94a\x1C\xC5\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF8`8\x84`\x03\x1B\x16\x93\x16\x90a-\xD5V[\x90c\xFF\xFF\xFF\xFF`\x01`\x01`@\x1B\x03\x80\x93\x16\x91\x16\x1C\x16\x90V[c\xFF\xFF\xFF\xFF\x90\x80\x82\x16`\x03\x90\x81\x0B`\x1F\x1D`\x0C\x1Bc\xFF\xFF\xF0\0\x16\x90\x0B\x90a\x07\xE0`\x14\x82\x90\x1C\x16aI\xF0a@\xD4a@\xCB`\x07\x85\x90\x1C`\x1E\x16\x94`\x18\x1Bc\xFF\0\0\0\x16\x90V[\x92\x84\x16\x17\x17\x17\x16`\x03\x0B\x90V[\x91\x90\x91`\x07\x83\x16aJ\x1BW`\x01`\x01`@\x1B\x03a\x0C\x1B\x93\x16\x90aD5V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7Fmisaligned writeUint64 address\0\0`D\x82\x01R`d\x90\xFD[aJ\xCA`\x01`\x01`\xF8\x1B\x03\x19`8\x83\x90\x1B\x16`\x08\x83\x81\x1B`\xFF`\xE0\x1B\x16\x90`\x18\x85\x90\x1B`\xFF`\xE8\x1B\x16\x90`(\x86\x90\x1B`\xFF`\xF0\x1B\x16\x90`\xFF`\xD8\x1B\x90\x87\x90\x1C\x16\x93\x17\x17\x17\x17`\xFF`\xD0\x1B`\x18\x84\x90\x1C\x16\x17`\xFF`\xC8\x1B`(\x84\x90\x1C\x16\x17\x91`8\x1C`\xFF`\xC0\x1B\x16\x90V[\x17\x90V[\x90\x91\x90c\xFF\xFF\xFF\xFF\x80\x83\x16`\x10\x01\x90\x81\x11a\x10\xD0Wc\xFF\xFF\xFF\xFF`@\x91\x16\x11a7$WaK+\x90c\xFF\xFF\xFF\xFF`?aK\x0Fa6\xF3\x86a6\xEEb\x01\0\0a\x1CpV[\x94\x16\x91\x16\x90c\xFF\xFF\xFF\xFF`\x01`\x01`@\x1B\x03\x80\x93\x16\x91\x16\x1B\x16\x90V[\x91\x16\x17\x90V[\x90\x91\x90c\xFF\xFF\xFF\xFF\x80\x83\x16` \x01\x90\x81\x11a\x10\xD0Wc\xFF\xFF\xFF\xFF`@\x91\x16\x11a7$WaK+\x90c\xFF\xFF\xFF\xFF`?aK\x0Fa6\xF3\x86a6\xEEd\x01\0\0\0\0a\x1CpV\xFE\xA2dipfsX\"\x12 \xDA\x91b\xA4-H\x15Gi\x9D\x97\x0E\xC8\x1F\xEEe\x80X\xE5+!\xEF\x8D\xC3\xD9\xEFoN-?\xCD\xCEdsolcC\0\x08\x1B\x003\xA2dipfsX\"\x12 \xEF\x81\x1D;\x91\xB0\xBB\xB7\xEF\x0B\x83\xE7\xC5T\xDC\xB8S\xF3\r_r\x19\x19iU\x88m\x1F\xD3\x12\x81odsolcC\0\x08\x1B\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x6080806040526004361015610012575f80fd5b5f3560e01c9081630b64d79b1461021b575063722df96514610032575f80fd5b3461021757610040366102ce565b5f608060405161004f816102f4565b828152826020820152826040820152826060820152015260405191610073836102f4565b60018352602083019267ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168452604081019267ffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168452606082019467ffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686526080830167ffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016815260405196614dca908189019589871067ffffffffffffffff8811176102035760e09867ffffffffffffffff8096818096948e9c82968e61031190398c52511660208b0152511660408901525116606087015251166080850152511660a08301526001600160a01b031660c08201520301905ff080156101f8576040516001600160a01b039091168082526020917f68952387ba736c9928265c63b28112a625425d9dfbe48705686ea5bed1f92efb908390a1604051908152f35b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b3461021757610229366102ce565b63722df96560e01b835260048301919091526001600160a01b031660248201526020816044815f305af180156101f8575f90610275575b6040516001600160a01b039091168152602090f35b5060203d6020116102c7575b601f8101601f1916820167ffffffffffffffff8111838210176102035760209183916040528101031261021757516001600160a01b038116810361021757602090610260565b503d610281565b604090600319011261021757600435906024356001600160a01b03811681036102175790565b60a0810190811067ffffffffffffffff8211176102035760405256fe6101e0604052346101f357604051614dca38819003601f8101601f191683016001600160401b038111848210176101f7578392829160405283398101039060e082126101f35760a0815192601f1901126101f3576040519160a083016001600160401b038111848210176101f75760405261007c6020830161020b565b835261008a6040830161020b565b906020840191825261009e6060840161020b565b604085019081526100b16080850161020b565b92606086019384526100c560a0860161020b565b6080870181815260c0969096015196906001600160a01b03881688036101f3576080949094525f60a081905260c052516001600160401b0390811660e0529051811661010052905181166101205242811661014052835181169116818111156101ec57505b61016052516001600160401b039081166101a052905116610180526101c052604051614baa9081610220823960805181610435015260a0518181816106170152610d76015260c05181610801015260e051816107d501526101005181818161083001526111b901526101205181818161016c0152818161085f01526111890152610140518181816102320152610fc40152610160518181816102110152610fa3015261018051816112c101526101a051816112a001526101c051816117dc0152f35b905061012a565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160401b03821682036101f35756fe60806040526004361015610011575f80fd5b5f3560e01c80631d5bf796146100d45780635017746a146100cf5780636041ddd5146100ca5780636a1a140d146100c55780637795820c146100c05780638acc802d146100bb5780639a9b4b2b146100b6578063a1af906b146100b1578063cb2773db146100ac578063fcc6077d146100a7578063fcc85391146100a25763ff78e0ee1461009d575f80fd5b610a29565b610925565b6108b5565b610886565b6107b6565b610644565b6105f4565b61058f565b610517565b6104ac565b610334565b61010d565b9181601f84011215610109578235916001600160401b038311610109576020808501948460051b01011161010957565b5f80fd5b34610109576080366003190112610109576004356024356001600160401b038111610109576101409036906004016100d9565b606435926044359291610151610f9e565b6103145761015f8585610ffa565b9282916001600160401b037f00000000000000000000000000000000000000000000000000000000000000001690610198818314610e82565b5f925b8284106102c357505050508203610272577fe53537f202911d376d6e285835b2a2016e83e99fbe84a059d445cc2be48072629361026d9361025d926101e8855f52600360205260405f2090565b556101fb845f52600260205260405f2090565b61020c61020782610c1d565b611020565b6102577f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008361106c565b846110d5565b6040519081529081906020820190565b0390a1005b60405162461bcd60e51b815260206004820152602360248201527f636f6d6d69746d656e74206c61737420737461746520646f65736e2774206d616044820152620e8c6d60eb1b6064820152608490fd5b909192936001906102f96103076102db888787611c4c565b35926040519283916020830195869091604092825260208201520190565b03601f198101835282610beb565b519020940192919061019b565b63ac57beef60e01b5f5260045ffd5b604090600319011261010957600490565b346101095760c03660031901126101095761034e36610323565b60643560443560843560a4356001600160401b038111610109576103769036906004016100d9565b93909261038a610384611314565b15610c45565b61039c6103973688610c5b565b61132c565b5f52600460205260405f206103b86103b382610c83565b61134f565b60016001600160401b0360806103cd84610c83565b0151160361045c5761045a966103ec84846103e785610c83565b611393565b61043361040282355f52600260205260405f2090565b61042a61041b60208501355f52600260205260405f2090565b916104258161139f565b6113b9565b6104258161139f565b7f0000000000000000000000000000000000000000000000000000000000000000916114c6565b005b60405162461bcd60e51b815260206004820152602260248201527f6d61746368206973206e6f7420726561647920746f2062652066696e616c697a604482015261195960f21b6064820152608490fd5b346101095760a0366003190112610109576104c636610323565b60443560643591608435926001600160401b0384116101095736602385011215610109578360040135926001600160401b03841161010957366024858701011161010957602461045a950192610cee565b346101095760403660031901126101095761053136610323565b80355f526002602052602061054860405f20610c1d565b9101355f52600260205261056761056160405f20610c1d565b916119cd565b1590811561057e575b506040519015158152602090f35b61058891506119cd565b155f610570565b346101095760203660031901126101095760606004356105ad610e6a565b50805f52600260205260405f20905f5260036020526105d060405f205491610c1d565b906001600160401b0360206040519382815116855201511660208301526040820152f35b3461010957602036600319011261010957602061063c610615600435610f0f565b7f000000000000000000000000000000000000000000000000000000000000000090611a08565b604051908152f35b346101095760403660031901126101095761065e36610323565b610669610384611314565b6106926103b361068d61067f6103973686610c5b565b5f52600460205260405f2090565b610c83565b6106a581355f52600260205260405f2090565b6106bb60208301355f52600260205260405f2090565b906106cd6106c882610c1d565b611579565b6106d96106c883610c1d565b6106f16106ed6106e883610c1d565b6119cd565b1590565b9182610790575b821561072b575b50501561071c5761071761039761045a923690610c5b565b611997565b633d0b930760e21b5f5260045ffd5b90915061073d6106ed6106e883610c1d565b918261074d575b50505f806106ff565b61078992509061077861077361076d6107686106ed95610c1d565b611a3b565b92610c1d565b611a7d565b6001600160401b0380911691161190565b5f80610744565b91506107b06106ed6107a461076885610c1d565b61077861077385610c1d565b916106f8565b34610109575f3660031901126101095760806040516001600160401b037f00000000000000000000000000000000000000000000000000000000000000001681526001600160401b037f00000000000000000000000000000000000000000000000000000000000000001660208201526001600160401b037f00000000000000000000000000000000000000000000000000000000000000001660408201526001600160401b037f0000000000000000000000000000000000000000000000000000000000000000166060820152f35b34610109575f3660031901126101095760606108a0610e9d565b90604051921515835260208301526040820152f35b346101095760203660031901126101095760e06108d3600435610f0f565b6001600160401b0360c060405192805184526020810151602085015260408101516040850152606081015160608501528260808201511660808501528260a08201511660a085015201511660c0820152f35b346101095760c03660031901126101095761093f36610323565b604435606435906084359260a435610958610384611314565b6109656103973684610c5b565b5f52600460205260405f209061097d6103b383610c83565b60016001600160401b03608061099285610c83565b01511611156109e45761045a95858585856109b96104259a60209a6103e76109be9a610c83565b611b0c565b6109d461042582355f52600260205260405f2090565b01355f52600260205260405f2090565b60405162461bcd60e51b815260206004820152601760248201527f6d617463682063616e277420626520616476616e6365640000000000000000006044820152606490fd5b3461010957608036600319011261010957610a4336610323565b606435604435610a54610384611314565b610a6a6103b361068d61067f6103973688610c5b565b8235610a7e815f52600260205260405f2090565b906020850135610a96815f52600260205260405f2090565b90610aa36106c885610c1d565b610aaf6106c883610c1d565b610abb6106e885610c1d565b80610b87575b15610b105750938361045a969383610b04610afe6107736107179a610af9888887610af46103979f8490610b099f611c27565b610f66565b610c1d565b83611c35565b6110d5565b3690610c5b565b939592915093610b256106ed6106e884610c1d565b80610b75575b15610b6657856107179585610b04610afe610773610b6197610af9888861045a9f9d610b5c6103979f849083611c27565b610f2e565b610b09565b634d46ab2360e11b5f5260045ffd5b50610b826106e886610c1d565b610b2b565b50610b976106ed6106e884610c1d565b610ac1565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b03821117610bcb57604052565b610b9c565b60e081019081106001600160401b03821117610bcb57604052565b90601f801991011681019081106001600160401b03821117610bcb57604052565b60405190610c1b604083610beb565b565b90604051610c2a81610bb0565b60206001600160401b03829454818116845260401c16910152565b15610c4c57565b6395ddf15360e01b5f5260045ffd5b919082604091031261010957604051610c7381610bb0565b6020808294803584520135910152565b90610c1b604051610c9381610bd0565b60c06001600160401b0360048396805485526001810154602086015260028101546040860152600381015460608601520154818116608085015281808260401c161660a085015260801c169101906001600160401b03169052565b93909192610cfd610384611314565b843590610d12825f52600260205260405f2090565b928387610da6610d9b610d74610d5761067f610397602087013596610d4b6106c8610d458a5f52600260205260405f2090565b9a610c1d565b610b096106c88a610c1d565b610d636103b382610c83565b61068d610d6f82610c83565b6115cf565b7f00000000000000000000000000000000000000000000000000000000000000009061161f565b96929791909761178b565b9285610db28a8a610ffa565b03610de15750505093610c1b9693610b0993610dd884886107179a966103979a14610e47565b610b048261139f565b94509692509693509385610df58383610ffa565b03610e1557610c1b9661071796610dd88588610b61976103979a14610e24565b630338061d60e31b5f5260045ffd5b15610e2d575050565b636e3fa03d60e11b5f52600260045260245260445260645ffd5b15610e50575050565b636e3fa03d60e11b5f52600160045260245260445260645ffd5b60405190610e7782610bb0565b5f6020838281520152565b15610e8957565b634e487b7160e01b5f52600160045260245ffd5b610ea5611314565b15610ed157610ebd90610eb6611afa565b9290610e82565b5f8281526003602052604090205460019291565b5f905f905f90565b60405190610ee682610bd0565b5f60c0838281528260208201528260408201528260608201528260808201528260a08201520152565b610f17610ed9565b505f526004602052610f2b60405f20610c83565b90565b9291909215610f3c57505050565b6084935060405192633ad7a6d360e11b845260026004850152602484015260448301526064820152fd5b9291909215610f7457505050565b6084935060405192633ad7a6d360e11b845260016004850152602484015260448301526064820152fd5b610fe87f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006123ca565b6001600160401b034281169116111590565b90604051906020820192835260408201526040815261101a606082610beb565b51902090565b516001600160401b031661103057565b60405162461bcd60e51b815260206004820152601460248201527318db1bd8dac81a5cc81a5b9a5d1a585b1a5e995960621b6044820152606490fd5b90610c1b9261108761108d926001600160401b034216611cae565b90611cc9565b90611cf7565b906001600160401b03166001600160401b0319825416179055565b634e487b7160e01b5f52601160045260245ffd5b5f1981146110d05760010190565b6110ae565b92906110eb846110e58486610ffa565b14610e82565b6110f3611afa565b93901561130c576112f1611307926112887f32911001007d8c9879b608566be8acc2184592f0a43706f804f285455bb0f52e9561112e610ed9565b5061114361113c8287610ffa565b8a14610e82565b6111e861067f60405161115581610bb0565b8a81528b60208201526040519361116b85610bd0565b8b855288602086015260408501525f60608501526001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168060808601526001600160401b037f00000000000000000000000000000000000000000000000000000000000000001660a086015260c085015261132c565b815181556020820151600182015560408201516002820155606082015160038201556080820151600491909101805467ffffffffffffffff19166001600160401b039283161781559160c09060a0810151845467ffffffffffffffff60401b191690841660401b67ffffffffffffffff60401b161784550151825467ffffffffffffffff60801b1916911660801b67ffffffffffffffff60801b16179055565b61042561129d875f52600260205260405f2090565b917f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000916112ec838387611d73565b611d73565b5f805561025d6113026001546110c2565b600155565b0390a3565b505050505f55565b61131c610f9e565b806113245790565b506001541590565b60405160208082019280518452015160408201526040815261101a606082610beb565b511561135757565b60405162461bcd60e51b81526020600482015260146024820152731b585d18da08191bd95cc81b9bdd08195e1a5cdd60621b6044820152606490fd5b90610c1b929151611db7565b6001600160401b03815460401c166113b45750565b610c1b905b6113c561076882610c1d565b6001600160401b03811615611433578154610c1b929060401c6001600160401b031661141457805467ffffffffffffffff60401b19164260401b67ffffffffffffffff60401b16178155611093565b80546001600160801b0319166001600160401b03909216919091179055565b60405162461bcd60e51b815260206004820152602560248201527f63616e277420616476616e636520636c6f636b2077697468206e6f2074696d65604482015264081b19599d60da1b6064820152608490fd5b634e487b7160e01b5f52601260045260245ffd5b5f198101919082116110d057565b156114b1575050565b63773af80160e01b5f5260045260245260445ffd5b9291859492610c1b9692999798936114ea60206114e288610c83565b015183141590565b1561156657506114fa9085611e61565b9890995b6003860154908161151e5750505061151992508082146114a8565b611f94565b600487015461151996959394506115569060801c6001600160401b03169160016001600160401b03818516160361155c57359261149a565b91611eee565b602001359261149a565b611571915085611e0d565b9890996114fe565b516001600160401b03161561158a57565b60405162461bcd60e51b815260206004820152601860248201527f636c6f636b206973206e6f7420696e697469616c697a656400000000000000006044820152606490fd5b608001516001600160401b03166115e257565b60405162461bcd60e51b81526020600482015260156024820152741b585d18da081a5cc81b9bdd08199a5b9a5cda1959605a1b6044820152606490fd5b90916116386001600160401b0360808401511615610e82565b61164482519383611a08565b916001606082015116155f146116615761165d90611fd7565b9091565b61165d90611fae565b9291926001600160401b038211610bcb5760405191611693601f8201601f191660200184610beb565b829481845281830111610109578281602093845f960137010152565b6001600160401b036001911601906001600160401b0382116110d057565b90600182018092116110d057565b60200190816020116110d057565b919082018092116110d057565b906020116101095790602090565b90929192836020116101095783116101095760200191601f190190565b35906020811061172f575090565b5f199060200360031b1b1690565b90816020910312610109575190565b91926060938192845260406020850152816040850152848401375f828201840152601f01601f1916010190565b6040513d5f823e3d90fd5b1561010957565b92611794610c0c565b926117a036838361166a565b84525f60208501526117b0610c0c565b93858552602085015283946117c76210000061149a565b946117da6810000000000000000061149a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691908261183a5750505050505061181a906116cd565b1661182c57611828816129a2565b5190565b61183581612000565b505190565b86949791929598939616155f146119705750505061186161185b86866116f6565b90611721565b9361186b856116db565b611873610c0c565b9061187f36898561166a565b8252602082015261188e610c0c565b948552602085015283958515155f1461196257926020926118d26118c16044946118ee976118bb8b6116db565b91611704565b949092906001600160401b03161c90565b60405162f52de960e71b8152958694859384936004850161174c565b03915afa801561195d5761183593611921925f92611926575b5063ffffffff90611919831515611784565b16908361225c565b612000565b63ffffffff91925061194f9060203d602011611956575b6119478183610beb565b81019061173d565b9190611907565b503d61193d565b611779565b505050506118359150612000565b94509450945061198091506116cd565b1661198e57611828906129a2565b61183590612000565b60015480156110d0575f19016001555f5260046020525f6004604082208281558260018201558260028201558260038201550155565b60208101516001600160401b031690816119e8575050600190565b6001600160401b03611a01818093511693824216611cae565b1691161190565b60606001600160401b0360a08301511691015180821b916001828404911b14901517156110d05781018091116110d05790565b60208101516001600160401b031680611a5c5750516001600160401b031690565b6110876001600160401b03610f2b935116916001600160401b034216611cae565b60208101906001600160401b0382511615611ab5576001600160401b03611aac81610f2b945116824216611cae565b91511690611cc9565b60405162461bcd60e51b815260206004820152601c60248201527f612070617573656420636c6f636b2063616e27742074696d656f7574000000006044820152606490fd5b5f905f549081611b0657565b60019250565b9492939190936020611b1d87610c83565b01518214611b80575092610b098383611b5e611b6496610397967f29ff393c59c37f91e930fad4d88447efc58cf5d7c048499e1f20edb36994137899611db7565b87612378565b82546001909301546040805194855260208501919091529092a2565b839150611bc783611b9f6001966001600160401b0396611be495611db7565b60048801938585541691611bb4888411610e82565b60028a019081548b55888b015555612363565b825467ffffffffffffffff19166001600160401b03909116178255565b54161b6003830180549182018092116110d0577f29ff393c59c37f91e930fad4d88447efc58cf5d7c048499e1f20edb36994137892611b64926103979255610b09565b91611c3191610ffa565b1490565b61108d610c1b926001600160401b03835416611cc9565b9190811015611c5c5760051b0190565b634e487b7160e01b5f52603260045260245ffd5b6001600160401b035f19911601906001600160401b0382116110d057565b906001600160401b03809116911603906001600160401b0382116110d057565b611cc5906001600160401b03808094169116611c8e565b1690565b6001600160401b03918216911681811015611ce557505f919050565b6001600160401b0391611cc591611c8e565b906001600160401b03811615611d245781546001600160801b0319166001600160401b0391909116179055565b60405162461bcd60e51b815260206004820152602160248201527f63616e27742063726561746520636c6f636b2077697468207a65726f2074696d6044820152606560f81b6064820152608490fd5b9091611d8d610c1b93611d8861076885610c1d565b6123ca565b6001600160401b0382166001600160401b038216115f14611daf575090611cf7565b905090611cf7565b91611dc191610ffa565b03611dc857565b60405162461bcd60e51b815260206004820152601e60248201527f6368696c64206e6f64657320646f6e2774206d6174636820706172656e7400006044820152606490fd5b906004820190611e2960016001600160401b0384541614610e82565b60018301556001600160401b0319815416905560038101805491600183018093116110d05761165d92611e5c9255610c83565b611fae565b611e9d9061165d926004820190611e8460016001600160401b0384541614610e82565b6002830155805467ffffffffffffffff19169055610c83565b611fd7565b15611ea957565b60405162461bcd60e51b815260206004820152601960248201527f636f6d6d69746d656e74207374617465206d69736d61746368000000000000006044820152606490fd5b9594909391926001600160401b0390941691611f0b828414610e82565b5f935b838510611f25575050505050610c1b919214611ea2565b9091929394600190611f3a83881c6001161590565b15611f7a576102f9611f6b611f50898888611c4c565b60408051602081019586529135908201529182906060820190565b519020955b0193929190611f0e565b6102f9611f8b6102db898888611c4c565b51902095611f70565b611fab6001600160401b0360048301541615610e82565b55565b60c0810151909190600116611fca576020604083015192015190565b6040602083015192015190565b60c0810151909190600116611ff3576040602083015192015190565b6020604083015192015190565b61201961201e612012624000086147b8565b92906144a5565b61453a565b612056602084019161203083516145e3565b92519060405160208101908582526020815261204d604082610beb565b5190209161478f565b8351036121015761209691612091916120849160031b67fffffffffffffff8165b6001600160401b03161b90565b6001600160c01b03191690565b6147d9565b906001600160401b03808316146120fa576001600160401b036120b882612d45565b166120f3576120e96120ef926120e46120d46240001085612dc6565b6120de81866123f3565b856124b4565b6116af565b90614368565b5f90565b5050600290565b5050600190565b60405162461bcd60e51b815260206004820152601c60248201527f5265616420776f726420726f6f7420646f65736e2774206d61746368000000006044820152606490fd5b60405190612155604083610beb565b60138252721a599b1859dccb96481a5cc81b9bdd081cd95d606a1b6020830152565b63ffffffff60019116019063ffffffff82116110d057565b63ffffffff60089116019063ffffffff82116110d057565b63ffffffff60049116019063ffffffff82116110d057565b63ffffffff60029116019063ffffffff82116110d057565b9063ffffffff8091169116019063ffffffff82116110d057565b60405190612200604083610beb565b601f82527f434d494f20726573706f6e7365206461746120697320746f6f206c61726765006020830152565b63ffffffff6004199116019063ffffffff82116110d057565b63ffffffff16601f039063ffffffff82116110d057565b906122696106ed83612a86565b61235b5763ffffffff831690816122bf575b50610c1b926122ba915061229162010000611c70565b5063ffffffff60206122b06122aa640100000000611c70565b91505f90565b921616178261438e565b612c6d565b90926122ca81612add565b93600563ffffffff861610612352575b63ffffffff6001601f87161b1610612342575b601563ffffffff8516116123355761232f6122ba92612329610c1b9661232361231d61231d63600000009361222c565b60ff1690565b90612c06565b85612c22565b9261227b565b61233d6121f1565b612a9e565b9261234c90612177565b926122ed565b600594506122da565b61233d612146565b6001600160401b031680156110d0575f190190565b906123b090610c1b93600260048501946001600160401b03865416936123a060018611610e82565b6001820180548355550155612363565b6001600160401b03166001600160401b0319825416179055565b906001600160401b038091169116016001600160401b0381116110d0576001600160401b031690565b6003821661243e5763ffffffff91611cc5916038600383901b1691603f916124259167fffffffffffffff81690612dd5565b911663ffffffff6001600160401b0380931691161c1690565b60405162461bcd60e51b815260206004820152601d60248201527f6d6973616c69676e6564207265616455696e74333220616464726573730000006044820152606490fd5b60405190612492604083610beb565b601382527234b63632b3b0b61034b739ba393ab1ba34b7b760691b6020830152565b92919061707f81166013036124cd57610c1b92936142b1565b61707f8116613003036124e457610c1b9293614271565b61707f8116616063036124fb57610c1b9293614234565b61707f811660630361251157610c1b92936141f7565b61707f81166170130361252857610c1b9293614198565b63fe00707f811660330361254057610c1b9293614148565b607f8116606f0361255557610c1b9293614070565b63fc00707f81166110130361256e57610c1b9293614013565b63fe00707f81166170330361258757610c1b9293613fce565b61707f81166130230361259e57610c1b9293613f62565b607f81166037036125b357610c1b9293613f46565b61707f81166067036125c957610c1b9293613ecb565b61707f8116601b036125df57610c1b9293613e80565b63fc00707f8116615013036125f857610c1b9293613e3c565b63fe00707f811661501b0361261157610c1b9293613dfa565b61707f81166110630361262857610c1b9293613dbd565b61707f81166120030361263f57610c1b9293613d7d565b607f811660170361265457610c1b9293613d37565b61707f81166170630361266b57610c1b9293613cf2565b63fe00707f8116603b0361268357610c1b9293613c99565b63fc00707f811663400050130361269e57610c1b9293613c34565b63fe00707f8116616033036126b757610c1b9293613bef565b63fe00707f8116634000501b036126d257610c1b9293613b7e565b61707f8116615063036126e957610c1b9293613b3f565b63fe00707f811663400000330361270457610c1b9293613ae7565b61707f81166140030361271b57610c1b9293613aa2565b63fe00707f811661101b0361273457610c1b9293613a3b565b63fe00707f81166150330361274d57610c1b92936139df565b63fe00707f81166140330361276657610c1b9293613993565b61707f81166120230361277d57610c1b92936138a5565b63fe00707f81166110330361279657610c1b929361383b565b61707f8116614063036127ad57610c1b9293613774565b61707f81166023036127c357610c1b929361363b565b63fe00707f8116634000003b036127de57610c1b92936135c9565b61707f8116614013036127f557610c1b929361356a565b63fe00707f811663400050330361281057610c1b92936134ef565b61707f81166150030361282757610c1b92936134a9565b61707f81166110230361283e57610c1b92936133a4565b63fe00707f811661503b0361285757610c1b9293613366565b61707f81166160030361286e57610c1b92936132ff565b63fe00707f811661103b0361288757610c1b92936132b9565b61707f811660030361289d57610c1b929361327d565b63fe00707f8116613033036128b657610c1b929361321e565b63fe00707f8116634000503b036128d157610c1b929361319b565b61707f8116611003036128e857610c1b929361310f565b61707f8116616013036128ff57610c1b92936130aa565b61707f81166130130361291657610c1b9293613044565b63fe00707f81166120330361292f57610c1b9293612fd1565b61707f81166120130361294657610c1b9293612f4d565b61707f8116600f0361295d5750610c1b9192614820565b63ffffffff16607381036129765750610c1b9192612e99565b621000738491146129895761233d612483565b612e35565b9060ff8091169116039060ff82116110d057565b6129aa610e6a565b506001600160401b03620200006129cb816129c481611c70565b1615610e82565b168015612a815760116001600160401b036129eb92620200000416614589565b60208201612a046129fc82516145e3565b83835161465a565b50835103612a3c57612a38917f4de6115bdadc23724cf20c5580d718525ce81b294c8c149d3658020c380df109915161478f565b9052565b60405162461bcd60e51b815260206004820152601f60248201527f577269746520726567696f6e20726f6f7420646f65736e2774206d61746368006044820152606490fd5b611486565b612a91600191612db4565b811c16156120ef57600190565b604460209160405192839162461bcd60e51b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fd5b63ffffffff811615612bb55780610f2b915f9163ffff0000811615612ba1575b5063ff000000811615612b82575b63f0000000811615612b63575b63c0000000811615612b3d575b63800000001661224557612b3890612177565b612245565b90612b5c612b4f6380000000926121bf565b9260021b63fffffffc1690565b9050612b25565b90612b70612b7d916121a7565b9160041b63fffffff01690565b612b18565b90612b8f612b9c9161218f565b9160081b63ffffff001690565b612b0b565b60109250821b63ffff00001690505f612afd565b60405162461bcd60e51b8152602060048201526024808201527f456d756c61746f72436f6d7061743a206c6f673228302920697320756e6465666044820152631a5b995960e21b6064820152608490fd5b90612c1d81610f2b93612c17610e6a565b506144c9565b614589565b916020830191612c3d612c3584516145e3565b82855161465a565b50845103612a3c57612a38925161478f565b603f610f2b921663ffffffff6001600160401b0380931691161b1690565b612a38612c7982612db4565b5f612d29612c95612019612c8e6102e86147b8565b94906144c9565b916020860193612d00612cfb67fffffffffffffffd612cb488516145e3565b93612cea612ce18a518a6040516020810190612cd8816102f98d8560209181520190565b5190209161465a565b508c511461431c565b1660c01b6001600160c01b03191690565b614a60565b6001600160c01b031960039390931b67fffffffffffffff81683811c19929092169216901c1790565b91519160405161204d816102f960208201948560209181520190565b61201990612d5f612d58624000006147b8565b93906144a5565b90612d8f6020820192612d7284516145e3565b93519060405160208101908682526020815261204d604082610beb565b90510361210157610f2b91612091916120849160031b67fffffffffffffff816612077565b61201990612d5f612d586102e86147b8565b612d5f612d58612019936147b8565b60078216612df0576001600160401b03610f2b921690612dc6565b60405162461bcd60e51b815260206004820152601d60248201527f6d6973616c69676e6564207265616455696e74363420616464726573730000006044820152606490fd5b604051612e43604082610beb565b600d8152604460208201916c1d585c98da0818589bdc9d1959609a1b835260405192839162461bcd60e51b8352602060048401525180918160248501528484015e5f828201840152601f01601f19168101030190fd5b906001600160401b03612eab836147e8565b1660018103612ebf575050610c1b906143ac565b600203612ed95781612ed3610c1b936147f5565b50614820565b604051612ee7604082610beb565b601a8152604460208201917f756e737570706f72746564206563616c6c2066756e6374696f6e000000000000835260405192839162461bcd60e51b8352602060048401525180918160248501528484015e5f828201840152601f01601f19168101030190fd5b610c1b9291612f688163ffffffff1660030b60141d60030b90565b612f7e600783901c601f165b92600f1c601f1690565b60ff8316612f8f575b505050614820565b612fa16001600160401b039185614802565b1660070b9060030b135f14612fc257612fba90826148ba565b5f8080612f87565b612fcc908261489a565b612fba565b610c1b9291600781901c601f16612ff4600f83901c601f165b9260141c601f1690565b9060ff811661300557505050614820565b6001600160401b036130298161301e612fba9688614802565b1660070b9386614802565b1660070b5f921261303b575b836148db565b60019150613035565b610c1b929161305f8163ffffffff1660030b60141d60030b90565b61306f600783901c601f16612f74565b60ff831661307f57505050614820565b6001600160401b03613092819286614802565b9260030b169116105f14612fc257612fba90826148ba565b610c1b92916130c58163ffffffff1660030b60141d60030b90565b906130dc600782901c601f165b91600f1c601f1690565b9160ff82166130ed57505050614820565b6001600160401b03613102612fba9486614802565b9160030b161790836148db565b610c1b929161ffff61316b6131656131338463ffffffff1660030b60141d60030b90565b61315261314c600787901c601f165b96600f1c601f1690565b87614802565b6001600160401b03809260030b16011690565b846148fa565b1660010b9060ff8116613180575b5050614820565b6001600160401b03613194921690836148db565b5f80613179565b610c1b92916131f7600782901c601f1691601f6131e36001600160401b036131d86131d1600f86901c85165b9560141c601f1690565b9488614802565b1660030b9286614802565b169063ffffffff9060030b91161d60030b90565b9060ff8116613207575050614820565b6001600160401b036131949260030b1690836148db565b610c1b9291600781901c601f1661323b600f83901c601f16612fea565b9060ff811661324c57505050614820565b61326361325c612fba9486614802565b9285614802565b916001600160401b03805f941691161061303b57836148db565b610c1b929160ff6132a66132a06131338463ffffffff1660030b60141d60030b90565b84614972565b165f0b9060ff8116613180575050614820565b610c1b929163ffffffff600782901c601f1691601f6132ec836132e46131d1600f86901c85166131c7565b169286614802565b161b169060ff8116613207575050614820565b610c1b929161334561333f6133208363ffffffff1660030b60141d60030b90565b613152613339600786901c601f165b95600f1c601f1690565b86614802565b836123f3565b9060ff8116613355575050614820565b63ffffffff613194921690836148db565b610c1b929163ffffffff600782901c601f1691601f613391836132e46131d1600f86901c85166131c7565b161c169060ff8116613207575050614820565b9190916133d78363ffffffff8116600390810b60191d810b60051b63ffffffe01660079290921c601f1691909117900b90565b926001600160401b0361340a6134036133fc600f85901c601f165b9460141c601f1690565b9385614802565b9284614802565b9460030b16019260018416613464578361345861345f92613443600767fffffffffffffff8610c1b9916941663fffffff89060031b1690565b9061ffff6134518588612dd5565b9116614ace565b90836149fd565b614820565b60405162461bcd60e51b815260206004820152601e60248201527f6d6973616c69676e656420777269746555696e743136206164647265737300006044820152606490fd5b610c1b92916134d06134ca6133208363ffffffff1660030b60141d60030b90565b836148fa565b9060ff81166134e0575050614820565b61ffff613194921690836148db565b610c1b9291600781901c601f1661350c600f83901c601f16612fea565b9160ff821661351d57505050614820565b612fba92603f6135466001600160401b0361353b61355a9589614802565b1660070b9287614802565b169063ffffffff9060070b91161d60070b90565b6001600160401b031690836148db565b610c1b92916135858163ffffffff1660030b60141d60030b90565b90613596600782901c601f166130d2565b9160ff82166135a757505050614820565b6001600160401b036135bc612fba9486614802565b9160030b161890836148db565b610c1b9291600781901c601f166001600160401b0361360d816136026135fb600f87901c601f165b9660141c601f1690565b9587614802565b1660030b9385614802565b1660030b9160ff821661362257505050614820565b612fba92900360030b6001600160401b031690836148db565b91909161366e8363ffffffff8116600390810b60191d810b60051b63ffffffe01660079290921c601f1691909117900b90565b926136986136886134036133fc600f85901c601f166133f2565b9460030b6001600160401b031690565b01603867fffffffffffffff882169160031b16906136b68184612dd5565b604063ffffffff6136c86008866121d7565b161161372457610c1b9561345f9361371a9060ff6137006136f3836136ee610100611c70565b612c4f565b196001600160401b031690565b93169063ffffffff6001600160401b0380931691161b1690565b91161790836149fd565b60405162461bcd60e51b815260206004820152602260248201527f636f70794269747320636f756e742065786365656473206c696d6974206f66206044820152610d8d60f21b6064820152608490fd5b919061377f816149ac565b906001600160401b036137aa8161379f6131d1600f86901c601f166131c7565b1660070b9286614802565b1660070b136137bd5750610c1b91614820565b612a38916001600160401b039160030b82165b01165f612d296137e8612019612c8e624000106147b8565b916020860193612d00612cfb6137fe87516145e3565b9261382b6138228951896040516020810190612cd8816102f98c8560209181520190565b508b511461431c565b60c01b6001600160c01b03191690565b610c1b9291600781901c601f16613858600f83901c601f16612fea565b9160ff821661386957505050614820565b612fba92603f61388661387f61389e9488614802565b9287614802565b1663ffffffff6001600160401b0380931691161b1690565b90836148db565b9190916138d88363ffffffff8116600390810b60191d810b60051b63ffffffe01660079290921c601f1691909117900b90565b926001600160401b0363ffffffff6139036133fc6138fc600f86901c601f166131c7565b9486614802565b169460030b1601926003841661394e578361345861345f9261393d600767fffffffffffffff8610c1b9916941663fffffff89060031b1690565b906139488487612dd5565b90614b31565b60405162461bcd60e51b815260206004820152601e60248201527f6d6973616c69676e656420777269746555696e743332206164647265737300006044820152606490fd5b610c1b9291600781901c601f166139b0600f83901c601f16612fea565b60ff82166139c057505050614820565b6139d76139d0612fba9486614802565b9185614802565b1890836148db565b610c1b9291600781901c601f166139fc600f83901c601f16612fea565b9160ff8216613a0d57505050614820565b612fba92603f613a2361387f61389e9488614802565b1663ffffffff6001600160401b0380931691161c1690565b610c1b9291601481901c601f1660030b9063ffffffff613a70613a6a600784901c601f165b93600f1c601f1690565b85614802565b1660ff8216613a8157505050614820565b612fba92601f161b63ffffffff1660030b6001600160401b031690836148db565b610c1b9291613ac9613ac36133208363ffffffff1660030b60141d60030b90565b83614972565b9060ff8116613ad9575050614820565b60ff613194921690836148db565b610c1b9291600781901c601f16613b04600f83901c601f16612fea565b9160ff8216613b1557505050614820565b612fba92613b35613b2e6001600160401b039387614802565b9186614802565b90031690836148db565b9190613b4a816149ac565b906001600160401b03613b6a8161379f6131d1600f86901c601f166131c7565b1660070b13156137bd5750610c1b91614820565b610c1b9291601481901c601f1660030b906001600160401b03613baa613a6a600784901c601f16613a60565b1660030b60ff8216613bbe57505050614820565b613be46001600160401b0391601f612fba95169063ffffffff9060030b91161d60030b90565b60030b1690836148db565b610c1b9291600781901c601f16613c0c600f83901c601f16612fea565b60ff8216613c1c57505050614820565b613c2c6139d0612fba9486614802565b1790836148db565b610c1b9291601481901c603f1660030b90613c55600782901c601f166130d2565b60ff8216613c6557505050614820565b612fba92603f6001600160401b03613c8061355a9488614802565b1660070b91169063ffffffff9060070b91161d60070b90565b610c1b9291600781901c601f166001600160401b03613cc5816136026135fb600f87901c601f166135f1565b1660030b9160ff8216613cda57505050614820565b612fba920160030b6001600160401b031690836148db565b9190613cfd816149ac565b906001600160401b0380613d24613d1d6131d1600f86901c601f166131c7565b9387614802565b16911610156137bd5750610c1b91614820565b610c1b9291613d5363fffff000821660030b9160071c601f1690565b60ff8116613d62575050614820565b6001600160401b03806131949360030b1685011690836148db565b610c1b929163ffffffff613da9613da36131338463ffffffff1660030b60141d60030b90565b846123f3565b1660030b9060ff8116613180575050614820565b9190613dc8816149ac565b906001600160401b0380613de8613d1d6131d1600f86901c601f166131c7565b169116036137bd5750610c1b91614820565b610c1b929163ffffffff601482901c601f1660030b601f82613e2461314c600787901c8416613142565b1691161c1660030b9060ff8116613180575050614820565b610c1b9291601481901c603f1660030b90613e5d600782901c601f166130d2565b60ff8216613e6d57505050614820565b612fba92603f61242561389e9387614802565b610c1b9291613e9b8163ffffffff1660030b60141d60030b90565b906001600160401b03613eb7613a6a600784901c601f16613a60565b1660030b60ff8216613cda57505050614820565b91612a38916137d067fffffffffffffffe92613ef38363ffffffff1660030b60141d60030b90565b90613f0d613f07600786901c601f1661332f565b88614802565b9360ff8116613f28575b505060030b6001600160401b031690565b6001600160401b036004613f3f93011690886148db565b5f80613f17565b610c1b9291601f600782901c169063fffff0001660030b6131f7565b61345f610c1b93926001600160401b03613fa28263ffffffff8116600390810b60191d810b60051b63ffffffe01660079290921c601f1691909117900b90565b9181613fc161387f613fba600f85901c601f166133f2565b9388614802565b9360030b160116836149fd565b610c1b9291600781901c601f16613feb600f83901c601f16612fea565b60ff8216613ffb57505050614820565b61400b6139d0612fba9486614802565b1690836148db565b610c1b9291601481901c603f1660030b90614034600782901c601f166130d2565b60ff821661404457505050614820565b612fba92603f61405761389e9387614802565b911663ffffffff6001600160401b0380931691161b1690565b90610c1b9261411763ffffffff614124936140b063fff0000061409e84841660030b60030b601f1d60030b90565b841660141b1663ffffffff1660030b90565b6107fe601483901c166140e06140d4600b85901b63fffff800165b601f1c60011690565b600b1b63fffff8001690565b916140f4620ff00085169460071c601f1690565b60ff811661412a575b5084161717171660030b6001600160401b039060030b1690565b016001600160401b031690565b90614415565b61414290600489016001600160401b0316908b6148db565b5f6140fd565b610c1b9291600781901c601f16614165600f83901c601f16612fea565b9160ff821661417657505050614820565b612fba9261418f613b2e6001600160401b039387614802565b011690836148db565b610c1b92916141b38163ffffffff1660030b60141d60030b90565b906141c4600782901c601f166130d2565b60ff82166141d457505050614820565b612fba926141ea6001600160401b039286614802565b9060030b161690836148db565b9190614202816149ac565b906001600160401b0380614222613d1d6131d1600f86901c601f166131c7565b169116146137bd5750610c1b91614820565b919061423f816149ac565b906001600160401b038061425f613d1d6131d1600f86901c601f166131c7565b169116106137bd5750610c1b91614820565b610c1b92916142986142926133208363ffffffff1660030b60141d60030b90565b83612dd5565b60ff82166142a7575050614820565b61319491836148db565b610c1b92916142cc8163ffffffff1660030b60141d60030b90565b906142dd600782901c601f166130d2565b9160ff82166142ee57505050614820565b6001600160401b03614303612fba9486614802565b1660070b9060030b016001600160401b031690836148db565b1561432357565b60405162461bcd60e51b815260206004820152601d60248201527f577269746520776f726420726f6f7420646f65736e2774206d617463680000006044820152606490fd5b90612a389062400000612d296137e86120195f6143888562400008611c8e565b946144c9565b90612a3890610300612d296137e86120195f61438885610318611c8e565b612a38624000006143ca6120195f6143c48480611c8e565b936144c9565b612d2960208501926143dc84516145e3565b6144086143ff8651866040516020810190612cd8816102f9898560209181520190565b5088511461431c565b612d00600160c01b614a60565b90612a389062400000612d296137e86120195f6143888562400010611c8e565b915f612d2961444c612019612c8e612a38966147b8565b916020860193612d0061445f86516145e3565b9161449361448a8851886040516020810190888252612cd8816020840103601f198101835282610beb565b508a511461431c565b60c01b6001600160c01b031916614a60565b6144b2601f821615610e82565b6707ffffffffffffff9060051c611cc56001610e82565b906144e96001600160401b0391600160ff6001600160401b0392161b1690565b916144f7601f821615610e82565b60051c9161451b826707ffffffffffffff8561451285611c70565b16161615610e82565b168015612a81576707ffffffffffffff6001600160401b039216041690565b6001600160401b039061454b610e6a565b50166145716001600160401b03614569670800000000000000611c70565b168210610e82565b6040519061457e82610bb0565b81525f602082015290565b90614592610e6a565b506001600160401b0391821691600160ff83161b81168302908116919082036110d05760ff916145cb906707ffffffffffffff11610e82565b604051926145d884610bb0565b835216602082015290565b8051602091820180519182018301519282019182106110d0575290565b1561460757565b60405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420626520626967676572207468616e20746865207472656520696044820152643a39b2b63360d91b6064820152608490fd5b929190926146aa6146a261469661467861231d602089015160ff1690565b96614689603b60ff8a161115614600565b516001600160401b031690565b6001600160401b031690565b94603b61298e565b935f9160ff8616915b826001600160401b038516106146cb57505050509190565b9091929360016001600160401b0391845161470260208701516146fc6146968b67ffffffffffffffe09060051b1690565b906116e9565b61470a610c0c565b918252602082015260016001600160401b03868116908a161c1661475d578051602091820151018101516040805192830193845282015261474e81606081016102f9565b519020955b01169291906146b3565b8051602091820151018101516040805192830191825282019290925261478681606081016102f9565b51902095614753565b9161479d906020928461465a565b91909201611fe081519260051b1682018092116110d0575290565b90610f2b6001600160401b039267ffffffffffffffe0811693849116611c8e565b6147e290614a60565b60c01c90565b624000a0610f2b91612dc6565b62400098610f2b91612dc6565b6001600160401b0360f8610f2b9360031b1662400018011690612dc6565b90612a38905f612d2961483b612019612c8e624000106147b8565b916020860193612d00612cfb6001600160401b03600461485b89516145e3565b9461488861487f8b518b89604051612cd8816102f960208201948560209181520190565b508d511461431c565b011660c01b6001600160c01b03191690565b5f906001600160401b0360f8610c1b9460031b1662400018011690614435565b6001906001600160401b0360f8610c1b9460031b1662400018011690614435565b6001600160401b0360f8610c1b949360031b1662400018011690614435565b6001821661492d5761ffff91603f612425611cc59367fffffffffffffff863fffffff86007861660031b16941690612dd5565b60405162461bcd60e51b815260206004820152601d60248201527f6d6973616c69676e6564207265616455696e74313620616464726573730000006044820152606490fd5b60ff91614994611cc59267fffffffffffffff860388460031b16931690612dd5565b9063ffffffff6001600160401b0380931691161c1690565b63ffffffff90808216600390810b601f1d600c1b63fffff00016900b906107e0601482901c166149f06140d46140cb600785901c601e169460181b63ff0000001690565b9284161717171660030b90565b91909160078316614a1b576001600160401b03610c1b931690614435565b60405162461bcd60e51b815260206004820152601e60248201527f6d6973616c69676e656420777269746555696e743634206164647265737300006044820152606490fd5b614aca6001600160f81b0319603883901b16600883811b60ff60e01b1690601885901b60ff60e81b1690602886901b60ff60f01b169060ff60d81b9087901c16931717171760ff60d01b601884901c161760ff60c81b602884901c16179160381c60ff60c01b1690565b1790565b90919063ffffffff8083166010019081116110d05763ffffffff604091161161372457614b2b9063ffffffff603f614b0f6136f3866136ee62010000611c70565b941691169063ffffffff6001600160401b0380931691161b1690565b91161790565b90919063ffffffff8083166020019081116110d05763ffffffff604091161161372457614b2b9063ffffffff603f614b0f6136f3866136ee640100000000611c7056fea2646970667358221220da9162a42d481547699d970ec81fee658058e52b21ef8dc3d9ef6f4e2d3fcdce64736f6c634300081b0033a2646970667358221220ef811d3b91b0bbb7ef0b83e7c554dcb853f30d5f7219196955886d1fd312816f64736f6c634300081b0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80\x80`@R`\x046\x10\x15a\0\x12W_\x80\xFD[_5`\xE0\x1C\x90\x81c\x0Bd\xD7\x9B\x14a\x02\x1BWPcr-\xF9e\x14a\x002W_\x80\xFD[4a\x02\x17Wa\0@6a\x02\xCEV[_`\x80`@Qa\0O\x81a\x02\xF4V[\x82\x81R\x82` \x82\x01R\x82`@\x82\x01R\x82``\x82\x01R\x01R`@Q\x91a\0s\x83a\x02\xF4V[`\x01\x83R` \x83\x01\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x84R`@\x81\x01\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x84R``\x82\x01\x94g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x86R`\x80\x83\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x81R`@Q\x96aM\xCA\x90\x81\x89\x01\x95\x89\x87\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x88\x11\x17a\x02\x03W`\xE0\x98g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x96\x81\x80\x96\x94\x8E\x9C\x82\x96\x8Ea\x03\x11\x909\x8CRQ\x16` \x8B\x01RQ\x16`@\x89\x01RQ\x16``\x87\x01RQ\x16`\x80\x85\x01RQ\x16`\xA0\x83\x01R`\x01`\x01`\xA0\x1B\x03\x16`\xC0\x82\x01R\x03\x01\x90_\xF0\x80\x15a\x01\xF8W`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x80\x82R` \x91\x7Fh\x95#\x87\xBAsl\x99(&\\c\xB2\x81\x12\xA6%B]\x9D\xFB\xE4\x87\x05hn\xA5\xBE\xD1\xF9.\xFB\x90\x83\x90\xA1`@Q\x90\x81R\xF3[`@Q=_\x82>=\x90\xFD[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[_\x80\xFD[4a\x02\x17Wa\x02)6a\x02\xCEV[cr-\xF9e`\xE0\x1B\x83R`\x04\x83\x01\x91\x90\x91R`\x01`\x01`\xA0\x1B\x03\x16`$\x82\x01R` \x81`D\x81_0Z\xF1\x80\x15a\x01\xF8W_\x90a\x02uW[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[P` =` \x11a\x02\xC7W[`\x1F\x81\x01`\x1F\x19\x16\x82\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x83\x82\x10\x17a\x02\x03W` \x91\x83\x91`@R\x81\x01\x03\x12a\x02\x17WQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x02\x17W` \x90a\x02`V[P=a\x02\x81V[`@\x90`\x03\x19\x01\x12a\x02\x17W`\x045\x90`$5`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x02\x17W\x90V[`\xA0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x02\x03W`@RV\xFEa\x01\xE0`@R4a\x01\xF3W`@QaM\xCA8\x81\x90\x03`\x1F\x81\x01`\x1F\x19\x16\x83\x01`\x01`\x01`@\x1B\x03\x81\x11\x84\x82\x10\x17a\x01\xF7W\x83\x92\x82\x91`@R\x839\x81\x01\x03\x90`\xE0\x82\x12a\x01\xF3W`\xA0\x81Q\x92`\x1F\x19\x01\x12a\x01\xF3W`@Q\x91`\xA0\x83\x01`\x01`\x01`@\x1B\x03\x81\x11\x84\x82\x10\x17a\x01\xF7W`@Ra\0|` \x83\x01a\x02\x0BV[\x83Ra\0\x8A`@\x83\x01a\x02\x0BV[\x90` \x84\x01\x91\x82Ra\0\x9E``\x84\x01a\x02\x0BV[`@\x85\x01\x90\x81Ra\0\xB1`\x80\x85\x01a\x02\x0BV[\x92``\x86\x01\x93\x84Ra\0\xC5`\xA0\x86\x01a\x02\x0BV[`\x80\x87\x01\x81\x81R`\xC0\x96\x90\x96\x01Q\x96\x90`\x01`\x01`\xA0\x1B\x03\x88\x16\x88\x03a\x01\xF3W`\x80\x94\x90\x94R_`\xA0\x81\x90R`\xC0RQ`\x01`\x01`@\x1B\x03\x90\x81\x16`\xE0R\x90Q\x81\x16a\x01\0R\x90Q\x81\x16a\x01 RB\x81\x16a\x01@R\x83Q\x81\x16\x91\x16\x81\x81\x11\x15a\x01\xECWP[a\x01`RQ`\x01`\x01`@\x1B\x03\x90\x81\x16a\x01\xA0R\x90Q\x16a\x01\x80Ra\x01\xC0R`@QaK\xAA\x90\x81a\x02 \x829`\x80Q\x81a\x045\x01R`\xA0Q\x81\x81\x81a\x06\x17\x01Ra\rv\x01R`\xC0Q\x81a\x08\x01\x01R`\xE0Q\x81a\x07\xD5\x01Ra\x01\0Q\x81\x81\x81a\x080\x01Ra\x11\xB9\x01Ra\x01 Q\x81\x81\x81a\x01l\x01R\x81\x81a\x08_\x01Ra\x11\x89\x01Ra\x01@Q\x81\x81\x81a\x022\x01Ra\x0F\xC4\x01Ra\x01`Q\x81\x81\x81a\x02\x11\x01Ra\x0F\xA3\x01Ra\x01\x80Q\x81a\x12\xC1\x01Ra\x01\xA0Q\x81a\x12\xA0\x01Ra\x01\xC0Q\x81a\x17\xDC\x01R\xF3[\x90Pa\x01*V[_\x80\xFD[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[Q\x90`\x01`\x01`@\x1B\x03\x82\x16\x82\x03a\x01\xF3WV\xFE`\x80`@R`\x046\x10\x15a\0\x11W_\x80\xFD[_5`\xE0\x1C\x80c\x1D[\xF7\x96\x14a\0\xD4W\x80cP\x17tj\x14a\0\xCFW\x80c`A\xDD\xD5\x14a\0\xCAW\x80cj\x1A\x14\r\x14a\0\xC5W\x80cw\x95\x82\x0C\x14a\0\xC0W\x80c\x8A\xCC\x80-\x14a\0\xBBW\x80c\x9A\x9BK+\x14a\0\xB6W\x80c\xA1\xAF\x90k\x14a\0\xB1W\x80c\xCB's\xDB\x14a\0\xACW\x80c\xFC\xC6\x07}\x14a\0\xA7W\x80c\xFC\xC8S\x91\x14a\0\xA2Wc\xFFx\xE0\xEE\x14a\0\x9DW_\x80\xFD[a\n)V[a\t%V[a\x08\xB5V[a\x08\x86V[a\x07\xB6V[a\x06DV[a\x05\xF4V[a\x05\x8FV[a\x05\x17V[a\x04\xACV[a\x034V[a\x01\rV[\x91\x81`\x1F\x84\x01\x12\x15a\x01\tW\x825\x91`\x01`\x01`@\x1B\x03\x83\x11a\x01\tW` \x80\x85\x01\x94\x84`\x05\x1B\x01\x01\x11a\x01\tWV[_\x80\xFD[4a\x01\tW`\x806`\x03\x19\x01\x12a\x01\tW`\x045`$5`\x01`\x01`@\x1B\x03\x81\x11a\x01\tWa\x01@\x906\x90`\x04\x01a\0\xD9V[`d5\x92`D5\x92\x91a\x01Qa\x0F\x9EV[a\x03\x14Wa\x01_\x85\x85a\x0F\xFAV[\x92\x82\x91`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90a\x01\x98\x81\x83\x14a\x0E\x82V[_\x92[\x82\x84\x10a\x02\xC3WPPPP\x82\x03a\x02rW\x7F\xE557\xF2\x02\x91\x1D7mn(X5\xB2\xA2\x01n\x83\xE9\x9F\xBE\x84\xA0Y\xD4E\xCC+\xE4\x80rb\x93a\x02m\x93a\x02]\x92a\x01\xE8\x85_R`\x03` R`@_ \x90V[Ua\x01\xFB\x84_R`\x02` R`@_ \x90V[a\x02\x0Ca\x02\x07\x82a\x0C\x1DV[a\x10 V[a\x02W\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83a\x10lV[\x84a\x10\xD5V[`@Q\x90\x81R\x90\x81\x90` \x82\x01\x90V[\x03\x90\xA1\0[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7Fcommitment last state doesn't ma`D\x82\x01Rb\x0E\x8Cm`\xEB\x1B`d\x82\x01R`\x84\x90\xFD[\x90\x91\x92\x93`\x01\x90a\x02\xF9a\x03\x07a\x02\xDB\x88\x87\x87a\x1CLV[5\x92`@Q\x92\x83\x91` \x83\x01\x95\x86\x90\x91`@\x92\x82R` \x82\x01R\x01\x90V[\x03`\x1F\x19\x81\x01\x83R\x82a\x0B\xEBV[Q\x90 \x94\x01\x92\x91\x90a\x01\x9BV[c\xACW\xBE\xEF`\xE0\x1B_R`\x04_\xFD[`@\x90`\x03\x19\x01\x12a\x01\tW`\x04\x90V[4a\x01\tW`\xC06`\x03\x19\x01\x12a\x01\tWa\x03N6a\x03#V[`d5`D5`\x845`\xA45`\x01`\x01`@\x1B\x03\x81\x11a\x01\tWa\x03v\x906\x90`\x04\x01a\0\xD9V[\x93\x90\x92a\x03\x8Aa\x03\x84a\x13\x14V[\x15a\x0CEV[a\x03\x9Ca\x03\x976\x88a\x0C[V[a\x13,V[_R`\x04` R`@_ a\x03\xB8a\x03\xB3\x82a\x0C\x83V[a\x13OV[`\x01`\x01`\x01`@\x1B\x03`\x80a\x03\xCD\x84a\x0C\x83V[\x01Q\x16\x03a\x04\\Wa\x04Z\x96a\x03\xEC\x84\x84a\x03\xE7\x85a\x0C\x83V[a\x13\x93V[a\x043a\x04\x02\x825_R`\x02` R`@_ \x90V[a\x04*a\x04\x1B` \x85\x015_R`\x02` R`@_ \x90V[\x91a\x04%\x81a\x13\x9FV[a\x13\xB9V[a\x04%\x81a\x13\x9FV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91a\x14\xC6V[\0[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7Fmatch is not ready to be finaliz`D\x82\x01Ra\x19Y`\xF2\x1B`d\x82\x01R`\x84\x90\xFD[4a\x01\tW`\xA06`\x03\x19\x01\x12a\x01\tWa\x04\xC66a\x03#V[`D5`d5\x91`\x845\x92`\x01`\x01`@\x1B\x03\x84\x11a\x01\tW6`#\x85\x01\x12\x15a\x01\tW\x83`\x04\x015\x92`\x01`\x01`@\x1B\x03\x84\x11a\x01\tW6`$\x85\x87\x01\x01\x11a\x01\tW`$a\x04Z\x95\x01\x92a\x0C\xEEV[4a\x01\tW`@6`\x03\x19\x01\x12a\x01\tWa\x0516a\x03#V[\x805_R`\x02` R` a\x05H`@_ a\x0C\x1DV[\x91\x015_R`\x02` Ra\x05ga\x05a`@_ a\x0C\x1DV[\x91a\x19\xCDV[\x15\x90\x81\x15a\x05~W[P`@Q\x90\x15\x15\x81R` \x90\xF3[a\x05\x88\x91Pa\x19\xCDV[\x15_a\x05pV[4a\x01\tW` 6`\x03\x19\x01\x12a\x01\tW```\x045a\x05\xADa\x0EjV[P\x80_R`\x02` R`@_ \x90_R`\x03` Ra\x05\xD0`@_ T\x91a\x0C\x1DV[\x90`\x01`\x01`@\x1B\x03` `@Q\x93\x82\x81Q\x16\x85R\x01Q\x16` \x83\x01R`@\x82\x01R\xF3[4a\x01\tW` 6`\x03\x19\x01\x12a\x01\tW` a\x06=\x90\xFD[\x15a\x01\tWV[\x92a\x17\x94a\x0C\x0CV[\x92a\x17\xA06\x83\x83a\x16jV[\x84R_` \x85\x01Ra\x17\xB0a\x0C\x0CV[\x93\x85\x85R` \x85\x01R\x83\x94a\x17\xC7b\x10\0\0a\x14\x9AV[\x94a\x17\xDAh\x10\0\0\0\0\0\0\0\0a\x14\x9AV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x91\x90\x82a\x18:WPPPPPPa\x18\x1A\x90a\x16\xCDV[\x16a\x18,Wa\x18(\x81a)\xA2V[Q\x90V[a\x185\x81a \0V[PQ\x90V[\x86\x94\x97\x91\x92\x95\x98\x93\x96\x16\x15_\x14a\x19pWPPPa\x18aa\x18[\x86\x86a\x16\xF6V[\x90a\x17!V[\x93a\x18k\x85a\x16\xDBV[a\x18sa\x0C\x0CV[\x90a\x18\x7F6\x89\x85a\x16jV[\x82R` \x82\x01Ra\x18\x8Ea\x0C\x0CV[\x94\x85R` \x85\x01R\x83\x95\x85\x15\x15_\x14a\x19bW\x92` \x92a\x18\xD2a\x18\xC1`D\x94a\x18\xEE\x97a\x18\xBB\x8Ba\x16\xDBV[\x91a\x17\x04V[\x94\x90\x92\x90`\x01`\x01`@\x1B\x03\x16\x1C\x90V[`@Qb\xF5-\xE9`\xE7\x1B\x81R\x95\x86\x94\x85\x93\x84\x93`\x04\x85\x01a\x17LV[\x03\x91Z\xFA\x80\x15a\x19]Wa\x185\x93a\x19!\x92_\x92a\x19&W[Pc\xFF\xFF\xFF\xFF\x90a\x19\x19\x83\x15\x15a\x17\x84V[\x16\x90\x83a\"\\V[a \0V[c\xFF\xFF\xFF\xFF\x91\x92Pa\x19O\x90` =` \x11a\x19VW[a\x19G\x81\x83a\x0B\xEBV[\x81\x01\x90a\x17=V[\x91\x90a\x19\x07V[P=a\x19=V[a\x17yV[PPPPa\x185\x91Pa \0V[\x94P\x94P\x94Pa\x19\x80\x91Pa\x16\xCDV[\x16a\x19\x8EWa\x18(\x90a)\xA2V[a\x185\x90a \0V[`\x01T\x80\x15a\x10\xD0W_\x19\x01`\x01U_R`\x04` R_`\x04`@\x82 \x82\x81U\x82`\x01\x82\x01U\x82`\x02\x82\x01U\x82`\x03\x82\x01U\x01UV[` \x81\x01Q`\x01`\x01`@\x1B\x03\x16\x90\x81a\x19\xE8WPP`\x01\x90V[`\x01`\x01`@\x1B\x03a\x1A\x01\x81\x80\x93Q\x16\x93\x82B\x16a\x1C\xAEV[\x16\x91\x16\x11\x90V[```\x01`\x01`@\x1B\x03`\xA0\x83\x01Q\x16\x91\x01Q\x80\x82\x1B\x91`\x01\x82\x84\x04\x91\x1B\x14\x90\x15\x17\x15a\x10\xD0W\x81\x01\x80\x91\x11a\x10\xD0W\x90V[` \x81\x01Q`\x01`\x01`@\x1B\x03\x16\x80a\x1A\\WPQ`\x01`\x01`@\x1B\x03\x16\x90V[a\x10\x87`\x01`\x01`@\x1B\x03a\x0F+\x93Q\x16\x91`\x01`\x01`@\x1B\x03B\x16a\x1C\xAEV[` \x81\x01\x90`\x01`\x01`@\x1B\x03\x82Q\x16\x15a\x1A\xB5W`\x01`\x01`@\x1B\x03a\x1A\xAC\x81a\x0F+\x94Q\x16\x82B\x16a\x1C\xAEV[\x91Q\x16\x90a\x1C\xC9V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1C`$\x82\x01R\x7Fa paused clock can't timeout\0\0\0\0`D\x82\x01R`d\x90\xFD[_\x90_T\x90\x81a\x1B\x06WV[`\x01\x92PV[\x94\x92\x93\x91\x90\x93` a\x1B\x1D\x87a\x0C\x83V[\x01Q\x82\x14a\x1B\x80WP\x92a\x0B\t\x83\x83a\x1B^a\x1Bd\x96a\x03\x97\x96\x7F)\xFF9Wc\xFF\xFF\xFF\xFF\x91a\x1C\xC5\x91`8`\x03\x83\x90\x1B\x16\x91`?\x91a$%\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF8\x16\x90a-\xD5V[\x91\x16c\xFF\xFF\xFF\xFF`\x01`\x01`@\x1B\x03\x80\x93\x16\x91\x16\x1C\x16\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7Fmisaligned readUint32 address\0\0\0`D\x82\x01R`d\x90\xFD[`@Q\x90a$\x92`@\x83a\x0B\xEBV[`\x13\x82Rr4\xB662\xB3\xB0\xB6\x104\xB79\xBA9:\xB1\xBA4\xB7\xB7`i\x1B` \x83\x01RV[\x92\x91\x90ap\x7F\x81\x16`\x13\x03a$\xCDWa\x0C\x1B\x92\x93aB\xB1V[ap\x7F\x81\x16a0\x03\x03a$\xE4Wa\x0C\x1B\x92\x93aBqV[ap\x7F\x81\x16a`c\x03a$\xFBWa\x0C\x1B\x92\x93aB4V[ap\x7F\x81\x16`c\x03a%\x11Wa\x0C\x1B\x92\x93aA\xF7V[ap\x7F\x81\x16ap\x13\x03a%(Wa\x0C\x1B\x92\x93aA\x98V[c\xFE\0p\x7F\x81\x16`3\x03a%@Wa\x0C\x1B\x92\x93aAHV[`\x7F\x81\x16`o\x03a%UWa\x0C\x1B\x92\x93a@pV[c\xFC\0p\x7F\x81\x16a\x10\x13\x03a%nWa\x0C\x1B\x92\x93a@\x13V[c\xFE\0p\x7F\x81\x16ap3\x03a%\x87Wa\x0C\x1B\x92\x93a?\xCEV[ap\x7F\x81\x16a0#\x03a%\x9EWa\x0C\x1B\x92\x93a?bV[`\x7F\x81\x16`7\x03a%\xB3Wa\x0C\x1B\x92\x93a?FV[ap\x7F\x81\x16`g\x03a%\xC9Wa\x0C\x1B\x92\x93a>\xCBV[ap\x7F\x81\x16`\x1B\x03a%\xDFWa\x0C\x1B\x92\x93a>\x80V[c\xFC\0p\x7F\x81\x16aP\x13\x03a%\xF8Wa\x0C\x1B\x92\x93a>Wa\x0C\x1B\x92\x93a3\xA4V[c\xFE\0p\x7F\x81\x16aP;\x03a(WWa\x0C\x1B\x92\x93a3fV[ap\x7F\x81\x16a`\x03\x03a(nWa\x0C\x1B\x92\x93a2\xFFV[c\xFE\0p\x7F\x81\x16a\x10;\x03a(\x87Wa\x0C\x1B\x92\x93a2\xB9V[ap\x7F\x81\x16`\x03\x03a(\x9DWa\x0C\x1B\x92\x93a2}V[c\xFE\0p\x7F\x81\x16a03\x03a(\xB6Wa\x0C\x1B\x92\x93a2\x1EV[c\xFE\0p\x7F\x81\x16c@\0P;\x03a(\xD1Wa\x0C\x1B\x92\x93a1\x9BV[ap\x7F\x81\x16a\x10\x03\x03a(\xE8Wa\x0C\x1B\x92\x93a1\x0FV[ap\x7F\x81\x16a`\x13\x03a(\xFFWa\x0C\x1B\x92\x93a0\xAAV[ap\x7F\x81\x16a0\x13\x03a)\x16Wa\x0C\x1B\x92\x93a0DV[c\xFE\0p\x7F\x81\x16a 3\x03a)/Wa\x0C\x1B\x92\x93a/\xD1V[ap\x7F\x81\x16a \x13\x03a)FWa\x0C\x1B\x92\x93a/MV[ap\x7F\x81\x16`\x0F\x03a)]WPa\x0C\x1B\x91\x92aH V[c\xFF\xFF\xFF\xFF\x16`s\x81\x03a)vWPa\x0C\x1B\x91\x92a.\x99V[b\x10\0s\x84\x91\x14a)\x89Wa#=a$\x83V[a.5V[\x90`\xFF\x80\x91\x16\x91\x16\x03\x90`\xFF\x82\x11a\x10\xD0WV[a)\xAAa\x0EjV[P`\x01`\x01`@\x1B\x03b\x02\0\0a)\xCB\x81a)\xC4\x81a\x1CpV[\x16\x15a\x0E\x82V[\x16\x80\x15a*\x81W`\x11`\x01`\x01`@\x1B\x03a)\xEB\x92b\x02\0\0\x04\x16aE\x89V[` \x82\x01a*\x04a)\xFC\x82QaE\xE3V[\x83\x83QaFZV[P\x83Q\x03a*$a1L`\x07\x87\x90\x1C\x84\x16a1BV[\x16\x91\x16\x1C\x16`\x03\x0B\x90`\xFF\x81\x16a1\x80WPPaH V[a\x0C\x1B\x92\x91`\x14\x81\x90\x1C`?\x16`\x03\x0B\x90a>]`\x07\x82\x90\x1C`\x1F\x16a0\xD2V[`\xFF\x82\x16a>mWPPPaH V[a/\xBA\x92`?a$%a8\x9E\x93\x87aH\x02V[a\x0C\x1B\x92\x91a>\x9B\x81c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[\x90`\x01`\x01`@\x1B\x03a>\xB7a:j`\x07\x84\x90\x1C`\x1F\x16a:`V[\x16`\x03\x0B`\xFF\x82\x16a<\xDAWPPPaH V[\x91a*8\x91a7\xD0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFE\x92a>\xF3\x83c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[\x90a?\ra?\x07`\x07\x86\x90\x1C`\x1F\x16a3/V[\x88aH\x02V[\x93`\xFF\x81\x16a?(W[PP`\x03\x0B`\x01`\x01`@\x1B\x03\x16\x90V[`\x01`\x01`@\x1B\x03`\x04a??\x93\x01\x16\x90\x88aH\xDBV[_\x80a?\x17V[a\x0C\x1B\x92\x91`\x1F`\x07\x82\x90\x1C\x16\x90c\xFF\xFF\xF0\0\x16`\x03\x0Ba1\xF7V[a4_a\x0C\x1B\x93\x92`\x01`\x01`@\x1B\x03a?\xA2\x82c\xFF\xFF\xFF\xFF\x81\x16`\x03\x90\x81\x0B`\x19\x1D\x81\x0B`\x05\x1Bc\xFF\xFF\xFF\xE0\x16`\x07\x92\x90\x92\x1C`\x1F\x16\x91\x90\x91\x17\x90\x0B\x90V[\x91\x81a?\xC1a8\x7Fa?\xBA`\x0F\x85\x90\x1C`\x1F\x16a3\xF2V[\x93\x88aH\x02V[\x93`\x03\x0B\x16\x01\x16\x83aI\xFDV[a\x0C\x1B\x92\x91`\x07\x81\x90\x1C`\x1F\x16a?\xEB`\x0F\x83\x90\x1C`\x1F\x16a/\xEAV[`\xFF\x82\x16a?\xFBWPPPaH V[a@\x0Ba9\xD0a/\xBA\x94\x86aH\x02V[\x16\x90\x83aH\xDBV[a\x0C\x1B\x92\x91`\x14\x81\x90\x1C`?\x16`\x03\x0B\x90a@4`\x07\x82\x90\x1C`\x1F\x16a0\xD2V[`\xFF\x82\x16a@DWPPPaH V[a/\xBA\x92`?a@Wa8\x9E\x93\x87aH\x02V[\x91\x16c\xFF\xFF\xFF\xFF`\x01`\x01`@\x1B\x03\x80\x93\x16\x91\x16\x1B\x16\x90V[\x90a\x0C\x1B\x92aA\x17c\xFF\xFF\xFF\xFFaA$\x93a@\xB0c\xFF\xF0\0\0a@\x9E\x84\x84\x16`\x03\x0B`\x03\x0B`\x1F\x1D`\x03\x0B\x90V[\x84\x16`\x14\x1B\x16c\xFF\xFF\xFF\xFF\x16`\x03\x0B\x90V[a\x07\xFE`\x14\x83\x90\x1C\x16a@\xE0a@\xD4`\x0B\x85\x90\x1Bc\xFF\xFF\xF8\0\x16[`\x1F\x1C`\x01\x16\x90V[`\x0B\x1Bc\xFF\xFF\xF8\0\x16\x90V[\x91a@\xF4b\x0F\xF0\0\x85\x16\x94`\x07\x1C`\x1F\x16\x90V[`\xFF\x81\x16aA*W[P\x84\x16\x17\x17\x17\x16`\x03\x0B`\x01`\x01`@\x1B\x03\x90`\x03\x0B\x16\x90V[\x01`\x01`\x01`@\x1B\x03\x16\x90V[\x90aD\x15V[aAB\x90`\x04\x89\x01`\x01`\x01`@\x1B\x03\x16\x90\x8BaH\xDBV[_a@\xFDV[a\x0C\x1B\x92\x91`\x07\x81\x90\x1C`\x1F\x16aAe`\x0F\x83\x90\x1C`\x1F\x16a/\xEAV[\x91`\xFF\x82\x16aAvWPPPaH V[a/\xBA\x92aA\x8Fa;.`\x01`\x01`@\x1B\x03\x93\x87aH\x02V[\x01\x16\x90\x83aH\xDBV[a\x0C\x1B\x92\x91aA\xB3\x81c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[\x90aA\xC4`\x07\x82\x90\x1C`\x1F\x16a0\xD2V[`\xFF\x82\x16aA\xD4WPPPaH V[a/\xBA\x92aA\xEA`\x01`\x01`@\x1B\x03\x92\x86aH\x02V[\x90`\x03\x0B\x16\x16\x90\x83aH\xDBV[\x91\x90aB\x02\x81aI\xACV[\x90`\x01`\x01`@\x1B\x03\x80aB\"a=\x1Da1\xD1`\x0F\x86\x90\x1C`\x1F\x16a1\xC7V[\x16\x91\x16\x14a7\xBDWPa\x0C\x1B\x91aH V[\x91\x90aB?\x81aI\xACV[\x90`\x01`\x01`@\x1B\x03\x80aB_a=\x1Da1\xD1`\x0F\x86\x90\x1C`\x1F\x16a1\xC7V[\x16\x91\x16\x10a7\xBDWPa\x0C\x1B\x91aH V[a\x0C\x1B\x92\x91aB\x98aB\x92a3 \x83c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[\x83a-\xD5V[`\xFF\x82\x16aB\xA7WPPaH V[a1\x94\x91\x83aH\xDBV[a\x0C\x1B\x92\x91aB\xCC\x81c\xFF\xFF\xFF\xFF\x16`\x03\x0B`\x14\x1D`\x03\x0B\x90V[\x90aB\xDD`\x07\x82\x90\x1C`\x1F\x16a0\xD2V[\x91`\xFF\x82\x16aB\xEEWPPPaH V[`\x01`\x01`@\x1B\x03aC\x03a/\xBA\x94\x86aH\x02V[\x16`\x07\x0B\x90`\x03\x0B\x01`\x01`\x01`@\x1B\x03\x16\x90\x83aH\xDBV[\x15aC#WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FWrite word root doesn't match\0\0\0`D\x82\x01R`d\x90\xFD[\x90a*8\x90b@\0\0a-)a7\xE8a \x19_aC\x88\x85b@\0\x08a\x1C\x8EV[\x94aD\xC9V[\x90a*8\x90a\x03\0a-)a7\xE8a \x19_aC\x88\x85a\x03\x18a\x1C\x8EV[a*8b@\0\0aC\xCAa \x19_aC\xC4\x84\x80a\x1C\x8EV[\x93aD\xC9V[a-)` \x85\x01\x92aC\xDC\x84QaE\xE3V[aD\x08aC\xFF\x86Q\x86`@Q` \x81\x01\x90a,\xD8\x81a\x02\xF9\x89\x85` \x91\x81R\x01\x90V[P\x88Q\x14aC\x1CV[a-\0`\x01`\xC0\x1BaJ`V[\x90a*8\x90b@\0\0a-)a7\xE8a \x19_aC\x88\x85b@\0\x10a\x1C\x8EV[\x91_a-)aDLa \x19a,\x8Ea*8\x96aG\xB8V[\x91` \x86\x01\x93a-\0aD_\x86QaE\xE3V[\x91aD\x93aD\x8A\x88Q\x88`@Q` \x81\x01\x90\x88\x82Ra,\xD8\x81` \x84\x01\x03`\x1F\x19\x81\x01\x83R\x82a\x0B\xEBV[P\x8AQ\x14aC\x1CV[`\xC0\x1B`\x01`\x01`\xC0\x1B\x03\x19\x16aJ`V[aD\xB2`\x1F\x82\x16\x15a\x0E\x82V[g\x07\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90`\x05\x1Ca\x1C\xC5`\x01a\x0E\x82V[\x90aD\xE9`\x01`\x01`@\x1B\x03\x91`\x01`\xFF`\x01`\x01`@\x1B\x03\x92\x16\x1B\x16\x90V[\x91aD\xF7`\x1F\x82\x16\x15a\x0E\x82V[`\x05\x1C\x91aE\x1B\x82g\x07\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85aE\x12\x85a\x1CpV[\x16\x16\x16\x15a\x0E\x82V[\x16\x80\x15a*\x81Wg\x07\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x01`\x01`@\x1B\x03\x92\x16\x04\x16\x90V[`\x01`\x01`@\x1B\x03\x90aEKa\x0EjV[P\x16aEq`\x01`\x01`@\x1B\x03aEig\x08\0\0\0\0\0\0\0a\x1CpV[\x16\x82\x10a\x0E\x82V[`@Q\x90aE~\x82a\x0B\xB0V[\x81R_` \x82\x01R\x90V[\x90aE\x92a\x0EjV[P`\x01`\x01`@\x1B\x03\x91\x82\x16\x91`\x01`\xFF\x83\x16\x1B\x81\x16\x83\x02\x90\x81\x16\x91\x90\x82\x03a\x10\xD0W`\xFF\x91aE\xCB\x90g\x07\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x11a\x0E\x82V[`@Q\x92aE\xD8\x84a\x0B\xB0V[\x83R\x16` \x82\x01R\x90V[\x80Q` \x91\x82\x01\x80Q\x91\x82\x01\x83\x01Q\x92\x82\x01\x91\x82\x10a\x10\xD0WR\x90V[\x15aF\x07WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FCannot be bigger than the tree i`D\x82\x01Rd:9\xB2\xB63`\xD9\x1B`d\x82\x01R`\x84\x90\xFD[\x92\x91\x90\x92aF\xAAaF\xA2aF\x96aFxa#\x1D` \x89\x01Q`\xFF\x16\x90V[\x96aF\x89`;`\xFF\x8A\x16\x11\x15aF\0V[Q`\x01`\x01`@\x1B\x03\x16\x90V[`\x01`\x01`@\x1B\x03\x16\x90V[\x94`;a)\x8EV[\x93_\x91`\xFF\x86\x16\x91[\x82`\x01`\x01`@\x1B\x03\x85\x16\x10aF\xCBWPPPP\x91\x90V[\x90\x91\x92\x93`\x01`\x01`\x01`@\x1B\x03\x91\x84QaG\x02` \x87\x01QaF\xFCaF\x96\x8Bg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x90`\x05\x1B\x16\x90V[\x90a\x16\xE9V[aG\na\x0C\x0CV[\x91\x82R` \x82\x01R`\x01`\x01`\x01`@\x1B\x03\x86\x81\x16\x90\x8A\x16\x1C\x16aG]W\x80Q` \x91\x82\x01Q\x01\x81\x01Q`@\x80Q\x92\x83\x01\x93\x84R\x82\x01RaGN\x81``\x81\x01a\x02\xF9V[Q\x90 \x95[\x01\x16\x92\x91\x90aF\xB3V[\x80Q` \x91\x82\x01Q\x01\x81\x01Q`@\x80Q\x92\x83\x01\x91\x82R\x82\x01\x92\x90\x92RaG\x86\x81``\x81\x01a\x02\xF9V[Q\x90 \x95aGSV[\x91aG\x9D\x90` \x92\x84aFZV[\x91\x90\x92\x01a\x1F\xE0\x81Q\x92`\x05\x1B\x16\x82\x01\x80\x92\x11a\x10\xD0WR\x90V[\x90a\x0F+`\x01`\x01`@\x1B\x03\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x16\x93\x84\x91\x16a\x1C\x8EV[aG\xE2\x90aJ`V[`\xC0\x1C\x90V[b@\0\xA0a\x0F+\x91a-\xC6V[b@\0\x98a\x0F+\x91a-\xC6V[`\x01`\x01`@\x1B\x03`\xF8a\x0F+\x93`\x03\x1B\x16b@\0\x18\x01\x16\x90a-\xC6V[\x90a*8\x90_a-)aH;a \x19a,\x8Eb@\0\x10aG\xB8V[\x91` \x86\x01\x93a-\0a,\xFB`\x01`\x01`@\x1B\x03`\x04aH[\x89QaE\xE3V[\x94aH\x88aH\x7F\x8BQ\x8B\x89`@Qa,\xD8\x81a\x02\xF9` \x82\x01\x94\x85` \x91\x81R\x01\x90V[P\x8DQ\x14aC\x1CV[\x01\x16`\xC0\x1B`\x01`\x01`\xC0\x1B\x03\x19\x16\x90V[_\x90`\x01`\x01`@\x1B\x03`\xF8a\x0C\x1B\x94`\x03\x1B\x16b@\0\x18\x01\x16\x90aD5V[`\x01\x90`\x01`\x01`@\x1B\x03`\xF8a\x0C\x1B\x94`\x03\x1B\x16b@\0\x18\x01\x16\x90aD5V[`\x01`\x01`@\x1B\x03`\xF8a\x0C\x1B\x94\x93`\x03\x1B\x16b@\0\x18\x01\x16\x90aD5V[`\x01\x82\x16aI-Wa\xFF\xFF\x91`?a$%a\x1C\xC5\x93g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF8c\xFF\xFF\xFF\xF8`\x07\x86\x16`\x03\x1B\x16\x94\x16\x90a-\xD5V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7Fmisaligned readUint16 address\0\0\0`D\x82\x01R`d\x90\xFD[`\xFF\x91aI\x94a\x1C\xC5\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF8`8\x84`\x03\x1B\x16\x93\x16\x90a-\xD5V[\x90c\xFF\xFF\xFF\xFF`\x01`\x01`@\x1B\x03\x80\x93\x16\x91\x16\x1C\x16\x90V[c\xFF\xFF\xFF\xFF\x90\x80\x82\x16`\x03\x90\x81\x0B`\x1F\x1D`\x0C\x1Bc\xFF\xFF\xF0\0\x16\x90\x0B\x90a\x07\xE0`\x14\x82\x90\x1C\x16aI\xF0a@\xD4a@\xCB`\x07\x85\x90\x1C`\x1E\x16\x94`\x18\x1Bc\xFF\0\0\0\x16\x90V[\x92\x84\x16\x17\x17\x17\x16`\x03\x0B\x90V[\x91\x90\x91`\x07\x83\x16aJ\x1BW`\x01`\x01`@\x1B\x03a\x0C\x1B\x93\x16\x90aD5V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7Fmisaligned writeUint64 address\0\0`D\x82\x01R`d\x90\xFD[aJ\xCA`\x01`\x01`\xF8\x1B\x03\x19`8\x83\x90\x1B\x16`\x08\x83\x81\x1B`\xFF`\xE0\x1B\x16\x90`\x18\x85\x90\x1B`\xFF`\xE8\x1B\x16\x90`(\x86\x90\x1B`\xFF`\xF0\x1B\x16\x90`\xFF`\xD8\x1B\x90\x87\x90\x1C\x16\x93\x17\x17\x17\x17`\xFF`\xD0\x1B`\x18\x84\x90\x1C\x16\x17`\xFF`\xC8\x1B`(\x84\x90\x1C\x16\x17\x91`8\x1C`\xFF`\xC0\x1B\x16\x90V[\x17\x90V[\x90\x91\x90c\xFF\xFF\xFF\xFF\x80\x83\x16`\x10\x01\x90\x81\x11a\x10\xD0Wc\xFF\xFF\xFF\xFF`@\x91\x16\x11a7$WaK+\x90c\xFF\xFF\xFF\xFF`?aK\x0Fa6\xF3\x86a6\xEEb\x01\0\0a\x1CpV[\x94\x16\x91\x16\x90c\xFF\xFF\xFF\xFF`\x01`\x01`@\x1B\x03\x80\x93\x16\x91\x16\x1B\x16\x90V[\x91\x16\x17\x90V[\x90\x91\x90c\xFF\xFF\xFF\xFF\x80\x83\x16` \x01\x90\x81\x11a\x10\xD0Wc\xFF\xFF\xFF\xFF`@\x91\x16\x11a7$WaK+\x90c\xFF\xFF\xFF\xFF`?aK\x0Fa6\xF3\x86a6\xEEd\x01\0\0\0\0a\x1CpV\xFE\xA2dipfsX\"\x12 \xDA\x91b\xA4-H\x15Gi\x9D\x97\x0E\xC8\x1F\xEEe\x80X\xE5+!\xEF\x8D\xC3\xD9\xEFoN-?\xCD\xCEdsolcC\0\x08\x1B\x003\xA2dipfsX\"\x12 \xEF\x81\x1D;\x91\xB0\xBB\xB7\xEF\x0B\x83\xE7\xC5T\xDC\xB8S\xF3\r_r\x19\x19iU\x88m\x1F\xD3\x12\x81odsolcC\0\x08\x1B\x003", + ); + /**Event with signature `tournamentCreated(address)` and selector `0x68952387ba736c9928265c63b28112a625425d9dfbe48705686ea5bed1f92efb`. +```solidity +event tournamentCreated(address); +```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct tournamentCreated { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for tournamentCreated { + type DataTuple<'a> = (alloy::sol_types::sol_data::Address,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "tournamentCreated(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 104u8, + 149u8, + 35u8, + 135u8, + 186u8, + 115u8, + 108u8, + 153u8, + 40u8, + 38u8, + 92u8, + 99u8, + 178u8, + 129u8, + 18u8, + 166u8, + 37u8, + 66u8, + 93u8, + 157u8, + 251u8, + 228u8, + 135u8, + 5u8, + 104u8, + 110u8, + 165u8, + 190u8, + 209u8, + 249u8, + 46u8, + 251u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: data.0 } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self._0, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for tournamentCreated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&tournamentCreated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &tournamentCreated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. +```solidity +constructor(Time.Duration _matchEffort, Time.Duration _maxAllowance, uint64 _log2step, uint64 _height); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct constructorCall { + pub _matchEffort: ::RustType, + pub _maxAllowance: ::RustType, + pub _log2step: u64, + pub _height: u64, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + Time::Duration, + Time::Duration, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + u64, + u64, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + ( + value._matchEffort, + value._maxAllowance, + value._log2step, + value._height, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _matchEffort: tuple.0, + _maxAllowance: tuple.1, + _log2step: tuple.2, + _height: tuple.3, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = ( + Time::Duration, + Time::Duration, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._matchEffort, + ), + ::tokenize( + &self._maxAllowance, + ), + as alloy_sol_types::SolType>::tokenize(&self._log2step), + as alloy_sol_types::SolType>::tokenize(&self._height), + ) + } + } + }; + /**Function with signature `instantiate(bytes32,address)` and selector `0x0b64d79b`. +```solidity +function instantiate(Machine.Hash _initialHash, address _provider) external returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct instantiateCall { + pub _initialHash: ::RustType, + pub _provider: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`instantiate(bytes32,address)`](instantiateCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct instantiateReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + Machine::Hash, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: instantiateCall) -> Self { + (value._initialHash, value._provider) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for instantiateCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _initialHash: tuple.0, + _provider: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: instantiateReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for instantiateReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for instantiateCall { + type Parameters<'a> = (Machine::Hash, alloy::sol_types::sol_data::Address); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = instantiateReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "instantiate(bytes32,address)"; + const SELECTOR: [u8; 4] = [11u8, 100u8, 215u8, 155u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._initialHash, + ), + ::tokenize( + &self._provider, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `instantiateSingleLevel(bytes32,address)` and selector `0x722df965`. +```solidity +function instantiateSingleLevel(Machine.Hash _initialHash, address _provider) external returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct instantiateSingleLevelCall { + pub _initialHash: ::RustType, + pub _provider: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`instantiateSingleLevel(bytes32,address)`](instantiateSingleLevelCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct instantiateSingleLevelReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + Machine::Hash, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: instantiateSingleLevelCall) -> Self { + (value._initialHash, value._provider) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for instantiateSingleLevelCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _initialHash: tuple.0, + _provider: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: instantiateSingleLevelReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for instantiateSingleLevelReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for instantiateSingleLevelCall { + type Parameters<'a> = (Machine::Hash, alloy::sol_types::sol_data::Address); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = instantiateSingleLevelReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "instantiateSingleLevel(bytes32,address)"; + const SELECTOR: [u8; 4] = [114u8, 45u8, 249u8, 101u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._initialHash, + ), + ::tokenize( + &self._provider, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`SingleLevelTournamentFactory`](self) function calls. + pub enum SingleLevelTournamentFactoryCalls { + instantiate(instantiateCall), + instantiateSingleLevel(instantiateSingleLevelCall), + } + #[automatically_derived] + impl SingleLevelTournamentFactoryCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [11u8, 100u8, 215u8, 155u8], + [114u8, 45u8, 249u8, 101u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for SingleLevelTournamentFactoryCalls { + const NAME: &'static str = "SingleLevelTournamentFactoryCalls"; + const MIN_DATA_LENGTH: usize = 64usize; + const COUNT: usize = 2usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::instantiate(_) => { + ::SELECTOR + } + Self::instantiateSingleLevel(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn instantiate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(SingleLevelTournamentFactoryCalls::instantiate) + } + instantiate + }, + { + fn instantiateSingleLevel( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + SingleLevelTournamentFactoryCalls::instantiateSingleLevel, + ) + } + instantiateSingleLevel + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + DECODE_SHIMS[idx](data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::instantiate(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::instantiateSingleLevel(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::instantiate(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::instantiateSingleLevel(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`SingleLevelTournamentFactory`](self) events. + pub enum SingleLevelTournamentFactoryEvents { + tournamentCreated(tournamentCreated), + } + #[automatically_derived] + impl SingleLevelTournamentFactoryEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 104u8, + 149u8, + 35u8, + 135u8, + 186u8, + 115u8, + 108u8, + 153u8, + 40u8, + 38u8, + 92u8, + 99u8, + 178u8, + 129u8, + 18u8, + 166u8, + 37u8, + 66u8, + 93u8, + 157u8, + 251u8, + 228u8, + 135u8, + 5u8, + 104u8, + 110u8, + 165u8, + 190u8, + 209u8, + 249u8, + 46u8, + 251u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for SingleLevelTournamentFactoryEvents { + const NAME: &'static str = "SingleLevelTournamentFactoryEvents"; + const COUNT: usize = 1usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::tournamentCreated) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for SingleLevelTournamentFactoryEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::tournamentCreated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::tournamentCreated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`SingleLevelTournamentFactory`](self) contract instance. + +See the [wrapper's documentation](`SingleLevelTournamentFactoryInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> SingleLevelTournamentFactoryInstance { + SingleLevelTournamentFactoryInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _matchEffort: ::RustType, + _maxAllowance: ::RustType, + _log2step: u64, + _height: u64, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + SingleLevelTournamentFactoryInstance::< + T, + P, + N, + >::deploy(provider, _matchEffort, _maxAllowance, _log2step, _height) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _matchEffort: ::RustType, + _maxAllowance: ::RustType, + _log2step: u64, + _height: u64, + ) -> alloy_contract::RawCallBuilder { + SingleLevelTournamentFactoryInstance::< + T, + P, + N, + >::deploy_builder(provider, _matchEffort, _maxAllowance, _log2step, _height) + } + /**A [`SingleLevelTournamentFactory`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`SingleLevelTournamentFactory`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct SingleLevelTournamentFactoryInstance< + T, + P, + N = alloy_contract::private::Ethereum, + > { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for SingleLevelTournamentFactoryInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("SingleLevelTournamentFactoryInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > SingleLevelTournamentFactoryInstance { + /**Creates a new wrapper around an on-chain [`SingleLevelTournamentFactory`](self) contract instance. + +See the [wrapper's documentation](`SingleLevelTournamentFactoryInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _matchEffort: ::RustType, + _maxAllowance: ::RustType, + _log2step: u64, + _height: u64, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder( + provider, + _matchEffort, + _maxAllowance, + _log2step, + _height, + ); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _matchEffort: ::RustType, + _maxAllowance: ::RustType, + _log2step: u64, + _height: u64, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode( + &constructorCall { + _matchEffort, + _maxAllowance, + _log2step, + _height, + }, + )[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl SingleLevelTournamentFactoryInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider( + self, + ) -> SingleLevelTournamentFactoryInstance { + SingleLevelTournamentFactoryInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > SingleLevelTournamentFactoryInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`instantiate`] function. + pub fn instantiate( + &self, + _initialHash: ::RustType, + _provider: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &instantiateCall { + _initialHash, + _provider, + }, + ) + } + ///Creates a new call builder for the [`instantiateSingleLevel`] function. + pub fn instantiateSingleLevel( + &self, + _initialHash: ::RustType, + _provider: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &instantiateSingleLevelCall { + _initialHash, + _provider, + }, + ) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > SingleLevelTournamentFactoryInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`tournamentCreated`] event. + pub fn tournamentCreated_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/prt/contracts/bindings-rs/src/contract/toptournamentfactory.rs b/prt/contracts/bindings-rs/src/contract/toptournamentfactory.rs new file mode 100644 index 0000000..9fd1f00 --- /dev/null +++ b/prt/contracts/bindings-rs/src/contract/toptournamentfactory.rs @@ -0,0 +1,1469 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library Machine { + type Hash is bytes32; +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Machine { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Hash(alloy::sol_types::private::FixedBytes<32>); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue + for alloy::sol_types::private::FixedBytes<32> { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::FixedBytes<32>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl Hash { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: alloy::sol_types::private::FixedBytes<32>) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> alloy::sol_types::private::FixedBytes<32> { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Hash { + type RustType = alloy::sol_types::private::FixedBytes<32>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Hash { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Machine`](self) contract instance. + +See the [wrapper's documentation](`MachineInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MachineInstance { + MachineInstance::::new(address, provider) + } + /**A [`Machine`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Machine`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MachineInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MachineInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MachineInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MachineInstance { + /**Creates a new wrapper around an on-chain [`Machine`](self) contract instance. + +See the [wrapper's documentation](`MachineInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MachineInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MachineInstance { + MachineInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MachineInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MachineInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library Time { + type Duration is uint64; +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod Time { + use super::*; + use alloy::sol_types as alloy_sol_types; + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Duration(u64); + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for u64 { + #[inline] + fn stv_to_tokens( + &self, + ) -> as alloy_sol_types::SolType>::Token<'_> { + alloy_sol_types::private::SolTypeValue::< + alloy::sol_types::sol_data::Uint<64>, + >::stv_to_tokens(self) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + as alloy_sol_types::SolType>::tokenize(self) + .0 + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::SolType>::abi_encode_packed_to(self, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + as alloy_sol_types::SolType>::abi_encoded_size(self) + } + } + #[automatically_derived] + impl Duration { + /// The Solidity type name. + pub const NAME: &'static str = stringify!(@ name); + /// Convert from the underlying value type. + #[inline] + pub const fn from(value: u64) -> Self { + Self(value) + } + /// Return the underlying value. + #[inline] + pub const fn into(self) -> u64 { + self.0 + } + /// Return the single encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode(&self) -> alloy_sol_types::private::Vec { + ::abi_encode(&self.0) + } + /// Return the packed encoding of this value, delegating to the + /// underlying type. + #[inline] + pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec { + ::abi_encode_packed(&self.0) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Duration { + type RustType = u64; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = Self::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + Self::type_check(token).is_ok() + } + #[inline] + fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> { + as alloy_sol_types::SolType>::type_check(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + as alloy_sol_types::SolType>::detokenize(token) + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Duration { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + as alloy_sol_types::EventTopic>::topic_preimage_length(rust) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out) + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + as alloy_sol_types::EventTopic>::encode_topic(rust) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Time`](self) contract instance. + +See the [wrapper's documentation](`TimeInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(address: alloy_sol_types::private::Address, provider: P) -> TimeInstance { + TimeInstance::::new(address, provider) + } + /**A [`Time`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Time`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct TimeInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for TimeInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("TimeInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TimeInstance { + /**Creates a new wrapper around an on-chain [`Time`](self) contract instance. + +See the [wrapper's documentation](`TimeInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl TimeInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> TimeInstance { + TimeInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TimeInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TimeInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library Machine { + type Hash is bytes32; +} + +library Time { + type Duration is uint64; +} + +interface TopTournamentFactory { + struct TournamentParameters { + uint64 levels; + uint64 log2step; + uint64 height; + Time.Duration matchEffort; + Time.Duration maxAllowance; + } + + constructor(); + + function instantiate(Machine.Hash _initialHash, TournamentParameters memory _tournamentParameters, address _provider, address _tournamentFactory) external returns (address); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "instantiate", + "inputs": [ + { + "name": "_initialHash", + "type": "bytes32", + "internalType": "Machine.Hash" + }, + { + "name": "_tournamentParameters", + "type": "tuple", + "internalType": "struct TournamentParameters", + "components": [ + { + "name": "levels", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "log2step", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "height", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "matchEffort", + "type": "uint64", + "internalType": "Time.Duration" + }, + { + "name": "maxAllowance", + "type": "uint64", + "internalType": "Time.Duration" + } + ] + }, + { + "name": "_provider", + "type": "address", + "internalType": "contract IDataProvider" + }, + { + "name": "_tournamentFactory", + "type": "address", + "internalType": "contract IMultiLevelTournamentFactory" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract TopTournament" + } + ], + "stateMutability": "nonpayable" + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod TopTournamentFactory { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608080604052346015576122f9908161001a8239f35b5f80fdfe6080600436101561000e575f80fd5b5f3560e01c6385a7363014610021575f80fd5b346101b3576101003660031901126101b35760a03660231901126101b35760a0810181811067ffffffffffffffff82111761019f5760405260243567ffffffffffffffff811681036101b357815260443567ffffffffffffffff811681036101b3576020820190815260643567ffffffffffffffff811681036101b3576040830190815260843567ffffffffffffffff811681036101b3576060840190815260a4359367ffffffffffffffff851685036101b3576080810194855260c4356001600160a01b038116908190036101b35760e4356001600160a01b03811692908390036101b3576040519661210c968789019589871067ffffffffffffffff88111761019f5767ffffffffffffffff8a98818096948180966101009e8e6101b890396004358d52511660208c0152511660408a01525116606088015251166080860152511660a084015260c083015260e08201520301905ff08015610194576040516001600160a01b039091168152602090f35b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b5f80fdfe6102006040523461022a5760405161210c38819003601f8101601f191683016001600160401b0381118482101761022e5783928291604052833981010390610100821261022a5760a0815192601f19011261022a5760405160a081016001600160401b0381118282101761022e5760405261007c60208301610242565b815261008a60408301610242565b926020820193845261009e60608401610242565b90604083019182526100b260808501610242565b91606084019283526100c660a08601610242565b95608085019487865260c08701519660018060a01b038816880361022a5760e00151976001600160a01b038916890361022a576080949094525f60a081905260c052516001600160401b0390811660e05290518116610100529051811661012052428116610140528351811691168181111561022357505b61016052516001600160401b039081166101a052905116610180526101c0526101e052604051611eb59081610257823960805181610c59015260a05181610a67015260c0518181816108810152610d2c015260e0518181816108550152610d680152610100518181816108b001526117a20152610120518181816108df0152818161124a01526117730152610140518181816112f6015261167c015261016051818181611322015261165b0152610180518161186301526101a0518161188501526101c051818181610dcd0152610ef301526101e051818181610dfb0152610f210152f35b905061013e565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160401b038216820361022a5756fe60806040526004361015610011575f80fd5b5f3560e01c80631d5bf796146111eb5780633f36e2fe14610b705780636a1a140d14610b045780637795820c14610a945780638acc802d14610a445780639a9b4b2b14610906578063a1af906b14610836578063b401865c14610552578063cb2773db14610523578063fcc6077d146104b3578063fcc853911461029d5763ff78e0ee1461009d575f80fd5b346102995736600319016080811261029957604013610299576044356064356100c4611656565b8061028f575b610280576100df6100da366114fa565b61190c565b5f5260046020526100fa6100f560405f20611522565b611a5d565b60043591825f52600260205260405f20602435805f52600260205260405f209061012b610126846114d2565b611aa1565b610137610126836114d2565b610148610143846114d2565b611a1f565b8061026d575b156101db575061015e84846116b2565b85036101b0579361019561018f61017f61017a61019a986114d2565b611b3e565b6001600160401b03855416611cf0565b83611d22565b6116d8565b6101ae6101a96100da366114fa565b611bc1565b005b608485858560405192633ad7a6d360e11b845260016004850152602484015260448301526064820152fd5b9450906101ea610143826114d2565b158061025b575b1561024c5761020084846116b2565b8503610221579361019561018f61017f61017a61021c986114d2565b61019a565b608485858560405192633ad7a6d360e11b845260026004850152602484015260448301526064820152fd5b634d46ab2360e11b5f5260045ffd5b50610268610143836114d2565b6101f1565b5061027a610143836114d2565b1561014e565b6395ddf15360e01b5f5260045ffd5b50600154156100ca565b5f80fd5b3461029957366003190160c08112610299576040136102995760643560a4356084356044356102ca611656565b806104a9575b610280576102e06100da366114fa565b5f52600460205260405f20936102f86100f586611522565b60016001600160401b03608061030d88611522565b01511611156104645761032a818361032488611522565b51611deb565b602061033586611522565b015182146103fd575081610355846001600160401b039461037e94611deb565b6004850193838554169161036b60018411611591565b6001870180548855556002860155611e41565b166001600160401b03198254161790555b7f29ff393c59c37f91e930fad4d88447efc58cf5d7c048499e1f20edb36994137860406103be6100da366114fa565b926001815491015482519182526020820152a26004355f5260026020526103e760405f20611bf7565b6024355f5260026020526101ae60405f20611bf7565b8391506104428361041a6001966001600160401b03968795611deb565b6004870193838554169161042f888411611591565b600289019081548a55888a015555611e41565b16821982541617815554161b61045d60038301918254611970565b905561038f565b60405162461bcd60e51b815260206004820152601760248201527f6d617463682063616e277420626520616476616e6365640000000000000000006044820152606490fd5b50600154156102d0565b346102995760203660031901126102995760e06104d1600435611637565b6001600160401b0360c060405192805184526020810151602085015260408101516040850152606081015160608501528260808201511660808501528260a08201511660a085015201511660c0820152f35b34610299575f36600319011261029957606061053d6115ac565b90604051921515835260208301526040820152f35b34610299576060366003190112610299576004356001600160a01b0381169081900361029957602435604435610586611656565b8061082c575b61028057825f52600560205260405f20549081156107f157815f5260046020526001600160401b0360806105ce60405f206105c96100f582611522565b611522565b0151166107b457604051635145236f60e01b8152606081600481885afa9081156106f3575f5f915f93610768575b50156107595780156107145761061283866116b2565b908082036106fe575060405191631de5608360e21b83526004830152606082602481895afa9182156106f3575f92610684575b50936101a9929185610674965f52600260205261019561018f60405f209361066f610126866114d2565b611af7565b5f90815260056020526040812055005b8093925060609591953d6060116106ec575b6106a081836114b1565b810103606081126102995760401361029957610674946101a9936106dd6020604051926106cc84611467565b6106d58161157d565b84520161157d565b60208201529293509094610645565b503d610696565b6040513d5f823e3d90fd5b9063d74cbd1f60e01b5f5260045260245260445ffd5b60405162461bcd60e51b815260206004820152601760248201527f74726565206e6f646520646f65736e27742065786973740000000000000000006044820152606490fd5b636f05f46160e11b5f5260045ffd5b925050506060813d6060116107ac575b81610785606093836114b1565b810103126102995780518015158103610299576040602083015192015190919091876105fc565b3d9150610778565b60405162461bcd60e51b81526020600482015260156024820152741b585d18da081a5cc81b9bdd08199a5b9a5cda1959605a1b6044820152606490fd5b60405162461bcd60e51b81526020600482015260136024820152721b585d18da08191bd95cdb89dd08195e1a5cdd606a1b6044820152606490fd5b506001541561058c565b34610299575f3660031901126102995760806040516001600160401b037f00000000000000000000000000000000000000000000000000000000000000001681526001600160401b037f00000000000000000000000000000000000000000000000000000000000000001660208201526001600160401b037f00000000000000000000000000000000000000000000000000000000000000001660408201526001600160401b037f0000000000000000000000000000000000000000000000000000000000000000166060820152f35b346102995760403660031901126102995761091f611656565b80610a3a575b610280576109356100da366114fa565b5f52600460205261094b6100f560405f20611522565b6004355f908152600260205260408082206024358352912090610970610126826114d2565b61097c610126836114d2565b610988610143826114d2565b159182610a0c575b82156109bc575b5050156109ad576101ae6101a96100da366114fa565b633d0b930760e21b5f5260045ffd5b9091506109cb610143826114d2565b1591826109dc575b50508180610997565b6001600160401b03919250610a0061017a6109fa61066f85946114d2565b946114d2565b169116111581806109d3565b9150610a1a61066f836114d2565b6001600160401b0380610a2f61017a856114d2565b169116111591610990565b5060015415610925565b34610299576020366003190112610299576020610a8c610a65600435611637565b7f00000000000000000000000000000000000000000000000000000000000000009061197d565b604051908152f35b346102995760203660031901126102995760606004355f6020604051610ab981611467565b8281520152805f52600260205260405f20905f526003602052610ae060405f2054916114d2565b906001600160401b0360206040519382815116855201511660208301526040820152f35b34610299576040366003190112610299576004355f5260026020526020610b2d60405f206114d2565b6024355f5260028252610b4b610b4560405f206114d2565b91611a1f565b15908115610b5f575b506040519015158152f35b610b699150611a1f565b1582610b54565b3461029957366003190160c08112610299576040136102995760643560443560843560a4356001600160401b03811161029957610bb1903690600401611437565b9190610bbb611656565b806111e1575b61028057610bd16100da366114fa565b5f52600460205260405f209160016001600160401b036080610bf286611522565b0151160361119157610c08868661032486611522565b60043592835f52600260205260405f2096610c5660243598895f526002602052610c50610c4a60405f2092610c3c8161192f565b610c458461192f565b6114d2565b916114d2565b9061194f565b967f0000000000000000000000000000000000000000000000000000000000000000916020610c8485611522565b0151821461111457506004830190610ca860016001600160401b0384541614611591565b6002840155805467ffffffffffffffff19169055610cc582611522565b93600160c086015116155f1461110557604060208601519501515b94965b60038401549182610fd557505050808303610fbe5750610a65610d20915b610d186001600160401b0360048301541615611591565b838155611522565b60016001600160401b037f00000000000000000000000000000000000000000000000000000000000000001601906001600160401b038211610faa575f196001600160401b037f00000000000000000000000000000000000000000000000000000000000000001601966001600160401b038811610faa576001600160401b03602098166001600160401b038416145f14610edb57610df694604051998a988998630c67874d60e11b8a527f00000000000000000000000000000000000000000000000000000000000000009760048b016119cd565b03815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af19081156106f3575f91610e99575b506001600160a01b03165b6001600160a01b0316610e536100da366114fa565b815f52600560205260405f20557f166b786700a644dcec96aa84a92c26ecfee11b50956409c8cc83616042290d796020610e8f6100da366114fa565b92604051908152a2005b90506020813d602011610ed3575b81610eb4602093836114b1565b8101031261029957516001600160a01b03811681036102995781610e33565b3d9150610ea7565b610f1c94604051998a988998631961e5cb60e31b8a527f00000000000000000000000000000000000000000000000000000000000000009760048b016119cd565b03815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af19081156106f3575f91610f68575b506001600160a01b0316610e3e565b90506020813d602011610fa2575b81610f83602093836114b1565b8101031261029957516001600160a01b03811681036102995781610f59565b3d9150610f76565b634e487b7160e01b5f52601160045260245ffd5b905063773af80160e01b5f5260045260245260445ffd5b90919250600484015460801c906001806001600160401b0384169316145f146110fe5787925b5f198501948511610faa579391908694611016818414611591565b5f935b83851061107b5750505050500361103657610a65610d2091610d01565b60405162461bcd60e51b815260206004820152601960248201527f636f6d6d69746d656e74207374617465206d69736d61746368000000000000006044820152606490fd5b90919293956001908183891c16155f146110c95761109a888587611ccc565b3560405190602082019283526040820152604081526110ba6060826114b1565b519020965b0193929190611019565b6110d4888587611ccc565b359060405190602082019283526040820152604081526110f56060826114b1565b519020966110bf565b8a92610ffb565b60206040860151950151610ce0565b9050600483019061113160016001600160401b0384541614611591565b60018401556001600160401b031981541690556003820180549060018201809211610faa575561116082611522565b93600160c086015116155f1461118257602060408601519501515b9496610ce3565b6040602086015195015161117b565b60405162461bcd60e51b815260206004820152602260248201527f6d61746368206973206e6f7420726561647920746f2062652066696e616c697a604482015261195960f21b6064820152608490fd5b5060015415610bc1565b34610299576080366003190112610299576004356024356001600160401b0381116102995761121e903690600401611437565b60643592604435929161122f611656565b6114285761123d85856116b2565b9282916001600160401b037f00000000000000000000000000000000000000000000000000000000000000001690611276818314611591565b5f925b8284106113e85750505050820361139757815f52600360205260405f2055805f52600260205260405f206001600160401b036112b4826114d2565b511661135b577fe53537f202911d376d6e285835b2a2016e83e99fbe84a059d445cc2be4807262936020936113529261134c6113466001600160401b0361131f7f000000000000000000000000000000000000000000000000000000000000000082164283166119ad565b167f0000000000000000000000000000000000000000000000000000000000000000611cf0565b82611d22565b846116d8565b604051908152a1005b60405162461bcd60e51b815260206004820152601460248201527318db1bd8dac81a5cc81a5b9a5d1a585b1a5e995960621b6044820152606490fd5b60405162461bcd60e51b815260206004820152602360248201527f636f6d6d69746d656e74206c61737420737461746520646f65736e2774206d616044820152620e8c6d60eb1b6064820152608490fd5b909192936001906113fa868585611ccc565b3590604051906020820192835260408201526040815261141b6060826114b1565b5190209401929190611279565b63ac57beef60e01b5f5260045ffd5b9181601f84011215610299578235916001600160401b038311610299576020808501948460051b01011161029957565b604081019081106001600160401b0382111761148257604052565b634e487b7160e01b5f52604160045260245ffd5b60e081019081106001600160401b0382111761148257604052565b90601f801991011681019081106001600160401b0382111761148257604052565b906040516114df81611467565b60206001600160401b03829454818116845260401c16910152565b6040906003190112610299576040519061151382611467565b60043582526024356020830152565b9060405161152f81611496565b60c06001600160401b03600483958054855260018101546020860152600281015460408601526003810154606086015201548181166080850152818160401c1660a085015260801c16910152565b51906001600160401b038216820361029957565b1561159857565b634e487b7160e01b5f52600160045260245ffd5b6115b4611656565b806115f7575b156115ef575f905f5491826115e7575b6115d390611591565b5f8281526003602052604090205460019291565b5060016115ca565b5f905f905f90565b50600154156115ba565b6040519061160e82611496565b5f60c0838281528260208201528260408201528260608201528260808201528260a08201520152565b61163f611601565b505f52600460205261165360405f20611522565b90565b6116a07f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611e56565b6001600160401b038042169116111590565b9060405190602082019283526040820152604081526116d26060826114b1565b51902090565b929190916116f0846116ea83856116b2565b14611591565b5f925f549384611904575b156118fc576118ba9161170c611601565b5061172161171a82866116b2565b8714611591565b60405161172d81611467565b8581528660208201526118286001600160401b036040519261174e84611496565b8884528180600460208701968b885260408101988952606081015f81526080820199847f000000000000000000000000000000000000000000000000000000000000000016998a8c526117d060a0850198877f0000000000000000000000000000000000000000000000000000000000000000168a5260c086019c8d5261190c565b5f528460205260405f2093518455516001840155516002830155516003820155019651161682198654161785555116839067ffffffffffffffff60401b82549160401b169067ffffffffffffffff60401b1916179055565b51815467ffffffffffffffff60801b191660809190911b67ffffffffffffffff60801b161790555f848152600260205260409020906118b5907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906118b0838387611da7565b611da7565b611bf7565b5f80556001545f198114610faa577f32911001007d8c9879b608566be8acc2184592f0a43706f804f285455bb0f52e91600160209201600155604051908152a3565b505050505f55565b5060016116fb565b6040516020808201928051845201516040820152604081526116d26060826114b1565b6001600160401b03815460401c166119445750565b61194d90611bf7565b565b6001600160401b03809151169151168082115f1461196b575090565b905090565b91908201809211610faa57565b60606001600160401b0360a08301511691015180821b916001828404911b1490151715610faa5761165391611970565b906001600160401b03809116911603906001600160401b038211610faa57565b9793946001600160401b0395610100989487949c9b98939c6101208c019d8c5260208c015260408b015260608a015260808901521660a087015260c08601521660e084015260018060a01b0316910152565b60208101516001600160401b03169081611a3a575050600190565b6001600160401b03611a57818080945116941682804216166119ad565b16161090565b5115611a6557565b60405162461bcd60e51b81526020600482015260146024820152731b585d18da08191bd95cc81b9bdd08195e1a5cdd60621b6044820152606490fd5b516001600160401b031615611ab257565b60405162461bcd60e51b815260206004820152601860248201527f636c6f636b206973206e6f7420696e697469616c697a656400000000000000006044820152606490fd5b60208101516001600160401b031680611b185750516001600160401b031690565b6001600160401b03611b378180611653955116931682804216166119ad565b1690611cf0565b60208101906001600160401b0382511615611b7c576001600160401b0380611b7281806116539651161682804216166119ad565b1691511690611cf0565b60405162461bcd60e51b815260206004820152601c60248201527f612070617573656420636c6f636b2063616e27742074696d656f7574000000006044820152606490fd5b6001548015610faa575f19016001555f5260046020525f6004604082208281558260018201558260028201558260038201550155565b611c0361066f826114d2565b6001600160401b03811615611c79576001600160401b039081835460401c16155f14611c6257825467ffffffffffffffff60401b191642831660401b67ffffffffffffffff60401b161783555b166001600160401b0319825416179055565b825467ffffffffffffffff60401b19168355611c50565b60405162461bcd60e51b815260206004820152602560248201527f63616e277420616476616e636520636c6f636b2077697468206e6f2074696d65604482015264081b19599d60da1b6064820152608490fd5b9190811015611cdc5760051b0190565b634e487b7160e01b5f52603260045260245ffd5b6001600160401b03918216911681811015611d0c57505f919050565b6001600160401b0391611d1e916119ad565b1690565b906001600160401b03811615611d585781546fffffffffffffffffffffffffffffffff19166001600160401b0391909116179055565b60405162461bcd60e51b815260206004820152602160248201527f63616e27742063726561746520636c6f636b2077697468207a65726f2074696d6044820152606560f81b6064820152608490fd5b9091611dc161194d93611dbc61066f856114d2565b611e56565b6001600160401b0382166001600160401b038216115f14611de3575090611d22565b905090611d22565b91611df5916116b2565b03611dfc57565b60405162461bcd60e51b815260206004820152601e60248201527f6368696c64206e6f64657320646f6e2774206d6174636820706172656e7400006044820152606490fd5b6001600160401b03168015610faa575f190190565b906001600160401b038091169116016001600160401b038111610faa576001600160401b03169056fea2646970667358221220a7e669567734ee90c6028ebc2d51c126263b5be973d69f3a1104c373ce19745964736f6c634300081b0033a26469706673582212204851b4bc75e2213ca8d1e97fa835d315b8fc103d9a5b37ef1737311f5b0b1c3664736f6c634300081b0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80\x80`@R4`\x15Wa\"\xF9\x90\x81a\0\x1A\x829\xF3[_\x80\xFD\xFE`\x80`\x046\x10\x15a\0\x0EW_\x80\xFD[_5`\xE0\x1Cc\x85\xA760\x14a\0!W_\x80\xFD[4a\x01\xB3Wa\x01\x006`\x03\x19\x01\x12a\x01\xB3W`\xA06`#\x19\x01\x12a\x01\xB3W`\xA0\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01\x9FW`@R`$5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x01\xB3W\x81R`D5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x01\xB3W` \x82\x01\x90\x81R`d5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x01\xB3W`@\x83\x01\x90\x81R`\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x01\xB3W``\x84\x01\x90\x81R`\xA45\x93g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x85\x03a\x01\xB3W`\x80\x81\x01\x94\x85R`\xC45`\x01`\x01`\xA0\x1B\x03\x81\x16\x90\x81\x90\x03a\x01\xB3W`\xE45`\x01`\x01`\xA0\x1B\x03\x81\x16\x92\x90\x83\x90\x03a\x01\xB3W`@Q\x96a!\x0C\x96\x87\x89\x01\x95\x89\x87\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x88\x11\x17a\x01\x9FWg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8A\x98\x81\x80\x96\x94\x81\x80\x96a\x01\0\x9E\x8Ea\x01\xB8\x909`\x045\x8DRQ\x16` \x8C\x01RQ\x16`@\x8A\x01RQ\x16``\x88\x01RQ\x16`\x80\x86\x01RQ\x16`\xA0\x84\x01R`\xC0\x83\x01R`\xE0\x82\x01R\x03\x01\x90_\xF0\x80\x15a\x01\x94W`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[`@Q=_\x82>=\x90\xFD[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[_\x80\xFD\xFEa\x02\0`@R4a\x02*W`@Qa!\x0C8\x81\x90\x03`\x1F\x81\x01`\x1F\x19\x16\x83\x01`\x01`\x01`@\x1B\x03\x81\x11\x84\x82\x10\x17a\x02.W\x83\x92\x82\x91`@R\x839\x81\x01\x03\x90a\x01\0\x82\x12a\x02*W`\xA0\x81Q\x92`\x1F\x19\x01\x12a\x02*W`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17a\x02.W`@Ra\0|` \x83\x01a\x02BV[\x81Ra\0\x8A`@\x83\x01a\x02BV[\x92` \x82\x01\x93\x84Ra\0\x9E``\x84\x01a\x02BV[\x90`@\x83\x01\x91\x82Ra\0\xB2`\x80\x85\x01a\x02BV[\x91``\x84\x01\x92\x83Ra\0\xC6`\xA0\x86\x01a\x02BV[\x95`\x80\x85\x01\x94\x87\x86R`\xC0\x87\x01Q\x96`\x01\x80`\xA0\x1B\x03\x88\x16\x88\x03a\x02*W`\xE0\x01Q\x97`\x01`\x01`\xA0\x1B\x03\x89\x16\x89\x03a\x02*W`\x80\x94\x90\x94R_`\xA0\x81\x90R`\xC0RQ`\x01`\x01`@\x1B\x03\x90\x81\x16`\xE0R\x90Q\x81\x16a\x01\0R\x90Q\x81\x16a\x01 RB\x81\x16a\x01@R\x83Q\x81\x16\x91\x16\x81\x81\x11\x15a\x02#WP[a\x01`RQ`\x01`\x01`@\x1B\x03\x90\x81\x16a\x01\xA0R\x90Q\x16a\x01\x80Ra\x01\xC0Ra\x01\xE0R`@Qa\x1E\xB5\x90\x81a\x02W\x829`\x80Q\x81a\x0CY\x01R`\xA0Q\x81a\ng\x01R`\xC0Q\x81\x81\x81a\x08\x81\x01Ra\r,\x01R`\xE0Q\x81\x81\x81a\x08U\x01Ra\rh\x01Ra\x01\0Q\x81\x81\x81a\x08\xB0\x01Ra\x17\xA2\x01Ra\x01 Q\x81\x81\x81a\x08\xDF\x01R\x81\x81a\x12J\x01Ra\x17s\x01Ra\x01@Q\x81\x81\x81a\x12\xF6\x01Ra\x16|\x01Ra\x01`Q\x81\x81\x81a\x13\"\x01Ra\x16[\x01Ra\x01\x80Q\x81a\x18c\x01Ra\x01\xA0Q\x81a\x18\x85\x01Ra\x01\xC0Q\x81\x81\x81a\r\xCD\x01Ra\x0E\xF3\x01Ra\x01\xE0Q\x81\x81\x81a\r\xFB\x01Ra\x0F!\x01R\xF3[\x90Pa\x01>V[_\x80\xFD[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[Q\x90`\x01`\x01`@\x1B\x03\x82\x16\x82\x03a\x02*WV\xFE`\x80`@R`\x046\x10\x15a\0\x11W_\x80\xFD[_5`\xE0\x1C\x80c\x1D[\xF7\x96\x14a\x11\xEBW\x80c?6\xE2\xFE\x14a\x0BpW\x80cj\x1A\x14\r\x14a\x0B\x04W\x80cw\x95\x82\x0C\x14a\n\x94W\x80c\x8A\xCC\x80-\x14a\nDW\x80c\x9A\x9BK+\x14a\t\x06W\x80c\xA1\xAF\x90k\x14a\x086W\x80c\xB4\x01\x86\\\x14a\x05RW\x80c\xCB's\xDB\x14a\x05#W\x80c\xFC\xC6\x07}\x14a\x04\xB3W\x80c\xFC\xC8S\x91\x14a\x02\x9DWc\xFFx\xE0\xEE\x14a\0\x9DW_\x80\xFD[4a\x02\x99W6`\x03\x19\x01`\x80\x81\x12a\x02\x99W`@\x13a\x02\x99W`D5`d5a\0\xC4a\x16VV[\x80a\x02\x8FW[a\x02\x80Wa\0\xDFa\0\xDA6a\x14\xFAV[a\x19\x0CV[_R`\x04` Ra\0\xFAa\0\xF5`@_ a\x15\"V[a\x1A]V[`\x045\x91\x82_R`\x02` R`@_ `$5\x80_R`\x02` R`@_ \x90a\x01+a\x01&\x84a\x14\xD2V[a\x1A\xA1V[a\x017a\x01&\x83a\x14\xD2V[a\x01Ha\x01C\x84a\x14\xD2V[a\x1A\x1FV[\x80a\x02mW[\x15a\x01\xDBWPa\x01^\x84\x84a\x16\xB2V[\x85\x03a\x01\xB0W\x93a\x01\x95a\x01\x8Fa\x01\x7Fa\x01za\x01\x9A\x98a\x14\xD2V[a\x1B>V[`\x01`\x01`@\x1B\x03\x85T\x16a\x1C\xF0V[\x83a\x1D\"V[a\x16\xD8V[a\x01\xAEa\x01\xA9a\0\xDA6a\x14\xFAV[a\x1B\xC1V[\0[`\x84\x85\x85\x85`@Q\x92c:\xD7\xA6\xD3`\xE1\x1B\x84R`\x01`\x04\x85\x01R`$\x84\x01R`D\x83\x01R`d\x82\x01R\xFD[\x94P\x90a\x01\xEAa\x01C\x82a\x14\xD2V[\x15\x80a\x02[W[\x15a\x02LWa\x02\0\x84\x84a\x16\xB2V[\x85\x03a\x02!W\x93a\x01\x95a\x01\x8Fa\x01\x7Fa\x01za\x02\x1C\x98a\x14\xD2V[a\x01\x9AV[`\x84\x85\x85\x85`@Q\x92c:\xD7\xA6\xD3`\xE1\x1B\x84R`\x02`\x04\x85\x01R`$\x84\x01R`D\x83\x01R`d\x82\x01R\xFD[cMF\xAB#`\xE1\x1B_R`\x04_\xFD[Pa\x02ha\x01C\x83a\x14\xD2V[a\x01\xF1V[Pa\x02za\x01C\x83a\x14\xD2V[\x15a\x01NV[c\x95\xDD\xF1S`\xE0\x1B_R`\x04_\xFD[P`\x01T\x15a\0\xCAV[_\x80\xFD[4a\x02\x99W6`\x03\x19\x01`\xC0\x81\x12a\x02\x99W`@\x13a\x02\x99W`d5`\xA45`\x845`D5a\x02\xCAa\x16VV[\x80a\x04\xA9W[a\x02\x80Wa\x02\xE0a\0\xDA6a\x14\xFAV[_R`\x04` R`@_ \x93a\x02\xF8a\0\xF5\x86a\x15\"V[`\x01`\x01`\x01`@\x1B\x03`\x80a\x03\r\x88a\x15\"V[\x01Q\x16\x11\x15a\x04dWa\x03*\x81\x83a\x03$\x88a\x15\"V[Qa\x1D\xEBV[` a\x035\x86a\x15\"V[\x01Q\x82\x14a\x03\xFDWP\x81a\x03U\x84`\x01`\x01`@\x1B\x03\x94a\x03~\x94a\x1D\xEBV[`\x04\x85\x01\x93\x83\x85T\x16\x91a\x03k`\x01\x84\x11a\x15\x91V[`\x01\x87\x01\x80T\x88UU`\x02\x86\x01Ua\x1EAV[\x16`\x01`\x01`@\x1B\x03\x19\x82T\x16\x17\x90U[\x7F)\xFF9=\x90\xFD[\x90c\xD7L\xBD\x1F`\xE0\x1B_R`\x04R`$R`D_\xFD[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7Ftree node doesn't exist\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[co\x05\xF4a`\xE1\x1B_R`\x04_\xFD[\x92PPP``\x81=``\x11a\x07\xACW[\x81a\x07\x85``\x93\x83a\x14\xB1V[\x81\x01\x03\x12a\x02\x99W\x80Q\x80\x15\x15\x81\x03a\x02\x99W`@` \x83\x01Q\x92\x01Q\x90\x91\x90\x91\x87a\x05\xFCV[=\x91Pa\x07xV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x15`$\x82\x01Rt\x1BX]\x18\xDA\x08\x1A\\\xC8\x1B\x9B\xDD\x08\x19\x9A[\x9A\\\xDA\x19Y`Z\x1B`D\x82\x01R`d\x90\xFD[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x1BX]\x18\xDA\x08\x19\x1B\xD9\\\xDB\x89\xDD\x08\x19^\x1A\\\xDD`j\x1B`D\x82\x01R`d\x90\xFD[P`\x01T\x15a\x05\x8CV[4a\x02\x99W_6`\x03\x19\x01\x12a\x02\x99W`\x80`@Q`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x81R`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16` \x82\x01R`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16`@\x82\x01R`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16``\x82\x01R\xF3[4a\x02\x99W`@6`\x03\x19\x01\x12a\x02\x99Wa\t\x1Fa\x16VV[\x80a\n:W[a\x02\x80Wa\t5a\0\xDA6a\x14\xFAV[_R`\x04` Ra\tKa\0\xF5`@_ a\x15\"V[`\x045_\x90\x81R`\x02` R`@\x80\x82 `$5\x83R\x91 \x90a\tpa\x01&\x82a\x14\xD2V[a\t|a\x01&\x83a\x14\xD2V[a\t\x88a\x01C\x82a\x14\xD2V[\x15\x91\x82a\n\x0CW[\x82\x15a\t\xBCW[PP\x15a\t\xADWa\x01\xAEa\x01\xA9a\0\xDA6a\x14\xFAV[c=\x0B\x93\x07`\xE2\x1B_R`\x04_\xFD[\x90\x91Pa\t\xCBa\x01C\x82a\x14\xD2V[\x15\x91\x82a\t\xDCW[PP\x81\x80a\t\x97V[`\x01`\x01`@\x1B\x03\x91\x92Pa\n\0a\x01za\t\xFAa\x06o\x85\x94a\x14\xD2V[\x94a\x14\xD2V[\x16\x91\x16\x11\x15\x81\x80a\t\xD3V[\x91Pa\n\x1Aa\x06o\x83a\x14\xD2V[`\x01`\x01`@\x1B\x03\x80a\n/a\x01z\x85a\x14\xD2V[\x16\x91\x16\x11\x15\x91a\t\x90V[P`\x01T\x15a\t%V[4a\x02\x99W` 6`\x03\x19\x01\x12a\x02\x99W` a\n\x8Ca\ne`\x045a\x167V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90a\x19}V[`@Q\x90\x81R\xF3[4a\x02\x99W` 6`\x03\x19\x01\x12a\x02\x99W```\x045_` `@Qa\n\xB9\x81a\x14gV[\x82\x81R\x01R\x80_R`\x02` R`@_ \x90_R`\x03` Ra\n\xE0`@_ T\x91a\x14\xD2V[\x90`\x01`\x01`@\x1B\x03` `@Q\x93\x82\x81Q\x16\x85R\x01Q\x16` \x83\x01R`@\x82\x01R\xF3[4a\x02\x99W`@6`\x03\x19\x01\x12a\x02\x99W`\x045_R`\x02` R` a\x0B-`@_ a\x14\xD2V[`$5_R`\x02\x82Ra\x0BKa\x0BE`@_ a\x14\xD2V[\x91a\x1A\x1FV[\x15\x90\x81\x15a\x0B_W[P`@Q\x90\x15\x15\x81R\xF3[a\x0Bi\x91Pa\x1A\x1FV[\x15\x82a\x0BTV[4a\x02\x99W6`\x03\x19\x01`\xC0\x81\x12a\x02\x99W`@\x13a\x02\x99W`d5`D5`\x845`\xA45`\x01`\x01`@\x1B\x03\x81\x11a\x02\x99Wa\x0B\xB1\x906\x90`\x04\x01a\x147V[\x91\x90a\x0B\xBBa\x16VV[\x80a\x11\xE1W[a\x02\x80Wa\x0B\xD1a\0\xDA6a\x14\xFAV[_R`\x04` R`@_ \x91`\x01`\x01`\x01`@\x1B\x03`\x80a\x0B\xF2\x86a\x15\"V[\x01Q\x16\x03a\x11\x91Wa\x0C\x08\x86\x86a\x03$\x86a\x15\"V[`\x045\x92\x83_R`\x02` R`@_ \x96a\x0CV`$5\x98\x89_R`\x02` Ra\x0CPa\x0CJ`@_ \x92a\x0C<\x81a\x19/V[a\x0CE\x84a\x19/V[a\x14\xD2V[\x91a\x14\xD2V[\x90a\x19OV[\x96\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91` a\x0C\x84\x85a\x15\"V[\x01Q\x82\x14a\x11\x14WP`\x04\x83\x01\x90a\x0C\xA8`\x01`\x01`\x01`@\x1B\x03\x84T\x16\x14a\x15\x91V[`\x02\x84\x01U\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90Ua\x0C\xC5\x82a\x15\"V[\x93`\x01`\xC0\x86\x01Q\x16\x15_\x14a\x11\x05W`@` \x86\x01Q\x95\x01Q[\x94\x96[`\x03\x84\x01T\x91\x82a\x0F\xD5WPPP\x80\x83\x03a\x0F\xBEWPa\nea\r \x91[a\r\x18`\x01`\x01`@\x1B\x03`\x04\x83\x01T\x16\x15a\x15\x91V[\x83\x81Ua\x15\"V[`\x01`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x01\x90`\x01`\x01`@\x1B\x03\x82\x11a\x0F\xAAW_\x19`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x01\x96`\x01`\x01`@\x1B\x03\x88\x11a\x0F\xAAW`\x01`\x01`@\x1B\x03` \x98\x16`\x01`\x01`@\x1B\x03\x84\x16\x14_\x14a\x0E\xDBWa\r\xF6\x94`@Q\x99\x8A\x98\x89\x98c\x0Cg\x87M`\xE1\x1B\x8AR\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x97`\x04\x8B\x01a\x19\xCDV[\x03\x81_\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xF1\x90\x81\x15a\x06\xF3W_\x91a\x0E\x99W[P`\x01`\x01`\xA0\x1B\x03\x16[`\x01`\x01`\xA0\x1B\x03\x16a\x0ESa\0\xDA6a\x14\xFAV[\x81_R`\x05` R`@_ U\x7F\x16kxg\0\xA6D\xDC\xEC\x96\xAA\x84\xA9,&\xEC\xFE\xE1\x1BP\x95d\t\xC8\xCC\x83a`B)\ry` a\x0E\x8Fa\0\xDA6a\x14\xFAV[\x92`@Q\x90\x81R\xA2\0[\x90P` \x81=` \x11a\x0E\xD3W[\x81a\x0E\xB4` \x93\x83a\x14\xB1V[\x81\x01\x03\x12a\x02\x99WQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x02\x99W\x81a\x0E3V[=\x91Pa\x0E\xA7V[a\x0F\x1C\x94`@Q\x99\x8A\x98\x89\x98c\x19a\xE5\xCB`\xE3\x1B\x8AR\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x97`\x04\x8B\x01a\x19\xCDV[\x03\x81_\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xF1\x90\x81\x15a\x06\xF3W_\x91a\x0FhW[P`\x01`\x01`\xA0\x1B\x03\x16a\x0E>V[\x90P` \x81=` \x11a\x0F\xA2W[\x81a\x0F\x83` \x93\x83a\x14\xB1V[\x81\x01\x03\x12a\x02\x99WQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x02\x99W\x81a\x0FYV[=\x91Pa\x0FvV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x90Pcw:\xF8\x01`\xE0\x1B_R`\x04R`$R`D_\xFD[\x90\x91\x92P`\x04\x84\x01T`\x80\x1C\x90`\x01\x80`\x01`\x01`@\x1B\x03\x84\x16\x93\x16\x14_\x14a\x10\xFEW\x87\x92[_\x19\x85\x01\x94\x85\x11a\x0F\xAAW\x93\x91\x90\x86\x94a\x10\x16\x81\x84\x14a\x15\x91V[_\x93[\x83\x85\x10a\x10{WPPPPP\x03a\x106Wa\nea\r \x91a\r\x01V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7Fcommitment state mismatch\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x90\x91\x92\x93\x95`\x01\x90\x81\x83\x89\x1C\x16\x15_\x14a\x10\xC9Wa\x10\x9A\x88\x85\x87a\x1C\xCCV[5`@Q\x90` \x82\x01\x92\x83R`@\x82\x01R`@\x81Ra\x10\xBA``\x82a\x14\xB1V[Q\x90 \x96[\x01\x93\x92\x91\x90a\x10\x19V[a\x10\xD4\x88\x85\x87a\x1C\xCCV[5\x90`@Q\x90` \x82\x01\x92\x83R`@\x82\x01R`@\x81Ra\x10\xF5``\x82a\x14\xB1V[Q\x90 \x96a\x10\xBFV[\x8A\x92a\x0F\xFBV[` `@\x86\x01Q\x95\x01Qa\x0C\xE0V[\x90P`\x04\x83\x01\x90a\x111`\x01`\x01`\x01`@\x1B\x03\x84T\x16\x14a\x15\x91V[`\x01\x84\x01U`\x01`\x01`@\x1B\x03\x19\x81T\x16\x90U`\x03\x82\x01\x80T\x90`\x01\x82\x01\x80\x92\x11a\x0F\xAAWUa\x11`\x82a\x15\"V[\x93`\x01`\xC0\x86\x01Q\x16\x15_\x14a\x11\x82W` `@\x86\x01Q\x95\x01Q[\x94\x96a\x0C\xE3V[`@` \x86\x01Q\x95\x01Qa\x11{V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7Fmatch is not ready to be finaliz`D\x82\x01Ra\x19Y`\xF2\x1B`d\x82\x01R`\x84\x90\xFD[P`\x01T\x15a\x0B\xC1V[4a\x02\x99W`\x806`\x03\x19\x01\x12a\x02\x99W`\x045`$5`\x01`\x01`@\x1B\x03\x81\x11a\x02\x99Wa\x12\x1E\x906\x90`\x04\x01a\x147V[`d5\x92`D5\x92\x91a\x12/a\x16VV[a\x14(Wa\x12=\x85\x85a\x16\xB2V[\x92\x82\x91`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90a\x12v\x81\x83\x14a\x15\x91V[_\x92[\x82\x84\x10a\x13\xE8WPPPP\x82\x03a\x13\x97W\x81_R`\x03` R`@_ U\x80_R`\x02` R`@_ `\x01`\x01`@\x1B\x03a\x12\xB4\x82a\x14\xD2V[Q\x16a\x13[W\x7F\xE557\xF2\x02\x91\x1D7mn(X5\xB2\xA2\x01n\x83\xE9\x9F\xBE\x84\xA0Y\xD4E\xCC+\xE4\x80rb\x93` \x93a\x13R\x92a\x13La\x13F`\x01`\x01`@\x1B\x03a\x13\x1F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16B\x83\x16a\x19\xADV[\x16\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x1C\xF0V[\x82a\x1D\"V[\x84a\x16\xD8V[`@Q\x90\x81R\xA1\0[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rs\x18\xDB\x1B\xD8\xDA\xC8\x1A\\\xC8\x1A[\x9A]\x1AX[\x1A^\x99Y`b\x1B`D\x82\x01R`d\x90\xFD[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7Fcommitment last state doesn't ma`D\x82\x01Rb\x0E\x8Cm`\xEB\x1B`d\x82\x01R`\x84\x90\xFD[\x90\x91\x92\x93`\x01\x90a\x13\xFA\x86\x85\x85a\x1C\xCCV[5\x90`@Q\x90` \x82\x01\x92\x83R`@\x82\x01R`@\x81Ra\x14\x1B``\x82a\x14\xB1V[Q\x90 \x94\x01\x92\x91\x90a\x12yV[c\xACW\xBE\xEF`\xE0\x1B_R`\x04_\xFD[\x91\x81`\x1F\x84\x01\x12\x15a\x02\x99W\x825\x91`\x01`\x01`@\x1B\x03\x83\x11a\x02\x99W` \x80\x85\x01\x94\x84`\x05\x1B\x01\x01\x11a\x02\x99WV[`@\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17a\x14\x82W`@RV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`\xE0\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17a\x14\x82W`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17a\x14\x82W`@RV[\x90`@Qa\x14\xDF\x81a\x14gV[` `\x01`\x01`@\x1B\x03\x82\x94T\x81\x81\x16\x84R`@\x1C\x16\x91\x01RV[`@\x90`\x03\x19\x01\x12a\x02\x99W`@Q\x90a\x15\x13\x82a\x14gV[`\x045\x82R`$5` \x83\x01RV[\x90`@Qa\x15/\x81a\x14\x96V[`\xC0`\x01`\x01`@\x1B\x03`\x04\x83\x95\x80T\x85R`\x01\x81\x01T` \x86\x01R`\x02\x81\x01T`@\x86\x01R`\x03\x81\x01T``\x86\x01R\x01T\x81\x81\x16`\x80\x85\x01R\x81\x81`@\x1C\x16`\xA0\x85\x01R`\x80\x1C\x16\x91\x01RV[Q\x90`\x01`\x01`@\x1B\x03\x82\x16\x82\x03a\x02\x99WV[\x15a\x15\x98WV[cNH{q`\xE0\x1B_R`\x01`\x04R`$_\xFD[a\x15\xB4a\x16VV[\x80a\x15\xF7W[\x15a\x15\xEFW_\x90_T\x91\x82a\x15\xE7W[a\x15\xD3\x90a\x15\x91V[_\x82\x81R`\x03` R`@\x90 T`\x01\x92\x91V[P`\x01a\x15\xCAV[_\x90_\x90_\x90V[P`\x01T\x15a\x15\xBAV[`@Q\x90a\x16\x0E\x82a\x14\x96V[_`\xC0\x83\x82\x81R\x82` \x82\x01R\x82`@\x82\x01R\x82``\x82\x01R\x82`\x80\x82\x01R\x82`\xA0\x82\x01R\x01RV[a\x16?a\x16\x01V[P_R`\x04` Ra\x16S`@_ a\x15\"V[\x90V[a\x16\xA0\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x1EVV[`\x01`\x01`@\x1B\x03\x80B\x16\x91\x16\x11\x15\x90V[\x90`@Q\x90` \x82\x01\x92\x83R`@\x82\x01R`@\x81Ra\x16\xD2``\x82a\x14\xB1V[Q\x90 \x90V[\x92\x91\x90\x91a\x16\xF0\x84a\x16\xEA\x83\x85a\x16\xB2V[\x14a\x15\x91V[_\x92_T\x93\x84a\x19\x04W[\x15a\x18\xFCWa\x18\xBA\x91a\x17\x0Ca\x16\x01V[Pa\x17!a\x17\x1A\x82\x86a\x16\xB2V[\x87\x14a\x15\x91V[`@Qa\x17-\x81a\x14gV[\x85\x81R\x86` \x82\x01Ra\x18(`\x01`\x01`@\x1B\x03`@Q\x92a\x17N\x84a\x14\x96V[\x88\x84R\x81\x80`\x04` \x87\x01\x96\x8B\x88R`@\x81\x01\x98\x89R``\x81\x01_\x81R`\x80\x82\x01\x99\x84\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x99\x8A\x8CRa\x17\xD0`\xA0\x85\x01\x98\x87\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x8AR`\xC0\x86\x01\x9C\x8DRa\x19\x0CV[_R\x84` R`@_ \x93Q\x84UQ`\x01\x84\x01UQ`\x02\x83\x01UQ`\x03\x82\x01U\x01\x96Q\x16\x16\x82\x19\x86T\x16\x17\x85UQ\x16\x83\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@\x1B\x82T\x91`@\x1B\x16\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@\x1B\x19\x16\x17\x90UV[Q\x81Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x16`\x80\x91\x90\x91\x1Bg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x16\x17\x90U_\x84\x81R`\x02` R`@\x90 \x90a\x18\xB5\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90a\x18\xB0\x83\x83\x87a\x1D\xA7V[a\x1D\xA7V[a\x1B\xF7V[_\x80U`\x01T_\x19\x81\x14a\x0F\xAAW\x7F2\x91\x10\x01\0}\x8C\x98y\xB6\x08Vk\xE8\xAC\xC2\x18E\x92\xF0\xA47\x06\xF8\x04\xF2\x85E[\xB0\xF5.\x91`\x01` \x92\x01`\x01U`@Q\x90\x81R\xA3V[PPPP_UV[P`\x01a\x16\xFBV[`@Q` \x80\x82\x01\x92\x80Q\x84R\x01Q`@\x82\x01R`@\x81Ra\x16\xD2``\x82a\x14\xB1V[`\x01`\x01`@\x1B\x03\x81T`@\x1C\x16a\x19DWPV[a\x19M\x90a\x1B\xF7V[V[`\x01`\x01`@\x1B\x03\x80\x91Q\x16\x91Q\x16\x80\x82\x11_\x14a\x19kWP\x90V[\x90P\x90V[\x91\x90\x82\x01\x80\x92\x11a\x0F\xAAWV[```\x01`\x01`@\x1B\x03`\xA0\x83\x01Q\x16\x91\x01Q\x80\x82\x1B\x91`\x01\x82\x84\x04\x91\x1B\x14\x90\x15\x17\x15a\x0F\xAAWa\x16S\x91a\x19pV[\x90`\x01`\x01`@\x1B\x03\x80\x91\x16\x91\x16\x03\x90`\x01`\x01`@\x1B\x03\x82\x11a\x0F\xAAWV[\x97\x93\x94`\x01`\x01`@\x1B\x03\x95a\x01\0\x98\x94\x87\x94\x9C\x9B\x98\x93\x9Ca\x01 \x8C\x01\x9D\x8CR` \x8C\x01R`@\x8B\x01R``\x8A\x01R`\x80\x89\x01R\x16`\xA0\x87\x01R`\xC0\x86\x01R\x16`\xE0\x84\x01R`\x01\x80`\xA0\x1B\x03\x16\x91\x01RV[` \x81\x01Q`\x01`\x01`@\x1B\x03\x16\x90\x81a\x1A:WPP`\x01\x90V[`\x01`\x01`@\x1B\x03a\x1AW\x81\x80\x80\x94Q\x16\x94\x16\x82\x80B\x16\x16a\x19\xADV[\x16\x16\x10\x90V[Q\x15a\x1AeWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rs\x1BX]\x18\xDA\x08\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`b\x1B`D\x82\x01R`d\x90\xFD[Q`\x01`\x01`@\x1B\x03\x16\x15a\x1A\xB2WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7Fclock is not initialized\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[` \x81\x01Q`\x01`\x01`@\x1B\x03\x16\x80a\x1B\x18WPQ`\x01`\x01`@\x1B\x03\x16\x90V[`\x01`\x01`@\x1B\x03a\x1B7\x81\x80a\x16S\x95Q\x16\x93\x16\x82\x80B\x16\x16a\x19\xADV[\x16\x90a\x1C\xF0V[` \x81\x01\x90`\x01`\x01`@\x1B\x03\x82Q\x16\x15a\x1B|W`\x01`\x01`@\x1B\x03\x80a\x1Br\x81\x80a\x16S\x96Q\x16\x16\x82\x80B\x16\x16a\x19\xADV[\x16\x91Q\x16\x90a\x1C\xF0V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1C`$\x82\x01R\x7Fa paused clock can't timeout\0\0\0\0`D\x82\x01R`d\x90\xFD[`\x01T\x80\x15a\x0F\xAAW_\x19\x01`\x01U_R`\x04` R_`\x04`@\x82 \x82\x81U\x82`\x01\x82\x01U\x82`\x02\x82\x01U\x82`\x03\x82\x01U\x01UV[a\x1C\x03a\x06o\x82a\x14\xD2V[`\x01`\x01`@\x1B\x03\x81\x16\x15a\x1CyW`\x01`\x01`@\x1B\x03\x90\x81\x83T`@\x1C\x16\x15_\x14a\x1CbW\x82Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@\x1B\x19\x16B\x83\x16`@\x1Bg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@\x1B\x16\x17\x83U[\x16`\x01`\x01`@\x1B\x03\x19\x82T\x16\x17\x90UV[\x82Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@\x1B\x19\x16\x83Ua\x1CPV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7Fcan't advance clock with no time`D\x82\x01Rd\x08\x1B\x19Y\x9D`\xDA\x1B`d\x82\x01R`\x84\x90\xFD[\x91\x90\x81\x10\x15a\x1C\xDCW`\x05\x1B\x01\x90V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x81\x81\x10\x15a\x1D\x0CWP_\x91\x90PV[`\x01`\x01`@\x1B\x03\x91a\x1D\x1E\x91a\x19\xADV[\x16\x90V[\x90`\x01`\x01`@\x1B\x03\x81\x16\x15a\x1DXW\x81To\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x91\x90\x91\x16\x17\x90UV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7Fcan't create clock with zero tim`D\x82\x01R`e`\xF8\x1B`d\x82\x01R`\x84\x90\xFD[\x90\x91a\x1D\xC1a\x19M\x93a\x1D\xBCa\x06o\x85a\x14\xD2V[a\x1EVV[`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x82\x16\x11_\x14a\x1D\xE3WP\x90a\x1D\"V[\x90P\x90a\x1D\"V[\x91a\x1D\xF5\x91a\x16\xB2V[\x03a\x1D\xFCWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7Fchild nodes don't match parent\0\0`D\x82\x01R`d\x90\xFD[`\x01`\x01`@\x1B\x03\x16\x80\x15a\x0F\xAAW_\x19\x01\x90V[\x90`\x01`\x01`@\x1B\x03\x80\x91\x16\x91\x16\x01`\x01`\x01`@\x1B\x03\x81\x11a\x0F\xAAW`\x01`\x01`@\x1B\x03\x16\x90V\xFE\xA2dipfsX\"\x12 \xA7\xE6iVw4\xEE\x90\xC6\x02\x8E\xBC-Q\xC1&&;[\xE9s\xD6\x9F:\x11\x04\xC3s\xCE\x19tYdsolcC\0\x08\x1B\x003\xA2dipfsX\"\x12 HQ\xB4\xBCu\xE2!<\xA8\xD1\xE9\x7F\xA85\xD3\x15\xB8\xFC\x10=\x9A[7\xEF\x1771\x1F[\x0B\x1C6dsolcC\0\x08\x1B\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x6080600436101561000e575f80fd5b5f3560e01c6385a7363014610021575f80fd5b346101b3576101003660031901126101b35760a03660231901126101b35760a0810181811067ffffffffffffffff82111761019f5760405260243567ffffffffffffffff811681036101b357815260443567ffffffffffffffff811681036101b3576020820190815260643567ffffffffffffffff811681036101b3576040830190815260843567ffffffffffffffff811681036101b3576060840190815260a4359367ffffffffffffffff851685036101b3576080810194855260c4356001600160a01b038116908190036101b35760e4356001600160a01b03811692908390036101b3576040519661210c968789019589871067ffffffffffffffff88111761019f5767ffffffffffffffff8a98818096948180966101009e8e6101b890396004358d52511660208c0152511660408a01525116606088015251166080860152511660a084015260c083015260e08201520301905ff08015610194576040516001600160a01b039091168152602090f35b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b5f80fdfe6102006040523461022a5760405161210c38819003601f8101601f191683016001600160401b0381118482101761022e5783928291604052833981010390610100821261022a5760a0815192601f19011261022a5760405160a081016001600160401b0381118282101761022e5760405261007c60208301610242565b815261008a60408301610242565b926020820193845261009e60608401610242565b90604083019182526100b260808501610242565b91606084019283526100c660a08601610242565b95608085019487865260c08701519660018060a01b038816880361022a5760e00151976001600160a01b038916890361022a576080949094525f60a081905260c052516001600160401b0390811660e05290518116610100529051811661012052428116610140528351811691168181111561022357505b61016052516001600160401b039081166101a052905116610180526101c0526101e052604051611eb59081610257823960805181610c59015260a05181610a67015260c0518181816108810152610d2c015260e0518181816108550152610d680152610100518181816108b001526117a20152610120518181816108df0152818161124a01526117730152610140518181816112f6015261167c015261016051818181611322015261165b0152610180518161186301526101a0518161188501526101c051818181610dcd0152610ef301526101e051818181610dfb0152610f210152f35b905061013e565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160401b038216820361022a5756fe60806040526004361015610011575f80fd5b5f3560e01c80631d5bf796146111eb5780633f36e2fe14610b705780636a1a140d14610b045780637795820c14610a945780638acc802d14610a445780639a9b4b2b14610906578063a1af906b14610836578063b401865c14610552578063cb2773db14610523578063fcc6077d146104b3578063fcc853911461029d5763ff78e0ee1461009d575f80fd5b346102995736600319016080811261029957604013610299576044356064356100c4611656565b8061028f575b610280576100df6100da366114fa565b61190c565b5f5260046020526100fa6100f560405f20611522565b611a5d565b60043591825f52600260205260405f20602435805f52600260205260405f209061012b610126846114d2565b611aa1565b610137610126836114d2565b610148610143846114d2565b611a1f565b8061026d575b156101db575061015e84846116b2565b85036101b0579361019561018f61017f61017a61019a986114d2565b611b3e565b6001600160401b03855416611cf0565b83611d22565b6116d8565b6101ae6101a96100da366114fa565b611bc1565b005b608485858560405192633ad7a6d360e11b845260016004850152602484015260448301526064820152fd5b9450906101ea610143826114d2565b158061025b575b1561024c5761020084846116b2565b8503610221579361019561018f61017f61017a61021c986114d2565b61019a565b608485858560405192633ad7a6d360e11b845260026004850152602484015260448301526064820152fd5b634d46ab2360e11b5f5260045ffd5b50610268610143836114d2565b6101f1565b5061027a610143836114d2565b1561014e565b6395ddf15360e01b5f5260045ffd5b50600154156100ca565b5f80fd5b3461029957366003190160c08112610299576040136102995760643560a4356084356044356102ca611656565b806104a9575b610280576102e06100da366114fa565b5f52600460205260405f20936102f86100f586611522565b60016001600160401b03608061030d88611522565b01511611156104645761032a818361032488611522565b51611deb565b602061033586611522565b015182146103fd575081610355846001600160401b039461037e94611deb565b6004850193838554169161036b60018411611591565b6001870180548855556002860155611e41565b166001600160401b03198254161790555b7f29ff393c59c37f91e930fad4d88447efc58cf5d7c048499e1f20edb36994137860406103be6100da366114fa565b926001815491015482519182526020820152a26004355f5260026020526103e760405f20611bf7565b6024355f5260026020526101ae60405f20611bf7565b8391506104428361041a6001966001600160401b03968795611deb565b6004870193838554169161042f888411611591565b600289019081548a55888a015555611e41565b16821982541617815554161b61045d60038301918254611970565b905561038f565b60405162461bcd60e51b815260206004820152601760248201527f6d617463682063616e277420626520616476616e6365640000000000000000006044820152606490fd5b50600154156102d0565b346102995760203660031901126102995760e06104d1600435611637565b6001600160401b0360c060405192805184526020810151602085015260408101516040850152606081015160608501528260808201511660808501528260a08201511660a085015201511660c0820152f35b34610299575f36600319011261029957606061053d6115ac565b90604051921515835260208301526040820152f35b34610299576060366003190112610299576004356001600160a01b0381169081900361029957602435604435610586611656565b8061082c575b61028057825f52600560205260405f20549081156107f157815f5260046020526001600160401b0360806105ce60405f206105c96100f582611522565b611522565b0151166107b457604051635145236f60e01b8152606081600481885afa9081156106f3575f5f915f93610768575b50156107595780156107145761061283866116b2565b908082036106fe575060405191631de5608360e21b83526004830152606082602481895afa9182156106f3575f92610684575b50936101a9929185610674965f52600260205261019561018f60405f209361066f610126866114d2565b611af7565b5f90815260056020526040812055005b8093925060609591953d6060116106ec575b6106a081836114b1565b810103606081126102995760401361029957610674946101a9936106dd6020604051926106cc84611467565b6106d58161157d565b84520161157d565b60208201529293509094610645565b503d610696565b6040513d5f823e3d90fd5b9063d74cbd1f60e01b5f5260045260245260445ffd5b60405162461bcd60e51b815260206004820152601760248201527f74726565206e6f646520646f65736e27742065786973740000000000000000006044820152606490fd5b636f05f46160e11b5f5260045ffd5b925050506060813d6060116107ac575b81610785606093836114b1565b810103126102995780518015158103610299576040602083015192015190919091876105fc565b3d9150610778565b60405162461bcd60e51b81526020600482015260156024820152741b585d18da081a5cc81b9bdd08199a5b9a5cda1959605a1b6044820152606490fd5b60405162461bcd60e51b81526020600482015260136024820152721b585d18da08191bd95cdb89dd08195e1a5cdd606a1b6044820152606490fd5b506001541561058c565b34610299575f3660031901126102995760806040516001600160401b037f00000000000000000000000000000000000000000000000000000000000000001681526001600160401b037f00000000000000000000000000000000000000000000000000000000000000001660208201526001600160401b037f00000000000000000000000000000000000000000000000000000000000000001660408201526001600160401b037f0000000000000000000000000000000000000000000000000000000000000000166060820152f35b346102995760403660031901126102995761091f611656565b80610a3a575b610280576109356100da366114fa565b5f52600460205261094b6100f560405f20611522565b6004355f908152600260205260408082206024358352912090610970610126826114d2565b61097c610126836114d2565b610988610143826114d2565b159182610a0c575b82156109bc575b5050156109ad576101ae6101a96100da366114fa565b633d0b930760e21b5f5260045ffd5b9091506109cb610143826114d2565b1591826109dc575b50508180610997565b6001600160401b03919250610a0061017a6109fa61066f85946114d2565b946114d2565b169116111581806109d3565b9150610a1a61066f836114d2565b6001600160401b0380610a2f61017a856114d2565b169116111591610990565b5060015415610925565b34610299576020366003190112610299576020610a8c610a65600435611637565b7f00000000000000000000000000000000000000000000000000000000000000009061197d565b604051908152f35b346102995760203660031901126102995760606004355f6020604051610ab981611467565b8281520152805f52600260205260405f20905f526003602052610ae060405f2054916114d2565b906001600160401b0360206040519382815116855201511660208301526040820152f35b34610299576040366003190112610299576004355f5260026020526020610b2d60405f206114d2565b6024355f5260028252610b4b610b4560405f206114d2565b91611a1f565b15908115610b5f575b506040519015158152f35b610b699150611a1f565b1582610b54565b3461029957366003190160c08112610299576040136102995760643560443560843560a4356001600160401b03811161029957610bb1903690600401611437565b9190610bbb611656565b806111e1575b61028057610bd16100da366114fa565b5f52600460205260405f209160016001600160401b036080610bf286611522565b0151160361119157610c08868661032486611522565b60043592835f52600260205260405f2096610c5660243598895f526002602052610c50610c4a60405f2092610c3c8161192f565b610c458461192f565b6114d2565b916114d2565b9061194f565b967f0000000000000000000000000000000000000000000000000000000000000000916020610c8485611522565b0151821461111457506004830190610ca860016001600160401b0384541614611591565b6002840155805467ffffffffffffffff19169055610cc582611522565b93600160c086015116155f1461110557604060208601519501515b94965b60038401549182610fd557505050808303610fbe5750610a65610d20915b610d186001600160401b0360048301541615611591565b838155611522565b60016001600160401b037f00000000000000000000000000000000000000000000000000000000000000001601906001600160401b038211610faa575f196001600160401b037f00000000000000000000000000000000000000000000000000000000000000001601966001600160401b038811610faa576001600160401b03602098166001600160401b038416145f14610edb57610df694604051998a988998630c67874d60e11b8a527f00000000000000000000000000000000000000000000000000000000000000009760048b016119cd565b03815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af19081156106f3575f91610e99575b506001600160a01b03165b6001600160a01b0316610e536100da366114fa565b815f52600560205260405f20557f166b786700a644dcec96aa84a92c26ecfee11b50956409c8cc83616042290d796020610e8f6100da366114fa565b92604051908152a2005b90506020813d602011610ed3575b81610eb4602093836114b1565b8101031261029957516001600160a01b03811681036102995781610e33565b3d9150610ea7565b610f1c94604051998a988998631961e5cb60e31b8a527f00000000000000000000000000000000000000000000000000000000000000009760048b016119cd565b03815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af19081156106f3575f91610f68575b506001600160a01b0316610e3e565b90506020813d602011610fa2575b81610f83602093836114b1565b8101031261029957516001600160a01b03811681036102995781610f59565b3d9150610f76565b634e487b7160e01b5f52601160045260245ffd5b905063773af80160e01b5f5260045260245260445ffd5b90919250600484015460801c906001806001600160401b0384169316145f146110fe5787925b5f198501948511610faa579391908694611016818414611591565b5f935b83851061107b5750505050500361103657610a65610d2091610d01565b60405162461bcd60e51b815260206004820152601960248201527f636f6d6d69746d656e74207374617465206d69736d61746368000000000000006044820152606490fd5b90919293956001908183891c16155f146110c95761109a888587611ccc565b3560405190602082019283526040820152604081526110ba6060826114b1565b519020965b0193929190611019565b6110d4888587611ccc565b359060405190602082019283526040820152604081526110f56060826114b1565b519020966110bf565b8a92610ffb565b60206040860151950151610ce0565b9050600483019061113160016001600160401b0384541614611591565b60018401556001600160401b031981541690556003820180549060018201809211610faa575561116082611522565b93600160c086015116155f1461118257602060408601519501515b9496610ce3565b6040602086015195015161117b565b60405162461bcd60e51b815260206004820152602260248201527f6d61746368206973206e6f7420726561647920746f2062652066696e616c697a604482015261195960f21b6064820152608490fd5b5060015415610bc1565b34610299576080366003190112610299576004356024356001600160401b0381116102995761121e903690600401611437565b60643592604435929161122f611656565b6114285761123d85856116b2565b9282916001600160401b037f00000000000000000000000000000000000000000000000000000000000000001690611276818314611591565b5f925b8284106113e85750505050820361139757815f52600360205260405f2055805f52600260205260405f206001600160401b036112b4826114d2565b511661135b577fe53537f202911d376d6e285835b2a2016e83e99fbe84a059d445cc2be4807262936020936113529261134c6113466001600160401b0361131f7f000000000000000000000000000000000000000000000000000000000000000082164283166119ad565b167f0000000000000000000000000000000000000000000000000000000000000000611cf0565b82611d22565b846116d8565b604051908152a1005b60405162461bcd60e51b815260206004820152601460248201527318db1bd8dac81a5cc81a5b9a5d1a585b1a5e995960621b6044820152606490fd5b60405162461bcd60e51b815260206004820152602360248201527f636f6d6d69746d656e74206c61737420737461746520646f65736e2774206d616044820152620e8c6d60eb1b6064820152608490fd5b909192936001906113fa868585611ccc565b3590604051906020820192835260408201526040815261141b6060826114b1565b5190209401929190611279565b63ac57beef60e01b5f5260045ffd5b9181601f84011215610299578235916001600160401b038311610299576020808501948460051b01011161029957565b604081019081106001600160401b0382111761148257604052565b634e487b7160e01b5f52604160045260245ffd5b60e081019081106001600160401b0382111761148257604052565b90601f801991011681019081106001600160401b0382111761148257604052565b906040516114df81611467565b60206001600160401b03829454818116845260401c16910152565b6040906003190112610299576040519061151382611467565b60043582526024356020830152565b9060405161152f81611496565b60c06001600160401b03600483958054855260018101546020860152600281015460408601526003810154606086015201548181166080850152818160401c1660a085015260801c16910152565b51906001600160401b038216820361029957565b1561159857565b634e487b7160e01b5f52600160045260245ffd5b6115b4611656565b806115f7575b156115ef575f905f5491826115e7575b6115d390611591565b5f8281526003602052604090205460019291565b5060016115ca565b5f905f905f90565b50600154156115ba565b6040519061160e82611496565b5f60c0838281528260208201528260408201528260608201528260808201528260a08201520152565b61163f611601565b505f52600460205261165360405f20611522565b90565b6116a07f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611e56565b6001600160401b038042169116111590565b9060405190602082019283526040820152604081526116d26060826114b1565b51902090565b929190916116f0846116ea83856116b2565b14611591565b5f925f549384611904575b156118fc576118ba9161170c611601565b5061172161171a82866116b2565b8714611591565b60405161172d81611467565b8581528660208201526118286001600160401b036040519261174e84611496565b8884528180600460208701968b885260408101988952606081015f81526080820199847f000000000000000000000000000000000000000000000000000000000000000016998a8c526117d060a0850198877f0000000000000000000000000000000000000000000000000000000000000000168a5260c086019c8d5261190c565b5f528460205260405f2093518455516001840155516002830155516003820155019651161682198654161785555116839067ffffffffffffffff60401b82549160401b169067ffffffffffffffff60401b1916179055565b51815467ffffffffffffffff60801b191660809190911b67ffffffffffffffff60801b161790555f848152600260205260409020906118b5907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906118b0838387611da7565b611da7565b611bf7565b5f80556001545f198114610faa577f32911001007d8c9879b608566be8acc2184592f0a43706f804f285455bb0f52e91600160209201600155604051908152a3565b505050505f55565b5060016116fb565b6040516020808201928051845201516040820152604081526116d26060826114b1565b6001600160401b03815460401c166119445750565b61194d90611bf7565b565b6001600160401b03809151169151168082115f1461196b575090565b905090565b91908201809211610faa57565b60606001600160401b0360a08301511691015180821b916001828404911b1490151715610faa5761165391611970565b906001600160401b03809116911603906001600160401b038211610faa57565b9793946001600160401b0395610100989487949c9b98939c6101208c019d8c5260208c015260408b015260608a015260808901521660a087015260c08601521660e084015260018060a01b0316910152565b60208101516001600160401b03169081611a3a575050600190565b6001600160401b03611a57818080945116941682804216166119ad565b16161090565b5115611a6557565b60405162461bcd60e51b81526020600482015260146024820152731b585d18da08191bd95cc81b9bdd08195e1a5cdd60621b6044820152606490fd5b516001600160401b031615611ab257565b60405162461bcd60e51b815260206004820152601860248201527f636c6f636b206973206e6f7420696e697469616c697a656400000000000000006044820152606490fd5b60208101516001600160401b031680611b185750516001600160401b031690565b6001600160401b03611b378180611653955116931682804216166119ad565b1690611cf0565b60208101906001600160401b0382511615611b7c576001600160401b0380611b7281806116539651161682804216166119ad565b1691511690611cf0565b60405162461bcd60e51b815260206004820152601c60248201527f612070617573656420636c6f636b2063616e27742074696d656f7574000000006044820152606490fd5b6001548015610faa575f19016001555f5260046020525f6004604082208281558260018201558260028201558260038201550155565b611c0361066f826114d2565b6001600160401b03811615611c79576001600160401b039081835460401c16155f14611c6257825467ffffffffffffffff60401b191642831660401b67ffffffffffffffff60401b161783555b166001600160401b0319825416179055565b825467ffffffffffffffff60401b19168355611c50565b60405162461bcd60e51b815260206004820152602560248201527f63616e277420616476616e636520636c6f636b2077697468206e6f2074696d65604482015264081b19599d60da1b6064820152608490fd5b9190811015611cdc5760051b0190565b634e487b7160e01b5f52603260045260245ffd5b6001600160401b03918216911681811015611d0c57505f919050565b6001600160401b0391611d1e916119ad565b1690565b906001600160401b03811615611d585781546fffffffffffffffffffffffffffffffff19166001600160401b0391909116179055565b60405162461bcd60e51b815260206004820152602160248201527f63616e27742063726561746520636c6f636b2077697468207a65726f2074696d6044820152606560f81b6064820152608490fd5b9091611dc161194d93611dbc61066f856114d2565b611e56565b6001600160401b0382166001600160401b038216115f14611de3575090611d22565b905090611d22565b91611df5916116b2565b03611dfc57565b60405162461bcd60e51b815260206004820152601e60248201527f6368696c64206e6f64657320646f6e2774206d6174636820706172656e7400006044820152606490fd5b6001600160401b03168015610faa575f190190565b906001600160401b038091169116016001600160401b038111610faa576001600160401b03169056fea2646970667358221220a7e669567734ee90c6028ebc2d51c126263b5be973d69f3a1104c373ce19745964736f6c634300081b0033a26469706673582212204851b4bc75e2213ca8d1e97fa835d315b8fc103d9a5b37ef1737311f5b0b1c3664736f6c634300081b0033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`\x046\x10\x15a\0\x0EW_\x80\xFD[_5`\xE0\x1Cc\x85\xA760\x14a\0!W_\x80\xFD[4a\x01\xB3Wa\x01\x006`\x03\x19\x01\x12a\x01\xB3W`\xA06`#\x19\x01\x12a\x01\xB3W`\xA0\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x01\x9FW`@R`$5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x01\xB3W\x81R`D5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x01\xB3W` \x82\x01\x90\x81R`d5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x01\xB3W`@\x83\x01\x90\x81R`\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x01\xB3W``\x84\x01\x90\x81R`\xA45\x93g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x85\x03a\x01\xB3W`\x80\x81\x01\x94\x85R`\xC45`\x01`\x01`\xA0\x1B\x03\x81\x16\x90\x81\x90\x03a\x01\xB3W`\xE45`\x01`\x01`\xA0\x1B\x03\x81\x16\x92\x90\x83\x90\x03a\x01\xB3W`@Q\x96a!\x0C\x96\x87\x89\x01\x95\x89\x87\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x88\x11\x17a\x01\x9FWg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8A\x98\x81\x80\x96\x94\x81\x80\x96a\x01\0\x9E\x8Ea\x01\xB8\x909`\x045\x8DRQ\x16` \x8C\x01RQ\x16`@\x8A\x01RQ\x16``\x88\x01RQ\x16`\x80\x86\x01RQ\x16`\xA0\x84\x01R`\xC0\x83\x01R`\xE0\x82\x01R\x03\x01\x90_\xF0\x80\x15a\x01\x94W`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[`@Q=_\x82>=\x90\xFD[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[_\x80\xFD\xFEa\x02\0`@R4a\x02*W`@Qa!\x0C8\x81\x90\x03`\x1F\x81\x01`\x1F\x19\x16\x83\x01`\x01`\x01`@\x1B\x03\x81\x11\x84\x82\x10\x17a\x02.W\x83\x92\x82\x91`@R\x839\x81\x01\x03\x90a\x01\0\x82\x12a\x02*W`\xA0\x81Q\x92`\x1F\x19\x01\x12a\x02*W`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17a\x02.W`@Ra\0|` \x83\x01a\x02BV[\x81Ra\0\x8A`@\x83\x01a\x02BV[\x92` \x82\x01\x93\x84Ra\0\x9E``\x84\x01a\x02BV[\x90`@\x83\x01\x91\x82Ra\0\xB2`\x80\x85\x01a\x02BV[\x91``\x84\x01\x92\x83Ra\0\xC6`\xA0\x86\x01a\x02BV[\x95`\x80\x85\x01\x94\x87\x86R`\xC0\x87\x01Q\x96`\x01\x80`\xA0\x1B\x03\x88\x16\x88\x03a\x02*W`\xE0\x01Q\x97`\x01`\x01`\xA0\x1B\x03\x89\x16\x89\x03a\x02*W`\x80\x94\x90\x94R_`\xA0\x81\x90R`\xC0RQ`\x01`\x01`@\x1B\x03\x90\x81\x16`\xE0R\x90Q\x81\x16a\x01\0R\x90Q\x81\x16a\x01 RB\x81\x16a\x01@R\x83Q\x81\x16\x91\x16\x81\x81\x11\x15a\x02#WP[a\x01`RQ`\x01`\x01`@\x1B\x03\x90\x81\x16a\x01\xA0R\x90Q\x16a\x01\x80Ra\x01\xC0Ra\x01\xE0R`@Qa\x1E\xB5\x90\x81a\x02W\x829`\x80Q\x81a\x0CY\x01R`\xA0Q\x81a\ng\x01R`\xC0Q\x81\x81\x81a\x08\x81\x01Ra\r,\x01R`\xE0Q\x81\x81\x81a\x08U\x01Ra\rh\x01Ra\x01\0Q\x81\x81\x81a\x08\xB0\x01Ra\x17\xA2\x01Ra\x01 Q\x81\x81\x81a\x08\xDF\x01R\x81\x81a\x12J\x01Ra\x17s\x01Ra\x01@Q\x81\x81\x81a\x12\xF6\x01Ra\x16|\x01Ra\x01`Q\x81\x81\x81a\x13\"\x01Ra\x16[\x01Ra\x01\x80Q\x81a\x18c\x01Ra\x01\xA0Q\x81a\x18\x85\x01Ra\x01\xC0Q\x81\x81\x81a\r\xCD\x01Ra\x0E\xF3\x01Ra\x01\xE0Q\x81\x81\x81a\r\xFB\x01Ra\x0F!\x01R\xF3[\x90Pa\x01>V[_\x80\xFD[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[Q\x90`\x01`\x01`@\x1B\x03\x82\x16\x82\x03a\x02*WV\xFE`\x80`@R`\x046\x10\x15a\0\x11W_\x80\xFD[_5`\xE0\x1C\x80c\x1D[\xF7\x96\x14a\x11\xEBW\x80c?6\xE2\xFE\x14a\x0BpW\x80cj\x1A\x14\r\x14a\x0B\x04W\x80cw\x95\x82\x0C\x14a\n\x94W\x80c\x8A\xCC\x80-\x14a\nDW\x80c\x9A\x9BK+\x14a\t\x06W\x80c\xA1\xAF\x90k\x14a\x086W\x80c\xB4\x01\x86\\\x14a\x05RW\x80c\xCB's\xDB\x14a\x05#W\x80c\xFC\xC6\x07}\x14a\x04\xB3W\x80c\xFC\xC8S\x91\x14a\x02\x9DWc\xFFx\xE0\xEE\x14a\0\x9DW_\x80\xFD[4a\x02\x99W6`\x03\x19\x01`\x80\x81\x12a\x02\x99W`@\x13a\x02\x99W`D5`d5a\0\xC4a\x16VV[\x80a\x02\x8FW[a\x02\x80Wa\0\xDFa\0\xDA6a\x14\xFAV[a\x19\x0CV[_R`\x04` Ra\0\xFAa\0\xF5`@_ a\x15\"V[a\x1A]V[`\x045\x91\x82_R`\x02` R`@_ `$5\x80_R`\x02` R`@_ \x90a\x01+a\x01&\x84a\x14\xD2V[a\x1A\xA1V[a\x017a\x01&\x83a\x14\xD2V[a\x01Ha\x01C\x84a\x14\xD2V[a\x1A\x1FV[\x80a\x02mW[\x15a\x01\xDBWPa\x01^\x84\x84a\x16\xB2V[\x85\x03a\x01\xB0W\x93a\x01\x95a\x01\x8Fa\x01\x7Fa\x01za\x01\x9A\x98a\x14\xD2V[a\x1B>V[`\x01`\x01`@\x1B\x03\x85T\x16a\x1C\xF0V[\x83a\x1D\"V[a\x16\xD8V[a\x01\xAEa\x01\xA9a\0\xDA6a\x14\xFAV[a\x1B\xC1V[\0[`\x84\x85\x85\x85`@Q\x92c:\xD7\xA6\xD3`\xE1\x1B\x84R`\x01`\x04\x85\x01R`$\x84\x01R`D\x83\x01R`d\x82\x01R\xFD[\x94P\x90a\x01\xEAa\x01C\x82a\x14\xD2V[\x15\x80a\x02[W[\x15a\x02LWa\x02\0\x84\x84a\x16\xB2V[\x85\x03a\x02!W\x93a\x01\x95a\x01\x8Fa\x01\x7Fa\x01za\x02\x1C\x98a\x14\xD2V[a\x01\x9AV[`\x84\x85\x85\x85`@Q\x92c:\xD7\xA6\xD3`\xE1\x1B\x84R`\x02`\x04\x85\x01R`$\x84\x01R`D\x83\x01R`d\x82\x01R\xFD[cMF\xAB#`\xE1\x1B_R`\x04_\xFD[Pa\x02ha\x01C\x83a\x14\xD2V[a\x01\xF1V[Pa\x02za\x01C\x83a\x14\xD2V[\x15a\x01NV[c\x95\xDD\xF1S`\xE0\x1B_R`\x04_\xFD[P`\x01T\x15a\0\xCAV[_\x80\xFD[4a\x02\x99W6`\x03\x19\x01`\xC0\x81\x12a\x02\x99W`@\x13a\x02\x99W`d5`\xA45`\x845`D5a\x02\xCAa\x16VV[\x80a\x04\xA9W[a\x02\x80Wa\x02\xE0a\0\xDA6a\x14\xFAV[_R`\x04` R`@_ \x93a\x02\xF8a\0\xF5\x86a\x15\"V[`\x01`\x01`\x01`@\x1B\x03`\x80a\x03\r\x88a\x15\"V[\x01Q\x16\x11\x15a\x04dWa\x03*\x81\x83a\x03$\x88a\x15\"V[Qa\x1D\xEBV[` a\x035\x86a\x15\"V[\x01Q\x82\x14a\x03\xFDWP\x81a\x03U\x84`\x01`\x01`@\x1B\x03\x94a\x03~\x94a\x1D\xEBV[`\x04\x85\x01\x93\x83\x85T\x16\x91a\x03k`\x01\x84\x11a\x15\x91V[`\x01\x87\x01\x80T\x88UU`\x02\x86\x01Ua\x1EAV[\x16`\x01`\x01`@\x1B\x03\x19\x82T\x16\x17\x90U[\x7F)\xFF9=\x90\xFD[\x90c\xD7L\xBD\x1F`\xE0\x1B_R`\x04R`$R`D_\xFD[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7Ftree node doesn't exist\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[co\x05\xF4a`\xE1\x1B_R`\x04_\xFD[\x92PPP``\x81=``\x11a\x07\xACW[\x81a\x07\x85``\x93\x83a\x14\xB1V[\x81\x01\x03\x12a\x02\x99W\x80Q\x80\x15\x15\x81\x03a\x02\x99W`@` \x83\x01Q\x92\x01Q\x90\x91\x90\x91\x87a\x05\xFCV[=\x91Pa\x07xV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x15`$\x82\x01Rt\x1BX]\x18\xDA\x08\x1A\\\xC8\x1B\x9B\xDD\x08\x19\x9A[\x9A\\\xDA\x19Y`Z\x1B`D\x82\x01R`d\x90\xFD[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x1BX]\x18\xDA\x08\x19\x1B\xD9\\\xDB\x89\xDD\x08\x19^\x1A\\\xDD`j\x1B`D\x82\x01R`d\x90\xFD[P`\x01T\x15a\x05\x8CV[4a\x02\x99W_6`\x03\x19\x01\x12a\x02\x99W`\x80`@Q`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x81R`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16` \x82\x01R`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16`@\x82\x01R`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16``\x82\x01R\xF3[4a\x02\x99W`@6`\x03\x19\x01\x12a\x02\x99Wa\t\x1Fa\x16VV[\x80a\n:W[a\x02\x80Wa\t5a\0\xDA6a\x14\xFAV[_R`\x04` Ra\tKa\0\xF5`@_ a\x15\"V[`\x045_\x90\x81R`\x02` R`@\x80\x82 `$5\x83R\x91 \x90a\tpa\x01&\x82a\x14\xD2V[a\t|a\x01&\x83a\x14\xD2V[a\t\x88a\x01C\x82a\x14\xD2V[\x15\x91\x82a\n\x0CW[\x82\x15a\t\xBCW[PP\x15a\t\xADWa\x01\xAEa\x01\xA9a\0\xDA6a\x14\xFAV[c=\x0B\x93\x07`\xE2\x1B_R`\x04_\xFD[\x90\x91Pa\t\xCBa\x01C\x82a\x14\xD2V[\x15\x91\x82a\t\xDCW[PP\x81\x80a\t\x97V[`\x01`\x01`@\x1B\x03\x91\x92Pa\n\0a\x01za\t\xFAa\x06o\x85\x94a\x14\xD2V[\x94a\x14\xD2V[\x16\x91\x16\x11\x15\x81\x80a\t\xD3V[\x91Pa\n\x1Aa\x06o\x83a\x14\xD2V[`\x01`\x01`@\x1B\x03\x80a\n/a\x01z\x85a\x14\xD2V[\x16\x91\x16\x11\x15\x91a\t\x90V[P`\x01T\x15a\t%V[4a\x02\x99W` 6`\x03\x19\x01\x12a\x02\x99W` a\n\x8Ca\ne`\x045a\x167V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90a\x19}V[`@Q\x90\x81R\xF3[4a\x02\x99W` 6`\x03\x19\x01\x12a\x02\x99W```\x045_` `@Qa\n\xB9\x81a\x14gV[\x82\x81R\x01R\x80_R`\x02` R`@_ \x90_R`\x03` Ra\n\xE0`@_ T\x91a\x14\xD2V[\x90`\x01`\x01`@\x1B\x03` `@Q\x93\x82\x81Q\x16\x85R\x01Q\x16` \x83\x01R`@\x82\x01R\xF3[4a\x02\x99W`@6`\x03\x19\x01\x12a\x02\x99W`\x045_R`\x02` R` a\x0B-`@_ a\x14\xD2V[`$5_R`\x02\x82Ra\x0BKa\x0BE`@_ a\x14\xD2V[\x91a\x1A\x1FV[\x15\x90\x81\x15a\x0B_W[P`@Q\x90\x15\x15\x81R\xF3[a\x0Bi\x91Pa\x1A\x1FV[\x15\x82a\x0BTV[4a\x02\x99W6`\x03\x19\x01`\xC0\x81\x12a\x02\x99W`@\x13a\x02\x99W`d5`D5`\x845`\xA45`\x01`\x01`@\x1B\x03\x81\x11a\x02\x99Wa\x0B\xB1\x906\x90`\x04\x01a\x147V[\x91\x90a\x0B\xBBa\x16VV[\x80a\x11\xE1W[a\x02\x80Wa\x0B\xD1a\0\xDA6a\x14\xFAV[_R`\x04` R`@_ \x91`\x01`\x01`\x01`@\x1B\x03`\x80a\x0B\xF2\x86a\x15\"V[\x01Q\x16\x03a\x11\x91Wa\x0C\x08\x86\x86a\x03$\x86a\x15\"V[`\x045\x92\x83_R`\x02` R`@_ \x96a\x0CV`$5\x98\x89_R`\x02` Ra\x0CPa\x0CJ`@_ \x92a\x0C<\x81a\x19/V[a\x0CE\x84a\x19/V[a\x14\xD2V[\x91a\x14\xD2V[\x90a\x19OV[\x96\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91` a\x0C\x84\x85a\x15\"V[\x01Q\x82\x14a\x11\x14WP`\x04\x83\x01\x90a\x0C\xA8`\x01`\x01`\x01`@\x1B\x03\x84T\x16\x14a\x15\x91V[`\x02\x84\x01U\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90Ua\x0C\xC5\x82a\x15\"V[\x93`\x01`\xC0\x86\x01Q\x16\x15_\x14a\x11\x05W`@` \x86\x01Q\x95\x01Q[\x94\x96[`\x03\x84\x01T\x91\x82a\x0F\xD5WPPP\x80\x83\x03a\x0F\xBEWPa\nea\r \x91[a\r\x18`\x01`\x01`@\x1B\x03`\x04\x83\x01T\x16\x15a\x15\x91V[\x83\x81Ua\x15\"V[`\x01`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x01\x90`\x01`\x01`@\x1B\x03\x82\x11a\x0F\xAAW_\x19`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x01\x96`\x01`\x01`@\x1B\x03\x88\x11a\x0F\xAAW`\x01`\x01`@\x1B\x03` \x98\x16`\x01`\x01`@\x1B\x03\x84\x16\x14_\x14a\x0E\xDBWa\r\xF6\x94`@Q\x99\x8A\x98\x89\x98c\x0Cg\x87M`\xE1\x1B\x8AR\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x97`\x04\x8B\x01a\x19\xCDV[\x03\x81_\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xF1\x90\x81\x15a\x06\xF3W_\x91a\x0E\x99W[P`\x01`\x01`\xA0\x1B\x03\x16[`\x01`\x01`\xA0\x1B\x03\x16a\x0ESa\0\xDA6a\x14\xFAV[\x81_R`\x05` R`@_ U\x7F\x16kxg\0\xA6D\xDC\xEC\x96\xAA\x84\xA9,&\xEC\xFE\xE1\x1BP\x95d\t\xC8\xCC\x83a`B)\ry` a\x0E\x8Fa\0\xDA6a\x14\xFAV[\x92`@Q\x90\x81R\xA2\0[\x90P` \x81=` \x11a\x0E\xD3W[\x81a\x0E\xB4` \x93\x83a\x14\xB1V[\x81\x01\x03\x12a\x02\x99WQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x02\x99W\x81a\x0E3V[=\x91Pa\x0E\xA7V[a\x0F\x1C\x94`@Q\x99\x8A\x98\x89\x98c\x19a\xE5\xCB`\xE3\x1B\x8AR\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x97`\x04\x8B\x01a\x19\xCDV[\x03\x81_\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xF1\x90\x81\x15a\x06\xF3W_\x91a\x0FhW[P`\x01`\x01`\xA0\x1B\x03\x16a\x0E>V[\x90P` \x81=` \x11a\x0F\xA2W[\x81a\x0F\x83` \x93\x83a\x14\xB1V[\x81\x01\x03\x12a\x02\x99WQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x02\x99W\x81a\x0FYV[=\x91Pa\x0FvV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x90Pcw:\xF8\x01`\xE0\x1B_R`\x04R`$R`D_\xFD[\x90\x91\x92P`\x04\x84\x01T`\x80\x1C\x90`\x01\x80`\x01`\x01`@\x1B\x03\x84\x16\x93\x16\x14_\x14a\x10\xFEW\x87\x92[_\x19\x85\x01\x94\x85\x11a\x0F\xAAW\x93\x91\x90\x86\x94a\x10\x16\x81\x84\x14a\x15\x91V[_\x93[\x83\x85\x10a\x10{WPPPPP\x03a\x106Wa\nea\r \x91a\r\x01V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7Fcommitment state mismatch\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[\x90\x91\x92\x93\x95`\x01\x90\x81\x83\x89\x1C\x16\x15_\x14a\x10\xC9Wa\x10\x9A\x88\x85\x87a\x1C\xCCV[5`@Q\x90` \x82\x01\x92\x83R`@\x82\x01R`@\x81Ra\x10\xBA``\x82a\x14\xB1V[Q\x90 \x96[\x01\x93\x92\x91\x90a\x10\x19V[a\x10\xD4\x88\x85\x87a\x1C\xCCV[5\x90`@Q\x90` \x82\x01\x92\x83R`@\x82\x01R`@\x81Ra\x10\xF5``\x82a\x14\xB1V[Q\x90 \x96a\x10\xBFV[\x8A\x92a\x0F\xFBV[` `@\x86\x01Q\x95\x01Qa\x0C\xE0V[\x90P`\x04\x83\x01\x90a\x111`\x01`\x01`\x01`@\x1B\x03\x84T\x16\x14a\x15\x91V[`\x01\x84\x01U`\x01`\x01`@\x1B\x03\x19\x81T\x16\x90U`\x03\x82\x01\x80T\x90`\x01\x82\x01\x80\x92\x11a\x0F\xAAWUa\x11`\x82a\x15\"V[\x93`\x01`\xC0\x86\x01Q\x16\x15_\x14a\x11\x82W` `@\x86\x01Q\x95\x01Q[\x94\x96a\x0C\xE3V[`@` \x86\x01Q\x95\x01Qa\x11{V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7Fmatch is not ready to be finaliz`D\x82\x01Ra\x19Y`\xF2\x1B`d\x82\x01R`\x84\x90\xFD[P`\x01T\x15a\x0B\xC1V[4a\x02\x99W`\x806`\x03\x19\x01\x12a\x02\x99W`\x045`$5`\x01`\x01`@\x1B\x03\x81\x11a\x02\x99Wa\x12\x1E\x906\x90`\x04\x01a\x147V[`d5\x92`D5\x92\x91a\x12/a\x16VV[a\x14(Wa\x12=\x85\x85a\x16\xB2V[\x92\x82\x91`\x01`\x01`@\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90a\x12v\x81\x83\x14a\x15\x91V[_\x92[\x82\x84\x10a\x13\xE8WPPPP\x82\x03a\x13\x97W\x81_R`\x03` R`@_ U\x80_R`\x02` R`@_ `\x01`\x01`@\x1B\x03a\x12\xB4\x82a\x14\xD2V[Q\x16a\x13[W\x7F\xE557\xF2\x02\x91\x1D7mn(X5\xB2\xA2\x01n\x83\xE9\x9F\xBE\x84\xA0Y\xD4E\xCC+\xE4\x80rb\x93` \x93a\x13R\x92a\x13La\x13F`\x01`\x01`@\x1B\x03a\x13\x1F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16B\x83\x16a\x19\xADV[\x16\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x1C\xF0V[\x82a\x1D\"V[\x84a\x16\xD8V[`@Q\x90\x81R\xA1\0[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rs\x18\xDB\x1B\xD8\xDA\xC8\x1A\\\xC8\x1A[\x9A]\x1AX[\x1A^\x99Y`b\x1B`D\x82\x01R`d\x90\xFD[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`#`$\x82\x01R\x7Fcommitment last state doesn't ma`D\x82\x01Rb\x0E\x8Cm`\xEB\x1B`d\x82\x01R`\x84\x90\xFD[\x90\x91\x92\x93`\x01\x90a\x13\xFA\x86\x85\x85a\x1C\xCCV[5\x90`@Q\x90` \x82\x01\x92\x83R`@\x82\x01R`@\x81Ra\x14\x1B``\x82a\x14\xB1V[Q\x90 \x94\x01\x92\x91\x90a\x12yV[c\xACW\xBE\xEF`\xE0\x1B_R`\x04_\xFD[\x91\x81`\x1F\x84\x01\x12\x15a\x02\x99W\x825\x91`\x01`\x01`@\x1B\x03\x83\x11a\x02\x99W` \x80\x85\x01\x94\x84`\x05\x1B\x01\x01\x11a\x02\x99WV[`@\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17a\x14\x82W`@RV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`\xE0\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17a\x14\x82W`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17a\x14\x82W`@RV[\x90`@Qa\x14\xDF\x81a\x14gV[` `\x01`\x01`@\x1B\x03\x82\x94T\x81\x81\x16\x84R`@\x1C\x16\x91\x01RV[`@\x90`\x03\x19\x01\x12a\x02\x99W`@Q\x90a\x15\x13\x82a\x14gV[`\x045\x82R`$5` \x83\x01RV[\x90`@Qa\x15/\x81a\x14\x96V[`\xC0`\x01`\x01`@\x1B\x03`\x04\x83\x95\x80T\x85R`\x01\x81\x01T` \x86\x01R`\x02\x81\x01T`@\x86\x01R`\x03\x81\x01T``\x86\x01R\x01T\x81\x81\x16`\x80\x85\x01R\x81\x81`@\x1C\x16`\xA0\x85\x01R`\x80\x1C\x16\x91\x01RV[Q\x90`\x01`\x01`@\x1B\x03\x82\x16\x82\x03a\x02\x99WV[\x15a\x15\x98WV[cNH{q`\xE0\x1B_R`\x01`\x04R`$_\xFD[a\x15\xB4a\x16VV[\x80a\x15\xF7W[\x15a\x15\xEFW_\x90_T\x91\x82a\x15\xE7W[a\x15\xD3\x90a\x15\x91V[_\x82\x81R`\x03` R`@\x90 T`\x01\x92\x91V[P`\x01a\x15\xCAV[_\x90_\x90_\x90V[P`\x01T\x15a\x15\xBAV[`@Q\x90a\x16\x0E\x82a\x14\x96V[_`\xC0\x83\x82\x81R\x82` \x82\x01R\x82`@\x82\x01R\x82``\x82\x01R\x82`\x80\x82\x01R\x82`\xA0\x82\x01R\x01RV[a\x16?a\x16\x01V[P_R`\x04` Ra\x16S`@_ a\x15\"V[\x90V[a\x16\xA0\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x1EVV[`\x01`\x01`@\x1B\x03\x80B\x16\x91\x16\x11\x15\x90V[\x90`@Q\x90` \x82\x01\x92\x83R`@\x82\x01R`@\x81Ra\x16\xD2``\x82a\x14\xB1V[Q\x90 \x90V[\x92\x91\x90\x91a\x16\xF0\x84a\x16\xEA\x83\x85a\x16\xB2V[\x14a\x15\x91V[_\x92_T\x93\x84a\x19\x04W[\x15a\x18\xFCWa\x18\xBA\x91a\x17\x0Ca\x16\x01V[Pa\x17!a\x17\x1A\x82\x86a\x16\xB2V[\x87\x14a\x15\x91V[`@Qa\x17-\x81a\x14gV[\x85\x81R\x86` \x82\x01Ra\x18(`\x01`\x01`@\x1B\x03`@Q\x92a\x17N\x84a\x14\x96V[\x88\x84R\x81\x80`\x04` \x87\x01\x96\x8B\x88R`@\x81\x01\x98\x89R``\x81\x01_\x81R`\x80\x82\x01\x99\x84\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x99\x8A\x8CRa\x17\xD0`\xA0\x85\x01\x98\x87\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x8AR`\xC0\x86\x01\x9C\x8DRa\x19\x0CV[_R\x84` R`@_ \x93Q\x84UQ`\x01\x84\x01UQ`\x02\x83\x01UQ`\x03\x82\x01U\x01\x96Q\x16\x16\x82\x19\x86T\x16\x17\x85UQ\x16\x83\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@\x1B\x82T\x91`@\x1B\x16\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@\x1B\x19\x16\x17\x90UV[Q\x81Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x16`\x80\x91\x90\x91\x1Bg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x16\x17\x90U_\x84\x81R`\x02` R`@\x90 \x90a\x18\xB5\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90a\x18\xB0\x83\x83\x87a\x1D\xA7V[a\x1D\xA7V[a\x1B\xF7V[_\x80U`\x01T_\x19\x81\x14a\x0F\xAAW\x7F2\x91\x10\x01\0}\x8C\x98y\xB6\x08Vk\xE8\xAC\xC2\x18E\x92\xF0\xA47\x06\xF8\x04\xF2\x85E[\xB0\xF5.\x91`\x01` \x92\x01`\x01U`@Q\x90\x81R\xA3V[PPPP_UV[P`\x01a\x16\xFBV[`@Q` \x80\x82\x01\x92\x80Q\x84R\x01Q`@\x82\x01R`@\x81Ra\x16\xD2``\x82a\x14\xB1V[`\x01`\x01`@\x1B\x03\x81T`@\x1C\x16a\x19DWPV[a\x19M\x90a\x1B\xF7V[V[`\x01`\x01`@\x1B\x03\x80\x91Q\x16\x91Q\x16\x80\x82\x11_\x14a\x19kWP\x90V[\x90P\x90V[\x91\x90\x82\x01\x80\x92\x11a\x0F\xAAWV[```\x01`\x01`@\x1B\x03`\xA0\x83\x01Q\x16\x91\x01Q\x80\x82\x1B\x91`\x01\x82\x84\x04\x91\x1B\x14\x90\x15\x17\x15a\x0F\xAAWa\x16S\x91a\x19pV[\x90`\x01`\x01`@\x1B\x03\x80\x91\x16\x91\x16\x03\x90`\x01`\x01`@\x1B\x03\x82\x11a\x0F\xAAWV[\x97\x93\x94`\x01`\x01`@\x1B\x03\x95a\x01\0\x98\x94\x87\x94\x9C\x9B\x98\x93\x9Ca\x01 \x8C\x01\x9D\x8CR` \x8C\x01R`@\x8B\x01R``\x8A\x01R`\x80\x89\x01R\x16`\xA0\x87\x01R`\xC0\x86\x01R\x16`\xE0\x84\x01R`\x01\x80`\xA0\x1B\x03\x16\x91\x01RV[` \x81\x01Q`\x01`\x01`@\x1B\x03\x16\x90\x81a\x1A:WPP`\x01\x90V[`\x01`\x01`@\x1B\x03a\x1AW\x81\x80\x80\x94Q\x16\x94\x16\x82\x80B\x16\x16a\x19\xADV[\x16\x16\x10\x90V[Q\x15a\x1AeWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rs\x1BX]\x18\xDA\x08\x19\x1B\xD9\\\xC8\x1B\x9B\xDD\x08\x19^\x1A\\\xDD`b\x1B`D\x82\x01R`d\x90\xFD[Q`\x01`\x01`@\x1B\x03\x16\x15a\x1A\xB2WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7Fclock is not initialized\0\0\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[` \x81\x01Q`\x01`\x01`@\x1B\x03\x16\x80a\x1B\x18WPQ`\x01`\x01`@\x1B\x03\x16\x90V[`\x01`\x01`@\x1B\x03a\x1B7\x81\x80a\x16S\x95Q\x16\x93\x16\x82\x80B\x16\x16a\x19\xADV[\x16\x90a\x1C\xF0V[` \x81\x01\x90`\x01`\x01`@\x1B\x03\x82Q\x16\x15a\x1B|W`\x01`\x01`@\x1B\x03\x80a\x1Br\x81\x80a\x16S\x96Q\x16\x16\x82\x80B\x16\x16a\x19\xADV[\x16\x91Q\x16\x90a\x1C\xF0V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1C`$\x82\x01R\x7Fa paused clock can't timeout\0\0\0\0`D\x82\x01R`d\x90\xFD[`\x01T\x80\x15a\x0F\xAAW_\x19\x01`\x01U_R`\x04` R_`\x04`@\x82 \x82\x81U\x82`\x01\x82\x01U\x82`\x02\x82\x01U\x82`\x03\x82\x01U\x01UV[a\x1C\x03a\x06o\x82a\x14\xD2V[`\x01`\x01`@\x1B\x03\x81\x16\x15a\x1CyW`\x01`\x01`@\x1B\x03\x90\x81\x83T`@\x1C\x16\x15_\x14a\x1CbW\x82Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@\x1B\x19\x16B\x83\x16`@\x1Bg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@\x1B\x16\x17\x83U[\x16`\x01`\x01`@\x1B\x03\x19\x82T\x16\x17\x90UV[\x82Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@\x1B\x19\x16\x83Ua\x1CPV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7Fcan't advance clock with no time`D\x82\x01Rd\x08\x1B\x19Y\x9D`\xDA\x1B`d\x82\x01R`\x84\x90\xFD[\x91\x90\x81\x10\x15a\x1C\xDCW`\x05\x1B\x01\x90V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x81\x81\x10\x15a\x1D\x0CWP_\x91\x90PV[`\x01`\x01`@\x1B\x03\x91a\x1D\x1E\x91a\x19\xADV[\x16\x90V[\x90`\x01`\x01`@\x1B\x03\x81\x16\x15a\x1DXW\x81To\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x91\x90\x91\x16\x17\x90UV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7Fcan't create clock with zero tim`D\x82\x01R`e`\xF8\x1B`d\x82\x01R`\x84\x90\xFD[\x90\x91a\x1D\xC1a\x19M\x93a\x1D\xBCa\x06o\x85a\x14\xD2V[a\x1EVV[`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x82\x16\x11_\x14a\x1D\xE3WP\x90a\x1D\"V[\x90P\x90a\x1D\"V[\x91a\x1D\xF5\x91a\x16\xB2V[\x03a\x1D\xFCWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1E`$\x82\x01R\x7Fchild nodes don't match parent\0\0`D\x82\x01R`d\x90\xFD[`\x01`\x01`@\x1B\x03\x16\x80\x15a\x0F\xAAW_\x19\x01\x90V[\x90`\x01`\x01`@\x1B\x03\x80\x91\x16\x91\x16\x01`\x01`\x01`@\x1B\x03\x81\x11a\x0F\xAAW`\x01`\x01`@\x1B\x03\x16\x90V\xFE\xA2dipfsX\"\x12 \xA7\xE6iVw4\xEE\x90\xC6\x02\x8E\xBC-Q\xC1&&;[\xE9s\xD6\x9F:\x11\x04\xC3s\xCE\x19tYdsolcC\0\x08\x1B\x003\xA2dipfsX\"\x12 HQ\xB4\xBCu\xE2!<\xA8\xD1\xE9\x7F\xA85\xD3\x15\xB8\xFC\x10=\x9A[7\xEF\x1771\x1F[\x0B\x1C6dsolcC\0\x08\x1B\x003", + ); + /**```solidity +struct TournamentParameters { uint64 levels; uint64 log2step; uint64 height; Time.Duration matchEffort; Time.Duration maxAllowance; } +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct TournamentParameters { + pub levels: u64, + pub log2step: u64, + pub height: u64, + pub matchEffort: ::RustType, + pub maxAllowance: ::RustType, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, + Time::Duration, + Time::Duration, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + u64, + u64, + u64, + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: TournamentParameters) -> Self { + ( + value.levels, + value.log2step, + value.height, + value.matchEffort, + value.maxAllowance, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for TournamentParameters { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + levels: tuple.0, + log2step: tuple.1, + height: tuple.2, + matchEffort: tuple.3, + maxAllowance: tuple.4, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for TournamentParameters { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for TournamentParameters { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.levels), + as alloy_sol_types::SolType>::tokenize(&self.log2step), + as alloy_sol_types::SolType>::tokenize(&self.height), + ::tokenize( + &self.matchEffort, + ), + ::tokenize( + &self.maxAllowance, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for TournamentParameters { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for TournamentParameters { + const NAME: &'static str = "TournamentParameters"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "TournamentParameters(uint64 levels,uint64 log2step,uint64 height,uint64 matchEffort,uint64 maxAllowance)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word(&self.levels) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.log2step) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.height) + .0, + ::eip712_data_word( + &self.matchEffort, + ) + .0, + ::eip712_data_word( + &self.maxAllowance, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for TournamentParameters { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.levels, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.log2step, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.height, + ) + + ::topic_preimage_length( + &rust.matchEffort, + ) + + ::topic_preimage_length( + &rust.maxAllowance, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.levels, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.log2step, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.height, + out, + ); + ::encode_topic_preimage( + &rust.matchEffort, + out, + ); + ::encode_topic_preimage( + &rust.maxAllowance, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Constructor`. +```solidity +constructor(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct constructorCall {} + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Function with signature `instantiate(bytes32,(uint64,uint64,uint64,uint64,uint64),address,address)` and selector `0x85a73630`. +```solidity +function instantiate(Machine.Hash _initialHash, TournamentParameters memory _tournamentParameters, address _provider, address _tournamentFactory) external returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct instantiateCall { + pub _initialHash: ::RustType, + pub _tournamentParameters: ::RustType, + pub _provider: alloy::sol_types::private::Address, + pub _tournamentFactory: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`instantiate(bytes32,(uint64,uint64,uint64,uint64,uint64),address,address)`](instantiateCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct instantiateReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + Machine::Hash, + TournamentParameters, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: instantiateCall) -> Self { + ( + value._initialHash, + value._tournamentParameters, + value._provider, + value._tournamentFactory, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for instantiateCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _initialHash: tuple.0, + _tournamentParameters: tuple.1, + _provider: tuple.2, + _tournamentFactory: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: instantiateReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for instantiateReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for instantiateCall { + type Parameters<'a> = ( + Machine::Hash, + TournamentParameters, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = instantiateReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "instantiate(bytes32,(uint64,uint64,uint64,uint64,uint64),address,address)"; + const SELECTOR: [u8; 4] = [133u8, 167u8, 54u8, 48u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._initialHash, + ), + ::tokenize( + &self._tournamentParameters, + ), + ::tokenize( + &self._provider, + ), + ::tokenize( + &self._tournamentFactory, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`TopTournamentFactory`](self) function calls. + pub enum TopTournamentFactoryCalls { + instantiate(instantiateCall), + } + #[automatically_derived] + impl TopTournamentFactoryCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[133u8, 167u8, 54u8, 48u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for TopTournamentFactoryCalls { + const NAME: &'static str = "TopTournamentFactoryCalls"; + const MIN_DATA_LENGTH: usize = 256usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::instantiate(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn instantiate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(TopTournamentFactoryCalls::instantiate) + } + instantiate + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + DECODE_SHIMS[idx](data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::instantiate(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::instantiate(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`TopTournamentFactory`](self) contract instance. + +See the [wrapper's documentation](`TopTournamentFactoryInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> TopTournamentFactoryInstance { + TopTournamentFactoryInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + TopTournamentFactoryInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + TopTournamentFactoryInstance::::deploy_builder(provider) + } + /**A [`TopTournamentFactory`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`TopTournamentFactory`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct TopTournamentFactoryInstance< + T, + P, + N = alloy_contract::private::Ethereum, + > { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for TopTournamentFactoryInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("TopTournamentFactoryInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TopTournamentFactoryInstance { + /**Creates a new wrapper around an on-chain [`TopTournamentFactory`](self) contract instance. + +See the [wrapper's documentation](`TopTournamentFactoryInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl TopTournamentFactoryInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> TopTournamentFactoryInstance { + TopTournamentFactoryInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TopTournamentFactoryInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`instantiate`] function. + pub fn instantiate( + &self, + _initialHash: ::RustType, + _tournamentParameters: ::RustType, + _provider: alloy::sol_types::private::Address, + _tournamentFactory: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &instantiateCall { + _initialHash, + _tournamentParameters, + _provider, + _tournamentFactory, + }, + ) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > TopTournamentFactoryInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +}