diff --git a/Cargo.lock b/Cargo.lock index 1506f2324..fea80a931 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3698,17 +3698,11 @@ version = "0.5.0" dependencies = [ "alloy", "eigen-aggregator", - "eigen-client-avsregistry", - "eigen-common", "eigen-crypto-bls", - "eigen-logging", - "eigen-testing-utils", - "eigen-types", + "eigen-task-processor", + "eigen-utils", "serde", - "serde_json", - "tarpc", "tokio", - "tracing", ] [[package]] diff --git a/examples/aggregator/Cargo.toml b/examples/aggregator/Cargo.toml index ee2060af6..185443b21 100644 --- a/examples/aggregator/Cargo.toml +++ b/examples/aggregator/Cargo.toml @@ -10,16 +10,9 @@ description = "aggregator example" [dependencies] alloy.workspace = true -eigen-client-avsregistry.workspace = true -eigen-crypto-bls.workspace = true -eigen-logging.workspace = true -eigen-testing-utils.workspace = true -eigen-types.workspace = true -eigen-common.workspace = true -tokio = { workspace = true, features = ["macros", "rt-multi-thread"] } eigen-aggregator.workspace = true +eigen-crypto-bls.workspace = true +eigen-task-processor.workspace = true +eigen-utils.workspace = true serde.workspace = true -tracing.workspace = true -serde_json.workspace = true - -tarpc = { version = "0.36", features = ["full"] } +tokio.workspace = true diff --git a/examples/aggregator/examples/aggregator.rs b/examples/aggregator/examples/aggregator.rs deleted file mode 100644 index 9d3eabf06..000000000 --- a/examples/aggregator/examples/aggregator.rs +++ /dev/null @@ -1,337 +0,0 @@ -//! This is a simple example of how to use the aggregator. -//! -//! 1. Create a contract that emits an event when a task is created. -//! 2. To use the aggregator, you should implement the [`TaskProcessor`] and -//! [`TaskResponse`] traits and create your own logic for processing the task. -//! 3. Deploy the task contract -//! 4. Create an operator set with a total delegated stake quorum -//! 5. Register operators to the operator set -//! 6. Start the aggregator -//! 7. Emit a task with the contract -//! 8. Send an RPC request to the aggregator with the task response and signature of both operators -//! 9. Since the threshold is reached, the BLS aggregation service will send the aggregated response -//! to the aggregator - -use std::time::Duration; - -use alloy::primitives::{FixedBytes, B256}; -use alloy::sol; -use eigen_aggregator::{ - config::AggregatorConfig, - rpc_server::ProcessSignedTaskResponseClient, - traits::{ - task_processor::{box_error, TaskProcessor, TaskProcessorError}, - task_response::TaskResponse, - }, - Aggregator, SignedTaskResponse, -}; -use eigen_aggregator::{BlsAggregationServiceResponse, TaskMetadata}; -use eigen_client_avsregistry::reader::AvsRegistryChainReader; -use eigen_common::get_signer; -use eigen_crypto_bls::{BlsG1Point, BlsG2Point, BlsKeyPair, Signature}; -use eigen_logging::get_test_logger; -use eigen_logging::{init_logger, log_level::LogLevel}; -use eigen_testing_utils::anvil::start_anvil_container; -use eigen_testing_utils::anvil_constants::{ - get_erc20_mock_strategy, get_operator_state_retriever_address, - get_registry_coordinator_address, get_service_manager_address, FIRST_ADDRESS, - FIRST_PRIVATE_KEY, OPERATOR_BLS_KEY, OPERATOR_BLS_KEY_2, SECOND_ADDRESS, SECOND_PRIVATE_KEY, -}; -use eigen_testing_utils::chain_clients::{ - create_total_delegated_stake_operator_set, new_test_writer, -}; -pub use eigen_types::operator::Operator; -use serde::{Deserialize, Serialize}; -use tarpc::tokio_serde::formats::Json; -use tokio::sync::mpsc; -use tracing::{error, info}; - -// 1. Fake contract to emit event -sol! { - #[allow(missing_docs)] - #[derive(Debug)] - // IF WE MODIFY THE CONTRACT, WE NEED TO UPDATE THE BYTECODE - `solc --bin <CONTRACT_NAME>.sol` - #[sol(rpc, bytecode = "6080604052348015600e575f5ffd5b506101868061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c80635867173014610038578063a747649314610056575b5f5ffd5b610040610060565b60405161004d91906100c3565b60405180910390f35b61005e610065565b005b5f5481565b5f5f81548092919061007690610109565b91905055505f547f0308e35d068a731dcf227a01af50313408b863f815670a72362dfa93fdd0686d60405160405180910390a2565b5f819050919050565b6100bd816100ab565b82525050565b5f6020820190506100d65f8301846100b4565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610113826100ab565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610145576101446100dc565b5b60018201905091905056fea264697066735822122066967740649d975b00c00d92c8ad08ecca35b10d89341e538ea5d4e4c3d0852b64736f6c634300081d0033")] - contract TaskContract { - uint256 public taskCounter; - - event NewTask(uint256 indexed taskIndex); - - function createTask() external { - taskCounter++; - emit NewTask(taskCounter); - } - } -} - -// 2. Implement the `TaskResponse` trait -#[derive(Debug, Clone, Serialize, Deserialize)] -struct FakeResponse { - response: String, -} - -impl FakeResponse { - pub fn new(response: String) -> Self { - Self { response } - } -} - -impl TaskResponse for FakeResponse { - fn digest(&self) -> B256 { - B256::new([0x01; 32]) - } - - fn task_index(&self) -> u32 { - 1 - } -} - -// 2. Implement the `TaskProcessor` trait -#[derive(Debug, Clone)] -struct MockTaskProcessor { - aggregated_response: mpsc::Sender<BlsAggregationServiceResponse>, -} - -impl MockTaskProcessor { - fn new(sender: mpsc::Sender<BlsAggregationServiceResponse>) -> Self { - Self { - aggregated_response: sender, - } - } -} -impl TaskProcessor for MockTaskProcessor { - type NewTaskEvent = TaskContract::NewTask; - type TaskResponse = FakeResponse; - - async fn process_new_task( - &mut self, - event: Self::NewTaskEvent, - ) -> Result<TaskMetadata, TaskProcessorError> { - Ok(TaskMetadata::new( - event.taskIndex.to::<u32>(), - 12345, - vec![0], - vec![50], - std::time::Duration::from_secs(60), - ) - .with_window_duration(Duration::from_secs(15))) - } - - async fn process_task_response( - &mut self, - response: Self::TaskResponse, - ) -> Result<B256, TaskProcessorError> { - if response.response.is_empty() { - return Err(box_error(std::io::Error::new( - std::io::ErrorKind::InvalidInput, - "Empty result", - ))); - } - Ok(response.digest()) - } - - async fn process_aggregated_response( - &self, - response: BlsAggregationServiceResponse, - ) -> Result<(), TaskProcessorError> { - info!( - "Aggregated response received for task {}: {:?}", - response.task_index, response.task_response_digest - ); - - self.aggregated_response.send(response).await.map_err(|e| { - box_error(std::io::Error::new( - std::io::ErrorKind::Other, - format!("Failed to send response: {}", e), - )) - }) - } -} - -const AGGREGATOR_IP_PORT_ADDRESS: &str = "127.0.0.1:8081"; - -#[tokio::main] -async fn main() { - init_logger(LogLevel::Info); - let (_container, http_rpc, ws_rpc) = start_anvil_container().await; - - let el_chain_writer = new_test_writer(http_rpc.clone(), FIRST_PRIVATE_KEY.to_string()).await; - let el_chain_writer_2 = new_test_writer(http_rpc.clone(), SECOND_PRIVATE_KEY.to_string()).await; - let avs_registry = AvsRegistryChainReader::new( - get_test_logger(), - get_registry_coordinator_address(http_rpc.clone()).await, - get_operator_state_retriever_address(http_rpc.clone()).await, - http_rpc.clone(), - ) - .await - .unwrap(); - - // 3. Deploy the task contract - let provider = get_signer(FIRST_PRIVATE_KEY, &http_rpc); - let task_contract = TaskContract::deploy(&provider).await.unwrap(); - let avs_address = get_service_manager_address(http_rpc.clone()).await; - - // 4. Create quorums and operator sets - create_total_delegated_stake_operator_set( - &http_rpc, - get_erc20_mock_strategy(http_rpc.clone()).await, - avs_address, - ) - .await; - info!("Operator set created"); - - // 5. Register operator to operator set - let bls_key_pair = BlsKeyPair::new(OPERATOR_BLS_KEY.to_string()).unwrap(); - el_chain_writer - .register_for_operator_sets(FIRST_ADDRESS, avs_address, vec![0], bls_key_pair, "socket") - .await - .unwrap(); - info!("First operator registered to operator set"); - - // 5. Register second operator to operator set - let bls_key_pair_2 = BlsKeyPair::new(OPERATOR_BLS_KEY_2.to_string()).unwrap(); - el_chain_writer_2 - .register_for_operator_sets( - SECOND_ADDRESS, - avs_address, - vec![0], - bls_key_pair_2, - "socket", - ) - .await - .unwrap(); - info!("Second operator registered to operator set"); - - let operator_id = avs_registry.get_operator_id(FIRST_ADDRESS).await.unwrap(); - let operator_id_2 = avs_registry.get_operator_id(SECOND_ADDRESS).await.unwrap(); - - // 6. Set up the aggregator config and initialize the processor - let registry_coordinator = get_registry_coordinator_address(http_rpc.clone()).await; - let operator_state_retriever = get_operator_state_retriever_address(http_rpc.clone()).await; - let config = AggregatorConfig { - server_address: AGGREGATOR_IP_PORT_ADDRESS.to_string(), - registry_coordinator, - operator_state_retriever, - http_rpc_url: http_rpc.clone(), - ws_rpc_url: ws_rpc.clone(), - }; - - let (sender, mut receiver) = mpsc::channel(1); - let processor = MockTaskProcessor::new(sender); - let aggregator = Aggregator::new(config, processor).await.unwrap(); - - // 6. Start the aggregator in the background - let aggregator_handle = tokio::spawn(aggregator.start()); - - // Wait for the aggregator to initialize - tokio::time::sleep(std::time::Duration::from_secs(5)).await; - - // 7. Emit a new task event - let result = task_contract - .createTask() - .send() - .await - .unwrap() - .get_receipt() - .await - .unwrap(); - info!("Task created: {:?}", result.transaction_hash); - - tokio::time::sleep(std::time::Duration::from_secs(10)).await; - // Send fake response from operator - info!("Simulating operator response"); - - // 8. Send fake response from the first operator - let fake_response = FakeResponse::new("Hello world".to_string()); - let bls_key_pair = BlsKeyPair::new(OPERATOR_BLS_KEY.to_string()).unwrap(); - let bls_signature = bls_key_pair.sign_message(fake_response.digest().as_ref()); - send_signed_task_response(fake_response, bls_signature.clone(), operator_id).await; - info!("Response from first operator sent"); - - tokio::time::sleep(std::time::Duration::from_secs(5)).await; - - info!("Threshold reached but there is a window to send another response"); - - // 8. Send fake response from second operator - let fake_response_2 = FakeResponse::new("Hello world".to_string()); - let bls_key_pair_2 = BlsKeyPair::new(OPERATOR_BLS_KEY_2.to_string()).unwrap(); - let bls_signature_2 = bls_key_pair_2.sign_message(fake_response_2.digest().as_ref()); - send_signed_task_response(fake_response_2, bls_signature_2.clone(), operator_id_2).await; - info!("Response from second operator sent"); - - // Aggregate the bls signatures manually - let quorum_apks_g1 = aggregate_g1_public_keys(&[bls_key_pair.clone(), bls_key_pair_2.clone()]); - let signers_apk_g2 = aggregate_g2_public_keys(&[bls_key_pair.clone(), bls_key_pair_2.clone()]); - let signers_agg_sig_g1 = - aggregate_g1_signatures(&[bls_signature.clone(), bls_signature_2.clone()]); - - // Wait for the aggregator to aggregate the responses and then compare the results - let aggregated_response = receiver.recv().await.unwrap(); - assert_eq!(aggregated_response.quorum_apks_g1, vec![quorum_apks_g1]); - assert_eq!(aggregated_response.signers_apk_g2, signers_apk_g2); - assert_eq!(aggregated_response.signers_agg_sig_g1, signers_agg_sig_g1); - info!("Compared aggregated response with manual aggregation and they are equal"); - - // Close the aggregator - aggregator_handle.abort(); - if aggregator_handle.await.is_err() { - info!("Aggregator finished"); - return; - } -} - -async fn send_signed_task_response( - task_response: FakeResponse, - signature: Signature, - operator_id: FixedBytes<32>, -) { - let transport = tarpc::serde_transport::tcp::connect(AGGREGATOR_IP_PORT_ADDRESS, Json::default) - .await - .unwrap(); - let client = - ProcessSignedTaskResponseClient::new(tarpc::client::Config::default(), transport).spawn(); - - let ctx = tarpc::context::current(); - - let signed_task_response = SignedTaskResponse::new(task_response, signature, operator_id); - let signed_task_string = serde_json::to_string(&signed_task_response).unwrap(); - - let response = client - .process_signed_task_response(ctx, signed_task_string) - .await - .unwrap() - .unwrap(); - - if !response { - error!("Failed to send signed task response for task"); - } -} - -// Aggregate the g1 public keys -fn aggregate_g1_public_keys(bls_key_pairs: &[BlsKeyPair]) -> BlsG1Point { - bls_key_pairs - .iter() - .map(|bls| bls.public_key().g1()) - .reduce(|a, b| (a + b).into()) - .map(BlsG1Point::new) - .unwrap() -} - -// Aggregate the g2 public keys -fn aggregate_g2_public_keys(bls_key_pairs: &[BlsKeyPair]) -> BlsG2Point { - bls_key_pairs - .iter() - .map(|bls| bls.public_key_g2().g2()) - .reduce(|a, b| (a + b).into()) - .map(BlsG2Point::new) - .unwrap() -} - -fn aggregate_g1_signatures(signatures: &[Signature]) -> Signature { - let agg = signatures - .iter() - .map(|s| s.g1_point().g1()) - .reduce(|a, b| (a + b).into()) - .unwrap(); - Signature::new(agg) -} diff --git a/examples/aggregator/src/bindings/iincrediblesquaringtaskmanager.rs b/examples/aggregator/src/bindings/iincrediblesquaringtaskmanager.rs new file mode 100644 index 000000000..8a4814ebc --- /dev/null +++ b/examples/aggregator/src/bindings/iincrediblesquaringtaskmanager.rs @@ -0,0 +1,14686 @@ +///Module containing a contract's types and functions. +/** + +```solidity +library BN254 { + struct G1Point { uint256 X; uint256 Y; } + struct G2Point { uint256[2] X; uint256[2] Y; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod BN254 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct G1Point { uint256 X; uint256 Y; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone, Debug)] + pub struct G1Point { + #[allow(missing_docs)] + pub X: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub Y: 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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> { + fn from(value: G1Point) -> Self { + (value.X, value.Y) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + X: tuple.0, + Y: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for G1Point { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue<Self> for G1Point { + #[inline] + fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> { + ( + <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize( + &self.X, + ), + <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize( + &self.Y, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE { + return size; + } + let tuple = + <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone()); + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) { + let tuple = + <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone()); + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone()); + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for G1Point { + type RustType = Self; + type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME; + const ENCODED_SIZE: Option<usize> = + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option<usize> = + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token); + <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for G1Point { + const NAME: &'static str = "G1Point"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 X,uint256 Y)") + } + #[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> { + <Self as alloy_sol_types::SolStruct>::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> { + [ + <alloy::sol_types::sol_data::Uint< + 256, + > as alloy_sol_types::SolType>::eip712_data_word(&self.X) + .0, + <alloy::sol_types::sol_data::Uint< + 256, + > as alloy_sol_types::SolType>::eip712_data_word(&self.Y) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for G1Point { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + <alloy::sol_types::sol_data::Uint< + 256, + > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.X) + + <alloy::sol_types::sol_data::Uint< + 256, + > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.Y) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec<u8>, + ) { + out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust)); + <alloy::sol_types::sol_data::Uint< + 256, + > as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.X, out); + <alloy::sol_types::sol_data::Uint< + 256, + > as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.Y, out); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct G2Point { uint256[2] X; uint256[2] Y; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct G2Point { + #[allow(missing_docs)] + pub X: [alloy::sol_types::private::primitives::aliases::U256; 2usize], + #[allow(missing_docs)] + pub Y: [alloy::sol_types::private::primitives::aliases::U256; 2usize], + } + #[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::FixedArray<alloy::sol_types::sol_data::Uint<256>, 2usize>, + alloy::sol_types::sol_data::FixedArray<alloy::sol_types::sol_data::Uint<256>, 2usize>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + [alloy::sol_types::private::primitives::aliases::U256; 2usize], + [alloy::sol_types::private::primitives::aliases::U256; 2usize], + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<G2Point> for UnderlyingRustTuple<'_> { + fn from(value: G2Point) -> Self { + (value.X, value.Y) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for G2Point { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + X: tuple.0, + Y: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for G2Point { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue<Self> for G2Point { + #[inline] + fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> { + ( + <alloy::sol_types::sol_data::FixedArray< + alloy::sol_types::sol_data::Uint<256>, + 2usize, + > as alloy_sol_types::SolType>::tokenize(&self.X), + <alloy::sol_types::sol_data::FixedArray< + alloy::sol_types::sol_data::Uint<256>, + 2usize, + > as alloy_sol_types::SolType>::tokenize(&self.Y), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE { + return size; + } + let tuple = + <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone()); + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) { + let tuple = + <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone()); + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone()); + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for G2Point { + type RustType = Self; + type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME; + const ENCODED_SIZE: Option<usize> = + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option<usize> = + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token); + <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for G2Point { + const NAME: &'static str = "G2Point"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed("G2Point(uint256[2] X,uint256[2] Y)") + } + #[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> { + <Self as alloy_sol_types::SolStruct>::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> { + [ + <alloy::sol_types::sol_data::FixedArray< + alloy::sol_types::sol_data::Uint<256>, + 2usize, + > as alloy_sol_types::SolType>::eip712_data_word(&self.X) + .0, + <alloy::sol_types::sol_data::FixedArray< + alloy::sol_types::sol_data::Uint<256>, + 2usize, + > as alloy_sol_types::SolType>::eip712_data_word(&self.Y) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for G2Point { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + <alloy::sol_types::sol_data::FixedArray< + alloy::sol_types::sol_data::Uint<256>, + 2usize, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.X + ) + + <alloy::sol_types::sol_data::FixedArray< + alloy::sol_types::sol_data::Uint<256>, + 2usize, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.Y + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec<u8>, + ) { + out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust)); + <alloy::sol_types::sol_data::FixedArray< + alloy::sol_types::sol_data::Uint<256>, + 2usize, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.X, out + ); + <alloy::sol_types::sol_data::FixedArray< + alloy::sol_types::sol_data::Uint<256>, + 2usize, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.Y, out + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance. + + See the [wrapper's documentation](`BN254Instance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider<T, N>, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> BN254Instance<T, P, N> { + BN254Instance::<T, P, N>::new(address, provider) + } + /**A [`BN254`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`BN254`](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 BN254Instance<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<T, P, N> ::core::fmt::Debug for BN254Instance<T, P, N> { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("BN254Instance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider<T, N>, + N: alloy_contract::private::Network, + > BN254Instance<T, P, N> + { + /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance. + + See the [wrapper's documentation](`BN254Instance`) 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<T, P: ::core::clone::Clone, N> BN254Instance<T, &P, N> { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> BN254Instance<T, P, N> { + BN254Instance { + 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<T, N>, + N: alloy_contract::private::Network, + > BN254Instance<T, P, N> + { + /// 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<C: alloy_sol_types::SolCall>( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder<T, &P, C, N> { + 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<T, N>, + N: alloy_contract::private::Network, + > BN254Instance<T, P, N> + { + /// 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<E: alloy_sol_types::SolEvent>( + &self, + ) -> alloy_contract::Event<T, &P, E, N> { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library IBLSSignatureCheckerTypes { + struct NonSignerStakesAndSignature { uint32[] nonSignerQuorumBitmapIndices; BN254.G1Point[] nonSignerPubkeys; BN254.G1Point[] quorumApks; BN254.G2Point apkG2; BN254.G1Point sigma; uint32[] quorumApkIndices; uint32[] totalStakeIndices; uint32[][] nonSignerStakeIndices; } + struct QuorumStakeTotals { uint96[] signedStakeForQuorum; uint96[] totalStakeForQuorum; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod IBLSSignatureCheckerTypes { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct NonSignerStakesAndSignature { uint32[] nonSignerQuorumBitmapIndices; BN254.G1Point[] nonSignerPubkeys; BN254.G1Point[] quorumApks; BN254.G2Point apkG2; BN254.G1Point sigma; uint32[] quorumApkIndices; uint32[] totalStakeIndices; uint32[][] nonSignerStakeIndices; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct NonSignerStakesAndSignature { + #[allow(missing_docs)] + pub nonSignerQuorumBitmapIndices: alloy::sol_types::private::Vec<u32>, + #[allow(missing_docs)] + pub nonSignerPubkeys: + alloy::sol_types::private::Vec<<BN254::G1Point as alloy::sol_types::SolType>::RustType>, + #[allow(missing_docs)] + pub quorumApks: + alloy::sol_types::private::Vec<<BN254::G1Point as alloy::sol_types::SolType>::RustType>, + #[allow(missing_docs)] + pub apkG2: <BN254::G2Point as alloy::sol_types::SolType>::RustType, + #[allow(missing_docs)] + pub sigma: <BN254::G1Point as alloy::sol_types::SolType>::RustType, + #[allow(missing_docs)] + pub quorumApkIndices: alloy::sol_types::private::Vec<u32>, + #[allow(missing_docs)] + pub totalStakeIndices: alloy::sol_types::private::Vec<u32>, + #[allow(missing_docs)] + pub nonSignerStakeIndices: + alloy::sol_types::private::Vec<alloy::sol_types::private::Vec<u32>>, + } + #[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::Array<alloy::sol_types::sol_data::Uint<32>>, + alloy::sol_types::sol_data::Array<BN254::G1Point>, + alloy::sol_types::sol_data::Array<BN254::G1Point>, + BN254::G2Point, + BN254::G1Point, + alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>, + alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>, + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>, + >, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec<u32>, + alloy::sol_types::private::Vec<<BN254::G1Point as alloy::sol_types::SolType>::RustType>, + alloy::sol_types::private::Vec<<BN254::G1Point as alloy::sol_types::SolType>::RustType>, + <BN254::G2Point as alloy::sol_types::SolType>::RustType, + <BN254::G1Point as alloy::sol_types::SolType>::RustType, + alloy::sol_types::private::Vec<u32>, + alloy::sol_types::private::Vec<u32>, + alloy::sol_types::private::Vec<alloy::sol_types::private::Vec<u32>>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<NonSignerStakesAndSignature> for UnderlyingRustTuple<'_> { + fn from(value: NonSignerStakesAndSignature) -> Self { + ( + value.nonSignerQuorumBitmapIndices, + value.nonSignerPubkeys, + value.quorumApks, + value.apkG2, + value.sigma, + value.quorumApkIndices, + value.totalStakeIndices, + value.nonSignerStakeIndices, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for NonSignerStakesAndSignature { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + nonSignerQuorumBitmapIndices: tuple.0, + nonSignerPubkeys: tuple.1, + quorumApks: tuple.2, + apkG2: tuple.3, + sigma: tuple.4, + quorumApkIndices: tuple.5, + totalStakeIndices: tuple.6, + nonSignerStakeIndices: tuple.7, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for NonSignerStakesAndSignature { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue<Self> for NonSignerStakesAndSignature { + #[inline] + fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> { + ( + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<32>, + > as alloy_sol_types::SolType>::tokenize( + &self.nonSignerQuorumBitmapIndices, + ), + <alloy::sol_types::sol_data::Array< + BN254::G1Point, + > as alloy_sol_types::SolType>::tokenize(&self.nonSignerPubkeys), + <alloy::sol_types::sol_data::Array< + BN254::G1Point, + > as alloy_sol_types::SolType>::tokenize(&self.quorumApks), + <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.apkG2), + <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma), + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<32>, + > as alloy_sol_types::SolType>::tokenize(&self.quorumApkIndices), + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<32>, + > as alloy_sol_types::SolType>::tokenize(&self.totalStakeIndices), + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<32>, + >, + > as alloy_sol_types::SolType>::tokenize(&self.nonSignerStakeIndices), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE { + return size; + } + let tuple = + <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone()); + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) { + let tuple = + <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone()); + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone()); + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for NonSignerStakesAndSignature { + type RustType = Self; + type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME; + const ENCODED_SIZE: Option<usize> = + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option<usize> = + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token); + <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for NonSignerStakesAndSignature { + const NAME: &'static str = "NonSignerStakesAndSignature"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "NonSignerStakesAndSignature(uint32[] nonSignerQuorumBitmapIndices,BN254.G1Point[] nonSignerPubkeys,BN254.G1Point[] quorumApks,BN254.G2Point apkG2,BN254.G1Point sigma,uint32[] quorumApkIndices,uint32[] totalStakeIndices,uint32[][] nonSignerStakeIndices)", + ) + } + #[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(4); + components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type()); + components + .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components()); + components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type()); + components + .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components()); + components.push(<BN254::G2Point as alloy_sol_types::SolStruct>::eip712_root_type()); + components + .extend(<BN254::G2Point as alloy_sol_types::SolStruct>::eip712_components()); + components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type()); + components + .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components()); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> { + [ + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<32>, + > as alloy_sol_types::SolType>::eip712_data_word( + &self.nonSignerQuorumBitmapIndices, + ) + .0, + <alloy::sol_types::sol_data::Array< + BN254::G1Point, + > as alloy_sol_types::SolType>::eip712_data_word( + &self.nonSignerPubkeys, + ) + .0, + <alloy::sol_types::sol_data::Array< + BN254::G1Point, + > as alloy_sol_types::SolType>::eip712_data_word(&self.quorumApks) + .0, + <BN254::G2Point as alloy_sol_types::SolType>::eip712_data_word( + &self.apkG2, + ) + .0, + <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word( + &self.sigma, + ) + .0, + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<32>, + > as alloy_sol_types::SolType>::eip712_data_word( + &self.quorumApkIndices, + ) + .0, + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<32>, + > as alloy_sol_types::SolType>::eip712_data_word( + &self.totalStakeIndices, + ) + .0, + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<32>, + >, + > as alloy_sol_types::SolType>::eip712_data_word( + &self.nonSignerStakeIndices, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for NonSignerStakesAndSignature { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<32>, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.nonSignerQuorumBitmapIndices, + ) + + <alloy::sol_types::sol_data::Array< + BN254::G1Point, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.nonSignerPubkeys, + ) + + <alloy::sol_types::sol_data::Array< + BN254::G1Point, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.quorumApks, + ) + + <BN254::G2Point as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.apkG2, + ) + + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.sigma, + ) + + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<32>, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.quorumApkIndices, + ) + + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<32>, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.totalStakeIndices, + ) + + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<32>, + >, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.nonSignerStakeIndices, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec<u8>, + ) { + out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust)); + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<32>, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonSignerQuorumBitmapIndices, + out, + ); + <alloy::sol_types::sol_data::Array< + BN254::G1Point, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonSignerPubkeys, + out, + ); + <alloy::sol_types::sol_data::Array< + BN254::G1Point, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.quorumApks, + out, + ); + <BN254::G2Point as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.apkG2, + out, + ); + <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.sigma, + out, + ); + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<32>, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.quorumApkIndices, + out, + ); + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<32>, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.totalStakeIndices, + out, + ); + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonSignerStakeIndices, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct QuorumStakeTotals { uint96[] signedStakeForQuorum; uint96[] totalStakeForQuorum; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct QuorumStakeTotals { + #[allow(missing_docs)] + pub signedStakeForQuorum: + alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U96>, + #[allow(missing_docs)] + pub totalStakeForQuorum: + alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U96>, + } + #[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::Array<alloy::sol_types::sol_data::Uint<96>>, + alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<96>>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U96>, + alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U96>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<QuorumStakeTotals> for UnderlyingRustTuple<'_> { + fn from(value: QuorumStakeTotals) -> Self { + (value.signedStakeForQuorum, value.totalStakeForQuorum) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for QuorumStakeTotals { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + signedStakeForQuorum: tuple.0, + totalStakeForQuorum: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for QuorumStakeTotals { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue<Self> for QuorumStakeTotals { + #[inline] + fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> { + ( + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<96>, + > as alloy_sol_types::SolType>::tokenize(&self.signedStakeForQuorum), + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<96>, + > as alloy_sol_types::SolType>::tokenize(&self.totalStakeForQuorum), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE { + return size; + } + let tuple = + <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone()); + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) { + let tuple = + <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone()); + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone()); + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for QuorumStakeTotals { + type RustType = Self; + type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME; + const ENCODED_SIZE: Option<usize> = + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option<usize> = + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token); + <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for QuorumStakeTotals { + const NAME: &'static str = "QuorumStakeTotals"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "QuorumStakeTotals(uint96[] signedStakeForQuorum,uint96[] totalStakeForQuorum)", + ) + } + #[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> { + <Self as alloy_sol_types::SolStruct>::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> { + [ + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<96>, + > as alloy_sol_types::SolType>::eip712_data_word( + &self.signedStakeForQuorum, + ) + .0, + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<96>, + > as alloy_sol_types::SolType>::eip712_data_word( + &self.totalStakeForQuorum, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for QuorumStakeTotals { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<96>, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.signedStakeForQuorum, + ) + + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<96>, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.totalStakeForQuorum, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec<u8>, + ) { + out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust)); + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<96>, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.signedStakeForQuorum, + out, + ); + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<96>, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.totalStakeForQuorum, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IBLSSignatureCheckerTypes`](self) contract instance. + + See the [wrapper's documentation](`IBLSSignatureCheckerTypesInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider<T, N>, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IBLSSignatureCheckerTypesInstance<T, P, N> { + IBLSSignatureCheckerTypesInstance::<T, P, N>::new(address, provider) + } + /**A [`IBLSSignatureCheckerTypes`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IBLSSignatureCheckerTypes`](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 IBLSSignatureCheckerTypesInstance<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<T, P, N> ::core::fmt::Debug for IBLSSignatureCheckerTypesInstance<T, P, N> { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IBLSSignatureCheckerTypesInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider<T, N>, + N: alloy_contract::private::Network, + > IBLSSignatureCheckerTypesInstance<T, P, N> + { + /**Creates a new wrapper around an on-chain [`IBLSSignatureCheckerTypes`](self) contract instance. + + See the [wrapper's documentation](`IBLSSignatureCheckerTypesInstance`) 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<T, P: ::core::clone::Clone, N> IBLSSignatureCheckerTypesInstance<T, &P, N> { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IBLSSignatureCheckerTypesInstance<T, P, N> { + IBLSSignatureCheckerTypesInstance { + 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<T, N>, + N: alloy_contract::private::Network, + > IBLSSignatureCheckerTypesInstance<T, P, N> + { + /// 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<C: alloy_sol_types::SolCall>( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder<T, &P, C, N> { + 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<T, N>, + N: alloy_contract::private::Network, + > IBLSSignatureCheckerTypesInstance<T, P, N> + { + /// 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<E: alloy_sol_types::SolEvent>( + &self, + ) -> alloy_contract::Event<T, &P, E, N> { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library IIncredibleSquaringTaskManager { + struct Task { uint256 numberToBeSquared; uint32 taskCreatedBlock; bytes quorumNumbers; uint32 quorumThresholdPercentage; } + struct TaskResponse { uint32 referenceTaskIndex; uint256 numberSquared; } + struct TaskResponseMetadata { uint32 taskResponsedBlock; bytes32 hashOfNonSigners; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod IIncredibleSquaringTaskManager { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct Task { uint256 numberToBeSquared; uint32 taskCreatedBlock; bytes quorumNumbers; uint32 quorumThresholdPercentage; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone, Debug)] + pub struct Task { + #[allow(missing_docs)] + pub numberToBeSquared: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub taskCreatedBlock: u32, + #[allow(missing_docs)] + pub quorumNumbers: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] + pub quorumThresholdPercentage: u32, + } + #[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<32>, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + u32, + alloy::sol_types::private::Bytes, + u32, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<Task> for UnderlyingRustTuple<'_> { + fn from(value: Task) -> Self { + ( + value.numberToBeSquared, + value.taskCreatedBlock, + value.quorumNumbers, + value.quorumThresholdPercentage, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for Task { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + numberToBeSquared: tuple.0, + taskCreatedBlock: tuple.1, + quorumNumbers: tuple.2, + quorumThresholdPercentage: tuple.3, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for Task { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue<Self> for Task { + #[inline] + fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> { + ( + <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize( + &self.numberToBeSquared, + ), + <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize( + &self.taskCreatedBlock, + ), + <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize( + &self.quorumNumbers, + ), + <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize( + &self.quorumThresholdPercentage, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE { + return size; + } + let tuple = + <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone()); + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) { + let tuple = + <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone()); + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone()); + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Task { + type RustType = Self; + type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME; + const ENCODED_SIZE: Option<usize> = + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option<usize> = + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token); + <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for Task { + const NAME: &'static str = "Task"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "Task(uint256 numberToBeSquared,uint32 taskCreatedBlock,bytes quorumNumbers,uint32 quorumThresholdPercentage)", + ) + } + #[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> { + <Self as alloy_sol_types::SolStruct>::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> { + [ + <alloy::sol_types::sol_data::Uint< + 256, + > as alloy_sol_types::SolType>::eip712_data_word( + &self.numberToBeSquared, + ) + .0, + <alloy::sol_types::sol_data::Uint< + 32, + > as alloy_sol_types::SolType>::eip712_data_word( + &self.taskCreatedBlock, + ) + .0, + <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::eip712_data_word( + &self.quorumNumbers, + ) + .0, + <alloy::sol_types::sol_data::Uint< + 32, + > as alloy_sol_types::SolType>::eip712_data_word( + &self.quorumThresholdPercentage, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Task { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + <alloy::sol_types::sol_data::Uint< + 256, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.numberToBeSquared, + ) + + <alloy::sol_types::sol_data::Uint< + 32, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.taskCreatedBlock, + ) + + <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.quorumNumbers, + ) + + <alloy::sol_types::sol_data::Uint< + 32, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.quorumThresholdPercentage, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec<u8>, + ) { + out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust)); + <alloy::sol_types::sol_data::Uint< + 256, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.numberToBeSquared, + out, + ); + <alloy::sol_types::sol_data::Uint< + 32, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.taskCreatedBlock, + out, + ); + <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.quorumNumbers, + out, + ); + <alloy::sol_types::sol_data::Uint< + 32, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.quorumThresholdPercentage, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct TaskResponse { uint32 referenceTaskIndex; uint256 numberSquared; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone, Debug, Serialize, Deserialize)] + pub struct TaskResponse { + #[allow(missing_docs)] + pub referenceTaskIndex: u32, + #[allow(missing_docs)] + pub numberSquared: 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<32>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32, alloy::sol_types::private::primitives::aliases::U256); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<TaskResponse> for UnderlyingRustTuple<'_> { + fn from(value: TaskResponse) -> Self { + (value.referenceTaskIndex, value.numberSquared) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for TaskResponse { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + referenceTaskIndex: tuple.0, + numberSquared: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for TaskResponse { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue<Self> for TaskResponse { + #[inline] + fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> { + ( + <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize( + &self.referenceTaskIndex, + ), + <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize( + &self.numberSquared, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE { + return size; + } + let tuple = + <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone()); + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) { + let tuple = + <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone()); + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone()); + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for TaskResponse { + type RustType = Self; + type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME; + const ENCODED_SIZE: Option<usize> = + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option<usize> = + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token); + <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for TaskResponse { + const NAME: &'static str = "TaskResponse"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "TaskResponse(uint32 referenceTaskIndex,uint256 numberSquared)", + ) + } + #[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> { + <Self as alloy_sol_types::SolStruct>::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> { + [ + <alloy::sol_types::sol_data::Uint< + 32, + > as alloy_sol_types::SolType>::eip712_data_word( + &self.referenceTaskIndex, + ) + .0, + <alloy::sol_types::sol_data::Uint< + 256, + > as alloy_sol_types::SolType>::eip712_data_word(&self.numberSquared) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for TaskResponse { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + <alloy::sol_types::sol_data::Uint< + 32, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.referenceTaskIndex, + ) + + <alloy::sol_types::sol_data::Uint< + 256, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.numberSquared, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec<u8>, + ) { + out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust)); + <alloy::sol_types::sol_data::Uint< + 32, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.referenceTaskIndex, + out, + ); + <alloy::sol_types::sol_data::Uint< + 256, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.numberSquared, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct TaskResponseMetadata { uint32 taskResponsedBlock; bytes32 hashOfNonSigners; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone, Debug)] + pub struct TaskResponseMetadata { + #[allow(missing_docs)] + pub taskResponsedBlock: u32, + #[allow(missing_docs)] + pub hashOfNonSigners: 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<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32, alloy::sol_types::private::FixedBytes<32>); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<TaskResponseMetadata> for UnderlyingRustTuple<'_> { + fn from(value: TaskResponseMetadata) -> Self { + (value.taskResponsedBlock, value.hashOfNonSigners) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for TaskResponseMetadata { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + taskResponsedBlock: tuple.0, + hashOfNonSigners: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for TaskResponseMetadata { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue<Self> for TaskResponseMetadata { + #[inline] + fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> { + ( + <alloy::sol_types::sol_data::Uint< + 32, + > as alloy_sol_types::SolType>::tokenize(&self.taskResponsedBlock), + <alloy::sol_types::sol_data::FixedBytes< + 32, + > as alloy_sol_types::SolType>::tokenize(&self.hashOfNonSigners), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE { + return size; + } + let tuple = + <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone()); + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) { + let tuple = + <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone()); + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone()); + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for TaskResponseMetadata { + type RustType = Self; + type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME; + const ENCODED_SIZE: Option<usize> = + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option<usize> = + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token); + <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for TaskResponseMetadata { + const NAME: &'static str = "TaskResponseMetadata"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "TaskResponseMetadata(uint32 taskResponsedBlock,bytes32 hashOfNonSigners)", + ) + } + #[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> { + <Self as alloy_sol_types::SolStruct>::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> { + [ + <alloy::sol_types::sol_data::Uint< + 32, + > as alloy_sol_types::SolType>::eip712_data_word( + &self.taskResponsedBlock, + ) + .0, + <alloy::sol_types::sol_data::FixedBytes< + 32, + > as alloy_sol_types::SolType>::eip712_data_word( + &self.hashOfNonSigners, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for TaskResponseMetadata { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + <alloy::sol_types::sol_data::Uint< + 32, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.taskResponsedBlock, + ) + + <alloy::sol_types::sol_data::FixedBytes< + 32, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.hashOfNonSigners, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec<u8>, + ) { + out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust)); + <alloy::sol_types::sol_data::Uint< + 32, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.taskResponsedBlock, + out, + ); + <alloy::sol_types::sol_data::FixedBytes< + 32, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.hashOfNonSigners, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + use serde::Deserialize; + use serde::Serialize; + /**Creates a new wrapper around an on-chain [`IIncredibleSquaringTaskManager`](self) contract instance. + + See the [wrapper's documentation](`IIncredibleSquaringTaskManagerInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider<T, N>, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IIncredibleSquaringTaskManagerInstance<T, P, N> { + IIncredibleSquaringTaskManagerInstance::<T, P, N>::new(address, provider) + } + /**A [`IIncredibleSquaringTaskManager`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IIncredibleSquaringTaskManager`](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 IIncredibleSquaringTaskManagerInstance<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<T, P, N> ::core::fmt::Debug for IIncredibleSquaringTaskManagerInstance<T, P, N> { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IIncredibleSquaringTaskManagerInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider<T, N>, + N: alloy_contract::private::Network, + > IIncredibleSquaringTaskManagerInstance<T, P, N> + { + /**Creates a new wrapper around an on-chain [`IIncredibleSquaringTaskManager`](self) contract instance. + + See the [wrapper's documentation](`IIncredibleSquaringTaskManagerInstance`) 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<T, P: ::core::clone::Clone, N> IIncredibleSquaringTaskManagerInstance<T, &P, N> { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IIncredibleSquaringTaskManagerInstance<T, P, N> { + IIncredibleSquaringTaskManagerInstance { + 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<T, N>, + N: alloy_contract::private::Network, + > IIncredibleSquaringTaskManagerInstance<T, P, N> + { + /// 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<C: alloy_sol_types::SolCall>( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder<T, &P, C, N> { + 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<T, N>, + N: alloy_contract::private::Network, + > IIncredibleSquaringTaskManagerInstance<T, P, N> + { + /// 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<E: alloy_sol_types::SolEvent>( + &self, + ) -> alloy_contract::Event<T, &P, E, N> { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library OperatorStateRetriever { + struct CheckSignaturesIndices { uint32[] nonSignerQuorumBitmapIndices; uint32[] quorumApkIndices; uint32[] totalStakeIndices; uint32[][] nonSignerStakeIndices; } + struct Operator { address operator; bytes32 operatorId; uint96 stake; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod OperatorStateRetriever { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity + struct CheckSignaturesIndices { uint32[] nonSignerQuorumBitmapIndices; uint32[] quorumApkIndices; uint32[] totalStakeIndices; uint32[][] nonSignerStakeIndices; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct CheckSignaturesIndices { + #[allow(missing_docs)] + pub nonSignerQuorumBitmapIndices: alloy::sol_types::private::Vec<u32>, + #[allow(missing_docs)] + pub quorumApkIndices: alloy::sol_types::private::Vec<u32>, + #[allow(missing_docs)] + pub totalStakeIndices: alloy::sol_types::private::Vec<u32>, + #[allow(missing_docs)] + pub nonSignerStakeIndices: + alloy::sol_types::private::Vec<alloy::sol_types::private::Vec<u32>>, + } + #[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::Array<alloy::sol_types::sol_data::Uint<32>>, + alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>, + alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>, + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>, + >, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec<u32>, + alloy::sol_types::private::Vec<u32>, + alloy::sol_types::private::Vec<u32>, + alloy::sol_types::private::Vec<alloy::sol_types::private::Vec<u32>>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<CheckSignaturesIndices> for UnderlyingRustTuple<'_> { + fn from(value: CheckSignaturesIndices) -> Self { + ( + value.nonSignerQuorumBitmapIndices, + value.quorumApkIndices, + value.totalStakeIndices, + value.nonSignerStakeIndices, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for CheckSignaturesIndices { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + nonSignerQuorumBitmapIndices: tuple.0, + quorumApkIndices: tuple.1, + totalStakeIndices: tuple.2, + nonSignerStakeIndices: tuple.3, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for CheckSignaturesIndices { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue<Self> for CheckSignaturesIndices { + #[inline] + fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> { + ( + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<32>, + > as alloy_sol_types::SolType>::tokenize( + &self.nonSignerQuorumBitmapIndices, + ), + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<32>, + > as alloy_sol_types::SolType>::tokenize(&self.quorumApkIndices), + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<32>, + > as alloy_sol_types::SolType>::tokenize(&self.totalStakeIndices), + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<32>, + >, + > as alloy_sol_types::SolType>::tokenize(&self.nonSignerStakeIndices), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE { + return size; + } + let tuple = + <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone()); + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) { + let tuple = + <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone()); + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone()); + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for CheckSignaturesIndices { + type RustType = Self; + type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME; + const ENCODED_SIZE: Option<usize> = + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option<usize> = + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token); + <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for CheckSignaturesIndices { + const NAME: &'static str = "CheckSignaturesIndices"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "CheckSignaturesIndices(uint32[] nonSignerQuorumBitmapIndices,uint32[] quorumApkIndices,uint32[] totalStakeIndices,uint32[][] nonSignerStakeIndices)", + ) + } + #[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> { + <Self as alloy_sol_types::SolStruct>::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> { + [ + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<32>, + > as alloy_sol_types::SolType>::eip712_data_word( + &self.nonSignerQuorumBitmapIndices, + ) + .0, + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<32>, + > as alloy_sol_types::SolType>::eip712_data_word( + &self.quorumApkIndices, + ) + .0, + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<32>, + > as alloy_sol_types::SolType>::eip712_data_word( + &self.totalStakeIndices, + ) + .0, + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<32>, + >, + > as alloy_sol_types::SolType>::eip712_data_word( + &self.nonSignerStakeIndices, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for CheckSignaturesIndices { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<32>, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.nonSignerQuorumBitmapIndices, + ) + + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<32>, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.quorumApkIndices, + ) + + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<32>, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.totalStakeIndices, + ) + + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<32>, + >, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.nonSignerStakeIndices, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec<u8>, + ) { + out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust)); + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<32>, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonSignerQuorumBitmapIndices, + out, + ); + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<32>, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.quorumApkIndices, + out, + ); + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Uint<32>, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.totalStakeIndices, + out, + ); + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonSignerStakeIndices, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + /**```solidity + struct Operator { address operator; bytes32 operatorId; uint96 stake; } + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct Operator { + #[allow(missing_docs)] + pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub stake: alloy::sol_types::private::primitives::aliases::U96, + } + #[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::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<96>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::primitives::aliases::U96, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<Operator> for UnderlyingRustTuple<'_> { + fn from(value: Operator) -> Self { + (value.operator, value.operatorId, value.stake) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for Operator { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + operatorId: tuple.1, + stake: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for Operator { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue<Self> for Operator { + #[inline] + fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> { + ( + <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize( + &self.operator, + ), + <alloy::sol_types::sol_data::FixedBytes< + 32, + > as alloy_sol_types::SolType>::tokenize(&self.operatorId), + <alloy::sol_types::sol_data::Uint< + 96, + > as alloy_sol_types::SolType>::tokenize(&self.stake), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE { + return size; + } + let tuple = + <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone()); + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) { + let tuple = + <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone()); + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to( + &tuple, out, + ) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE { + return size; + } + let tuple = + <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone()); + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size( + &tuple, + ) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for Operator { + type RustType = Self; + type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME; + const ENCODED_SIZE: Option<usize> = + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option<usize> = + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token); + <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for Operator { + const NAME: &'static str = "Operator"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "Operator(address operator,bytes32 operatorId,uint96 stake)", + ) + } + #[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> { + <Self as alloy_sol_types::SolStruct>::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> { + [ + <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::eip712_data_word( + &self.operator, + ) + .0, + <alloy::sol_types::sol_data::FixedBytes< + 32, + > as alloy_sol_types::SolType>::eip712_data_word(&self.operatorId) + .0, + <alloy::sol_types::sol_data::Uint< + 96, + > as alloy_sol_types::SolType>::eip712_data_word(&self.stake) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for Operator { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.operator, + ) + + <alloy::sol_types::sol_data::FixedBytes< + 32, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.operatorId, + ) + + <alloy::sol_types::sol_data::Uint< + 96, + > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.stake) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec<u8>, + ) { + out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust)); + <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.operator, + out, + ); + <alloy::sol_types::sol_data::FixedBytes< + 32, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.operatorId, + out, + ); + <alloy::sol_types::sol_data::Uint< + 96, + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.stake, + out, + ); + } + #[inline] + fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out); + alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out)) + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`OperatorStateRetriever`](self) contract instance. + + See the [wrapper's documentation](`OperatorStateRetrieverInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider<T, N>, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> OperatorStateRetrieverInstance<T, P, N> { + OperatorStateRetrieverInstance::<T, P, N>::new(address, provider) + } + /**A [`OperatorStateRetriever`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`OperatorStateRetriever`](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 OperatorStateRetrieverInstance<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<T, P, N> ::core::fmt::Debug for OperatorStateRetrieverInstance<T, P, N> { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("OperatorStateRetrieverInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider<T, N>, + N: alloy_contract::private::Network, + > OperatorStateRetrieverInstance<T, P, N> + { + /**Creates a new wrapper around an on-chain [`OperatorStateRetriever`](self) contract instance. + + See the [wrapper's documentation](`OperatorStateRetrieverInstance`) 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<T, P: ::core::clone::Clone, N> OperatorStateRetrieverInstance<T, &P, N> { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> OperatorStateRetrieverInstance<T, P, N> { + OperatorStateRetrieverInstance { + 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<T, N>, + N: alloy_contract::private::Network, + > OperatorStateRetrieverInstance<T, P, N> + { + /// 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<C: alloy_sol_types::SolCall>( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder<T, &P, C, N> { + 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<T, N>, + N: alloy_contract::private::Network, + > OperatorStateRetrieverInstance<T, P, N> + { + /// 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<E: alloy_sol_types::SolEvent>( + &self, + ) -> alloy_contract::Event<T, &P, E, N> { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library BN254 { + struct G1Point { + uint256 X; + uint256 Y; + } + struct G2Point { + uint256[2] X; + uint256[2] Y; + } +} + +library IBLSSignatureCheckerTypes { + struct NonSignerStakesAndSignature { + uint32[] nonSignerQuorumBitmapIndices; + BN254.G1Point[] nonSignerPubkeys; + BN254.G1Point[] quorumApks; + BN254.G2Point apkG2; + BN254.G1Point sigma; + uint32[] quorumApkIndices; + uint32[] totalStakeIndices; + uint32[][] nonSignerStakeIndices; + } + struct QuorumStakeTotals { + uint96[] signedStakeForQuorum; + uint96[] totalStakeForQuorum; + } +} + +library IIncredibleSquaringTaskManager { + struct Task { + uint256 numberToBeSquared; + uint32 taskCreatedBlock; + bytes quorumNumbers; + uint32 quorumThresholdPercentage; + } + struct TaskResponse { + uint32 referenceTaskIndex; + uint256 numberSquared; + } + struct TaskResponseMetadata { + uint32 taskResponsedBlock; + bytes32 hashOfNonSigners; + } +} + +library OperatorStateRetriever { + struct CheckSignaturesIndices { + uint32[] nonSignerQuorumBitmapIndices; + uint32[] quorumApkIndices; + uint32[] totalStakeIndices; + uint32[][] nonSignerStakeIndices; + } + struct Operator { + address operator; + bytes32 operatorId; + uint96 stake; + } +} + +interface IncredibleSquaringTaskManager { + error BitmapValueTooLarge(); + error BytesArrayLengthTooLong(); + error BytesArrayNotOrdered(); + error CurrentlyPaused(); + error ECAddFailed(); + error ECMulFailed(); + error ExpModFailed(); + error InputAddressZero(); + error InputArrayLengthMismatch(); + error InputEmptyQuorumNumbers(); + error InputNonSignerLengthMismatch(); + error InvalidBLSPairingKey(); + error InvalidBLSSignature(); + error InvalidNewPausedStatus(); + error InvalidQuorumApkHash(); + error InvalidReferenceBlocknumber(); + error NonSignerPubkeysNotSorted(); + error OnlyPauser(); + error OnlyRegistryCoordinatorOwner(); + error OnlyUnpauser(); + error OperatorNotRegistered(); + error ScalarTooLarge(); + error StaleStakesForbidden(); + + event Initialized(uint8 version); + event NewTaskCreated(uint32 indexed taskIndex, IIncredibleSquaringTaskManager.Task task); + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + event Paused(address indexed account, uint256 newPausedStatus); + event StaleStakesForbiddenUpdate(bool value); + event TaskChallengedSuccessfully(uint32 indexed taskIndex, address indexed challenger); + event TaskChallengedUnsuccessfully(uint32 indexed taskIndex, address indexed challenger); + event TaskCompleted(uint32 indexed taskIndex); + event TaskResponded(IIncredibleSquaringTaskManager.TaskResponse taskResponse, IIncredibleSquaringTaskManager.TaskResponseMetadata taskResponseMetadata); + event Unpaused(address indexed account, uint256 newPausedStatus); + + constructor(address _slashingRegistryCoordinator, address _pauserRegistry, uint32 _taskResponseWindowBlock, address _serviceManager); + + function TASK_CHALLENGE_WINDOW_BLOCK() external view returns (uint32); + function TASK_RESPONSE_WINDOW_BLOCK() external view returns (uint32); + function WADS_TO_SLASH() external view returns (uint256); + function aggregator() external view returns (address); + function allTaskHashes(uint32) external view returns (bytes32); + function allTaskResponses(uint32) external view returns (bytes32); + function allocationManager() external view returns (address); + function blsApkRegistry() external view returns (address); + function checkSignatures(bytes32 msgHash, bytes memory quorumNumbers, uint32 referenceBlockNumber, IBLSSignatureCheckerTypes.NonSignerStakesAndSignature memory params) external view returns (IBLSSignatureCheckerTypes.QuorumStakeTotals memory, bytes32); + function createNewTask(uint256 numberToBeSquared, uint32 quorumThresholdPercentage, bytes memory quorumNumbers) external; + function delegation() external view returns (address); + function generator() external view returns (address); + function getBatchOperatorFromId(address registryCoordinator, bytes32[] memory operatorIds) external view returns (address[] memory operators); + function getBatchOperatorId(address registryCoordinator, address[] memory operators) external view returns (bytes32[] memory operatorIds); + function getCheckSignaturesIndices(address registryCoordinator, uint32 referenceBlockNumber, bytes memory quorumNumbers, bytes32[] memory nonSignerOperatorIds) external view returns (OperatorStateRetriever.CheckSignaturesIndices memory); + function getOperatorState(address registryCoordinator, bytes memory quorumNumbers, uint32 blockNumber) external view returns (OperatorStateRetriever.Operator[][] memory); + function getOperatorState(address registryCoordinator, bytes32 operatorId, uint32 blockNumber) external view returns (uint256, OperatorStateRetriever.Operator[][] memory); + function getQuorumBitmapsAtBlockNumber(address registryCoordinator, bytes32[] memory operatorIds, uint32 blockNumber) external view returns (uint256[] memory); + function getTaskResponseWindowBlock() external view returns (uint32); + function initialize(address initialOwner, address _aggregator, address _generator, address _allocationManager, address _slasher) external; + function instantSlasher() external view returns (address); + function latestTaskNum() external view returns (uint32); + function owner() external view returns (address); + function pause(uint256 newPausedStatus) external; + function pauseAll() external; + function paused(uint8 index) external view returns (bool); + function paused() external view returns (uint256); + function pauserRegistry() external view returns (address); + function raiseAndResolveChallenge(IIncredibleSquaringTaskManager.Task memory task, IIncredibleSquaringTaskManager.TaskResponse memory taskResponse, IIncredibleSquaringTaskManager.TaskResponseMetadata memory taskResponseMetadata, BN254.G1Point[] memory pubkeysOfNonSigningOperators) external; + function registryCoordinator() external view returns (address); + function renounceOwnership() external; + function respondToTask(IIncredibleSquaringTaskManager.Task memory task, IIncredibleSquaringTaskManager.TaskResponse memory taskResponse, IBLSSignatureCheckerTypes.NonSignerStakesAndSignature memory nonSignerStakesAndSignature) external; + function serviceManager() external view returns (address); + function setStaleStakesForbidden(bool value) external; + function stakeRegistry() external view returns (address); + function staleStakesForbidden() external view returns (bool); + function taskNumber() external view returns (uint32); + function taskSuccesfullyChallenged(uint32) external view returns (bool); + function transferOwnership(address newOwner) external; + function trySignatureAndApkVerification(bytes32 msgHash, BN254.G1Point memory apk, BN254.G2Point memory apkG2, BN254.G1Point memory sigma) external view returns (bool pairingSuccessful, bool siganatureIsValid); + function unpause(uint256 newPausedStatus) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ +{ + "type": "constructor", + "inputs": [ + { + "name": "_slashingRegistryCoordinator", + "type": "address", + "internalType": "contract ISlashingRegistryCoordinator" + }, + { + "name": "_pauserRegistry", + "type": "address", + "internalType": "contract IPauserRegistry" + }, + { + "name": "_taskResponseWindowBlock", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "_serviceManager", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "nonpayable" +}, +{ + "type": "function", + "name": "TASK_CHALLENGE_WINDOW_BLOCK", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" +}, +{ + "type": "function", + "name": "TASK_RESPONSE_WINDOW_BLOCK", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" +}, +{ + "type": "function", + "name": "WADS_TO_SLASH", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" +}, +{ + "type": "function", + "name": "aggregator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" +}, +{ + "type": "function", + "name": "allTaskHashes", + "inputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" +}, +{ + "type": "function", + "name": "allTaskResponses", + "inputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" +}, +{ + "type": "function", + "name": "allocationManager", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" +}, +{ + "type": "function", + "name": "blsApkRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IBLSApkRegistry" + } + ], + "stateMutability": "view" +}, +{ + "type": "function", + "name": "checkSignatures", + "inputs": [ + { + "name": "msgHash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "referenceBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "params", + "type": "tuple", + "internalType": "struct IBLSSignatureCheckerTypes.NonSignerStakesAndSignature", + "components": [ + { + "name": "nonSignerQuorumBitmapIndices", + "type": "uint32[]", + "internalType": "uint32[]" + }, + { + "name": "nonSignerPubkeys", + "type": "tuple[]", + "internalType": "struct BN254.G1Point[]", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "quorumApks", + "type": "tuple[]", + "internalType": "struct BN254.G1Point[]", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "apkG2", + "type": "tuple", + "internalType": "struct BN254.G2Point", + "components": [ + { + "name": "X", + "type": "uint256[2]", + "internalType": "uint256[2]" + }, + { + "name": "Y", + "type": "uint256[2]", + "internalType": "uint256[2]" + } + ] + }, + { + "name": "sigma", + "type": "tuple", + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "quorumApkIndices", + "type": "uint32[]", + "internalType": "uint32[]" + }, + { + "name": "totalStakeIndices", + "type": "uint32[]", + "internalType": "uint32[]" + }, + { + "name": "nonSignerStakeIndices", + "type": "uint32[][]", + "internalType": "uint32[][]" + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct IBLSSignatureCheckerTypes.QuorumStakeTotals", + "components": [ + { + "name": "signedStakeForQuorum", + "type": "uint96[]", + "internalType": "uint96[]" + }, + { + "name": "totalStakeForQuorum", + "type": "uint96[]", + "internalType": "uint96[]" + } + ] + }, + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" +}, +{ + "type": "function", + "name": "createNewTask", + "inputs": [ + { + "name": "numberToBeSquared", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "quorumThresholdPercentage", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" +}, +{ + "type": "function", + "name": "delegation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IDelegationManager" + } + ], + "stateMutability": "view" +}, +{ + "type": "function", + "name": "generator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" +}, +{ + "type": "function", + "name": "getBatchOperatorFromId", + "inputs": [ + { + "name": "registryCoordinator", + "type": "address", + "internalType": "contract ISlashingRegistryCoordinator" + }, + { + "name": "operatorIds", + "type": "bytes32[]", + "internalType": "bytes32[]" + } + ], + "outputs": [ + { + "name": "operators", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" +}, +{ + "type": "function", + "name": "getBatchOperatorId", + "inputs": [ + { + "name": "registryCoordinator", + "type": "address", + "internalType": "contract ISlashingRegistryCoordinator" + }, + { + "name": "operators", + "type": "address[]", + "internalType": "address[]" + } + ], + "outputs": [ + { + "name": "operatorIds", + "type": "bytes32[]", + "internalType": "bytes32[]" + } + ], + "stateMutability": "view" +}, +{ + "type": "function", + "name": "getCheckSignaturesIndices", + "inputs": [ + { + "name": "registryCoordinator", + "type": "address", + "internalType": "contract ISlashingRegistryCoordinator" + }, + { + "name": "referenceBlockNumber", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "nonSignerOperatorIds", + "type": "bytes32[]", + "internalType": "bytes32[]" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct OperatorStateRetriever.CheckSignaturesIndices", + "components": [ + { + "name": "nonSignerQuorumBitmapIndices", + "type": "uint32[]", + "internalType": "uint32[]" + }, + { + "name": "quorumApkIndices", + "type": "uint32[]", + "internalType": "uint32[]" + }, + { + "name": "totalStakeIndices", + "type": "uint32[]", + "internalType": "uint32[]" + }, + { + "name": "nonSignerStakeIndices", + "type": "uint32[][]", + "internalType": "uint32[][]" + } + ] + } + ], + "stateMutability": "view" +}, +{ + "type": "function", + "name": "getOperatorState", + "inputs": [ + { + "name": "registryCoordinator", + "type": "address", + "internalType": "contract ISlashingRegistryCoordinator" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "blockNumber", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple[][]", + "internalType": "struct OperatorStateRetriever.Operator[][]", + "components": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "stake", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ], + "stateMutability": "view" +}, +{ + "type": "function", + "name": "getOperatorState", + "inputs": [ + { + "name": "registryCoordinator", + "type": "address", + "internalType": "contract ISlashingRegistryCoordinator" + }, + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "blockNumber", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "", + "type": "tuple[][]", + "internalType": "struct OperatorStateRetriever.Operator[][]", + "components": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "operatorId", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "stake", + "type": "uint96", + "internalType": "uint96" + } + ] + } + ], + "stateMutability": "view" +}, +{ + "type": "function", + "name": "getQuorumBitmapsAtBlockNumber", + "inputs": [ + { + "name": "registryCoordinator", + "type": "address", + "internalType": "contract ISlashingRegistryCoordinator" + }, + { + "name": "operatorIds", + "type": "bytes32[]", + "internalType": "bytes32[]" + }, + { + "name": "blockNumber", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256[]", + "internalType": "uint256[]" + } + ], + "stateMutability": "view" +}, +{ + "type": "function", + "name": "getTaskResponseWindowBlock", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" +}, +{ + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "initialOwner", + "type": "address", + "internalType": "address" + }, + { + "name": "_aggregator", + "type": "address", + "internalType": "address" + }, + { + "name": "_generator", + "type": "address", + "internalType": "address" + }, + { + "name": "_allocationManager", + "type": "address", + "internalType": "address" + }, + { + "name": "_slasher", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" +}, +{ + "type": "function", + "name": "instantSlasher", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" +}, +{ + "type": "function", + "name": "latestTaskNum", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" +}, +{ + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" +}, +{ + "type": "function", + "name": "pause", + "inputs": [ + { + "name": "newPausedStatus", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" +}, +{ + "type": "function", + "name": "pauseAll", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" +}, +{ + "type": "function", + "name": "paused", + "inputs": [ + { + "name": "index", + "type": "uint8", + "internalType": "uint8" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" +}, +{ + "type": "function", + "name": "paused", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" +}, +{ + "type": "function", + "name": "pauserRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IPauserRegistry" + } + ], + "stateMutability": "view" +}, +{ + "type": "function", + "name": "raiseAndResolveChallenge", + "inputs": [ + { + "name": "task", + "type": "tuple", + "internalType": "struct IIncredibleSquaringTaskManager.Task", + "components": [ + { + "name": "numberToBeSquared", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "taskCreatedBlock", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "quorumThresholdPercentage", + "type": "uint32", + "internalType": "uint32" + } + ] + }, + { + "name": "taskResponse", + "type": "tuple", + "internalType": "struct IIncredibleSquaringTaskManager.TaskResponse", + "components": [ + { + "name": "referenceTaskIndex", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "numberSquared", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "taskResponseMetadata", + "type": "tuple", + "internalType": "struct IIncredibleSquaringTaskManager.TaskResponseMetadata", + "components": [ + { + "name": "taskResponsedBlock", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "hashOfNonSigners", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "pubkeysOfNonSigningOperators", + "type": "tuple[]", + "internalType": "struct BN254.G1Point[]", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" +}, +{ + "type": "function", + "name": "registryCoordinator", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ISlashingRegistryCoordinator" + } + ], + "stateMutability": "view" +}, +{ + "type": "function", + "name": "renounceOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" +}, +{ + "type": "function", + "name": "respondToTask", + "inputs": [ + { + "name": "task", + "type": "tuple", + "internalType": "struct IIncredibleSquaringTaskManager.Task", + "components": [ + { + "name": "numberToBeSquared", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "taskCreatedBlock", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "quorumThresholdPercentage", + "type": "uint32", + "internalType": "uint32" + } + ] + }, + { + "name": "taskResponse", + "type": "tuple", + "internalType": "struct IIncredibleSquaringTaskManager.TaskResponse", + "components": [ + { + "name": "referenceTaskIndex", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "numberSquared", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "nonSignerStakesAndSignature", + "type": "tuple", + "internalType": "struct IBLSSignatureCheckerTypes.NonSignerStakesAndSignature", + "components": [ + { + "name": "nonSignerQuorumBitmapIndices", + "type": "uint32[]", + "internalType": "uint32[]" + }, + { + "name": "nonSignerPubkeys", + "type": "tuple[]", + "internalType": "struct BN254.G1Point[]", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "quorumApks", + "type": "tuple[]", + "internalType": "struct BN254.G1Point[]", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "apkG2", + "type": "tuple", + "internalType": "struct BN254.G2Point", + "components": [ + { + "name": "X", + "type": "uint256[2]", + "internalType": "uint256[2]" + }, + { + "name": "Y", + "type": "uint256[2]", + "internalType": "uint256[2]" + } + ] + }, + { + "name": "sigma", + "type": "tuple", + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "quorumApkIndices", + "type": "uint32[]", + "internalType": "uint32[]" + }, + { + "name": "totalStakeIndices", + "type": "uint32[]", + "internalType": "uint32[]" + }, + { + "name": "nonSignerStakeIndices", + "type": "uint32[][]", + "internalType": "uint32[][]" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" +}, +{ + "type": "function", + "name": "serviceManager", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" +}, +{ + "type": "function", + "name": "setStaleStakesForbidden", + "inputs": [ + { + "name": "value", + "type": "bool", + "internalType": "bool" + } + ], + "outputs": [], + "stateMutability": "nonpayable" +}, +{ + "type": "function", + "name": "stakeRegistry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IStakeRegistry" + } + ], + "stateMutability": "view" +}, +{ + "type": "function", + "name": "staleStakesForbidden", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" +}, +{ + "type": "function", + "name": "taskNumber", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" +}, +{ + "type": "function", + "name": "taskSuccesfullyChallenged", + "inputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" +}, +{ + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" +}, +{ + "type": "function", + "name": "trySignatureAndApkVerification", + "inputs": [ + { + "name": "msgHash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "apk", + "type": "tuple", + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "apkG2", + "type": "tuple", + "internalType": "struct BN254.G2Point", + "components": [ + { + "name": "X", + "type": "uint256[2]", + "internalType": "uint256[2]" + }, + { + "name": "Y", + "type": "uint256[2]", + "internalType": "uint256[2]" + } + ] + }, + { + "name": "sigma", + "type": "tuple", + "internalType": "struct BN254.G1Point", + "components": [ + { + "name": "X", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "Y", + "type": "uint256", + "internalType": "uint256" + } + ] + } + ], + "outputs": [ + { + "name": "pairingSuccessful", + "type": "bool", + "internalType": "bool" + }, + { + "name": "siganatureIsValid", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" +}, +{ + "type": "function", + "name": "unpause", + "inputs": [ + { + "name": "newPausedStatus", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" +}, +{ + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + } + ], + "anonymous": false +}, +{ + "type": "event", + "name": "NewTaskCreated", + "inputs": [ + { + "name": "taskIndex", + "type": "uint32", + "indexed": true, + "internalType": "uint32" + }, + { + "name": "task", + "type": "tuple", + "indexed": false, + "internalType": "struct IIncredibleSquaringTaskManager.Task", + "components": [ + { + "name": "numberToBeSquared", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "taskCreatedBlock", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "quorumNumbers", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "quorumThresholdPercentage", + "type": "uint32", + "internalType": "uint32" + } + ] + } + ], + "anonymous": false +}, +{ + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false +}, +{ + "type": "event", + "name": "Paused", + "inputs": [ + { + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newPausedStatus", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false +}, +{ + "type": "event", + "name": "StaleStakesForbiddenUpdate", + "inputs": [ + { + "name": "value", + "type": "bool", + "indexed": false, + "internalType": "bool" + } + ], + "anonymous": false +}, +{ + "type": "event", + "name": "TaskChallengedSuccessfully", + "inputs": [ + { + "name": "taskIndex", + "type": "uint32", + "indexed": true, + "internalType": "uint32" + }, + { + "name": "challenger", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false +}, +{ + "type": "event", + "name": "TaskChallengedUnsuccessfully", + "inputs": [ + { + "name": "taskIndex", + "type": "uint32", + "indexed": true, + "internalType": "uint32" + }, + { + "name": "challenger", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false +}, +{ + "type": "event", + "name": "TaskCompleted", + "inputs": [ + { + "name": "taskIndex", + "type": "uint32", + "indexed": true, + "internalType": "uint32" + } + ], + "anonymous": false +}, +{ + "type": "event", + "name": "TaskResponded", + "inputs": [ + { + "name": "taskResponse", + "type": "tuple", + "indexed": false, + "internalType": "struct IIncredibleSquaringTaskManager.TaskResponse", + "components": [ + { + "name": "referenceTaskIndex", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "numberSquared", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "taskResponseMetadata", + "type": "tuple", + "indexed": false, + "internalType": "struct IIncredibleSquaringTaskManager.TaskResponseMetadata", + "components": [ + { + "name": "taskResponsedBlock", + "type": "uint32", + "internalType": "uint32" + }, + { + "name": "hashOfNonSigners", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "anonymous": false +}, +{ + "type": "event", + "name": "Unpaused", + "inputs": [ + { + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newPausedStatus", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false +}, +{ + "type": "error", + "name": "BitmapValueTooLarge", + "inputs": [] +}, +{ + "type": "error", + "name": "BytesArrayLengthTooLong", + "inputs": [] +}, +{ + "type": "error", + "name": "BytesArrayNotOrdered", + "inputs": [] +}, +{ + "type": "error", + "name": "CurrentlyPaused", + "inputs": [] +}, +{ + "type": "error", + "name": "ECAddFailed", + "inputs": [] +}, +{ + "type": "error", + "name": "ECMulFailed", + "inputs": [] +}, +{ + "type": "error", + "name": "ExpModFailed", + "inputs": [] +}, +{ + "type": "error", + "name": "InputAddressZero", + "inputs": [] +}, +{ + "type": "error", + "name": "InputArrayLengthMismatch", + "inputs": [] +}, +{ + "type": "error", + "name": "InputEmptyQuorumNumbers", + "inputs": [] +}, +{ + "type": "error", + "name": "InputNonSignerLengthMismatch", + "inputs": [] +}, +{ + "type": "error", + "name": "InvalidBLSPairingKey", + "inputs": [] +}, +{ + "type": "error", + "name": "InvalidBLSSignature", + "inputs": [] +}, +{ + "type": "error", + "name": "InvalidNewPausedStatus", + "inputs": [] +}, +{ + "type": "error", + "name": "InvalidQuorumApkHash", + "inputs": [] +}, +{ + "type": "error", + "name": "InvalidReferenceBlocknumber", + "inputs": [] +}, +{ + "type": "error", + "name": "NonSignerPubkeysNotSorted", + "inputs": [] +}, +{ + "type": "error", + "name": "OnlyPauser", + "inputs": [] +}, +{ + "type": "error", + "name": "OnlyRegistryCoordinatorOwner", + "inputs": [] +}, +{ + "type": "error", + "name": "OnlyUnpauser", + "inputs": [] +}, +{ + "type": "error", + "name": "OperatorNotRegistered", + "inputs": [] +}, +{ + "type": "error", + "name": "ScalarTooLarge", + "inputs": [] +}, +{ + "type": "error", + "name": "StaleStakesForbidden", + "inputs": [] +} +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod IncredibleSquaringTaskManager { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x610140806040523461021357608081615142803803809161002082856102be565b833981010312610213578051906001600160a01b0382168083036102135760208201516001600160a01b03811693908481036102135760408401519363ffffffff8516850361021357606001516001600160a01b038116959086900361021357156102af5760805260a052604051636830483560e01b8152602081600481855afa90811561021f575f9161026c575b5060c052604051632efa2ca360e11b815290602090829060049082905afa90811561021f575f9161022a575b5060e05260c05160405163df5cf72360e01b815290602090829060049082906001600160a01b03165afa90811561021f575f916101d9575b50610100526101205260d180546001600160a01b031916919091179055604051614e4c90816102f682396080518181816102ca01528181610ea501528181611ad10152611e0e015260a051818181610a9a015281816118fe0152818161374f01528181613dc401528181613e9a015261442c015260c0518181816116db0152818161419c01526142e7015260e0518181816116970152818161367001526140d8015261010051818181611d0a0152613fad0152610120518181816106dd01526112f40152f35b90506020813d602011610217575b816101f4602093836102be565b8101031261021357516001600160a01b0381168103610213575f610113565b5f80fd5b3d91506101e7565b6040513d5f823e3d90fd5b90506020813d602011610264575b81610245602093836102be565b8101031261021357516001600160a01b0381168103610213575f6100db565b3d9150610238565b90506020813d6020116102a7575b81610287602093836102be565b8101031261021357516001600160a01b03811681036102135760046100af565b3d915061027a565b6339b190bb60e11b5f5260045ffd5b601f909101601f19168101906001600160401b038211908210176102e157604052565b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c8063136439dd1461029a5780631459457a14610295578063171f1d5b146102905780631ad43189146101e6578063245a7bfc1461028b5780632cb223d5146102865780632d89f6fc1461028157806331b36bd91461027c5780633563b0d1146102775780633998fdd314610272578063416c7e5e1461026d5780634d2b57fe146102685780634f739f7414610263578063595c6a671461025e5780635a2d7f02146102595780635ac86ab7146102545780635baec9a01461024f5780635c1556621461024a5780635c975abb146102455780635decc3f5146102405780635df459461461023b57806368304835146102365780636b532e9e146102315780636b92787e1461022c5780636d14a987146102275780636efb463614610222578063715018a61461021d57806372d18e8d1461020e5780637afa1eed14610218578063886f1195146102135780638b00ce7c1461020e5780638da5cb5b146102095780639b290e9814610204578063b98d0908146101ff578063ca8aa7c7146101fa578063cefdc1d4146101f5578063df5cf723146101f0578063f2fde38b146101eb578063f5c9899d146101e6578063f63c5bab146101e15763fabc1cbc146101dc575f80fd5b611de5565b611dca565b6106c1565b611d39565b611cf5565b611bb1565b611b72565b611b50565b611b28565b611b00565b611a71565b611abc565b611a94565b611a16565b611969565b6118e9565b61177b565b61170a565b6116c6565b611682565b611644565b611627565b6114ae565b6111c9565b610f1a565b610eed565b610e7a565b610dd3565b610bc8565b610a68565b610a36565b6109bc565b610812565b61077b565b610742565b610701565b61064f565b61036f565b3461035a57602036600319011261035a5760043560405163237dfb4760e11b8152336004820152906020826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156103555761032492610310915f91610326575b50611ee7565b61031f60665482811614611efd565b6145a5565b005b610348915060203d60201161034e575b61034081836104dc565b810190611ec7565b5f61030a565b503d610336565b611edc565b5f80fd5b6001600160a01b0381160361035a57565b3461035a5760a036600319011261035a5760043561038c8161035e565b61040060243561039b8161035e565b6044356103a78161035e565b606435906103b48261035e565b608435926103c18461035e565b5f54956103e660ff600889901c16158098819961047f575b811561045f575b50611f13565b866103f7600160ff195f5416175f55565b61044857611f76565b61040657005b61041461ff00195f54165f55565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989080602081015b0390a1005b61045a61010061ff00195f5416175f55565b611f76565b303b15915081610471575b505f6103e0565b60ff1660011490505f61046a565b600160ff82161091506103d9565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b038211176104bc57604052565b61048d565b608081019081106001600160401b038211176104bc57604052565b90601f801991011681019081106001600160401b038211176104bc57604052565b6040519061050d610100836104dc565b565b6040519061050d6040836104dc565b6040519061050d6060836104dc565b6040519061050d60a0836104dc565b9061050d60405192836104dc565b60409060e319011261035a5760405190610563826104a1565b60e4358252610104356020830152565b919082604091031261035a5760405161058b816104a1565b6020808294803584520135910152565b9080601f8301121561035a57604051916105b66040846104dc565b82906040810192831161035a57905b8282106105d25750505090565b81358152602091820191016105c5565b90608060631983011261035a576040516105fb816104a1565b6020610616829461060d81606461059b565b845260a461059b565b910152565b919060808382031261035a57602061061660405192610639846104a1565b60408496610647838261059b565b86520161059b565b3461035a5761012036600319011261035a57600435604036602319011261035a576106a76040918251610681816104a1565b60243581526044356020820152610697366105e2565b906106a13661054a565b9261202b565b8251911515825215156020820152f35b5f91031261035a57565b3461035a575f36600319011261035a57602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461035a575f36600319011261035a5760cd546040516001600160a01b039091168152602090f35b63ffffffff81160361035a57565b359061050d82610729565b3461035a57602036600319011261035a5763ffffffff60043561076481610729565b165f5260cb602052602060405f2054604051908152f35b3461035a57602036600319011261035a5763ffffffff60043561079d81610729565b165f5260ca602052602060405f2054604051908152f35b6001600160401b0381116104bc5760051b60200190565b90602080835192838152019201905f5b8181106107e85750505090565b82518452602093840193909201916001016107db565b90602061080f9281815201906107cb565b90565b3461035a57604036600319011261035a5760043561082f8161035e565b602435906001600160401b03821161035a573660238301121561035a5781600401359161085b836107b4565b9261086960405194856104dc565b8084526024602085019160051b8301019136831161035a57602401905b8282106108aa576108a661089a8686612195565b604051918291826107fe565b0390f35b6020809183356108b98161035e565b815201910190610886565b6001600160401b0381116104bc57601f01601f191660200190565b9291926108eb826108c4565b916108f960405193846104dc565b82948184528183011161035a578281602093845f960137010152565b9080602083519182815201916020808360051b8301019401925f915b83831061094057505050505090565b9091929394601f19828203018352855190602080835192838152019201905f905b8082106109805750505060208060019297019301930191939290610931565b909192602060606001926001600160601b0360408851868060a01b03815116845285810151868501520151166040820152019401920190610961565b3461035a57606036600319011261035a576004356109d98161035e565b6024356001600160401b03811161035a573660238201121561035a576108a691610a10610a229236906024816004013591016108df565b60443591610a1d83610729565b6123d3565b604051918291602083526020830190610915565b3461035a575f36600319011261035a5760d1546040516001600160a01b039091168152602090f35b8015150361035a57565b3461035a57602036600319011261035a57600435610a8581610a5e565b604051638da5cb5b60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610355575f91610afa575b506001600160a01b03163303610aeb5761032490614a80565b637070f3b160e11b5f5260045ffd5b610b1c915060203d602011610b22575b610b1481836104dc565b81019061225a565b5f610ad2565b503d610b0a565b9080601f8301121561035a578135610b40816107b4565b92610b4e60405194856104dc565b81845260208085019260051b82010192831161035a57602001905b828210610b765750505090565b8135815260209182019101610b69565b60206040818301928281528451809452019201905f5b818110610ba95750505090565b82516001600160a01b0316845260209384019390920191600101610b9c565b3461035a57604036600319011261035a57600435610be58161035e565b6024356001600160401b03811161035a57610c04903690600401610b29565b610c0e8151612133565b916001600160a01b03165f5b8251811015610cab57806020610c33610c539386612172565b5160405180948192630a5aec1960e21b8352600483019190602083019252565b0381865afa91821561035557600192610c87915f91610c8d575b50610c788388612172565b6001600160a01b039091169052565b01610c1a565b610ca5915060203d8111610b2257610b1481836104dc565b5f610c6d565b604051806108a68682610b86565b9181601f8401121561035a578235916001600160401b03831161035a576020838186019501011161035a57565b90602080835192838152019201905f5b818110610d035750505090565b825163ffffffff16845260209384019390920191600101610cf6565b90602082526060610d6d610d58610d4284516080602088015260a0870190610ce6565b6020850151868203601f19016040880152610ce6565b6040840151858203601f190184870152610ce6565b910151916080601f1982840301910152815180825260208201916020808360051b8301019401925f915b838310610da657505050505090565b9091929394602080610dc4600193601f198682030187528951610ce6565b97019301930191939290610d97565b3461035a57608036600319011261035a57600435610df08161035e565b60243590610dfd82610729565b6044356001600160401b03811161035a57610e1c903690600401610cb9565b91606435926001600160401b03841161035a573660238501121561035a578360040135926001600160401b03841161035a573660248560051b8701011161035a576108a6956024610e6e9601936128e7565b60405191829182610d1f565b3461035a575f36600319011261035a5760405163237dfb4760e11b81523360048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561035557610ee5915f916103265750611ee7565b610324614571565b3461035a575f36600319011261035a57602060405167016345785d8a00008152f35b60ff81160361035a57565b3461035a57602036600319011261035a576020600160ff600435610f3d81610f0f565b161b806066541614604051908152f35b9081608091031261035a5790565b604090602319011261035a57602490565b9080601f8301121561035a578135610f83816107b4565b92610f9160405194856104dc565b81845260208085019260051b82010192831161035a57602001905b828210610fb95750505090565b602080918335610fc881610729565b815201910190610fac565b81601f8201121561035a578035610fe9816107b4565b92610ff760405194856104dc565b81845260208085019260061b8401019281841161035a57602001915b838310611021575050505090565b60206040916110308486610573565b815201920191611013565b9080601f8301121561035a578135611052816107b4565b9261106060405194856104dc565b81845260208085019260051b8201019183831161035a5760208201905b83821061108c57505050505090565b81356001600160401b03811161035a576020916110ae87848094880101610f6c565b81520191019061107d565b9190916101808184031261035a576110cf6104fd565b9281356001600160401b03811161035a57816110ec918401610f6c565b845260208201356001600160401b03811161035a578161110d918401610fd3565b602085015260408201356001600160401b03811161035a5781611131918401610fd3565b6040850152611143816060840161061b565b60608501526111558160e08401610573565b60808501526101208201356001600160401b03811161035a578161117a918401610f6c565b60a08501526101408201356001600160401b03811161035a578161119f918401610f6c565b60c08501526101608201356001600160401b03811161035a576111c2920161103b565b60e0830152565b3461035a57608036600319011261035a576004356001600160401b03811161035a576111f9903690600401610f4d565b61120236610f5b565b906064356001600160401b03811161035a576112229036906004016110b9565b60cd549092906001600160a01b0316330361143057611245602083949301612d4f565b916113486112566040860186612d59565b9290946112b661126860608901612d4f565b9760405161128c8161127e602082019485612d8b565b03601f1981018352826104dc565b5190206112af61129b88612d4f565b63ffffffff165f5260ca60205260405f2090565b5414612e12565b6112e06112d96112c587612d4f565b63ffffffff165f5260cb60205260405f2090565b5415612e84565b8363ffffffff43169661132a6113226113197f000000000000000000000000000000000000000000000000000000000000000086612f15565b63ffffffff1690565b891115612f2f565b60405160208101906113408161127e8b85612faf565b519020613ce7565b919060ff5f9616955b8281106113ce577f349c1ee60e4e8972ee9dba642c1774543d5c4136879b7f4caaf04bf81a487a2a86868661139361138761050f565b63ffffffff9094168452565b602083015260405160208101906113af8161127e868686613092565b5190206113be6112c583612d4f565b5561044360405192839283613092565b8061142a6114066114016113f56113e86001968851612172565b516001600160601b031690565b6001600160601b031690565b612fbf565b6114236113f58b61141e6113e88760208b0151612172565b612ffe565b1115613021565b01611351565b60405162461bcd60e51b815260206004820152601d60248201527f41676772656761746f72206d757374206265207468652063616c6c65720000006044820152606490fd5b60206040818301928281528451809452019201905f5b8181106114985750505090565b825184526020938401939092019160010161148b565b3461035a57606036600319011261035a576004356114cb8161035e565b6024356001600160401b03811161035a576114ea903690600401610b29565b604435916114f783610729565b6040516361c8a12f60e11b8152906001600160a01b03165f828061151f8688600484016130bc565b0381845afa918215610355575f92611603575b5061153d8351612133565b935f5b84518110156115f5576115538186612172565b519060208361156f6115658489612172565b5163ffffffff1690565b6040516304ec635160e01b8152600481019590955263ffffffff918216602486015216604484015282606481875afa8015610355576001925f916115c7575b50828060c01b03166115c08289612172565b5201611540565b6115e8915060203d81116115ee575b6115e081836104dc565b81019061285e565b5f6115ae565b503d6115d6565b604051806108a68882611475565b6116209192503d805f833e61161881836104dc565b81019061272d565b905f611532565b3461035a575f36600319011261035a576020606654604051908152f35b3461035a57602036600319011261035a5763ffffffff60043561166681610729565b165f5260cc602052602060ff60405f2054166040519015158152f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a5760c036600319011261035a576004356001600160401b03811161035a5761173a903690600401610f4d565b61174336610f5b565b90604036606319011261035a5760a4356001600160401b03811161035a57610324926117756064923690600401610fd3565b9261350a565b3461035a57606036600319011261035a5760243560043561179b82610729565b6044356001600160401b03811161035a576117ba903690600401610cb9565b60ce5491939092916001600160a01b0316330361189a57610324936118849361180461180b936117e8613ae9565b9586524363ffffffff16602087015263ffffffff166060860152565b36916108df565b604082015260405160208101906118268161127e8585613b0d565b51902061183b61129b60c95463ffffffff1690565b5560c95463ffffffff16907f1695b8d06ec800b4615e745cfb5bd00c1f2875615d42925c3b5afa543bb24c486040518061187c63ffffffff86169482613b0d565b0390a2612ee5565b63ffffffff1663ffffffff1960c954161760c955565b60405162461bcd60e51b815260206004820152602160248201527f5461736b2067656e657261746f72206d757374206265207468652063616c6c656044820152603960f91b6064820152608490fd5b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b90602080835192838152019201905f5b81811061194a5750505090565b82516001600160601b031684526020938401939092019160010161193d565b3461035a57608036600319011261035a576004356024356001600160401b03811161035a5761199c903690600401610cb9565b90916044356119aa81610729565b606435926001600160401b03841161035a57611a0c946119d16119d79536906004016110b9565b93613ce7565b6040519283926040845260206119f88251604080880152608087019061192d565b910151848203603f1901606086015261192d565b9060208301520390f35b3461035a575f36600319011261035a57611a2e614c5c565b603380546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461035a575f36600319011261035a57602063ffffffff60c95416604051908152f35b3461035a575f36600319011261035a5760ce546040516001600160a01b039091168152602090f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a575f36600319011261035a576033546040516001600160a01b039091168152602090f35b3461035a575f36600319011261035a5760cf546040516001600160a01b039091168152602090f35b3461035a575f36600319011261035a57602060ff609754166040519015158152f35b3461035a575f36600319011261035a5760d0546040516001600160a01b039091168152602090f35b60409061080f939281528160208201520190610915565b3461035a57606036600319011261035a57600435611bce8161035e565b602435604435611bdd81610729565b611c1e611be8612111565b9280611bf385612165565b526040516361c8a12f60e11b81526001600160a01b0386169490925f918491829187600484016130bc565b0381875afa9384156103555783611c48611319611565611c7d986020975f91611cdb575b50612165565b92604051968794859384936304ec635160e01b85526004850163ffffffff604092959493606083019683521660208201520152565b03915afa801561035557611cac925f91611cbc575b506001600160c01b031692611ca684614cb4565b906123d3565b906108a660405192839283611b9a565b611cd5915060203d6020116115ee576115e081836104dc565b5f611c92565b611cef91503d805f833e61161881836104dc565b5f611c42565b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a57602036600319011261035a57600435611d568161035e565b611d5e614c5c565b6001600160a01b03811615611d7657610324906145d7565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b3461035a575f36600319011261035a57602060405160648152f35b3461035a57602036600319011261035a5760043560405163755b36bd60e11b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610355575f91611ea8575b506001600160a01b03163303611e9957611e67606654198219811614611efd565b806066556040519081527f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c60203392a2005b63794821ff60e01b5f5260045ffd5b611ec1915060203d602011610b2257610b1481836104dc565b5f611e46565b9081602091031261035a575161080f81610a5e565b6040513d5f823e3d90fd5b15611eee57565b631d77d47760e21b5f5260045ffd5b15611f0457565b63c61dca5d60e01b5f5260045ffd5b15611f1a57565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b611f7f906145d7565b60018060a01b03166001600160601b0360a01b60cd54161760cd5560018060a01b03166001600160601b0360a01b60ce54161760ce5560018060a01b03166001600160601b0360a01b60d054161760d05560018060a01b03166001600160601b0360a01b60cf54161760cf55565b634e487b7160e01b5f52603260045260245ffd5b9060028110156120125760051b0190565b611fed565b634e487b7160e01b5f52601260045260245ffd5b6121076120e461210d956120de6120d785875160208901518a515160208c51015160208d016020815151915101519189519360208b0151956040519760208901998a5260208a015260408901526060880152608087015260a086015260c085015260e08401526101008301526120ae81610120840103601f1981018352826104dc565b5190207f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001900690565b8096614663565b906146a9565b926120de6120f96120f361470b565b94614802565b9161210261491e565b614663565b91614952565b9091565b6040805190919061212283826104dc565b6001815291601f1901366020840137565b9061213d826107b4565b61214a60405191826104dc565b828152809261215b601f19916107b4565b0190602036910137565b8051156120125760200190565b80518210156120125760209160051b010190565b9081602091031261035a575190565b9190916121a28351612133565b925f5b8151811015612255578060206121ce6121c16121f79486612172565b516001600160a01b031690565b6040516309aa152760e11b81526001600160a01b03909116600482015292839081906024820190565b03816001600160a01b0388165afa8015610355576001925f91612227575b506122208288612172565b52016121a5565b612248915060203d811161224e575b61224081836104dc565b810190612186565b5f612215565b503d612236565b505050565b9081602091031261035a575161080f8161035e565b90612279826107b4565b61228660405191826104dc565b82815260208193612299601f19916107b4565b0191015f5b8281106122aa57505050565b60608282015260200161229e565b908151811015612012570160200190565b60208183031261035a578051906001600160401b03821161035a57019080601f8301121561035a5781516122fc816107b4565b9261230a60405194856104dc565b81845260208085019260051b82010192831161035a57602001905b8282106123325750505090565b8151815260209182019101612325565b9061234c826107b4565b61235960405191826104dc565b828152809261236a601f19916107b4565b015f5b81811061237957505050565b6040519060608201918083106001600160401b038411176104bc576020926040525f81525f838201525f60408201528282860101520161236d565b9081602091031261035a57516001600160601b038116810361035a5790565b604051636830483560e01b815293919291906001600160a01b0316602085600481845afa948515610355575f956126e8575b50604051634f4c91e160e11b815294602086600481855afa918215610355576004965f936126c6575b5060209060405197888092632efa2ca360e11b82525afa958615610355575f966126a5575b50612461859392955161226f565b945f935b805185101561269b5761249261248c61247e87846122b8565b516001600160f81b03191690565b60f81c90565b604051638902624560e01b815260ff8216600482015263ffffffff88166024820152909490925f846044816001600160a01b0385165afa938415610355575f94612677575b506124e28451612342565b6124ec888b612172565b526124f7878a612172565b505f5b8451811015612666578060206125136125359388612172565b518d60405180809681946308f6629d60e31b8352600483019190602083019252565b03916001600160a01b03165afa918215610355575f92612646575b5061255b8187612172565b518a60208a61256a858b612172565b5160405163fa28c62760e01b8152600481019190915260ff91909116602482015263ffffffff929092166044830152816064816001600160a01b038d165afa938415610355576125fd8c8f6125f860019861260f9789975f92612616575b506125e36125d461051e565b6001600160a01b039098168852565b60208701526001600160601b03166040860152565b612172565b51906126098383612172565b52612172565b50016124fa565b61263891925060203d811161263f575b61263081836104dc565b8101906123b4565b905f6125c8565b503d612626565b61265f91925060203d8111610b2257610b1481836104dc565b905f612550565b506001909601959094509150612465565b6126949194503d805f833e61268c81836104dc565b8101906122c9565b925f6124d7565b5050509350505090565b6126bf91965060203d602011610b2257610b1481836104dc565b945f612453565b60209193506126e190823d8411610b2257610b1481836104dc565b929061242e565b61270291955060203d602011610b2257610b1481836104dc565b935f612405565b60405190612716826104c1565b606080838181528160208201528160408201520152565b60208183031261035a578051906001600160401b03821161035a57019080601f8301121561035a578151612760816107b4565b9261276e60405194856104dc565b81845260208085019260051b82010192831161035a57602001905b8282106127965750505090565b6020809183516127a581610729565b815201910190612789565b63ffffffff909116815260406020820181905281018390526001600160fb1b03831161035a5760609260051b809284830137010190565b908060209392818452848401375f828201840152601f01601f1916010190565b60409063ffffffff61080f959316815281602082015201916127e7565b634e487b7160e01b5f52601160045260245ffd5b60ff1660ff81146128495760010190565b612824565b91908110156120125760051b0190565b9081602091031261035a57516001600160c01b038116810361035a5790565b1561288457565b6325ec6c1f60e01b5f5260045ffd5b90821015612012570190565b9081602091031261035a575161080f81610729565b5f1981146128495760010190565b916128e060209263ffffffff929695966040865260408601916127e7565b9416910152565b95939495929091926128f7612709565b50604051636830483560e01b8152936001600160a01b03919091169190602085600481865afa948515610355575f95612d2e575b50612934612709565b946040516361c8a12f60e11b81525f81806129548d8d8b600485016127b0565b0381885afa908115610355575f91612d14575b5086526040516340e03a8160e11b81526001600160a01b039190911692905f818061299785878b60048501612807565b0381875afa908115610355575f91612cfa575b5060408701526129b98161226f565b9860608701998a525f5b60ff811683811015612c4557885f6129ec838f6129df88612133565b9051906126098383612172565b505f8a868f5b818410612a6f575050505090508c612a0982612133565b915f5b818110612a3657505091612a2b91612a31949351906126098383612172565b50612838565b6129c3565b80612a69612a54611565600194612a4e8a8951612172565b51612172565b612a5e8388612172565b9063ffffffff169052565b01612a0c565b61156584612a848160209695612a8c9561284e565b359751612172565b6040516304ec635160e01b8152600481019690965263ffffffff9182166024870152166044850152836064818d5afa801561035557888f888a918f94612b316001612b2481938d809d5f92612c19575b5061248c612b00612b0e92612af9878060c01b038616151561287d565b8b8d612893565b356001600160f81b03191690565b6001600160c01b0391821660ff919091161c1690565b166001600160c01b031690565b14612b4d575b5050505050600191925001908a918a868f6129f2565b8597612b6f93612b68602097999861248c95612b009561284e565b3595612893565b60405163dd9846b960e01b8152600481019290925260ff16602482015263ffffffff939093166044840152826064818c5afa908115610355578f612bcd90612bd29383886001975f93612be1575b50612a4e90612a5e939451612172565b6128b4565b905082918a888f888a91612b37565b612a5e935090612c0a612a4e9260203d8111612c12575b612c0281836104dc565b81019061289f565b935090612bbd565b503d612bf8565b612b0e919250612b00612c3c61248c9260203d81116115ee576115e081836104dc565b93925050612adc565b505050929095975060049496506020915060405194858092632efa2ca360e11b82525afa90811561035557612c9b945f948593612cd9575b5060405163354952a360e21b815295869485938493600485016128c2565b03916001600160a01b03165afa908115610355575f91612cbf575b50602082015290565b612cd391503d805f833e61161881836104dc565b5f612cb6565b612cf391935060203d602011610b2257610b1481836104dc565b915f612c7d565b612d0e91503d805f833e61161881836104dc565b5f6129aa565b612d2891503d805f833e61161881836104dc565b5f612967565b612d4891955060203d602011610b2257610b1481836104dc565b935f61292b565b3561080f81610729565b903590601e198136030182121561035a57018035906001600160401b03821161035a5760200191813603831361035a57565b602081528135602082015263ffffffff6020830135612da981610729565b1660408201526040820135601e198336030181121561035a578201906020823592016001600160401b03831161035a57823603811361035a57612e076060612e0060809361080f96858488015260a08701916127e7565b9501610737565b63ffffffff16910152565b15612e1957565b60405162461bcd60e51b815260206004820152603d60248201527f737570706c696564207461736b20646f6573206e6f74206d617463682074686560448201527f206f6e65207265636f7264656420696e2074686520636f6e74726163740000006064820152608490fd5b15612e8b57565b60405162461bcd60e51b815260206004820152602c60248201527f41676772656761746f722068617320616c726561647920726573706f6e64656460448201526b20746f20746865207461736b60a01b6064820152608490fd5b63ffffffff60019116019063ffffffff821161284957565b63ffffffff60649116019063ffffffff821161284957565b9063ffffffff8091169116019063ffffffff821161284957565b15612f3657565b60405162461bcd60e51b815260206004820152602d60248201527f41676772656761746f722068617320726573706f6e64656420746f207468652060448201526c7461736b20746f6f206c61746560981b6064820152608490fd5b6020809163ffffffff8135612fa581610729565b1684520135910152565b60408101929161050d9190612f91565b9060648202918083046064149015171561284957565b9060068202918083046006149015171561284957565b8181029291811591840414171561284957565b906001600160601b03809116911602906001600160601b03821691820361284957565b1561302857565b608460405162461bcd60e51b815260206004820152604060248201527f5369676e61746f7269657320646f206e6f74206f776e206174206c656173742060448201527f7468726573686f6c642070657263656e74616765206f6620612071756f72756d6064820152fd5b90929160206060916130a8846080810197612f91565b63ffffffff81511660408501520151910152565b60409063ffffffff61080f949316815281602082015201906107cb565b156130e057565b60405162461bcd60e51b815260206004820152602160248201527f5461736b206861736e2774206265656e20726573706f6e64656420746f2079656044820152601d60fa1b6064820152608490fd5b9092916020606091613145846080810197612f91565b63ffffffff813561315581610729565b1660408501520135910152565b1561316957565b60405162461bcd60e51b815260206004820152603d60248201527f5461736b20726573706f6e736520646f6573206e6f74206d617463682074686560448201527f206f6e65207265636f7264656420696e2074686520636f6e74726163740000006064820152608490fd5b156131db57565b60405162461bcd60e51b815260206004820152604360248201527f54686520726573706f6e736520746f2074686973207461736b2068617320616c60448201527f7265616479206265656e206368616c6c656e676564207375636365737366756c606482015262363c9760e91b608482015260a490fd5b1561325957565b60405162461bcd60e51b815260206004820152603760248201527f546865206368616c6c656e676520706572696f6420666f72207468697320746160448201527f736b2068617320616c726561647920657870697265642e0000000000000000006064820152608490fd5b60049163ffffffff60e01b9060e01b1681520160208251919201905f5b8181106132ee5750505090565b82518452602093840193909201916001016132e1565b1561330b57565b60405162461bcd60e51b815260206004820152605060248201527f546865207075626b657973206f66206e6f6e2d7369676e696e67206f7065726160448201527f746f727320737570706c69656420627920746865206368616c6c656e6765722060648201526f30b932903737ba1031b7b93932b1ba1760811b608482015260a490fd5b60208183031261035a578051906001600160401b03821161035a57019080601f8301121561035a5781516133c2816107b4565b926133d060405194856104dc565b81845260208085019260051b82010192831161035a57602001905b8282106133f85750505090565b6020809183516134078161035e565b8152019101906133eb565b604051906134216040836104dc565b601282527139b630b9b42fba3432afb7b832b930ba37b960711b6020830152565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b91906020835260c083019260018060a01b03825116602082015263ffffffff602083015116604082015260408201519360a060608301528451809152602060e083019501905f5b8181106134eb5750505060806134d661080f94956060850151601f1985830301848601526107cb565b9201519060a0601f1982850301910152613442565b82516001600160a01b03168752602096870196909201916001016134ad565b9392919092600161351a85612d4f565b9460206135d6883561354561353d8a63ffffffff165f5260cb60205260405f2090565b5415156130d9565b6135806135608a63ffffffff165f5260cb60205260405f2090565b54604051858101906135778161127e8d8b8661312f565b51902014613162565b6135ab6135a561359e8b63ffffffff165f5260cc60205260405f2090565b5460ff1690565b156131d4565b6135d06135c26113196135bd8a612d4f565b612efd565b63ffffffff43161115613252565b80612feb565b9101351414613ab7576135e98351612133565b935f5b8451811015613629578061361861360560019388612172565b5180515f526020015160205260405f2090565b6136228289612172565b52016135ec565b5090929391946136636020820196602061364289612d4f565b6040516136578161127e8a86830195866132c4565b51902091013514613304565b61366d8551612133565b957f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316945f5b875181101561371d578060206136b46136d49389612172565b516040518094819263745dcd7360e11b8352600483019190602083019252565b03818b5afa918215610355576001926136f9915f916136ff575b50610c78838d612172565b0161369b565b613717915060203d8111610b2257610b1481836104dc565b5f6136ee565b509296955092509261377c61374561374d604087019561373d8789612d59565b939091612d4f565b9236916108df565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166123d3565b905f915b8051831015613a59575f935b6137968483612172565b5151851015613a4c576137d6986020806137b488612a4e8988612172565b510151604051809c81926308f6629d60e31b8352600483019190602083019252565b0381875afa998a15610355575f9a613a2c575b505f5b8951811015613a1b576138116138056121c1838d612172565b6001600160a01b031690565b6001600160a01b038c1614613828576001016137ec565b50969790916138e4959693925b5f8a61388f60ff61386761248c612b008c6138618d61385b60d15460018060a01b031690565b98612d59565b90612893565b61388161387261050f565b6001600160a01b039095168552565b1663ffffffff166020830152565b60d0546138a690613805906001600160a01b031681565b60405163105dea1f60e21b815282516001600160a01b0316600482015260209092015163ffffffff1660248301529098899190829081906044820190565b03915afa968715610355575f976139f7575b506139018751612133565b985f5b8a5181101561392a578067016345785d8a00006139236001938e612172565b5201613904565b509a929998909661396860ff61394f61248c612b008b8f8c9f999b9c61386191612d59565b61395a6125d461052d565b1663ffffffff166020860152565b6040840152606083015261397a613412565b608083015260cf5461399690613805906001600160a01b031681565b803b1561035a57604051636a669b4160e01b8152925f9184918290849082906139c29060048301613466565b03925af1918215610355576001926139dd575b50019361378c565b806139eb5f6139f1936104dc565b806106b7565b5f6139d5565b613a149197503d805f833e613a0c81836104dc565b81019061338f565b955f6138f6565b50969790916138e495969392613835565b613a45919a5060203d8111610b2257610b1481836104dc565b985f6137e9565b9350600190920191613780565b5050509392505050613a89613a7c8263ffffffff165f5260cc60205260405f2090565b805460ff19166001179055565b63ffffffff3391167fc20d1bb0f1623680306b83d4ff4bb99a2beb9d86d97832f3ca40fd13a29df1ec5f80a3565b9350505063ffffffff3391167ffd3e26beeb5967fc5a57a0446914eabc45b4aa474c67a51b4b5160cac60ddb055f80a3565b60405190613af6826104c1565b5f6060838281528260208201528160408201520152565b602081528151602082015263ffffffff6020830151166040820152608063ffffffff6060613b486040860151848387015260a0860190613442565b9401511691015290565b60405190613b5f826104a1565b60606020838281520152565b15613b7257565b62f8202d60e51b5f5260045ffd5b15613b8757565b6343714afd60e01b5f5260045ffd5b15613b9d57565b635f832f4160e01b5f5260045ffd5b15613bb357565b634b874f4560e01b5f5260045ffd5b9081602091031261035a575161080f81610f0f565b5f1981019190821161284957565b15613bec57565b633fdc650560e21b5f5260045ffd5b906001820180921161284957565b906002820180921161284957565b906003820180921161284957565b906004820180921161284957565b906005820180921161284957565b9190820180921161284957565b15613c5557565b63affc5edb60e01b5f5260045ffd5b9081602091031261035a575167ffffffffffffffff198116810361035a5790565b15613c8c57565b63e1310aed60e01b5f5260045ffd5b906001600160601b03809116911603906001600160601b03821161284957565b15613cc257565b6367988d3360e01b5f5260045ffd5b15613cd857565b63ab1b236b60e01b5f5260045ffd5b949392909193613cf5613b52565b50613d01851515613b6b565b604084015151851480614563575b80614555575b80614547575b613d2490613b80565b613d3660208501515185515114613b96565b613d4d63ffffffff431663ffffffff841610613bac565b613d5561050f565b5f81525f602082015292613d67613b52565b613d7087612133565b6020820152613d7e87612133565b8152613d88613b52565b92613d97602088015151612133565b8452613da7602088015151612133565b602085810191909152604051639aa1653d60e01b815290816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561035557613e10915f91614518575b50613e0b368b876108df565b614abe565b985f965b60208901518051891015613f6f57602088613e646115658c613e5c8f96868e613e41613605868095612172565b613e4e8484840151612172565b5282613f3c575b0151612172565b519551612172565b6040516304ec635160e01b8152600481019490945263ffffffff9182166024850152166044830152816064816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa918215610355576120de8a613f118f613f0a8f8460208f92613f0193613ef98460019e613f179e5f91613f1f575b508f8060c01b03169251612172565b520151612172565b51938d51612172565b5116614ae9565b90614b1a565b970196613e14565b613f369150863d81116115ee576115e081836104dc565b5f613eea565b613f6a613f4c8484840151612172565b51613f6384840151613f5d87613bd7565b90612172565b5110613be5565b613e55565b50909597949650613f84919893929950614bd7565b91613f9160975460ff1690565b908115614510576040516318891fd760e31b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610355575f916144f1575b5091905b5f925b8184106140425750505050509261402961402461401d61403c958561127e986080606060209901519201519261202b565b9190613cbb565b613cd1565b01516040519283916020830195866132c4565b51902090565b92989596909399919794878b888c888d6143eb575b6115658260a061409761248c612b008461409f976140916140836136058f9c604060209f9e0151612172565b67ffffffffffffffff191690565b9b612893565b970151612172565b604051631a2f32ab60e21b815260ff95909516600486015263ffffffff9182166024860152166044840152826064816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa908115610355576141636115658f958f9061415b8f978f96848f61415560c09661414e848f60209f90613e55612b009960409361248c9c5f916143bd575b5067ffffffffffffffff19918216911614613c85565b51906146a9565b9c612893565b960151612172565b604051636414a62b60e11b815260ff94909416600485015263ffffffff9182166024850152166044830152816064816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa908115610355576141f0918c8f925f92614399575b5060206141e292930151612172565b906001600160601b03169052565b6142108c6141e28c6142096113e8826020860151612172565b9251612172565b5f985f5b60208a015151811015614380578b8d6142528961424561248c612b00868f8961423d9151612172565b519487612893565b60ff161c60019081161490565b614261575b5050600101614214565b8a8a6142e3859f948f9686612a4e8f9360e061429a61156595602061429261248c612b00839f6142a39c8991612893565b9a0151612172565b519b0151612172565b60405163795f4a5760e11b815260ff909316600484015263ffffffff93841660248401526044830196909652919094166064850152839081906084820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610355578f61434f908f936001959486955f9261435a575b506143496141e2929351936143446113e88487612172565b613c9b565b92612172565b019a90508b8d614257565b6141e292506143796143499160203d811161263f5761263081836104dc565b925061432c565b5093919796996001919699509a94929a01929190613fec565b6141e292506143b6602091823d811161263f5761263081836104dc565b92506141d3565b60206143de92503d81116143e4575b6143d681836104dc565b810190613c64565b5f614138565b503d6143cc565b6144289450614405925061248c91612b0091602095612893565b60405163124d062160e11b815260ff909116600482015291829081906024820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156103555760208961409f8f938f60a08f9761248c612b008f8f906140916140836136058f60408b96918f88936115659f6144ac906144b2936140979f5f926144c8575b5063ffffffff809116931690613c41565b11613c4e565b5050505050509750505050505092935050614057565b602063ffffffff92935082916144e9913d811161224e5761224081836104dc565b92915061449b565b61450a915060203d602011612c1257612c0281836104dc565b5f613fe5565b5f9190613fe9565b61453a915060203d602011614540575b61453281836104dc565b810190613bc2565b5f613dff565b503d614528565b5060e0840151518514613d1b565b5060c0840151518514613d15565b5060a0840151518514613d0f565b5f196066556040515f1981527fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d60203392a2565b806066556040519081527fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d60203392a2565b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b6040519061462c826104a1565b5f6020838281520152565b6040519061018061464881846104dc565b368337565b6040519061465c6020836104dc565b6020368337565b9190604090606061467261461f565b948592602085519261468485856104dc565b8436853780518452015160208301528482015260076107cf195a01fa156146a757565bfe5b6020929160806040926146ba61461f565b958693818651936146cb86866104dc565b85368637805185520151828401528051868401520151606082015260066107cf195a01fa80156146a757156146fc57565b63d4b68fd760e01b5f5260045ffd5b604051614717816104a1565b604090815161472683826104dc565b823682378152602082519161473b84846104dc565b833684370152805161474d82826104dc565b7f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed60208201528151906147a383836104dc565b7f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208301526147f8835193846104dc565b8252602082015290565b5f516020614df75f395f51905f529061481961461f565b505f919006602060c0835b614919575f935f516020614df75f395f51905f526003818681818009090860405161484f85826104dc565b8436823784818560405161486382826104dc565b813682378381528360208201528360408201528560608201527f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260808201525f516020614df75f395f51905f5260a082015260056107cf195a01fa80156146a7576148cd90614de0565b5191614919575f516020614df75f395f51905f528280091461490457505f516020614df75f395f51905f5260015f94089293614824565b9293505061491061050f565b92835282015290565b612017565b61492661461f565b50604051614933816104a1565b600181526002602082015290565b90600c8110156120125760051b0190565b93929091614960604061053c565b9485526020850152614972604061053c565b9182526020820152614982614637565b925f5b600281106149af5750505060206101809261499e61464d565b93849160086201d4c0fa9151151590565b806149bb600192612fd5565b6149c58285612001565b51516149d18289614941565b5260206149de8386612001565b5101516149f36149ed83613bfb565b89614941565b526149fe8286612001565b515151614a0d6149ed83613c09565b52614a23614a1b8387612001565b515160200190565b51614a306149ed83613c17565b526020614a3d8387612001565b51015151614a4d6149ed83613c25565b52614a79614a73614a6c6020614a63868a612001565b51015160200190565b5192613c33565b88614941565b5201614985565b60207f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc91151560ff196097541660ff821617609755604051908152a1565b906001614acc60ff93614d68565b928392161b1115614ada5790565b63ca95733360e01b5f5260045ffd5b805f915b614af5575090565b5f1981018181116128495761ffff9116911661ffff8114612849576001019080614aed565b90614b2361461f565b5061ffff811690610200821015614bc85760018214614bc357614b4461050f565b5f81525f602082015292906001905f925b61ffff8316851015614b6957505050505090565b600161ffff831660ff86161c811614614ba3575b6001614b99614b8e8360ff946146a9565b9460011b61fffe1690565b9401169291614b55565b946001614b99614b8e614bb88960ff956146a9565b989350505050614b7d565b505090565b637fc4ea7d60e11b5f5260045ffd5b614bdf61461f565b50805190811580614c50575b15614c0c575050604051614c006040826104dc565b5f81525f602082015290565b60205f516020614df75f395f51905f52910151065f516020614df75f395f51905f52035f516020614df75f395f51905f52811161284957604051916147f8836104a1565b50602081015115614beb565b6033546001600160a01b03163303614c7057565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b61ffff614cc082614ae9565b16614cca816108c4565b90614cd860405192836104dc565b808252614ce7601f19916108c4565b013660208301375f5f5b8251821080614d47575b15614d40576001811b8416614d19575b614d14906128b4565b614cf1565b906001614d149160ff60f81b8460f81b165f1a614d3682876122b8565b5301919050614d0b565b5050905090565b506101008110614cfb565b15614d5957565b631019106960e31b5f5260045ffd5b90610100825111614dd157815115614dcc57602082015160019060f81c81901b5b8351821015614dc757600190614db2614da861248c61247e86896122b8565b60ff600191161b90565b90614dbe818311614d52565b17910190614d89565b925050565b5f9150565b637da54e4760e11b5f5260045ffd5b15614de757565b63d51edae360e01b5f5260045ffdfe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a2646970667358221220bc7e56e7001d31fed036cf53564fe2861a94feeed917b3c5dc5c111a0d36872164736f6c634300081b0033 + /// ``` + #[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\x02\x13W`\x80\x81aQB\x808\x03\x80\x91a\0 \x82\x85a\x02\xBEV[\x839\x81\x01\x03\x12a\x02\x13W\x80Q\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x80\x83\x03a\x02\x13W` \x82\x01Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x93\x90\x84\x81\x03a\x02\x13W`@\x84\x01Q\x93c\xFF\xFF\xFF\xFF\x85\x16\x85\x03a\x02\x13W``\x01Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x95\x90\x86\x90\x03a\x02\x13W\x15a\x02\xAFW`\x80R`\xA0R`@Qch0H5`\xE0\x1B\x81R` \x81`\x04\x81\x85Z\xFA\x90\x81\x15a\x02\x1FW_\x91a\x02lW[P`\xC0R`@Qc.\xFA,\xA3`\xE1\x1B\x81R\x90` \x90\x82\x90`\x04\x90\x82\x90Z\xFA\x90\x81\x15a\x02\x1FW_\x91a\x02*W[P`\xE0R`\xC0Q`@Qc\xDF\\\xF7#`\xE0\x1B\x81R\x90` \x90\x82\x90`\x04\x90\x82\x90`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x02\x1FW_\x91a\x01\xD9W[Pa\x01\0Ra\x01 R`\xD1\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x91\x90\x91\x17\x90U`@QaNL\x90\x81a\x02\xF6\x829`\x80Q\x81\x81\x81a\x02\xCA\x01R\x81\x81a\x0E\xA5\x01R\x81\x81a\x1A\xD1\x01Ra\x1E\x0E\x01R`\xA0Q\x81\x81\x81a\n\x9A\x01R\x81\x81a\x18\xFE\x01R\x81\x81a7O\x01R\x81\x81a=\xC4\x01R\x81\x81a>\x9A\x01RaD,\x01R`\xC0Q\x81\x81\x81a\x16\xDB\x01R\x81\x81aA\x9C\x01RaB\xE7\x01R`\xE0Q\x81\x81\x81a\x16\x97\x01R\x81\x81a6p\x01Ra@\xD8\x01Ra\x01\0Q\x81\x81\x81a\x1D\n\x01Ra?\xAD\x01Ra\x01 Q\x81\x81\x81a\x06\xDD\x01Ra\x12\xF4\x01R\xF3[\x90P` \x81=` \x11a\x02\x17W[\x81a\x01\xF4` \x93\x83a\x02\xBEV[\x81\x01\x03\x12a\x02\x13WQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x02\x13W_a\x01\x13V[_\x80\xFD[=\x91Pa\x01\xE7V[`@Q=_\x82>=\x90\xFD[\x90P` \x81=` \x11a\x02dW[\x81a\x02E` \x93\x83a\x02\xBEV[\x81\x01\x03\x12a\x02\x13WQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x02\x13W_a\0\xDBV[=\x91Pa\x028V[\x90P` \x81=` \x11a\x02\xA7W[\x81a\x02\x87` \x93\x83a\x02\xBEV[\x81\x01\x03\x12a\x02\x13WQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x02\x13W`\x04a\0\xAFV[=\x91Pa\x02zV[c9\xB1\x90\xBB`\xE1\x1B_R`\x04_\xFD[`\x1F\x90\x91\x01`\x1F\x19\x16\x81\x01\x90`\x01`\x01`@\x1B\x03\x82\x11\x90\x82\x10\x17a\x02\xE1W`@RV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD\xFE`\x80`@R`\x046\x10\x15a\0\x11W_\x80\xFD[_5`\xE0\x1C\x80c\x13d9\xDD\x14a\x02\x9AW\x80c\x14YEz\x14a\x02\x95W\x80c\x17\x1F\x1D[\x14a\x02\x90W\x80c\x1A\xD41\x89\x14a\x01\xE6W\x80c$Z{\xFC\x14a\x02\x8BW\x80c,\xB2#\xD5\x14a\x02\x86W\x80c-\x89\xF6\xFC\x14a\x02\x81W\x80c1\xB3k\xD9\x14a\x02|W\x80c5c\xB0\xD1\x14a\x02wW\x80c9\x98\xFD\xD3\x14a\x02rW\x80cAl~^\x14a\x02mW\x80cM+W\xFE\x14a\x02hW\x80cOs\x9Ft\x14a\x02cW\x80cY\\jg\x14a\x02^W\x80cZ-\x7F\x02\x14a\x02YW\x80cZ\xC8j\xB7\x14a\x02TW\x80c[\xAE\xC9\xA0\x14a\x02OW\x80c\\\x15Vb\x14a\x02JW\x80c\\\x97Z\xBB\x14a\x02EW\x80c]\xEC\xC3\xF5\x14a\x02@W\x80c]\xF4YF\x14a\x02;W\x80ch0H5\x14a\x026W\x80ckS.\x9E\x14a\x021W\x80ck\x92x~\x14a\x02,W\x80cm\x14\xA9\x87\x14a\x02'W\x80cn\xFBF6\x14a\x02\"W\x80cqP\x18\xA6\x14a\x02\x1DW\x80cr\xD1\x8E\x8D\x14a\x02\x0EW\x80cz\xFA\x1E\xED\x14a\x02\x18W\x80c\x88o\x11\x95\x14a\x02\x13W\x80c\x8B\0\xCE|\x14a\x02\x0EW\x80c\x8D\xA5\xCB[\x14a\x02\tW\x80c\x9B)\x0E\x98\x14a\x02\x04W\x80c\xB9\x8D\t\x08\x14a\x01\xFFW\x80c\xCA\x8A\xA7\xC7\x14a\x01\xFAW\x80c\xCE\xFD\xC1\xD4\x14a\x01\xF5W\x80c\xDF\\\xF7#\x14a\x01\xF0W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xEBW\x80c\xF5\xC9\x89\x9D\x14a\x01\xE6W\x80c\xF6<[\xAB\x14a\x01\xE1Wc\xFA\xBC\x1C\xBC\x14a\x01\xDCW_\x80\xFD[a\x1D\xE5V[a\x1D\xCAV[a\x06\xC1V[a\x1D9V[a\x1C\xF5V[a\x1B\xB1V[a\x1BrV[a\x1BPV[a\x1B(V[a\x1B\0V[a\x1AqV[a\x1A\xBCV[a\x1A\x94V[a\x1A\x16V[a\x19iV[a\x18\xE9V[a\x17{V[a\x17\nV[a\x16\xC6V[a\x16\x82V[a\x16DV[a\x16'V[a\x14\xAEV[a\x11\xC9V[a\x0F\x1AV[a\x0E\xEDV[a\x0EzV[a\r\xD3V[a\x0B\xC8V[a\nhV[a\n6V[a\t\xBCV[a\x08\x12V[a\x07{V[a\x07BV[a\x07\x01V[a\x06OV[a\x03oV[4a\x03ZW` 6`\x03\x19\x01\x12a\x03ZW`\x045`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01R\x90` \x82`$\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\x91\x82\x15a\x03UWa\x03$\x92a\x03\x10\x91_\x91a\x03&W[Pa\x1E\xE7V[a\x03\x1F`fT\x82\x81\x16\x14a\x1E\xFDV[aE\xA5V[\0[a\x03H\x91P` =` \x11a\x03NW[a\x03@\x81\x83a\x04\xDCV[\x81\x01\x90a\x1E\xC7V[_a\x03\nV[P=a\x036V[a\x1E\xDCV[_\x80\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x03ZWV[4a\x03ZW`\xA06`\x03\x19\x01\x12a\x03ZW`\x045a\x03\x8C\x81a\x03^V[a\x04\0`$5a\x03\x9B\x81a\x03^V[`D5a\x03\xA7\x81a\x03^V[`d5\x90a\x03\xB4\x82a\x03^V[`\x845\x92a\x03\xC1\x84a\x03^V[_T\x95a\x03\xE6`\xFF`\x08\x89\x90\x1C\x16\x15\x80\x98\x81\x99a\x04\x7FW[\x81\x15a\x04_W[Pa\x1F\x13V[\x86a\x03\xF7`\x01`\xFF\x19_T\x16\x17_UV[a\x04HWa\x1FvV[a\x04\x06W\0[a\x04\x14a\xFF\0\x19_T\x16_UV[`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90\x80` \x81\x01[\x03\x90\xA1\0[a\x04Za\x01\0a\xFF\0\x19_T\x16\x17_UV[a\x1FvV[0;\x15\x91P\x81a\x04qW[P_a\x03\xE0V[`\xFF\x16`\x01\x14\x90P_a\x04jV[`\x01`\xFF\x82\x16\x10\x91Pa\x03\xD9V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17a\x04\xBCW`@RV[a\x04\x8DV[`\x80\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17a\x04\xBCW`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17a\x04\xBCW`@RV[`@Q\x90a\x05\ra\x01\0\x83a\x04\xDCV[V[`@Q\x90a\x05\r`@\x83a\x04\xDCV[`@Q\x90a\x05\r``\x83a\x04\xDCV[`@Q\x90a\x05\r`\xA0\x83a\x04\xDCV[\x90a\x05\r`@Q\x92\x83a\x04\xDCV[`@\x90`\xE3\x19\x01\x12a\x03ZW`@Q\x90a\x05c\x82a\x04\xA1V[`\xE45\x82Ra\x01\x045` \x83\x01RV[\x91\x90\x82`@\x91\x03\x12a\x03ZW`@Qa\x05\x8B\x81a\x04\xA1V[` \x80\x82\x94\x805\x84R\x015\x91\x01RV[\x90\x80`\x1F\x83\x01\x12\x15a\x03ZW`@Q\x91a\x05\xB6`@\x84a\x04\xDCV[\x82\x90`@\x81\x01\x92\x83\x11a\x03ZW\x90[\x82\x82\x10a\x05\xD2WPPP\x90V[\x815\x81R` \x91\x82\x01\x91\x01a\x05\xC5V[\x90`\x80`c\x19\x83\x01\x12a\x03ZW`@Qa\x05\xFB\x81a\x04\xA1V[` a\x06\x16\x82\x94a\x06\r\x81`da\x05\x9BV[\x84R`\xA4a\x05\x9BV[\x91\x01RV[\x91\x90`\x80\x83\x82\x03\x12a\x03ZW` a\x06\x16`@Q\x92a\x069\x84a\x04\xA1V[`@\x84\x96a\x06G\x83\x82a\x05\x9BV[\x86R\x01a\x05\x9BV[4a\x03ZWa\x01 6`\x03\x19\x01\x12a\x03ZW`\x045`@6`#\x19\x01\x12a\x03ZWa\x06\xA7`@\x91\x82Qa\x06\x81\x81a\x04\xA1V[`$5\x81R`D5` \x82\x01Ra\x06\x976a\x05\xE2V[\x90a\x06\xA16a\x05JV[\x92a +V[\x82Q\x91\x15\x15\x82R\x15\x15` \x82\x01R\xF3[_\x91\x03\x12a\x03ZWV[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW` `@Qc\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\xF3[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`\xCDT`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[c\xFF\xFF\xFF\xFF\x81\x16\x03a\x03ZWV[5\x90a\x05\r\x82a\x07)V[4a\x03ZW` 6`\x03\x19\x01\x12a\x03ZWc\xFF\xFF\xFF\xFF`\x045a\x07d\x81a\x07)V[\x16_R`\xCB` R` `@_ T`@Q\x90\x81R\xF3[4a\x03ZW` 6`\x03\x19\x01\x12a\x03ZWc\xFF\xFF\xFF\xFF`\x045a\x07\x9D\x81a\x07)V[\x16_R`\xCA` R` `@_ T`@Q\x90\x81R\xF3[`\x01`\x01`@\x1B\x03\x81\x11a\x04\xBCW`\x05\x1B` \x01\x90V[\x90` \x80\x83Q\x92\x83\x81R\x01\x92\x01\x90_[\x81\x81\x10a\x07\xE8WPPP\x90V[\x82Q\x84R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x07\xDBV[\x90` a\x08\x0F\x92\x81\x81R\x01\x90a\x07\xCBV[\x90V[4a\x03ZW`@6`\x03\x19\x01\x12a\x03ZW`\x045a\x08/\x81a\x03^V[`$5\x90`\x01`\x01`@\x1B\x03\x82\x11a\x03ZW6`#\x83\x01\x12\x15a\x03ZW\x81`\x04\x015\x91a\x08[\x83a\x07\xB4V[\x92a\x08i`@Q\x94\x85a\x04\xDCV[\x80\x84R`$` \x85\x01\x91`\x05\x1B\x83\x01\x01\x916\x83\x11a\x03ZW`$\x01\x90[\x82\x82\x10a\x08\xAAWa\x08\xA6a\x08\x9A\x86\x86a!\x95V[`@Q\x91\x82\x91\x82a\x07\xFEV[\x03\x90\xF3[` \x80\x91\x835a\x08\xB9\x81a\x03^V[\x81R\x01\x91\x01\x90a\x08\x86V[`\x01`\x01`@\x1B\x03\x81\x11a\x04\xBCW`\x1F\x01`\x1F\x19\x16` \x01\x90V[\x92\x91\x92a\x08\xEB\x82a\x08\xC4V[\x91a\x08\xF9`@Q\x93\x84a\x04\xDCV[\x82\x94\x81\x84R\x81\x83\x01\x11a\x03ZW\x82\x81` \x93\x84_\x96\x017\x01\x01RV[\x90\x80` \x83Q\x91\x82\x81R\x01\x91` \x80\x83`\x05\x1B\x83\x01\x01\x94\x01\x92_\x91[\x83\x83\x10a\t@WPPPPP\x90V[\x90\x91\x92\x93\x94`\x1F\x19\x82\x82\x03\x01\x83R\x85Q\x90` \x80\x83Q\x92\x83\x81R\x01\x92\x01\x90_\x90[\x80\x82\x10a\t\x80WPPP` \x80`\x01\x92\x97\x01\x93\x01\x93\x01\x91\x93\x92\x90a\t1V[\x90\x91\x92` ```\x01\x92`\x01`\x01``\x1B\x03`@\x88Q\x86\x80`\xA0\x1B\x03\x81Q\x16\x84R\x85\x81\x01Q\x86\x85\x01R\x01Q\x16`@\x82\x01R\x01\x94\x01\x92\x01\x90a\taV[4a\x03ZW``6`\x03\x19\x01\x12a\x03ZW`\x045a\t\xD9\x81a\x03^V[`$5`\x01`\x01`@\x1B\x03\x81\x11a\x03ZW6`#\x82\x01\x12\x15a\x03ZWa\x08\xA6\x91a\n\x10a\n\"\x926\x90`$\x81`\x04\x015\x91\x01a\x08\xDFV[`D5\x91a\n\x1D\x83a\x07)V[a#\xD3V[`@Q\x91\x82\x91` \x83R` \x83\x01\x90a\t\x15V[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`\xD1T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[\x80\x15\x15\x03a\x03ZWV[4a\x03ZW` 6`\x03\x19\x01\x12a\x03ZW`\x045a\n\x85\x81a\n^V[`@Qc\x8D\xA5\xCB[`\xE0\x1B\x81R` \x81`\x04\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\x90\x81\x15a\x03UW_\x91a\n\xFAW[P`\x01`\x01`\xA0\x1B\x03\x163\x03a\n\xEBWa\x03$\x90aJ\x80V[cpp\xF3\xB1`\xE1\x1B_R`\x04_\xFD[a\x0B\x1C\x91P` =` \x11a\x0B\"W[a\x0B\x14\x81\x83a\x04\xDCV[\x81\x01\x90a\"ZV[_a\n\xD2V[P=a\x0B\nV[\x90\x80`\x1F\x83\x01\x12\x15a\x03ZW\x815a\x0B@\x81a\x07\xB4V[\x92a\x0BN`@Q\x94\x85a\x04\xDCV[\x81\x84R` \x80\x85\x01\x92`\x05\x1B\x82\x01\x01\x92\x83\x11a\x03ZW` \x01\x90[\x82\x82\x10a\x0BvWPPP\x90V[\x815\x81R` \x91\x82\x01\x91\x01a\x0BiV[` `@\x81\x83\x01\x92\x82\x81R\x84Q\x80\x94R\x01\x92\x01\x90_[\x81\x81\x10a\x0B\xA9WPPP\x90V[\x82Q`\x01`\x01`\xA0\x1B\x03\x16\x84R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x0B\x9CV[4a\x03ZW`@6`\x03\x19\x01\x12a\x03ZW`\x045a\x0B\xE5\x81a\x03^V[`$5`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x0C\x04\x906\x90`\x04\x01a\x0B)V[a\x0C\x0E\x81Qa!3V[\x91`\x01`\x01`\xA0\x1B\x03\x16_[\x82Q\x81\x10\x15a\x0C\xABW\x80` a\x0C3a\x0CS\x93\x86a!rV[Q`@Q\x80\x94\x81\x92c\nZ\xEC\x19`\xE2\x1B\x83R`\x04\x83\x01\x91\x90` \x83\x01\x92RV[\x03\x81\x86Z\xFA\x91\x82\x15a\x03UW`\x01\x92a\x0C\x87\x91_\x91a\x0C\x8DW[Pa\x0Cx\x83\x88a!rV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90RV[\x01a\x0C\x1AV[a\x0C\xA5\x91P` =\x81\x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[_a\x0CmV[`@Q\x80a\x08\xA6\x86\x82a\x0B\x86V[\x91\x81`\x1F\x84\x01\x12\x15a\x03ZW\x825\x91`\x01`\x01`@\x1B\x03\x83\x11a\x03ZW` \x83\x81\x86\x01\x95\x01\x01\x11a\x03ZWV[\x90` \x80\x83Q\x92\x83\x81R\x01\x92\x01\x90_[\x81\x81\x10a\r\x03WPPP\x90V[\x82Qc\xFF\xFF\xFF\xFF\x16\x84R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x0C\xF6V[\x90` \x82R``a\rma\rXa\rB\x84Q`\x80` \x88\x01R`\xA0\x87\x01\x90a\x0C\xE6V[` \x85\x01Q\x86\x82\x03`\x1F\x19\x01`@\x88\x01Ra\x0C\xE6V[`@\x84\x01Q\x85\x82\x03`\x1F\x19\x01\x84\x87\x01Ra\x0C\xE6V[\x91\x01Q\x91`\x80`\x1F\x19\x82\x84\x03\x01\x91\x01R\x81Q\x80\x82R` \x82\x01\x91` \x80\x83`\x05\x1B\x83\x01\x01\x94\x01\x92_\x91[\x83\x83\x10a\r\xA6WPPPPP\x90V[\x90\x91\x92\x93\x94` \x80a\r\xC4`\x01\x93`\x1F\x19\x86\x82\x03\x01\x87R\x89Qa\x0C\xE6V[\x97\x01\x93\x01\x93\x01\x91\x93\x92\x90a\r\x97V[4a\x03ZW`\x806`\x03\x19\x01\x12a\x03ZW`\x045a\r\xF0\x81a\x03^V[`$5\x90a\r\xFD\x82a\x07)V[`D5`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x0E\x1C\x906\x90`\x04\x01a\x0C\xB9V[\x91`d5\x92`\x01`\x01`@\x1B\x03\x84\x11a\x03ZW6`#\x85\x01\x12\x15a\x03ZW\x83`\x04\x015\x92`\x01`\x01`@\x1B\x03\x84\x11a\x03ZW6`$\x85`\x05\x1B\x87\x01\x01\x11a\x03ZWa\x08\xA6\x95`$a\x0En\x96\x01\x93a(\xE7V[`@Q\x91\x82\x91\x82a\r\x1FV[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01R` \x81`$\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\x03UWa\x0E\xE5\x91_\x91a\x03&WPa\x1E\xE7V[a\x03$aEqV[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW` `@Qg\x01cEx]\x8A\0\0\x81R\xF3[`\xFF\x81\x16\x03a\x03ZWV[4a\x03ZW` 6`\x03\x19\x01\x12a\x03ZW` `\x01`\xFF`\x045a\x0F=\x81a\x0F\x0FV[\x16\x1B\x80`fT\x16\x14`@Q\x90\x81R\xF3[\x90\x81`\x80\x91\x03\x12a\x03ZW\x90V[`@\x90`#\x19\x01\x12a\x03ZW`$\x90V[\x90\x80`\x1F\x83\x01\x12\x15a\x03ZW\x815a\x0F\x83\x81a\x07\xB4V[\x92a\x0F\x91`@Q\x94\x85a\x04\xDCV[\x81\x84R` \x80\x85\x01\x92`\x05\x1B\x82\x01\x01\x92\x83\x11a\x03ZW` \x01\x90[\x82\x82\x10a\x0F\xB9WPPP\x90V[` \x80\x91\x835a\x0F\xC8\x81a\x07)V[\x81R\x01\x91\x01\x90a\x0F\xACV[\x81`\x1F\x82\x01\x12\x15a\x03ZW\x805a\x0F\xE9\x81a\x07\xB4V[\x92a\x0F\xF7`@Q\x94\x85a\x04\xDCV[\x81\x84R` \x80\x85\x01\x92`\x06\x1B\x84\x01\x01\x92\x81\x84\x11a\x03ZW` \x01\x91[\x83\x83\x10a\x10!WPPPP\x90V[` `@\x91a\x100\x84\x86a\x05sV[\x81R\x01\x92\x01\x91a\x10\x13V[\x90\x80`\x1F\x83\x01\x12\x15a\x03ZW\x815a\x10R\x81a\x07\xB4V[\x92a\x10``@Q\x94\x85a\x04\xDCV[\x81\x84R` \x80\x85\x01\x92`\x05\x1B\x82\x01\x01\x91\x83\x83\x11a\x03ZW` \x82\x01\x90[\x83\x82\x10a\x10\x8CWPPPPP\x90V[\x815`\x01`\x01`@\x1B\x03\x81\x11a\x03ZW` \x91a\x10\xAE\x87\x84\x80\x94\x88\x01\x01a\x0FlV[\x81R\x01\x91\x01\x90a\x10}V[\x91\x90\x91a\x01\x80\x81\x84\x03\x12a\x03ZWa\x10\xCFa\x04\xFDV[\x92\x815`\x01`\x01`@\x1B\x03\x81\x11a\x03ZW\x81a\x10\xEC\x91\x84\x01a\x0FlV[\x84R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11a\x03ZW\x81a\x11\r\x91\x84\x01a\x0F\xD3V[` \x85\x01R`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11a\x03ZW\x81a\x111\x91\x84\x01a\x0F\xD3V[`@\x85\x01Ra\x11C\x81``\x84\x01a\x06\x1BV[``\x85\x01Ra\x11U\x81`\xE0\x84\x01a\x05sV[`\x80\x85\x01Ra\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11a\x03ZW\x81a\x11z\x91\x84\x01a\x0FlV[`\xA0\x85\x01Ra\x01@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11a\x03ZW\x81a\x11\x9F\x91\x84\x01a\x0FlV[`\xC0\x85\x01Ra\x01`\x82\x015`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x11\xC2\x92\x01a\x10;V[`\xE0\x83\x01RV[4a\x03ZW`\x806`\x03\x19\x01\x12a\x03ZW`\x045`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x11\xF9\x906\x90`\x04\x01a\x0FMV[a\x12\x026a\x0F[V[\x90`d5`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x12\"\x906\x90`\x04\x01a\x10\xB9V[`\xCDT\x90\x92\x90`\x01`\x01`\xA0\x1B\x03\x163\x03a\x140Wa\x12E` \x83\x94\x93\x01a-OV[\x91a\x13Ha\x12V`@\x86\x01\x86a-YV[\x92\x90\x94a\x12\xB6a\x12h``\x89\x01a-OV[\x97`@Qa\x12\x8C\x81a\x12~` \x82\x01\x94\x85a-\x8BV[\x03`\x1F\x19\x81\x01\x83R\x82a\x04\xDCV[Q\x90 a\x12\xAFa\x12\x9B\x88a-OV[c\xFF\xFF\xFF\xFF\x16_R`\xCA` R`@_ \x90V[T\x14a.\x12V[a\x12\xE0a\x12\xD9a\x12\xC5\x87a-OV[c\xFF\xFF\xFF\xFF\x16_R`\xCB` R`@_ \x90V[T\x15a.\x84V[\x83c\xFF\xFF\xFF\xFFC\x16\x96a\x13*a\x13\"a\x13\x19\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\x86a/\x15V[c\xFF\xFF\xFF\xFF\x16\x90V[\x89\x11\x15a//V[`@Q` \x81\x01\x90a\x13@\x81a\x12~\x8B\x85a/\xAFV[Q\x90 a<\xE7V[\x91\x90`\xFF_\x96\x16\x95[\x82\x81\x10a\x13\xCEW\x7F4\x9C\x1E\xE6\x0EN\x89r\xEE\x9D\xBAd,\x17tT=\\A6\x87\x9B\x7FL\xAA\xF0K\xF8\x1AHz*\x86\x86\x86a\x13\x93a\x13\x87a\x05\x0FV[c\xFF\xFF\xFF\xFF\x90\x94\x16\x84RV[` \x83\x01R`@Q` \x81\x01\x90a\x13\xAF\x81a\x12~\x86\x86\x86a0\x92V[Q\x90 a\x13\xBEa\x12\xC5\x83a-OV[Ua\x04C`@Q\x92\x83\x92\x83a0\x92V[\x80a\x14*a\x14\x06a\x14\x01a\x13\xF5a\x13\xE8`\x01\x96\x88Qa!rV[Q`\x01`\x01``\x1B\x03\x16\x90V[`\x01`\x01``\x1B\x03\x16\x90V[a/\xBFV[a\x14#a\x13\xF5\x8Ba\x14\x1Ea\x13\xE8\x87` \x8B\x01Qa!rV[a/\xFEV[\x11\x15a0!V[\x01a\x13QV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAggregator must be the caller\0\0\0`D\x82\x01R`d\x90\xFD[` `@\x81\x83\x01\x92\x82\x81R\x84Q\x80\x94R\x01\x92\x01\x90_[\x81\x81\x10a\x14\x98WPPP\x90V[\x82Q\x84R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x14\x8BV[4a\x03ZW``6`\x03\x19\x01\x12a\x03ZW`\x045a\x14\xCB\x81a\x03^V[`$5`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x14\xEA\x906\x90`\x04\x01a\x0B)V[`D5\x91a\x14\xF7\x83a\x07)V[`@Qca\xC8\xA1/`\xE1\x1B\x81R\x90`\x01`\x01`\xA0\x1B\x03\x16_\x82\x80a\x15\x1F\x86\x88`\x04\x84\x01a0\xBCV[\x03\x81\x84Z\xFA\x91\x82\x15a\x03UW_\x92a\x16\x03W[Pa\x15=\x83Qa!3V[\x93_[\x84Q\x81\x10\x15a\x15\xF5Wa\x15S\x81\x86a!rV[Q\x90` \x83a\x15oa\x15e\x84\x89a!rV[Qc\xFF\xFF\xFF\xFF\x16\x90V[`@Qc\x04\xECcQ`\xE0\x1B\x81R`\x04\x81\x01\x95\x90\x95Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x86\x01R\x16`D\x84\x01R\x82`d\x81\x87Z\xFA\x80\x15a\x03UW`\x01\x92_\x91a\x15\xC7W[P\x82\x80`\xC0\x1B\x03\x16a\x15\xC0\x82\x89a!rV[R\x01a\x15@V[a\x15\xE8\x91P` =\x81\x11a\x15\xEEW[a\x15\xE0\x81\x83a\x04\xDCV[\x81\x01\x90a(^V[_a\x15\xAEV[P=a\x15\xD6V[`@Q\x80a\x08\xA6\x88\x82a\x14uV[a\x16 \x91\x92P=\x80_\x83>a\x16\x18\x81\x83a\x04\xDCV[\x81\x01\x90a'-V[\x90_a\x152V[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW` `fT`@Q\x90\x81R\xF3[4a\x03ZW` 6`\x03\x19\x01\x12a\x03ZWc\xFF\xFF\xFF\xFF`\x045a\x16f\x81a\x07)V[\x16_R`\xCC` R` `\xFF`@_ T\x16`@Q\x90\x15\x15\x81R\xF3[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`@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\x03ZW_6`\x03\x19\x01\x12a\x03ZW`@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\x03ZW`\xC06`\x03\x19\x01\x12a\x03ZW`\x045`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x17:\x906\x90`\x04\x01a\x0FMV[a\x17C6a\x0F[V[\x90`@6`c\x19\x01\x12a\x03ZW`\xA45`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x03$\x92a\x17u`d\x926\x90`\x04\x01a\x0F\xD3V[\x92a5\nV[4a\x03ZW``6`\x03\x19\x01\x12a\x03ZW`$5`\x045a\x17\x9B\x82a\x07)V[`D5`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x17\xBA\x906\x90`\x04\x01a\x0C\xB9V[`\xCET\x91\x93\x90\x92\x91`\x01`\x01`\xA0\x1B\x03\x163\x03a\x18\x9AWa\x03$\x93a\x18\x84\x93a\x18\x04a\x18\x0B\x93a\x17\xE8a:\xE9V[\x95\x86RCc\xFF\xFF\xFF\xFF\x16` \x87\x01Rc\xFF\xFF\xFF\xFF\x16``\x86\x01RV[6\x91a\x08\xDFV[`@\x82\x01R`@Q` \x81\x01\x90a\x18&\x81a\x12~\x85\x85a;\rV[Q\x90 a\x18;a\x12\x9B`\xC9Tc\xFF\xFF\xFF\xFF\x16\x90V[U`\xC9Tc\xFF\xFF\xFF\xFF\x16\x90\x7F\x16\x95\xB8\xD0n\xC8\0\xB4a^t\\\xFB[\xD0\x0C\x1F(ua]B\x92\\;Z\xFAT;\xB2LH`@Q\x80a\x18|c\xFF\xFF\xFF\xFF\x86\x16\x94\x82a;\rV[\x03\x90\xA2a.\xE5V[c\xFF\xFF\xFF\xFF\x16c\xFF\xFF\xFF\xFF\x19`\xC9T\x16\x17`\xC9UV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FTask generator must be the calle`D\x82\x01R`9`\xF9\x1B`d\x82\x01R`\x84\x90\xFD[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`@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[\x90` \x80\x83Q\x92\x83\x81R\x01\x92\x01\x90_[\x81\x81\x10a\x19JWPPP\x90V[\x82Q`\x01`\x01``\x1B\x03\x16\x84R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x19=V[4a\x03ZW`\x806`\x03\x19\x01\x12a\x03ZW`\x045`$5`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x19\x9C\x906\x90`\x04\x01a\x0C\xB9V[\x90\x91`D5a\x19\xAA\x81a\x07)V[`d5\x92`\x01`\x01`@\x1B\x03\x84\x11a\x03ZWa\x1A\x0C\x94a\x19\xD1a\x19\xD7\x956\x90`\x04\x01a\x10\xB9V[\x93a<\xE7V[`@Q\x92\x83\x92`@\x84R` a\x19\xF8\x82Q`@\x80\x88\x01R`\x80\x87\x01\x90a\x19-V[\x91\x01Q\x84\x82\x03`?\x19\x01``\x86\x01Ra\x19-V[\x90` \x83\x01R\x03\x90\xF3[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZWa\x1A.aL\\V[`3\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16\x90\x91U_\x90`\x01`\x01`\xA0\x1B\x03\x16\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x82\x80\xA3\0[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW` c\xFF\xFF\xFF\xFF`\xC9T\x16`@Q\x90\x81R\xF3[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`\xCET`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`@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\x03ZW_6`\x03\x19\x01\x12a\x03ZW`3T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`\xCFT`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW` `\xFF`\x97T\x16`@Q\x90\x15\x15\x81R\xF3[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`\xD0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[`@\x90a\x08\x0F\x93\x92\x81R\x81` \x82\x01R\x01\x90a\t\x15V[4a\x03ZW``6`\x03\x19\x01\x12a\x03ZW`\x045a\x1B\xCE\x81a\x03^V[`$5`D5a\x1B\xDD\x81a\x07)V[a\x1C\x1Ea\x1B\xE8a!\x11V[\x92\x80a\x1B\xF3\x85a!eV[R`@Qca\xC8\xA1/`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x16\x94\x90\x92_\x91\x84\x91\x82\x91\x87`\x04\x84\x01a0\xBCV[\x03\x81\x87Z\xFA\x93\x84\x15a\x03UW\x83a\x1CHa\x13\x19a\x15ea\x1C}\x98` \x97_\x91a\x1C\xDBW[Pa!eV[\x92`@Q\x96\x87\x94\x85\x93\x84\x93c\x04\xECcQ`\xE0\x1B\x85R`\x04\x85\x01c\xFF\xFF\xFF\xFF`@\x92\x95\x94\x93``\x83\x01\x96\x83R\x16` \x82\x01R\x01RV[\x03\x91Z\xFA\x80\x15a\x03UWa\x1C\xAC\x92_\x91a\x1C\xBCW[P`\x01`\x01`\xC0\x1B\x03\x16\x92a\x1C\xA6\x84aL\xB4V[\x90a#\xD3V[\x90a\x08\xA6`@Q\x92\x83\x92\x83a\x1B\x9AV[a\x1C\xD5\x91P` =` \x11a\x15\xEEWa\x15\xE0\x81\x83a\x04\xDCV[_a\x1C\x92V[a\x1C\xEF\x91P=\x80_\x83>a\x16\x18\x81\x83a\x04\xDCV[_a\x1CBV[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`@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\x03ZW` 6`\x03\x19\x01\x12a\x03ZW`\x045a\x1DV\x81a\x03^V[a\x1D^aL\\V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x15a\x1DvWa\x03$\x90aE\xD7V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x90\xFD[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW` `@Q`d\x81R\xF3[4a\x03ZW` 6`\x03\x19\x01\x12a\x03ZW`\x045`@Qcu[6\xBD`\xE1\x1B\x81R` \x81`\x04\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\x90\x81\x15a\x03UW_\x91a\x1E\xA8W[P`\x01`\x01`\xA0\x1B\x03\x163\x03a\x1E\x99Wa\x1Eg`fT\x19\x82\x19\x81\x16\x14a\x1E\xFDV[\x80`fU`@Q\x90\x81R\x7F5\x82\xD1\x82\x8E&\xBFV\xBD\x80\x15\x02\xBC\x02\x1A\xC0\xBC\x8A\xFBW\xC8&\xE4\x98kEY<\x8F\xAD8\x9C` 3\x92\xA2\0[cyH!\xFF`\xE0\x1B_R`\x04_\xFD[a\x1E\xC1\x91P` =` \x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[_a\x1EFV[\x90\x81` \x91\x03\x12a\x03ZWQa\x08\x0F\x81a\n^V[`@Q=_\x82>=\x90\xFD[\x15a\x1E\xEEWV[c\x1Dw\xD4w`\xE2\x1B_R`\x04_\xFD[\x15a\x1F\x04WV[c\xC6\x1D\xCA]`\xE0\x1B_R`\x04_\xFD[\x15a\x1F\x1AWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x90\xFD[a\x1F\x7F\x90aE\xD7V[`\x01\x80`\xA0\x1B\x03\x16`\x01`\x01``\x1B\x03`\xA0\x1B`\xCDT\x16\x17`\xCDU`\x01\x80`\xA0\x1B\x03\x16`\x01`\x01``\x1B\x03`\xA0\x1B`\xCET\x16\x17`\xCEU`\x01\x80`\xA0\x1B\x03\x16`\x01`\x01``\x1B\x03`\xA0\x1B`\xD0T\x16\x17`\xD0U`\x01\x80`\xA0\x1B\x03\x16`\x01`\x01``\x1B\x03`\xA0\x1B`\xCFT\x16\x17`\xCFUV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[\x90`\x02\x81\x10\x15a \x12W`\x05\x1B\x01\x90V[a\x1F\xEDV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[a!\x07a \xE4a!\r\x95a \xDEa \xD7\x85\x87Q` \x89\x01Q\x8AQQ` \x8CQ\x01Q` \x8D\x01` \x81QQ\x91Q\x01Q\x91\x89Q\x93` \x8B\x01Q\x95`@Q\x97` \x89\x01\x99\x8AR` \x8A\x01R`@\x89\x01R``\x88\x01R`\x80\x87\x01R`\xA0\x86\x01R`\xC0\x85\x01R`\xE0\x84\x01Ra\x01\0\x83\x01Ra \xAE\x81a\x01 \x84\x01\x03`\x1F\x19\x81\x01\x83R\x82a\x04\xDCV[Q\x90 \x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x90\x06\x90V[\x80\x96aFcV[\x90aF\xA9V[\x92a \xDEa \xF9a \xF3aG\x0BV[\x94aH\x02V[\x91a!\x02aI\x1EV[aFcV[\x91aIRV[\x90\x91V[`@\x80Q\x90\x91\x90a!\"\x83\x82a\x04\xDCV[`\x01\x81R\x91`\x1F\x19\x016` \x84\x017V[\x90a!=\x82a\x07\xB4V[a!J`@Q\x91\x82a\x04\xDCV[\x82\x81R\x80\x92a![`\x1F\x19\x91a\x07\xB4V[\x01\x90` 6\x91\x017V[\x80Q\x15a \x12W` \x01\x90V[\x80Q\x82\x10\x15a \x12W` \x91`\x05\x1B\x01\x01\x90V[\x90\x81` \x91\x03\x12a\x03ZWQ\x90V[\x91\x90\x91a!\xA2\x83Qa!3V[\x92_[\x81Q\x81\x10\x15a\"UW\x80` a!\xCEa!\xC1a!\xF7\x94\x86a!rV[Q`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\x04\x82\x01R\x92\x83\x90\x81\x90`$\x82\x01\x90V[\x03\x81`\x01`\x01`\xA0\x1B\x03\x88\x16Z\xFA\x80\x15a\x03UW`\x01\x92_\x91a\"'W[Pa\" \x82\x88a!rV[R\x01a!\xA5V[a\"H\x91P` =\x81\x11a\"NW[a\"@\x81\x83a\x04\xDCV[\x81\x01\x90a!\x86V[_a\"\x15V[P=a\"6V[PPPV[\x90\x81` \x91\x03\x12a\x03ZWQa\x08\x0F\x81a\x03^V[\x90a\"y\x82a\x07\xB4V[a\"\x86`@Q\x91\x82a\x04\xDCV[\x82\x81R` \x81\x93a\"\x99`\x1F\x19\x91a\x07\xB4V[\x01\x91\x01_[\x82\x81\x10a\"\xAAWPPPV[``\x82\x82\x01R` \x01a\"\x9EV[\x90\x81Q\x81\x10\x15a \x12W\x01` \x01\x90V[` \x81\x83\x03\x12a\x03ZW\x80Q\x90`\x01`\x01`@\x1B\x03\x82\x11a\x03ZW\x01\x90\x80`\x1F\x83\x01\x12\x15a\x03ZW\x81Qa\"\xFC\x81a\x07\xB4V[\x92a#\n`@Q\x94\x85a\x04\xDCV[\x81\x84R` \x80\x85\x01\x92`\x05\x1B\x82\x01\x01\x92\x83\x11a\x03ZW` \x01\x90[\x82\x82\x10a#2WPPP\x90V[\x81Q\x81R` \x91\x82\x01\x91\x01a#%V[\x90a#L\x82a\x07\xB4V[a#Y`@Q\x91\x82a\x04\xDCV[\x82\x81R\x80\x92a#j`\x1F\x19\x91a\x07\xB4V[\x01_[\x81\x81\x10a#yWPPPV[`@Q\x90``\x82\x01\x91\x80\x83\x10`\x01`\x01`@\x1B\x03\x84\x11\x17a\x04\xBCW` \x92`@R_\x81R_\x83\x82\x01R_`@\x82\x01R\x82\x82\x86\x01\x01R\x01a#mV[\x90\x81` \x91\x03\x12a\x03ZWQ`\x01`\x01``\x1B\x03\x81\x16\x81\x03a\x03ZW\x90V[`@Qch0H5`\xE0\x1B\x81R\x93\x91\x92\x91\x90`\x01`\x01`\xA0\x1B\x03\x16` \x85`\x04\x81\x84Z\xFA\x94\x85\x15a\x03UW_\x95a&\xE8W[P`@QcOL\x91\xE1`\xE1\x1B\x81R\x94` \x86`\x04\x81\x85Z\xFA\x91\x82\x15a\x03UW`\x04\x96_\x93a&\xC6W[P` \x90`@Q\x97\x88\x80\x92c.\xFA,\xA3`\xE1\x1B\x82RZ\xFA\x95\x86\x15a\x03UW_\x96a&\xA5W[Pa$a\x85\x93\x92\x95Qa\"oV[\x94_\x93[\x80Q\x85\x10\x15a&\x9BWa$\x92a$\x8Ca$~\x87\x84a\"\xB8V[Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x90V[`\xF8\x1C\x90V[`@Qc\x89\x02bE`\xE0\x1B\x81R`\xFF\x82\x16`\x04\x82\x01Rc\xFF\xFF\xFF\xFF\x88\x16`$\x82\x01R\x90\x94\x90\x92_\x84`D\x81`\x01`\x01`\xA0\x1B\x03\x85\x16Z\xFA\x93\x84\x15a\x03UW_\x94a&wW[Pa$\xE2\x84Qa#BV[a$\xEC\x88\x8Ba!rV[Ra$\xF7\x87\x8Aa!rV[P_[\x84Q\x81\x10\x15a&fW\x80` a%\x13a%5\x93\x88a!rV[Q\x8D`@Q\x80\x80\x96\x81\x94c\x08\xF6b\x9D`\xE3\x1B\x83R`\x04\x83\x01\x91\x90` \x83\x01\x92RV[\x03\x91`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x91\x82\x15a\x03UW_\x92a&FW[Pa%[\x81\x87a!rV[Q\x8A` \x8Aa%j\x85\x8Ba!rV[Q`@Qc\xFA(\xC6'`\xE0\x1B\x81R`\x04\x81\x01\x91\x90\x91R`\xFF\x91\x90\x91\x16`$\x82\x01Rc\xFF\xFF\xFF\xFF\x92\x90\x92\x16`D\x83\x01R\x81`d\x81`\x01`\x01`\xA0\x1B\x03\x8D\x16Z\xFA\x93\x84\x15a\x03UWa%\xFD\x8C\x8Fa%\xF8`\x01\x98a&\x0F\x97\x89\x97_\x92a&\x16W[Pa%\xE3a%\xD4a\x05\x1EV[`\x01`\x01`\xA0\x1B\x03\x90\x98\x16\x88RV[` \x87\x01R`\x01`\x01``\x1B\x03\x16`@\x86\x01RV[a!rV[Q\x90a&\t\x83\x83a!rV[Ra!rV[P\x01a$\xFAV[a&8\x91\x92P` =\x81\x11a&?W[a&0\x81\x83a\x04\xDCV[\x81\x01\x90a#\xB4V[\x90_a%\xC8V[P=a&&V[a&_\x91\x92P` =\x81\x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[\x90_a%PV[P`\x01\x90\x96\x01\x95\x90\x94P\x91Pa$eV[a&\x94\x91\x94P=\x80_\x83>a&\x8C\x81\x83a\x04\xDCV[\x81\x01\x90a\"\xC9V[\x92_a$\xD7V[PPP\x93PPP\x90V[a&\xBF\x91\x96P` =` \x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[\x94_a$SV[` \x91\x93Pa&\xE1\x90\x82=\x84\x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[\x92\x90a$.V[a'\x02\x91\x95P` =` \x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[\x93_a$\x05V[`@Q\x90a'\x16\x82a\x04\xC1V[``\x80\x83\x81\x81R\x81` \x82\x01R\x81`@\x82\x01R\x01RV[` \x81\x83\x03\x12a\x03ZW\x80Q\x90`\x01`\x01`@\x1B\x03\x82\x11a\x03ZW\x01\x90\x80`\x1F\x83\x01\x12\x15a\x03ZW\x81Qa'`\x81a\x07\xB4V[\x92a'n`@Q\x94\x85a\x04\xDCV[\x81\x84R` \x80\x85\x01\x92`\x05\x1B\x82\x01\x01\x92\x83\x11a\x03ZW` \x01\x90[\x82\x82\x10a'\x96WPPP\x90V[` \x80\x91\x83Qa'\xA5\x81a\x07)V[\x81R\x01\x91\x01\x90a'\x89V[c\xFF\xFF\xFF\xFF\x90\x91\x16\x81R`@` \x82\x01\x81\x90R\x81\x01\x83\x90R`\x01`\x01`\xFB\x1B\x03\x83\x11a\x03ZW``\x92`\x05\x1B\x80\x92\x84\x83\x017\x01\x01\x90V[\x90\x80` \x93\x92\x81\x84R\x84\x84\x017_\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[`@\x90c\xFF\xFF\xFF\xFFa\x08\x0F\x95\x93\x16\x81R\x81` \x82\x01R\x01\x91a'\xE7V[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\xFF\x16`\xFF\x81\x14a(IW`\x01\x01\x90V[a($V[\x91\x90\x81\x10\x15a \x12W`\x05\x1B\x01\x90V[\x90\x81` \x91\x03\x12a\x03ZWQ`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x03a\x03ZW\x90V[\x15a(\x84WV[c%\xECl\x1F`\xE0\x1B_R`\x04_\xFD[\x90\x82\x10\x15a \x12W\x01\x90V[\x90\x81` \x91\x03\x12a\x03ZWQa\x08\x0F\x81a\x07)V[_\x19\x81\x14a(IW`\x01\x01\x90V[\x91a(\xE0` \x92c\xFF\xFF\xFF\xFF\x92\x96\x95\x96`@\x86R`@\x86\x01\x91a'\xE7V[\x94\x16\x91\x01RV[\x95\x93\x94\x95\x92\x90\x91\x92a(\xF7a'\tV[P`@Qch0H5`\xE0\x1B\x81R\x93`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x91\x90` \x85`\x04\x81\x86Z\xFA\x94\x85\x15a\x03UW_\x95a-.W[Pa)4a'\tV[\x94`@Qca\xC8\xA1/`\xE1\x1B\x81R_\x81\x80a)T\x8D\x8D\x8B`\x04\x85\x01a'\xB0V[\x03\x81\x88Z\xFA\x90\x81\x15a\x03UW_\x91a-\x14W[P\x86R`@Qc@\xE0:\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x92\x90_\x81\x80a)\x97\x85\x87\x8B`\x04\x85\x01a(\x07V[\x03\x81\x87Z\xFA\x90\x81\x15a\x03UW_\x91a,\xFAW[P`@\x87\x01Ra)\xB9\x81a\"oV[\x98``\x87\x01\x99\x8AR_[`\xFF\x81\x16\x83\x81\x10\x15a,EW\x88_a)\xEC\x83\x8Fa)\xDF\x88a!3V[\x90Q\x90a&\t\x83\x83a!rV[P_\x8A\x86\x8F[\x81\x84\x10a*oWPPPP\x90P\x8Ca*\t\x82a!3V[\x91_[\x81\x81\x10a*6WPP\x91a*+\x91a*1\x94\x93Q\x90a&\t\x83\x83a!rV[Pa(8V[a)\xC3V[\x80a*ia*Ta\x15e`\x01\x94a*N\x8A\x89Qa!rV[Qa!rV[a*^\x83\x88a!rV[\x90c\xFF\xFF\xFF\xFF\x16\x90RV[\x01a*\x0CV[a\x15e\x84a*\x84\x81` \x96\x95a*\x8C\x95a(NV[5\x97Qa!rV[`@Qc\x04\xECcQ`\xE0\x1B\x81R`\x04\x81\x01\x96\x90\x96Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x87\x01R\x16`D\x85\x01R\x83`d\x81\x8DZ\xFA\x80\x15a\x03UW\x88\x8F\x88\x8A\x91\x8F\x94a+1`\x01a+$\x81\x93\x8D\x80\x9D_\x92a,\x19W[Pa$\x8Ca+\0a+\x0E\x92a*\xF9\x87\x80`\xC0\x1B\x03\x86\x16\x15\x15a(}V[\x8B\x8Da(\x93V[5`\x01`\x01`\xF8\x1B\x03\x19\x16\x90V[`\x01`\x01`\xC0\x1B\x03\x91\x82\x16`\xFF\x91\x90\x91\x16\x1C\x16\x90V[\x16`\x01`\x01`\xC0\x1B\x03\x16\x90V[\x14a+MW[PPPPP`\x01\x91\x92P\x01\x90\x8A\x91\x8A\x86\x8Fa)\xF2V[\x85\x97a+o\x93a+h` \x97\x99\x98a$\x8C\x95a+\0\x95a(NV[5\x95a(\x93V[`@Qc\xDD\x98F\xB9`\xE0\x1B\x81R`\x04\x81\x01\x92\x90\x92R`\xFF\x16`$\x82\x01Rc\xFF\xFF\xFF\xFF\x93\x90\x93\x16`D\x84\x01R\x82`d\x81\x8CZ\xFA\x90\x81\x15a\x03UW\x8Fa+\xCD\x90a+\xD2\x93\x83\x88`\x01\x97_\x93a+\xE1W[Pa*N\x90a*^\x93\x94Qa!rV[a(\xB4V[\x90P\x82\x91\x8A\x88\x8F\x88\x8A\x91a+7V[a*^\x93P\x90a,\na*N\x92` =\x81\x11a,\x12W[a,\x02\x81\x83a\x04\xDCV[\x81\x01\x90a(\x9FV[\x93P\x90a+\xBDV[P=a+\xF8V[a+\x0E\x91\x92Pa+\0a,<a$\x8C\x92` =\x81\x11a\x15\xEEWa\x15\xE0\x81\x83a\x04\xDCV[\x93\x92PPa*\xDCV[PPP\x92\x90\x95\x97P`\x04\x94\x96P` \x91P`@Q\x94\x85\x80\x92c.\xFA,\xA3`\xE1\x1B\x82RZ\xFA\x90\x81\x15a\x03UWa,\x9B\x94_\x94\x85\x93a,\xD9W[P`@Qc5IR\xA3`\xE2\x1B\x81R\x95\x86\x94\x85\x93\x84\x93`\x04\x85\x01a(\xC2V[\x03\x91`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x03UW_\x91a,\xBFW[P` \x82\x01R\x90V[a,\xD3\x91P=\x80_\x83>a\x16\x18\x81\x83a\x04\xDCV[_a,\xB6V[a,\xF3\x91\x93P` =` \x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[\x91_a,}V[a-\x0E\x91P=\x80_\x83>a\x16\x18\x81\x83a\x04\xDCV[_a)\xAAV[a-(\x91P=\x80_\x83>a\x16\x18\x81\x83a\x04\xDCV[_a)gV[a-H\x91\x95P` =` \x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[\x93_a)+V[5a\x08\x0F\x81a\x07)V[\x905\x90`\x1E\x19\x816\x03\x01\x82\x12\x15a\x03ZW\x01\x805\x90`\x01`\x01`@\x1B\x03\x82\x11a\x03ZW` \x01\x91\x816\x03\x83\x13a\x03ZWV[` \x81R\x815` \x82\x01Rc\xFF\xFF\xFF\xFF` \x83\x015a-\xA9\x81a\x07)V[\x16`@\x82\x01R`@\x82\x015`\x1E\x19\x836\x03\x01\x81\x12\x15a\x03ZW\x82\x01\x90` \x825\x92\x01`\x01`\x01`@\x1B\x03\x83\x11a\x03ZW\x826\x03\x81\x13a\x03ZWa.\x07``a.\0`\x80\x93a\x08\x0F\x96\x85\x84\x88\x01R`\xA0\x87\x01\x91a'\xE7V[\x95\x01a\x077V[c\xFF\xFF\xFF\xFF\x16\x91\x01RV[\x15a.\x19WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7Fsupplied task does not match the`D\x82\x01R\x7F one recorded in the contract\0\0\0`d\x82\x01R`\x84\x90\xFD[\x15a.\x8BWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`,`$\x82\x01R\x7FAggregator has already responded`D\x82\x01Rk to the task`\xA0\x1B`d\x82\x01R`\x84\x90\xFD[c\xFF\xFF\xFF\xFF`\x01\x91\x16\x01\x90c\xFF\xFF\xFF\xFF\x82\x11a(IWV[c\xFF\xFF\xFF\xFF`d\x91\x16\x01\x90c\xFF\xFF\xFF\xFF\x82\x11a(IWV[\x90c\xFF\xFF\xFF\xFF\x80\x91\x16\x91\x16\x01\x90c\xFF\xFF\xFF\xFF\x82\x11a(IWV[\x15a/6WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`-`$\x82\x01R\x7FAggregator has responded to the `D\x82\x01Rltask too late`\x98\x1B`d\x82\x01R`\x84\x90\xFD[` \x80\x91c\xFF\xFF\xFF\xFF\x815a/\xA5\x81a\x07)V[\x16\x84R\x015\x91\x01RV[`@\x81\x01\x92\x91a\x05\r\x91\x90a/\x91V[\x90`d\x82\x02\x91\x80\x83\x04`d\x14\x90\x15\x17\x15a(IWV[\x90`\x06\x82\x02\x91\x80\x83\x04`\x06\x14\x90\x15\x17\x15a(IWV[\x81\x81\x02\x92\x91\x81\x15\x91\x84\x04\x14\x17\x15a(IWV[\x90`\x01`\x01``\x1B\x03\x80\x91\x16\x91\x16\x02\x90`\x01`\x01``\x1B\x03\x82\x16\x91\x82\x03a(IWV[\x15a0(WV[`\x84`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`@`$\x82\x01R\x7FSignatories do not own at least `D\x82\x01R\x7Fthreshold percentage of a quorum`d\x82\x01R\xFD[\x90\x92\x91` ``\x91a0\xA8\x84`\x80\x81\x01\x97a/\x91V[c\xFF\xFF\xFF\xFF\x81Q\x16`@\x85\x01R\x01Q\x91\x01RV[`@\x90c\xFF\xFF\xFF\xFFa\x08\x0F\x94\x93\x16\x81R\x81` \x82\x01R\x01\x90a\x07\xCBV[\x15a0\xE0WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FTask hasn't been responded to ye`D\x82\x01R`\x1D`\xFA\x1B`d\x82\x01R`\x84\x90\xFD[\x90\x92\x91` ``\x91a1E\x84`\x80\x81\x01\x97a/\x91V[c\xFF\xFF\xFF\xFF\x815a1U\x81a\x07)V[\x16`@\x85\x01R\x015\x91\x01RV[\x15a1iWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7FTask response does not match the`D\x82\x01R\x7F one recorded in the contract\0\0\0`d\x82\x01R`\x84\x90\xFD[\x15a1\xDBWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R\x7FThe response to this task has al`D\x82\x01R\x7Fready been challenged successful`d\x82\x01Rb6<\x97`\xE9\x1B`\x84\x82\x01R`\xA4\x90\xFD[\x15a2YWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FThe challenge period for this ta`D\x82\x01R\x7Fsk has already expired.\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x90\xFD[`\x04\x91c\xFF\xFF\xFF\xFF`\xE0\x1B\x90`\xE0\x1B\x16\x81R\x01` \x82Q\x91\x92\x01\x90_[\x81\x81\x10a2\xEEWPPP\x90V[\x82Q\x84R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a2\xE1V[\x15a3\x0BWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`P`$\x82\x01R\x7FThe pubkeys of non-signing opera`D\x82\x01R\x7Ftors supplied by the challenger `d\x82\x01Ro0\xB92\x9077\xBA\x101\xB7\xB992\xB1\xBA\x17`\x81\x1B`\x84\x82\x01R`\xA4\x90\xFD[` \x81\x83\x03\x12a\x03ZW\x80Q\x90`\x01`\x01`@\x1B\x03\x82\x11a\x03ZW\x01\x90\x80`\x1F\x83\x01\x12\x15a\x03ZW\x81Qa3\xC2\x81a\x07\xB4V[\x92a3\xD0`@Q\x94\x85a\x04\xDCV[\x81\x84R` \x80\x85\x01\x92`\x05\x1B\x82\x01\x01\x92\x83\x11a\x03ZW` \x01\x90[\x82\x82\x10a3\xF8WPPP\x90V[` \x80\x91\x83Qa4\x07\x81a\x03^V[\x81R\x01\x91\x01\x90a3\xEBV[`@Q\x90a4!`@\x83a\x04\xDCV[`\x12\x82Rq9\xB60\xB9\xB4/\xBA42\xAF\xB7\xB82\xB90\xBA7\xB9`q\x1B` \x83\x01RV[\x80Q\x80\x83R` \x92\x91\x81\x90\x84\x01\x84\x84\x01^_\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[\x91\x90` \x83R`\xC0\x83\x01\x92`\x01\x80`\xA0\x1B\x03\x82Q\x16` \x82\x01Rc\xFF\xFF\xFF\xFF` \x83\x01Q\x16`@\x82\x01R`@\x82\x01Q\x93`\xA0``\x83\x01R\x84Q\x80\x91R` `\xE0\x83\x01\x95\x01\x90_[\x81\x81\x10a4\xEBWPPP`\x80a4\xD6a\x08\x0F\x94\x95``\x85\x01Q`\x1F\x19\x85\x83\x03\x01\x84\x86\x01Ra\x07\xCBV[\x92\x01Q\x90`\xA0`\x1F\x19\x82\x85\x03\x01\x91\x01Ra4BV[\x82Q`\x01`\x01`\xA0\x1B\x03\x16\x87R` \x96\x87\x01\x96\x90\x92\x01\x91`\x01\x01a4\xADV[\x93\x92\x91\x90\x92`\x01a5\x1A\x85a-OV[\x94` a5\xD6\x885a5Ea5=\x8Ac\xFF\xFF\xFF\xFF\x16_R`\xCB` R`@_ \x90V[T\x15\x15a0\xD9V[a5\x80a5`\x8Ac\xFF\xFF\xFF\xFF\x16_R`\xCB` R`@_ \x90V[T`@Q\x85\x81\x01\x90a5w\x81a\x12~\x8D\x8B\x86a1/V[Q\x90 \x14a1bV[a5\xABa5\xA5a5\x9E\x8Bc\xFF\xFF\xFF\xFF\x16_R`\xCC` R`@_ \x90V[T`\xFF\x16\x90V[\x15a1\xD4V[a5\xD0a5\xC2a\x13\x19a5\xBD\x8Aa-OV[a.\xFDV[c\xFF\xFF\xFF\xFFC\x16\x11\x15a2RV[\x80a/\xEBV[\x91\x015\x14\x14a:\xB7Wa5\xE9\x83Qa!3V[\x93_[\x84Q\x81\x10\x15a6)W\x80a6\x18a6\x05`\x01\x93\x88a!rV[Q\x80Q_R` \x01Q` R`@_ \x90V[a6\"\x82\x89a!rV[R\x01a5\xECV[P\x90\x92\x93\x91\x94a6c` \x82\x01\x96` a6B\x89a-OV[`@Qa6W\x81a\x12~\x8A\x86\x83\x01\x95\x86a2\xC4V[Q\x90 \x91\x015\x14a3\x04V[a6m\x85Qa!3V[\x95\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\x94_[\x87Q\x81\x10\x15a7\x1DW\x80` a6\xB4a6\xD4\x93\x89a!rV[Q`@Q\x80\x94\x81\x92ct]\xCDs`\xE1\x1B\x83R`\x04\x83\x01\x91\x90` \x83\x01\x92RV[\x03\x81\x8BZ\xFA\x91\x82\x15a\x03UW`\x01\x92a6\xF9\x91_\x91a6\xFFW[Pa\x0Cx\x83\x8Da!rV[\x01a6\x9BV[a7\x17\x91P` =\x81\x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[_a6\xEEV[P\x92\x96\x95P\x92P\x92a7|a7Ea7M`@\x87\x01\x95a7=\x87\x89a-YV[\x93\x90\x91a-OV[\x926\x91a\x08\xDFV[\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\x16a#\xD3V[\x90_\x91[\x80Q\x83\x10\x15a:YW_\x93[a7\x96\x84\x83a!rV[QQ\x85\x10\x15a:LWa7\xD6\x98` \x80a7\xB4\x88a*N\x89\x88a!rV[Q\x01Q`@Q\x80\x9C\x81\x92c\x08\xF6b\x9D`\xE3\x1B\x83R`\x04\x83\x01\x91\x90` \x83\x01\x92RV[\x03\x81\x87Z\xFA\x99\x8A\x15a\x03UW_\x9Aa:,W[P_[\x89Q\x81\x10\x15a:\x1BWa8\x11a8\x05a!\xC1\x83\x8Da!rV[`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x8C\x16\x14a8(W`\x01\x01a7\xECV[P\x96\x97\x90\x91a8\xE4\x95\x96\x93\x92[_\x8Aa8\x8F`\xFFa8ga$\x8Ca+\0\x8Ca8a\x8Da8[`\xD1T`\x01\x80`\xA0\x1B\x03\x16\x90V[\x98a-YV[\x90a(\x93V[a8\x81a8ra\x05\x0FV[`\x01`\x01`\xA0\x1B\x03\x90\x95\x16\x85RV[\x16c\xFF\xFF\xFF\xFF\x16` \x83\x01RV[`\xD0Ta8\xA6\x90a8\x05\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Qc\x10]\xEA\x1F`\xE2\x1B\x81R\x82Q`\x01`\x01`\xA0\x1B\x03\x16`\x04\x82\x01R` \x90\x92\x01Qc\xFF\xFF\xFF\xFF\x16`$\x83\x01R\x90\x98\x89\x91\x90\x82\x90\x81\x90`D\x82\x01\x90V[\x03\x91Z\xFA\x96\x87\x15a\x03UW_\x97a9\xF7W[Pa9\x01\x87Qa!3V[\x98_[\x8AQ\x81\x10\x15a9*W\x80g\x01cEx]\x8A\0\0a9#`\x01\x93\x8Ea!rV[R\x01a9\x04V[P\x9A\x92\x99\x98\x90\x96a9h`\xFFa9Oa$\x8Ca+\0\x8B\x8F\x8C\x9F\x99\x9B\x9Ca8a\x91a-YV[a9Za%\xD4a\x05-V[\x16c\xFF\xFF\xFF\xFF\x16` \x86\x01RV[`@\x84\x01R``\x83\x01Ra9za4\x12V[`\x80\x83\x01R`\xCFTa9\x96\x90a8\x05\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[\x80;\x15a\x03ZW`@Qcjf\x9BA`\xE0\x1B\x81R\x92_\x91\x84\x91\x82\x90\x84\x90\x82\x90a9\xC2\x90`\x04\x83\x01a4fV[\x03\x92Z\xF1\x91\x82\x15a\x03UW`\x01\x92a9\xDDW[P\x01\x93a7\x8CV[\x80a9\xEB_a9\xF1\x93a\x04\xDCV[\x80a\x06\xB7V[_a9\xD5V[a:\x14\x91\x97P=\x80_\x83>a:\x0C\x81\x83a\x04\xDCV[\x81\x01\x90a3\x8FV[\x95_a8\xF6V[P\x96\x97\x90\x91a8\xE4\x95\x96\x93\x92a85V[a:E\x91\x9AP` =\x81\x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[\x98_a7\xE9V[\x93P`\x01\x90\x92\x01\x91a7\x80V[PPP\x93\x92PPPa:\x89a:|\x82c\xFF\xFF\xFF\xFF\x16_R`\xCC` R`@_ \x90V[\x80T`\xFF\x19\x16`\x01\x17\x90UV[c\xFF\xFF\xFF\xFF3\x91\x16\x7F\xC2\r\x1B\xB0\xF1b6\x800k\x83\xD4\xFFK\xB9\x9A+\xEB\x9D\x86\xD9x2\xF3\xCA@\xFD\x13\xA2\x9D\xF1\xEC_\x80\xA3V[\x93PPPc\xFF\xFF\xFF\xFF3\x91\x16\x7F\xFD>&\xBE\xEBYg\xFCZW\xA0Di\x14\xEA\xBCE\xB4\xAAGLg\xA5\x1BKQ`\xCA\xC6\r\xDB\x05_\x80\xA3V[`@Q\x90a:\xF6\x82a\x04\xC1V[_``\x83\x82\x81R\x82` \x82\x01R\x81`@\x82\x01R\x01RV[` \x81R\x81Q` \x82\x01Rc\xFF\xFF\xFF\xFF` \x83\x01Q\x16`@\x82\x01R`\x80c\xFF\xFF\xFF\xFF``a;H`@\x86\x01Q\x84\x83\x87\x01R`\xA0\x86\x01\x90a4BV[\x94\x01Q\x16\x91\x01R\x90V[`@Q\x90a;_\x82a\x04\xA1V[``` \x83\x82\x81R\x01RV[\x15a;rWV[b\xF8 -`\xE5\x1B_R`\x04_\xFD[\x15a;\x87WV[cCqJ\xFD`\xE0\x1B_R`\x04_\xFD[\x15a;\x9DWV[c_\x83/A`\xE0\x1B_R`\x04_\xFD[\x15a;\xB3WV[cK\x87OE`\xE0\x1B_R`\x04_\xFD[\x90\x81` \x91\x03\x12a\x03ZWQa\x08\x0F\x81a\x0F\x0FV[_\x19\x81\x01\x91\x90\x82\x11a(IWV[\x15a;\xECWV[c?\xDCe\x05`\xE2\x1B_R`\x04_\xFD[\x90`\x01\x82\x01\x80\x92\x11a(IWV[\x90`\x02\x82\x01\x80\x92\x11a(IWV[\x90`\x03\x82\x01\x80\x92\x11a(IWV[\x90`\x04\x82\x01\x80\x92\x11a(IWV[\x90`\x05\x82\x01\x80\x92\x11a(IWV[\x91\x90\x82\x01\x80\x92\x11a(IWV[\x15a<UWV[c\xAF\xFC^\xDB`\xE0\x1B_R`\x04_\xFD[\x90\x81` \x91\x03\x12a\x03ZWQg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x16\x81\x03a\x03ZW\x90V[\x15a<\x8CWV[c\xE11\n\xED`\xE0\x1B_R`\x04_\xFD[\x90`\x01`\x01``\x1B\x03\x80\x91\x16\x91\x16\x03\x90`\x01`\x01``\x1B\x03\x82\x11a(IWV[\x15a<\xC2WV[cg\x98\x8D3`\xE0\x1B_R`\x04_\xFD[\x15a<\xD8WV[c\xAB\x1B#k`\xE0\x1B_R`\x04_\xFD[\x94\x93\x92\x90\x91\x93a<\xF5a;RV[Pa=\x01\x85\x15\x15a;kV[`@\x84\x01QQ\x85\x14\x80aEcW[\x80aEUW[\x80aEGW[a=$\x90a;\x80V[a=6` \x85\x01QQ\x85QQ\x14a;\x96V[a=Mc\xFF\xFF\xFF\xFFC\x16c\xFF\xFF\xFF\xFF\x84\x16\x10a;\xACV[a=Ua\x05\x0FV[_\x81R_` \x82\x01R\x92a=ga;RV[a=p\x87a!3V[` \x82\x01Ra=~\x87a!3V[\x81Ra=\x88a;RV[\x92a=\x97` \x88\x01QQa!3V[\x84Ra=\xA7` \x88\x01QQa!3V[` \x85\x81\x01\x91\x90\x91R`@Qc\x9A\xA1e=`\xE0\x1B\x81R\x90\x81`\x04\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\x03UWa>\x10\x91_\x91aE\x18W[Pa>\x0B6\x8B\x87a\x08\xDFV[aJ\xBEV[\x98_\x96[` \x89\x01Q\x80Q\x89\x10\x15a?oW` \x88a>da\x15e\x8Ca>\\\x8F\x96\x86\x8Ea>Aa6\x05\x86\x80\x95a!rV[a>N\x84\x84\x84\x01Qa!rV[R\x82a?<W[\x01Qa!rV[Q\x95Qa!rV[`@Qc\x04\xECcQ`\xE0\x1B\x81R`\x04\x81\x01\x94\x90\x94Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x85\x01R\x16`D\x83\x01R\x81`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\xFA\x91\x82\x15a\x03UWa \xDE\x8Aa?\x11\x8Fa?\n\x8F\x84` \x8F\x92a?\x01\x93a>\xF9\x84`\x01\x9Ea?\x17\x9E_\x91a?\x1FW[P\x8F\x80`\xC0\x1B\x03\x16\x92Qa!rV[R\x01Qa!rV[Q\x93\x8DQa!rV[Q\x16aJ\xE9V[\x90aK\x1AV[\x97\x01\x96a>\x14V[a?6\x91P\x86=\x81\x11a\x15\xEEWa\x15\xE0\x81\x83a\x04\xDCV[_a>\xEAV[a?ja?L\x84\x84\x84\x01Qa!rV[Qa?c\x84\x84\x01Qa?]\x87a;\xD7V[\x90a!rV[Q\x10a;\xE5V[a>UV[P\x90\x95\x97\x94\x96Pa?\x84\x91\x98\x93\x92\x99PaK\xD7V[\x91a?\x91`\x97T`\xFF\x16\x90V[\x90\x81\x15aE\x10W`@Qc\x18\x89\x1F\xD7`\xE3\x1B\x81R` \x81`\x04\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\x90\x81\x15a\x03UW_\x91aD\xF1W[P\x91\x90[_\x92[\x81\x84\x10a@BWPPPPP\x92a@)a@$a@\x1Da@<\x95\x85a\x12~\x98`\x80``` \x99\x01Q\x92\x01Q\x92a +V[\x91\x90a<\xBBV[a<\xD1V[\x01Q`@Q\x92\x83\x91` \x83\x01\x95\x86a2\xC4V[Q\x90 \x90V[\x92\x98\x95\x96\x90\x93\x99\x91\x97\x94\x87\x8B\x88\x8C\x88\x8DaC\xEBW[a\x15e\x82`\xA0a@\x97a$\x8Ca+\0\x84a@\x9F\x97a@\x91a@\x83a6\x05\x8F\x9C`@` \x9F\x9E\x01Qa!rV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90V[\x9Ba(\x93V[\x97\x01Qa!rV[`@Qc\x1A/2\xAB`\xE2\x1B\x81R`\xFF\x95\x90\x95\x16`\x04\x86\x01Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x86\x01R\x16`D\x84\x01R\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\xFA\x90\x81\x15a\x03UWaAca\x15e\x8F\x95\x8F\x90aA[\x8F\x97\x8F\x96\x84\x8FaAU`\xC0\x96aAN\x84\x8F` \x9F\x90a>Ua+\0\x99`@\x93a$\x8C\x9C_\x91aC\xBDW[Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x91\x82\x16\x91\x16\x14a<\x85V[Q\x90aF\xA9V[\x9Ca(\x93V[\x96\x01Qa!rV[`@Qcd\x14\xA6+`\xE1\x1B\x81R`\xFF\x94\x90\x94\x16`\x04\x85\x01Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x85\x01R\x16`D\x83\x01R\x81`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\xFA\x90\x81\x15a\x03UWaA\xF0\x91\x8C\x8F\x92_\x92aC\x99W[P` aA\xE2\x92\x93\x01Qa!rV[\x90`\x01`\x01``\x1B\x03\x16\x90RV[aB\x10\x8CaA\xE2\x8CaB\ta\x13\xE8\x82` \x86\x01Qa!rV[\x92Qa!rV[_\x98_[` \x8A\x01QQ\x81\x10\x15aC\x80W\x8B\x8DaBR\x89aBEa$\x8Ca+\0\x86\x8F\x89aB=\x91Qa!rV[Q\x94\x87a(\x93V[`\xFF\x16\x1C`\x01\x90\x81\x16\x14\x90V[aBaW[PP`\x01\x01aB\x14V[\x8A\x8AaB\xE3\x85\x9F\x94\x8F\x96\x86a*N\x8F\x93`\xE0aB\x9Aa\x15e\x95` aB\x92a$\x8Ca+\0\x83\x9FaB\xA3\x9C\x89\x91a(\x93V[\x9A\x01Qa!rV[Q\x9B\x01Qa!rV[`@Qcy_JW`\xE1\x1B\x81R`\xFF\x90\x93\x16`\x04\x84\x01Rc\xFF\xFF\xFF\xFF\x93\x84\x16`$\x84\x01R`D\x83\x01\x96\x90\x96R\x91\x90\x94\x16`d\x85\x01R\x83\x90\x81\x90`\x84\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\x90\x81\x15a\x03UW\x8FaCO\x90\x8F\x93`\x01\x95\x94\x86\x95_\x92aCZW[PaCIaA\xE2\x92\x93Q\x93aCDa\x13\xE8\x84\x87a!rV[a<\x9BV[\x92a!rV[\x01\x9A\x90P\x8B\x8DaBWV[aA\xE2\x92PaCyaCI\x91` =\x81\x11a&?Wa&0\x81\x83a\x04\xDCV[\x92PaC,V[P\x93\x91\x97\x96\x99`\x01\x91\x96\x99P\x9A\x94\x92\x9A\x01\x92\x91\x90a?\xECV[aA\xE2\x92PaC\xB6` \x91\x82=\x81\x11a&?Wa&0\x81\x83a\x04\xDCV[\x92PaA\xD3V[` aC\xDE\x92P=\x81\x11aC\xE4W[aC\xD6\x81\x83a\x04\xDCV[\x81\x01\x90a<dV[_aA8V[P=aC\xCCV[aD(\x94PaD\x05\x92Pa$\x8C\x91a+\0\x91` \x95a(\x93V[`@Qc\x12M\x06!`\xE1\x1B\x81R`\xFF\x90\x91\x16`\x04\x82\x01R\x91\x82\x90\x81\x90`$\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\x03UW` \x89a@\x9F\x8F\x93\x8F`\xA0\x8F\x97a$\x8Ca+\0\x8F\x8F\x90a@\x91a@\x83a6\x05\x8F`@\x8B\x96\x91\x8F\x88\x93a\x15e\x9FaD\xAC\x90aD\xB2\x93a@\x97\x9F_\x92aD\xC8W[Pc\xFF\xFF\xFF\xFF\x80\x91\x16\x93\x16\x90a<AV[\x11a<NV[PPPPPP\x97PPPPPP\x92\x93PPa@WV[` c\xFF\xFF\xFF\xFF\x92\x93P\x82\x91aD\xE9\x91=\x81\x11a\"NWa\"@\x81\x83a\x04\xDCV[\x92\x91PaD\x9BV[aE\n\x91P` =` \x11a,\x12Wa,\x02\x81\x83a\x04\xDCV[_a?\xE5V[_\x91\x90a?\xE9V[aE:\x91P` =` \x11aE@W[aE2\x81\x83a\x04\xDCV[\x81\x01\x90a;\xC2V[_a=\xFFV[P=aE(V[P`\xE0\x84\x01QQ\x85\x14a=\x1BV[P`\xC0\x84\x01QQ\x85\x14a=\x15V[P`\xA0\x84\x01QQ\x85\x14a=\x0FV[_\x19`fU`@Q_\x19\x81R\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=` 3\x92\xA2V[\x80`fU`@Q\x90\x81R\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=` 3\x92\xA2V[`3\x80T`\x01`\x01`\xA0\x1B\x03\x92\x83\x16`\x01`\x01`\xA0\x1B\x03\x19\x82\x16\x81\x17\x90\x92U\x90\x91\x16\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0_\x80\xA3V[`@Q\x90aF,\x82a\x04\xA1V[_` \x83\x82\x81R\x01RV[`@Q\x90a\x01\x80aFH\x81\x84a\x04\xDCV[6\x837V[`@Q\x90aF\\` \x83a\x04\xDCV[` 6\x837V[\x91\x90`@\x90``aFraF\x1FV[\x94\x85\x92` \x85Q\x92aF\x84\x85\x85a\x04\xDCV[\x846\x857\x80Q\x84R\x01Q` \x83\x01R\x84\x82\x01R`\x07a\x07\xCF\x19Z\x01\xFA\x15aF\xA7WV[\xFE[` \x92\x91`\x80`@\x92aF\xBAaF\x1FV[\x95\x86\x93\x81\x86Q\x93aF\xCB\x86\x86a\x04\xDCV[\x856\x867\x80Q\x85R\x01Q\x82\x84\x01R\x80Q\x86\x84\x01R\x01Q``\x82\x01R`\x06a\x07\xCF\x19Z\x01\xFA\x80\x15aF\xA7W\x15aF\xFCWV[c\xD4\xB6\x8F\xD7`\xE0\x1B_R`\x04_\xFD[`@QaG\x17\x81a\x04\xA1V[`@\x90\x81QaG&\x83\x82a\x04\xDCV[\x826\x827\x81R` \x82Q\x91aG;\x84\x84a\x04\xDCV[\x836\x847\x01R\x80QaGM\x82\x82a\x04\xDCV[\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81R\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED` \x82\x01R\x81Q\x90aG\xA3\x83\x83a\x04\xDCV[\x7F']\xC4\xA2\x88\xD1\xAF\xB3\xCB\xB1\xAC\t\x18u$\xC7\xDB69]\xF7\xBE;\x99\xE6s\xB1:\x07Ze\xEC\x82R\x7F\x1D\x9B\xEF\xCD\x05\xA52>m\xA4\xD45\xF3\xB6\x17\xCD\xB3\xAF\x83(\\-\xF7\x11\xEF9\xC0\x15q\x82\x7F\x9D` \x83\x01RaG\xF8\x83Q\x93\x84a\x04\xDCV[\x82R` \x82\x01R\x90V[_Q` aM\xF7_9_Q\x90_R\x90aH\x19aF\x1FV[P_\x91\x90\x06` `\xC0\x83[aI\x19W_\x93_Q` aM\xF7_9_Q\x90_R`\x03\x81\x86\x81\x81\x80\t\t\x08`@QaHO\x85\x82a\x04\xDCV[\x846\x827\x84\x81\x85`@QaHc\x82\x82a\x04\xDCV[\x816\x827\x83\x81R\x83` \x82\x01R\x83`@\x82\x01R\x85``\x82\x01R\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R`\x80\x82\x01R_Q` aM\xF7_9_Q\x90_R`\xA0\x82\x01R`\x05a\x07\xCF\x19Z\x01\xFA\x80\x15aF\xA7WaH\xCD\x90aM\xE0V[Q\x91aI\x19W_Q` aM\xF7_9_Q\x90_R\x82\x80\t\x14aI\x04WP_Q` aM\xF7_9_Q\x90_R`\x01_\x94\x08\x92\x93aH$V[\x92\x93PPaI\x10a\x05\x0FV[\x92\x83R\x82\x01R\x90V[a \x17V[aI&aF\x1FV[P`@QaI3\x81a\x04\xA1V[`\x01\x81R`\x02` \x82\x01R\x90V[\x90`\x0C\x81\x10\x15a \x12W`\x05\x1B\x01\x90V[\x93\x92\x90\x91aI``@a\x05<V[\x94\x85R` \x85\x01RaIr`@a\x05<V[\x91\x82R` \x82\x01RaI\x82aF7V[\x92_[`\x02\x81\x10aI\xAFWPPP` a\x01\x80\x92aI\x9EaFMV[\x93\x84\x91`\x08b\x01\xD4\xC0\xFA\x91Q\x15\x15\x90V[\x80aI\xBB`\x01\x92a/\xD5V[aI\xC5\x82\x85a \x01V[QQaI\xD1\x82\x89aIAV[R` aI\xDE\x83\x86a \x01V[Q\x01QaI\xF3aI\xED\x83a;\xFBV[\x89aIAV[RaI\xFE\x82\x86a \x01V[QQQaJ\raI\xED\x83a<\tV[RaJ#aJ\x1B\x83\x87a \x01V[QQ` \x01\x90V[QaJ0aI\xED\x83a<\x17V[R` aJ=\x83\x87a \x01V[Q\x01QQaJMaI\xED\x83a<%V[RaJyaJsaJl` aJc\x86\x8Aa \x01V[Q\x01Q` \x01\x90V[Q\x92a<3V[\x88aIAV[R\x01aI\x85V[` \x7F@\xE4\xED\x88\n)\xE0\xF6\xDD\xCE0tW\xFBu\xCD\xDFO\xEE\xF7\xD3\xEC\xB00\x1B\xFD\xF4\x97j\x0E-\xFC\x91\x15\x15`\xFF\x19`\x97T\x16`\xFF\x82\x16\x17`\x97U`@Q\x90\x81R\xA1V[\x90`\x01aJ\xCC`\xFF\x93aMhV[\x92\x83\x92\x16\x1B\x11\x15aJ\xDAW\x90V[c\xCA\x95s3`\xE0\x1B_R`\x04_\xFD[\x80_\x91[aJ\xF5WP\x90V[_\x19\x81\x01\x81\x81\x11a(IWa\xFF\xFF\x91\x16\x91\x16a\xFF\xFF\x81\x14a(IW`\x01\x01\x90\x80aJ\xEDV[\x90aK#aF\x1FV[Pa\xFF\xFF\x81\x16\x90a\x02\0\x82\x10\x15aK\xC8W`\x01\x82\x14aK\xC3WaKDa\x05\x0FV[_\x81R_` \x82\x01R\x92\x90`\x01\x90_\x92[a\xFF\xFF\x83\x16\x85\x10\x15aKiWPPPPP\x90V[`\x01a\xFF\xFF\x83\x16`\xFF\x86\x16\x1C\x81\x16\x14aK\xA3W[`\x01aK\x99aK\x8E\x83`\xFF\x94aF\xA9V[\x94`\x01\x1Ba\xFF\xFE\x16\x90V[\x94\x01\x16\x92\x91aKUV[\x94`\x01aK\x99aK\x8EaK\xB8\x89`\xFF\x95aF\xA9V[\x98\x93PPPPaK}V[PP\x90V[c\x7F\xC4\xEA}`\xE1\x1B_R`\x04_\xFD[aK\xDFaF\x1FV[P\x80Q\x90\x81\x15\x80aLPW[\x15aL\x0CWPP`@QaL\0`@\x82a\x04\xDCV[_\x81R_` \x82\x01R\x90V[` _Q` aM\xF7_9_Q\x90_R\x91\x01Q\x06_Q` aM\xF7_9_Q\x90_R\x03_Q` aM\xF7_9_Q\x90_R\x81\x11a(IW`@Q\x91aG\xF8\x83a\x04\xA1V[P` \x81\x01Q\x15aK\xEBV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x03aLpWV[`d`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R` `$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R\xFD[a\xFF\xFFaL\xC0\x82aJ\xE9V[\x16aL\xCA\x81a\x08\xC4V[\x90aL\xD8`@Q\x92\x83a\x04\xDCV[\x80\x82RaL\xE7`\x1F\x19\x91a\x08\xC4V[\x016` \x83\x017__[\x82Q\x82\x10\x80aMGW[\x15aM@W`\x01\x81\x1B\x84\x16aM\x19W[aM\x14\x90a(\xB4V[aL\xF1V[\x90`\x01aM\x14\x91`\xFF`\xF8\x1B\x84`\xF8\x1B\x16_\x1AaM6\x82\x87a\"\xB8V[S\x01\x91\x90PaM\x0BV[PP\x90P\x90V[Pa\x01\0\x81\x10aL\xFBV[\x15aMYWV[c\x10\x19\x10i`\xE3\x1B_R`\x04_\xFD[\x90a\x01\0\x82Q\x11aM\xD1W\x81Q\x15aM\xCCW` \x82\x01Q`\x01\x90`\xF8\x1C\x81\x90\x1B[\x83Q\x82\x10\x15aM\xC7W`\x01\x90aM\xB2aM\xA8a$\x8Ca$~\x86\x89a\"\xB8V[`\xFF`\x01\x91\x16\x1B\x90V[\x90aM\xBE\x81\x83\x11aMRV[\x17\x91\x01\x90aM\x89V[\x92PPV[_\x91PV[c}\xA5NG`\xE1\x1B_R`\x04_\xFD[\x15aM\xE7WV[c\xD5\x1E\xDA\xE3`\xE0\x1B_R`\x04_\xFD\xFE0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\xA2dipfsX\"\x12 \xBC~V\xE7\0\x1D1\xFE\xD06\xCFSVO\xE2\x86\x1A\x94\xFE\xEE\xD9\x17\xB3\xC5\xDC\\\x11\x1A\r6\x87!dsolcC\0\x08\x1B\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x60806040526004361015610011575f80fd5b5f3560e01c8063136439dd1461029a5780631459457a14610295578063171f1d5b146102905780631ad43189146101e6578063245a7bfc1461028b5780632cb223d5146102865780632d89f6fc1461028157806331b36bd91461027c5780633563b0d1146102775780633998fdd314610272578063416c7e5e1461026d5780634d2b57fe146102685780634f739f7414610263578063595c6a671461025e5780635a2d7f02146102595780635ac86ab7146102545780635baec9a01461024f5780635c1556621461024a5780635c975abb146102455780635decc3f5146102405780635df459461461023b57806368304835146102365780636b532e9e146102315780636b92787e1461022c5780636d14a987146102275780636efb463614610222578063715018a61461021d57806372d18e8d1461020e5780637afa1eed14610218578063886f1195146102135780638b00ce7c1461020e5780638da5cb5b146102095780639b290e9814610204578063b98d0908146101ff578063ca8aa7c7146101fa578063cefdc1d4146101f5578063df5cf723146101f0578063f2fde38b146101eb578063f5c9899d146101e6578063f63c5bab146101e15763fabc1cbc146101dc575f80fd5b611de5565b611dca565b6106c1565b611d39565b611cf5565b611bb1565b611b72565b611b50565b611b28565b611b00565b611a71565b611abc565b611a94565b611a16565b611969565b6118e9565b61177b565b61170a565b6116c6565b611682565b611644565b611627565b6114ae565b6111c9565b610f1a565b610eed565b610e7a565b610dd3565b610bc8565b610a68565b610a36565b6109bc565b610812565b61077b565b610742565b610701565b61064f565b61036f565b3461035a57602036600319011261035a5760043560405163237dfb4760e11b8152336004820152906020826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156103555761032492610310915f91610326575b50611ee7565b61031f60665482811614611efd565b6145a5565b005b610348915060203d60201161034e575b61034081836104dc565b810190611ec7565b5f61030a565b503d610336565b611edc565b5f80fd5b6001600160a01b0381160361035a57565b3461035a5760a036600319011261035a5760043561038c8161035e565b61040060243561039b8161035e565b6044356103a78161035e565b606435906103b48261035e565b608435926103c18461035e565b5f54956103e660ff600889901c16158098819961047f575b811561045f575b50611f13565b866103f7600160ff195f5416175f55565b61044857611f76565b61040657005b61041461ff00195f54165f55565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989080602081015b0390a1005b61045a61010061ff00195f5416175f55565b611f76565b303b15915081610471575b505f6103e0565b60ff1660011490505f61046a565b600160ff82161091506103d9565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b038211176104bc57604052565b61048d565b608081019081106001600160401b038211176104bc57604052565b90601f801991011681019081106001600160401b038211176104bc57604052565b6040519061050d610100836104dc565b565b6040519061050d6040836104dc565b6040519061050d6060836104dc565b6040519061050d60a0836104dc565b9061050d60405192836104dc565b60409060e319011261035a5760405190610563826104a1565b60e4358252610104356020830152565b919082604091031261035a5760405161058b816104a1565b6020808294803584520135910152565b9080601f8301121561035a57604051916105b66040846104dc565b82906040810192831161035a57905b8282106105d25750505090565b81358152602091820191016105c5565b90608060631983011261035a576040516105fb816104a1565b6020610616829461060d81606461059b565b845260a461059b565b910152565b919060808382031261035a57602061061660405192610639846104a1565b60408496610647838261059b565b86520161059b565b3461035a5761012036600319011261035a57600435604036602319011261035a576106a76040918251610681816104a1565b60243581526044356020820152610697366105e2565b906106a13661054a565b9261202b565b8251911515825215156020820152f35b5f91031261035a57565b3461035a575f36600319011261035a57602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461035a575f36600319011261035a5760cd546040516001600160a01b039091168152602090f35b63ffffffff81160361035a57565b359061050d82610729565b3461035a57602036600319011261035a5763ffffffff60043561076481610729565b165f5260cb602052602060405f2054604051908152f35b3461035a57602036600319011261035a5763ffffffff60043561079d81610729565b165f5260ca602052602060405f2054604051908152f35b6001600160401b0381116104bc5760051b60200190565b90602080835192838152019201905f5b8181106107e85750505090565b82518452602093840193909201916001016107db565b90602061080f9281815201906107cb565b90565b3461035a57604036600319011261035a5760043561082f8161035e565b602435906001600160401b03821161035a573660238301121561035a5781600401359161085b836107b4565b9261086960405194856104dc565b8084526024602085019160051b8301019136831161035a57602401905b8282106108aa576108a661089a8686612195565b604051918291826107fe565b0390f35b6020809183356108b98161035e565b815201910190610886565b6001600160401b0381116104bc57601f01601f191660200190565b9291926108eb826108c4565b916108f960405193846104dc565b82948184528183011161035a578281602093845f960137010152565b9080602083519182815201916020808360051b8301019401925f915b83831061094057505050505090565b9091929394601f19828203018352855190602080835192838152019201905f905b8082106109805750505060208060019297019301930191939290610931565b909192602060606001926001600160601b0360408851868060a01b03815116845285810151868501520151166040820152019401920190610961565b3461035a57606036600319011261035a576004356109d98161035e565b6024356001600160401b03811161035a573660238201121561035a576108a691610a10610a229236906024816004013591016108df565b60443591610a1d83610729565b6123d3565b604051918291602083526020830190610915565b3461035a575f36600319011261035a5760d1546040516001600160a01b039091168152602090f35b8015150361035a57565b3461035a57602036600319011261035a57600435610a8581610a5e565b604051638da5cb5b60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610355575f91610afa575b506001600160a01b03163303610aeb5761032490614a80565b637070f3b160e11b5f5260045ffd5b610b1c915060203d602011610b22575b610b1481836104dc565b81019061225a565b5f610ad2565b503d610b0a565b9080601f8301121561035a578135610b40816107b4565b92610b4e60405194856104dc565b81845260208085019260051b82010192831161035a57602001905b828210610b765750505090565b8135815260209182019101610b69565b60206040818301928281528451809452019201905f5b818110610ba95750505090565b82516001600160a01b0316845260209384019390920191600101610b9c565b3461035a57604036600319011261035a57600435610be58161035e565b6024356001600160401b03811161035a57610c04903690600401610b29565b610c0e8151612133565b916001600160a01b03165f5b8251811015610cab57806020610c33610c539386612172565b5160405180948192630a5aec1960e21b8352600483019190602083019252565b0381865afa91821561035557600192610c87915f91610c8d575b50610c788388612172565b6001600160a01b039091169052565b01610c1a565b610ca5915060203d8111610b2257610b1481836104dc565b5f610c6d565b604051806108a68682610b86565b9181601f8401121561035a578235916001600160401b03831161035a576020838186019501011161035a57565b90602080835192838152019201905f5b818110610d035750505090565b825163ffffffff16845260209384019390920191600101610cf6565b90602082526060610d6d610d58610d4284516080602088015260a0870190610ce6565b6020850151868203601f19016040880152610ce6565b6040840151858203601f190184870152610ce6565b910151916080601f1982840301910152815180825260208201916020808360051b8301019401925f915b838310610da657505050505090565b9091929394602080610dc4600193601f198682030187528951610ce6565b97019301930191939290610d97565b3461035a57608036600319011261035a57600435610df08161035e565b60243590610dfd82610729565b6044356001600160401b03811161035a57610e1c903690600401610cb9565b91606435926001600160401b03841161035a573660238501121561035a578360040135926001600160401b03841161035a573660248560051b8701011161035a576108a6956024610e6e9601936128e7565b60405191829182610d1f565b3461035a575f36600319011261035a5760405163237dfb4760e11b81523360048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561035557610ee5915f916103265750611ee7565b610324614571565b3461035a575f36600319011261035a57602060405167016345785d8a00008152f35b60ff81160361035a57565b3461035a57602036600319011261035a576020600160ff600435610f3d81610f0f565b161b806066541614604051908152f35b9081608091031261035a5790565b604090602319011261035a57602490565b9080601f8301121561035a578135610f83816107b4565b92610f9160405194856104dc565b81845260208085019260051b82010192831161035a57602001905b828210610fb95750505090565b602080918335610fc881610729565b815201910190610fac565b81601f8201121561035a578035610fe9816107b4565b92610ff760405194856104dc565b81845260208085019260061b8401019281841161035a57602001915b838310611021575050505090565b60206040916110308486610573565b815201920191611013565b9080601f8301121561035a578135611052816107b4565b9261106060405194856104dc565b81845260208085019260051b8201019183831161035a5760208201905b83821061108c57505050505090565b81356001600160401b03811161035a576020916110ae87848094880101610f6c565b81520191019061107d565b9190916101808184031261035a576110cf6104fd565b9281356001600160401b03811161035a57816110ec918401610f6c565b845260208201356001600160401b03811161035a578161110d918401610fd3565b602085015260408201356001600160401b03811161035a5781611131918401610fd3565b6040850152611143816060840161061b565b60608501526111558160e08401610573565b60808501526101208201356001600160401b03811161035a578161117a918401610f6c565b60a08501526101408201356001600160401b03811161035a578161119f918401610f6c565b60c08501526101608201356001600160401b03811161035a576111c2920161103b565b60e0830152565b3461035a57608036600319011261035a576004356001600160401b03811161035a576111f9903690600401610f4d565b61120236610f5b565b906064356001600160401b03811161035a576112229036906004016110b9565b60cd549092906001600160a01b0316330361143057611245602083949301612d4f565b916113486112566040860186612d59565b9290946112b661126860608901612d4f565b9760405161128c8161127e602082019485612d8b565b03601f1981018352826104dc565b5190206112af61129b88612d4f565b63ffffffff165f5260ca60205260405f2090565b5414612e12565b6112e06112d96112c587612d4f565b63ffffffff165f5260cb60205260405f2090565b5415612e84565b8363ffffffff43169661132a6113226113197f000000000000000000000000000000000000000000000000000000000000000086612f15565b63ffffffff1690565b891115612f2f565b60405160208101906113408161127e8b85612faf565b519020613ce7565b919060ff5f9616955b8281106113ce577f349c1ee60e4e8972ee9dba642c1774543d5c4136879b7f4caaf04bf81a487a2a86868661139361138761050f565b63ffffffff9094168452565b602083015260405160208101906113af8161127e868686613092565b5190206113be6112c583612d4f565b5561044360405192839283613092565b8061142a6114066114016113f56113e86001968851612172565b516001600160601b031690565b6001600160601b031690565b612fbf565b6114236113f58b61141e6113e88760208b0151612172565b612ffe565b1115613021565b01611351565b60405162461bcd60e51b815260206004820152601d60248201527f41676772656761746f72206d757374206265207468652063616c6c65720000006044820152606490fd5b60206040818301928281528451809452019201905f5b8181106114985750505090565b825184526020938401939092019160010161148b565b3461035a57606036600319011261035a576004356114cb8161035e565b6024356001600160401b03811161035a576114ea903690600401610b29565b604435916114f783610729565b6040516361c8a12f60e11b8152906001600160a01b03165f828061151f8688600484016130bc565b0381845afa918215610355575f92611603575b5061153d8351612133565b935f5b84518110156115f5576115538186612172565b519060208361156f6115658489612172565b5163ffffffff1690565b6040516304ec635160e01b8152600481019590955263ffffffff918216602486015216604484015282606481875afa8015610355576001925f916115c7575b50828060c01b03166115c08289612172565b5201611540565b6115e8915060203d81116115ee575b6115e081836104dc565b81019061285e565b5f6115ae565b503d6115d6565b604051806108a68882611475565b6116209192503d805f833e61161881836104dc565b81019061272d565b905f611532565b3461035a575f36600319011261035a576020606654604051908152f35b3461035a57602036600319011261035a5763ffffffff60043561166681610729565b165f5260cc602052602060ff60405f2054166040519015158152f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a5760c036600319011261035a576004356001600160401b03811161035a5761173a903690600401610f4d565b61174336610f5b565b90604036606319011261035a5760a4356001600160401b03811161035a57610324926117756064923690600401610fd3565b9261350a565b3461035a57606036600319011261035a5760243560043561179b82610729565b6044356001600160401b03811161035a576117ba903690600401610cb9565b60ce5491939092916001600160a01b0316330361189a57610324936118849361180461180b936117e8613ae9565b9586524363ffffffff16602087015263ffffffff166060860152565b36916108df565b604082015260405160208101906118268161127e8585613b0d565b51902061183b61129b60c95463ffffffff1690565b5560c95463ffffffff16907f1695b8d06ec800b4615e745cfb5bd00c1f2875615d42925c3b5afa543bb24c486040518061187c63ffffffff86169482613b0d565b0390a2612ee5565b63ffffffff1663ffffffff1960c954161760c955565b60405162461bcd60e51b815260206004820152602160248201527f5461736b2067656e657261746f72206d757374206265207468652063616c6c656044820152603960f91b6064820152608490fd5b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b90602080835192838152019201905f5b81811061194a5750505090565b82516001600160601b031684526020938401939092019160010161193d565b3461035a57608036600319011261035a576004356024356001600160401b03811161035a5761199c903690600401610cb9565b90916044356119aa81610729565b606435926001600160401b03841161035a57611a0c946119d16119d79536906004016110b9565b93613ce7565b6040519283926040845260206119f88251604080880152608087019061192d565b910151848203603f1901606086015261192d565b9060208301520390f35b3461035a575f36600319011261035a57611a2e614c5c565b603380546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461035a575f36600319011261035a57602063ffffffff60c95416604051908152f35b3461035a575f36600319011261035a5760ce546040516001600160a01b039091168152602090f35b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a575f36600319011261035a576033546040516001600160a01b039091168152602090f35b3461035a575f36600319011261035a5760cf546040516001600160a01b039091168152602090f35b3461035a575f36600319011261035a57602060ff609754166040519015158152f35b3461035a575f36600319011261035a5760d0546040516001600160a01b039091168152602090f35b60409061080f939281528160208201520190610915565b3461035a57606036600319011261035a57600435611bce8161035e565b602435604435611bdd81610729565b611c1e611be8612111565b9280611bf385612165565b526040516361c8a12f60e11b81526001600160a01b0386169490925f918491829187600484016130bc565b0381875afa9384156103555783611c48611319611565611c7d986020975f91611cdb575b50612165565b92604051968794859384936304ec635160e01b85526004850163ffffffff604092959493606083019683521660208201520152565b03915afa801561035557611cac925f91611cbc575b506001600160c01b031692611ca684614cb4565b906123d3565b906108a660405192839283611b9a565b611cd5915060203d6020116115ee576115e081836104dc565b5f611c92565b611cef91503d805f833e61161881836104dc565b5f611c42565b3461035a575f36600319011261035a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461035a57602036600319011261035a57600435611d568161035e565b611d5e614c5c565b6001600160a01b03811615611d7657610324906145d7565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b3461035a575f36600319011261035a57602060405160648152f35b3461035a57602036600319011261035a5760043560405163755b36bd60e11b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610355575f91611ea8575b506001600160a01b03163303611e9957611e67606654198219811614611efd565b806066556040519081527f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c60203392a2005b63794821ff60e01b5f5260045ffd5b611ec1915060203d602011610b2257610b1481836104dc565b5f611e46565b9081602091031261035a575161080f81610a5e565b6040513d5f823e3d90fd5b15611eee57565b631d77d47760e21b5f5260045ffd5b15611f0457565b63c61dca5d60e01b5f5260045ffd5b15611f1a57565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b611f7f906145d7565b60018060a01b03166001600160601b0360a01b60cd54161760cd5560018060a01b03166001600160601b0360a01b60ce54161760ce5560018060a01b03166001600160601b0360a01b60d054161760d05560018060a01b03166001600160601b0360a01b60cf54161760cf55565b634e487b7160e01b5f52603260045260245ffd5b9060028110156120125760051b0190565b611fed565b634e487b7160e01b5f52601260045260245ffd5b6121076120e461210d956120de6120d785875160208901518a515160208c51015160208d016020815151915101519189519360208b0151956040519760208901998a5260208a015260408901526060880152608087015260a086015260c085015260e08401526101008301526120ae81610120840103601f1981018352826104dc565b5190207f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001900690565b8096614663565b906146a9565b926120de6120f96120f361470b565b94614802565b9161210261491e565b614663565b91614952565b9091565b6040805190919061212283826104dc565b6001815291601f1901366020840137565b9061213d826107b4565b61214a60405191826104dc565b828152809261215b601f19916107b4565b0190602036910137565b8051156120125760200190565b80518210156120125760209160051b010190565b9081602091031261035a575190565b9190916121a28351612133565b925f5b8151811015612255578060206121ce6121c16121f79486612172565b516001600160a01b031690565b6040516309aa152760e11b81526001600160a01b03909116600482015292839081906024820190565b03816001600160a01b0388165afa8015610355576001925f91612227575b506122208288612172565b52016121a5565b612248915060203d811161224e575b61224081836104dc565b810190612186565b5f612215565b503d612236565b505050565b9081602091031261035a575161080f8161035e565b90612279826107b4565b61228660405191826104dc565b82815260208193612299601f19916107b4565b0191015f5b8281106122aa57505050565b60608282015260200161229e565b908151811015612012570160200190565b60208183031261035a578051906001600160401b03821161035a57019080601f8301121561035a5781516122fc816107b4565b9261230a60405194856104dc565b81845260208085019260051b82010192831161035a57602001905b8282106123325750505090565b8151815260209182019101612325565b9061234c826107b4565b61235960405191826104dc565b828152809261236a601f19916107b4565b015f5b81811061237957505050565b6040519060608201918083106001600160401b038411176104bc576020926040525f81525f838201525f60408201528282860101520161236d565b9081602091031261035a57516001600160601b038116810361035a5790565b604051636830483560e01b815293919291906001600160a01b0316602085600481845afa948515610355575f956126e8575b50604051634f4c91e160e11b815294602086600481855afa918215610355576004965f936126c6575b5060209060405197888092632efa2ca360e11b82525afa958615610355575f966126a5575b50612461859392955161226f565b945f935b805185101561269b5761249261248c61247e87846122b8565b516001600160f81b03191690565b60f81c90565b604051638902624560e01b815260ff8216600482015263ffffffff88166024820152909490925f846044816001600160a01b0385165afa938415610355575f94612677575b506124e28451612342565b6124ec888b612172565b526124f7878a612172565b505f5b8451811015612666578060206125136125359388612172565b518d60405180809681946308f6629d60e31b8352600483019190602083019252565b03916001600160a01b03165afa918215610355575f92612646575b5061255b8187612172565b518a60208a61256a858b612172565b5160405163fa28c62760e01b8152600481019190915260ff91909116602482015263ffffffff929092166044830152816064816001600160a01b038d165afa938415610355576125fd8c8f6125f860019861260f9789975f92612616575b506125e36125d461051e565b6001600160a01b039098168852565b60208701526001600160601b03166040860152565b612172565b51906126098383612172565b52612172565b50016124fa565b61263891925060203d811161263f575b61263081836104dc565b8101906123b4565b905f6125c8565b503d612626565b61265f91925060203d8111610b2257610b1481836104dc565b905f612550565b506001909601959094509150612465565b6126949194503d805f833e61268c81836104dc565b8101906122c9565b925f6124d7565b5050509350505090565b6126bf91965060203d602011610b2257610b1481836104dc565b945f612453565b60209193506126e190823d8411610b2257610b1481836104dc565b929061242e565b61270291955060203d602011610b2257610b1481836104dc565b935f612405565b60405190612716826104c1565b606080838181528160208201528160408201520152565b60208183031261035a578051906001600160401b03821161035a57019080601f8301121561035a578151612760816107b4565b9261276e60405194856104dc565b81845260208085019260051b82010192831161035a57602001905b8282106127965750505090565b6020809183516127a581610729565b815201910190612789565b63ffffffff909116815260406020820181905281018390526001600160fb1b03831161035a5760609260051b809284830137010190565b908060209392818452848401375f828201840152601f01601f1916010190565b60409063ffffffff61080f959316815281602082015201916127e7565b634e487b7160e01b5f52601160045260245ffd5b60ff1660ff81146128495760010190565b612824565b91908110156120125760051b0190565b9081602091031261035a57516001600160c01b038116810361035a5790565b1561288457565b6325ec6c1f60e01b5f5260045ffd5b90821015612012570190565b9081602091031261035a575161080f81610729565b5f1981146128495760010190565b916128e060209263ffffffff929695966040865260408601916127e7565b9416910152565b95939495929091926128f7612709565b50604051636830483560e01b8152936001600160a01b03919091169190602085600481865afa948515610355575f95612d2e575b50612934612709565b946040516361c8a12f60e11b81525f81806129548d8d8b600485016127b0565b0381885afa908115610355575f91612d14575b5086526040516340e03a8160e11b81526001600160a01b039190911692905f818061299785878b60048501612807565b0381875afa908115610355575f91612cfa575b5060408701526129b98161226f565b9860608701998a525f5b60ff811683811015612c4557885f6129ec838f6129df88612133565b9051906126098383612172565b505f8a868f5b818410612a6f575050505090508c612a0982612133565b915f5b818110612a3657505091612a2b91612a31949351906126098383612172565b50612838565b6129c3565b80612a69612a54611565600194612a4e8a8951612172565b51612172565b612a5e8388612172565b9063ffffffff169052565b01612a0c565b61156584612a848160209695612a8c9561284e565b359751612172565b6040516304ec635160e01b8152600481019690965263ffffffff9182166024870152166044850152836064818d5afa801561035557888f888a918f94612b316001612b2481938d809d5f92612c19575b5061248c612b00612b0e92612af9878060c01b038616151561287d565b8b8d612893565b356001600160f81b03191690565b6001600160c01b0391821660ff919091161c1690565b166001600160c01b031690565b14612b4d575b5050505050600191925001908a918a868f6129f2565b8597612b6f93612b68602097999861248c95612b009561284e565b3595612893565b60405163dd9846b960e01b8152600481019290925260ff16602482015263ffffffff939093166044840152826064818c5afa908115610355578f612bcd90612bd29383886001975f93612be1575b50612a4e90612a5e939451612172565b6128b4565b905082918a888f888a91612b37565b612a5e935090612c0a612a4e9260203d8111612c12575b612c0281836104dc565b81019061289f565b935090612bbd565b503d612bf8565b612b0e919250612b00612c3c61248c9260203d81116115ee576115e081836104dc565b93925050612adc565b505050929095975060049496506020915060405194858092632efa2ca360e11b82525afa90811561035557612c9b945f948593612cd9575b5060405163354952a360e21b815295869485938493600485016128c2565b03916001600160a01b03165afa908115610355575f91612cbf575b50602082015290565b612cd391503d805f833e61161881836104dc565b5f612cb6565b612cf391935060203d602011610b2257610b1481836104dc565b915f612c7d565b612d0e91503d805f833e61161881836104dc565b5f6129aa565b612d2891503d805f833e61161881836104dc565b5f612967565b612d4891955060203d602011610b2257610b1481836104dc565b935f61292b565b3561080f81610729565b903590601e198136030182121561035a57018035906001600160401b03821161035a5760200191813603831361035a57565b602081528135602082015263ffffffff6020830135612da981610729565b1660408201526040820135601e198336030181121561035a578201906020823592016001600160401b03831161035a57823603811361035a57612e076060612e0060809361080f96858488015260a08701916127e7565b9501610737565b63ffffffff16910152565b15612e1957565b60405162461bcd60e51b815260206004820152603d60248201527f737570706c696564207461736b20646f6573206e6f74206d617463682074686560448201527f206f6e65207265636f7264656420696e2074686520636f6e74726163740000006064820152608490fd5b15612e8b57565b60405162461bcd60e51b815260206004820152602c60248201527f41676772656761746f722068617320616c726561647920726573706f6e64656460448201526b20746f20746865207461736b60a01b6064820152608490fd5b63ffffffff60019116019063ffffffff821161284957565b63ffffffff60649116019063ffffffff821161284957565b9063ffffffff8091169116019063ffffffff821161284957565b15612f3657565b60405162461bcd60e51b815260206004820152602d60248201527f41676772656761746f722068617320726573706f6e64656420746f207468652060448201526c7461736b20746f6f206c61746560981b6064820152608490fd5b6020809163ffffffff8135612fa581610729565b1684520135910152565b60408101929161050d9190612f91565b9060648202918083046064149015171561284957565b9060068202918083046006149015171561284957565b8181029291811591840414171561284957565b906001600160601b03809116911602906001600160601b03821691820361284957565b1561302857565b608460405162461bcd60e51b815260206004820152604060248201527f5369676e61746f7269657320646f206e6f74206f776e206174206c656173742060448201527f7468726573686f6c642070657263656e74616765206f6620612071756f72756d6064820152fd5b90929160206060916130a8846080810197612f91565b63ffffffff81511660408501520151910152565b60409063ffffffff61080f949316815281602082015201906107cb565b156130e057565b60405162461bcd60e51b815260206004820152602160248201527f5461736b206861736e2774206265656e20726573706f6e64656420746f2079656044820152601d60fa1b6064820152608490fd5b9092916020606091613145846080810197612f91565b63ffffffff813561315581610729565b1660408501520135910152565b1561316957565b60405162461bcd60e51b815260206004820152603d60248201527f5461736b20726573706f6e736520646f6573206e6f74206d617463682074686560448201527f206f6e65207265636f7264656420696e2074686520636f6e74726163740000006064820152608490fd5b156131db57565b60405162461bcd60e51b815260206004820152604360248201527f54686520726573706f6e736520746f2074686973207461736b2068617320616c60448201527f7265616479206265656e206368616c6c656e676564207375636365737366756c606482015262363c9760e91b608482015260a490fd5b1561325957565b60405162461bcd60e51b815260206004820152603760248201527f546865206368616c6c656e676520706572696f6420666f72207468697320746160448201527f736b2068617320616c726561647920657870697265642e0000000000000000006064820152608490fd5b60049163ffffffff60e01b9060e01b1681520160208251919201905f5b8181106132ee5750505090565b82518452602093840193909201916001016132e1565b1561330b57565b60405162461bcd60e51b815260206004820152605060248201527f546865207075626b657973206f66206e6f6e2d7369676e696e67206f7065726160448201527f746f727320737570706c69656420627920746865206368616c6c656e6765722060648201526f30b932903737ba1031b7b93932b1ba1760811b608482015260a490fd5b60208183031261035a578051906001600160401b03821161035a57019080601f8301121561035a5781516133c2816107b4565b926133d060405194856104dc565b81845260208085019260051b82010192831161035a57602001905b8282106133f85750505090565b6020809183516134078161035e565b8152019101906133eb565b604051906134216040836104dc565b601282527139b630b9b42fba3432afb7b832b930ba37b960711b6020830152565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b91906020835260c083019260018060a01b03825116602082015263ffffffff602083015116604082015260408201519360a060608301528451809152602060e083019501905f5b8181106134eb5750505060806134d661080f94956060850151601f1985830301848601526107cb565b9201519060a0601f1982850301910152613442565b82516001600160a01b03168752602096870196909201916001016134ad565b9392919092600161351a85612d4f565b9460206135d6883561354561353d8a63ffffffff165f5260cb60205260405f2090565b5415156130d9565b6135806135608a63ffffffff165f5260cb60205260405f2090565b54604051858101906135778161127e8d8b8661312f565b51902014613162565b6135ab6135a561359e8b63ffffffff165f5260cc60205260405f2090565b5460ff1690565b156131d4565b6135d06135c26113196135bd8a612d4f565b612efd565b63ffffffff43161115613252565b80612feb565b9101351414613ab7576135e98351612133565b935f5b8451811015613629578061361861360560019388612172565b5180515f526020015160205260405f2090565b6136228289612172565b52016135ec565b5090929391946136636020820196602061364289612d4f565b6040516136578161127e8a86830195866132c4565b51902091013514613304565b61366d8551612133565b957f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316945f5b875181101561371d578060206136b46136d49389612172565b516040518094819263745dcd7360e11b8352600483019190602083019252565b03818b5afa918215610355576001926136f9915f916136ff575b50610c78838d612172565b0161369b565b613717915060203d8111610b2257610b1481836104dc565b5f6136ee565b509296955092509261377c61374561374d604087019561373d8789612d59565b939091612d4f565b9236916108df565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166123d3565b905f915b8051831015613a59575f935b6137968483612172565b5151851015613a4c576137d6986020806137b488612a4e8988612172565b510151604051809c81926308f6629d60e31b8352600483019190602083019252565b0381875afa998a15610355575f9a613a2c575b505f5b8951811015613a1b576138116138056121c1838d612172565b6001600160a01b031690565b6001600160a01b038c1614613828576001016137ec565b50969790916138e4959693925b5f8a61388f60ff61386761248c612b008c6138618d61385b60d15460018060a01b031690565b98612d59565b90612893565b61388161387261050f565b6001600160a01b039095168552565b1663ffffffff166020830152565b60d0546138a690613805906001600160a01b031681565b60405163105dea1f60e21b815282516001600160a01b0316600482015260209092015163ffffffff1660248301529098899190829081906044820190565b03915afa968715610355575f976139f7575b506139018751612133565b985f5b8a5181101561392a578067016345785d8a00006139236001938e612172565b5201613904565b509a929998909661396860ff61394f61248c612b008b8f8c9f999b9c61386191612d59565b61395a6125d461052d565b1663ffffffff166020860152565b6040840152606083015261397a613412565b608083015260cf5461399690613805906001600160a01b031681565b803b1561035a57604051636a669b4160e01b8152925f9184918290849082906139c29060048301613466565b03925af1918215610355576001926139dd575b50019361378c565b806139eb5f6139f1936104dc565b806106b7565b5f6139d5565b613a149197503d805f833e613a0c81836104dc565b81019061338f565b955f6138f6565b50969790916138e495969392613835565b613a45919a5060203d8111610b2257610b1481836104dc565b985f6137e9565b9350600190920191613780565b5050509392505050613a89613a7c8263ffffffff165f5260cc60205260405f2090565b805460ff19166001179055565b63ffffffff3391167fc20d1bb0f1623680306b83d4ff4bb99a2beb9d86d97832f3ca40fd13a29df1ec5f80a3565b9350505063ffffffff3391167ffd3e26beeb5967fc5a57a0446914eabc45b4aa474c67a51b4b5160cac60ddb055f80a3565b60405190613af6826104c1565b5f6060838281528260208201528160408201520152565b602081528151602082015263ffffffff6020830151166040820152608063ffffffff6060613b486040860151848387015260a0860190613442565b9401511691015290565b60405190613b5f826104a1565b60606020838281520152565b15613b7257565b62f8202d60e51b5f5260045ffd5b15613b8757565b6343714afd60e01b5f5260045ffd5b15613b9d57565b635f832f4160e01b5f5260045ffd5b15613bb357565b634b874f4560e01b5f5260045ffd5b9081602091031261035a575161080f81610f0f565b5f1981019190821161284957565b15613bec57565b633fdc650560e21b5f5260045ffd5b906001820180921161284957565b906002820180921161284957565b906003820180921161284957565b906004820180921161284957565b906005820180921161284957565b9190820180921161284957565b15613c5557565b63affc5edb60e01b5f5260045ffd5b9081602091031261035a575167ffffffffffffffff198116810361035a5790565b15613c8c57565b63e1310aed60e01b5f5260045ffd5b906001600160601b03809116911603906001600160601b03821161284957565b15613cc257565b6367988d3360e01b5f5260045ffd5b15613cd857565b63ab1b236b60e01b5f5260045ffd5b949392909193613cf5613b52565b50613d01851515613b6b565b604084015151851480614563575b80614555575b80614547575b613d2490613b80565b613d3660208501515185515114613b96565b613d4d63ffffffff431663ffffffff841610613bac565b613d5561050f565b5f81525f602082015292613d67613b52565b613d7087612133565b6020820152613d7e87612133565b8152613d88613b52565b92613d97602088015151612133565b8452613da7602088015151612133565b602085810191909152604051639aa1653d60e01b815290816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561035557613e10915f91614518575b50613e0b368b876108df565b614abe565b985f965b60208901518051891015613f6f57602088613e646115658c613e5c8f96868e613e41613605868095612172565b613e4e8484840151612172565b5282613f3c575b0151612172565b519551612172565b6040516304ec635160e01b8152600481019490945263ffffffff9182166024850152166044830152816064816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa918215610355576120de8a613f118f613f0a8f8460208f92613f0193613ef98460019e613f179e5f91613f1f575b508f8060c01b03169251612172565b520151612172565b51938d51612172565b5116614ae9565b90614b1a565b970196613e14565b613f369150863d81116115ee576115e081836104dc565b5f613eea565b613f6a613f4c8484840151612172565b51613f6384840151613f5d87613bd7565b90612172565b5110613be5565b613e55565b50909597949650613f84919893929950614bd7565b91613f9160975460ff1690565b908115614510576040516318891fd760e31b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610355575f916144f1575b5091905b5f925b8184106140425750505050509261402961402461401d61403c958561127e986080606060209901519201519261202b565b9190613cbb565b613cd1565b01516040519283916020830195866132c4565b51902090565b92989596909399919794878b888c888d6143eb575b6115658260a061409761248c612b008461409f976140916140836136058f9c604060209f9e0151612172565b67ffffffffffffffff191690565b9b612893565b970151612172565b604051631a2f32ab60e21b815260ff95909516600486015263ffffffff9182166024860152166044840152826064816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa908115610355576141636115658f958f9061415b8f978f96848f61415560c09661414e848f60209f90613e55612b009960409361248c9c5f916143bd575b5067ffffffffffffffff19918216911614613c85565b51906146a9565b9c612893565b960151612172565b604051636414a62b60e11b815260ff94909416600485015263ffffffff9182166024850152166044830152816064816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa908115610355576141f0918c8f925f92614399575b5060206141e292930151612172565b906001600160601b03169052565b6142108c6141e28c6142096113e8826020860151612172565b9251612172565b5f985f5b60208a015151811015614380578b8d6142528961424561248c612b00868f8961423d9151612172565b519487612893565b60ff161c60019081161490565b614261575b5050600101614214565b8a8a6142e3859f948f9686612a4e8f9360e061429a61156595602061429261248c612b00839f6142a39c8991612893565b9a0151612172565b519b0151612172565b60405163795f4a5760e11b815260ff909316600484015263ffffffff93841660248401526044830196909652919094166064850152839081906084820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610355578f61434f908f936001959486955f9261435a575b506143496141e2929351936143446113e88487612172565b613c9b565b92612172565b019a90508b8d614257565b6141e292506143796143499160203d811161263f5761263081836104dc565b925061432c565b5093919796996001919699509a94929a01929190613fec565b6141e292506143b6602091823d811161263f5761263081836104dc565b92506141d3565b60206143de92503d81116143e4575b6143d681836104dc565b810190613c64565b5f614138565b503d6143cc565b6144289450614405925061248c91612b0091602095612893565b60405163124d062160e11b815260ff909116600482015291829081906024820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156103555760208961409f8f938f60a08f9761248c612b008f8f906140916140836136058f60408b96918f88936115659f6144ac906144b2936140979f5f926144c8575b5063ffffffff809116931690613c41565b11613c4e565b5050505050509750505050505092935050614057565b602063ffffffff92935082916144e9913d811161224e5761224081836104dc565b92915061449b565b61450a915060203d602011612c1257612c0281836104dc565b5f613fe5565b5f9190613fe9565b61453a915060203d602011614540575b61453281836104dc565b810190613bc2565b5f613dff565b503d614528565b5060e0840151518514613d1b565b5060c0840151518514613d15565b5060a0840151518514613d0f565b5f196066556040515f1981527fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d60203392a2565b806066556040519081527fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d60203392a2565b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b6040519061462c826104a1565b5f6020838281520152565b6040519061018061464881846104dc565b368337565b6040519061465c6020836104dc565b6020368337565b9190604090606061467261461f565b948592602085519261468485856104dc565b8436853780518452015160208301528482015260076107cf195a01fa156146a757565bfe5b6020929160806040926146ba61461f565b958693818651936146cb86866104dc565b85368637805185520151828401528051868401520151606082015260066107cf195a01fa80156146a757156146fc57565b63d4b68fd760e01b5f5260045ffd5b604051614717816104a1565b604090815161472683826104dc565b823682378152602082519161473b84846104dc565b833684370152805161474d82826104dc565b7f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed60208201528151906147a383836104dc565b7f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208301526147f8835193846104dc565b8252602082015290565b5f516020614df75f395f51905f529061481961461f565b505f919006602060c0835b614919575f935f516020614df75f395f51905f526003818681818009090860405161484f85826104dc565b8436823784818560405161486382826104dc565b813682378381528360208201528360408201528560608201527f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260808201525f516020614df75f395f51905f5260a082015260056107cf195a01fa80156146a7576148cd90614de0565b5191614919575f516020614df75f395f51905f528280091461490457505f516020614df75f395f51905f5260015f94089293614824565b9293505061491061050f565b92835282015290565b612017565b61492661461f565b50604051614933816104a1565b600181526002602082015290565b90600c8110156120125760051b0190565b93929091614960604061053c565b9485526020850152614972604061053c565b9182526020820152614982614637565b925f5b600281106149af5750505060206101809261499e61464d565b93849160086201d4c0fa9151151590565b806149bb600192612fd5565b6149c58285612001565b51516149d18289614941565b5260206149de8386612001565b5101516149f36149ed83613bfb565b89614941565b526149fe8286612001565b515151614a0d6149ed83613c09565b52614a23614a1b8387612001565b515160200190565b51614a306149ed83613c17565b526020614a3d8387612001565b51015151614a4d6149ed83613c25565b52614a79614a73614a6c6020614a63868a612001565b51015160200190565b5192613c33565b88614941565b5201614985565b60207f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc91151560ff196097541660ff821617609755604051908152a1565b906001614acc60ff93614d68565b928392161b1115614ada5790565b63ca95733360e01b5f5260045ffd5b805f915b614af5575090565b5f1981018181116128495761ffff9116911661ffff8114612849576001019080614aed565b90614b2361461f565b5061ffff811690610200821015614bc85760018214614bc357614b4461050f565b5f81525f602082015292906001905f925b61ffff8316851015614b6957505050505090565b600161ffff831660ff86161c811614614ba3575b6001614b99614b8e8360ff946146a9565b9460011b61fffe1690565b9401169291614b55565b946001614b99614b8e614bb88960ff956146a9565b989350505050614b7d565b505090565b637fc4ea7d60e11b5f5260045ffd5b614bdf61461f565b50805190811580614c50575b15614c0c575050604051614c006040826104dc565b5f81525f602082015290565b60205f516020614df75f395f51905f52910151065f516020614df75f395f51905f52035f516020614df75f395f51905f52811161284957604051916147f8836104a1565b50602081015115614beb565b6033546001600160a01b03163303614c7057565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b61ffff614cc082614ae9565b16614cca816108c4565b90614cd860405192836104dc565b808252614ce7601f19916108c4565b013660208301375f5f5b8251821080614d47575b15614d40576001811b8416614d19575b614d14906128b4565b614cf1565b906001614d149160ff60f81b8460f81b165f1a614d3682876122b8565b5301919050614d0b565b5050905090565b506101008110614cfb565b15614d5957565b631019106960e31b5f5260045ffd5b90610100825111614dd157815115614dcc57602082015160019060f81c81901b5b8351821015614dc757600190614db2614da861248c61247e86896122b8565b60ff600191161b90565b90614dbe818311614d52565b17910190614d89565b925050565b5f9150565b637da54e4760e11b5f5260045ffd5b15614de757565b63d51edae360e01b5f5260045ffdfe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a2646970667358221220bc7e56e7001d31fed036cf53564fe2861a94feeed917b3c5dc5c111a0d36872164736f6c634300081b0033 + /// ``` + #[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\x80c\x13d9\xDD\x14a\x02\x9AW\x80c\x14YEz\x14a\x02\x95W\x80c\x17\x1F\x1D[\x14a\x02\x90W\x80c\x1A\xD41\x89\x14a\x01\xE6W\x80c$Z{\xFC\x14a\x02\x8BW\x80c,\xB2#\xD5\x14a\x02\x86W\x80c-\x89\xF6\xFC\x14a\x02\x81W\x80c1\xB3k\xD9\x14a\x02|W\x80c5c\xB0\xD1\x14a\x02wW\x80c9\x98\xFD\xD3\x14a\x02rW\x80cAl~^\x14a\x02mW\x80cM+W\xFE\x14a\x02hW\x80cOs\x9Ft\x14a\x02cW\x80cY\\jg\x14a\x02^W\x80cZ-\x7F\x02\x14a\x02YW\x80cZ\xC8j\xB7\x14a\x02TW\x80c[\xAE\xC9\xA0\x14a\x02OW\x80c\\\x15Vb\x14a\x02JW\x80c\\\x97Z\xBB\x14a\x02EW\x80c]\xEC\xC3\xF5\x14a\x02@W\x80c]\xF4YF\x14a\x02;W\x80ch0H5\x14a\x026W\x80ckS.\x9E\x14a\x021W\x80ck\x92x~\x14a\x02,W\x80cm\x14\xA9\x87\x14a\x02'W\x80cn\xFBF6\x14a\x02\"W\x80cqP\x18\xA6\x14a\x02\x1DW\x80cr\xD1\x8E\x8D\x14a\x02\x0EW\x80cz\xFA\x1E\xED\x14a\x02\x18W\x80c\x88o\x11\x95\x14a\x02\x13W\x80c\x8B\0\xCE|\x14a\x02\x0EW\x80c\x8D\xA5\xCB[\x14a\x02\tW\x80c\x9B)\x0E\x98\x14a\x02\x04W\x80c\xB9\x8D\t\x08\x14a\x01\xFFW\x80c\xCA\x8A\xA7\xC7\x14a\x01\xFAW\x80c\xCE\xFD\xC1\xD4\x14a\x01\xF5W\x80c\xDF\\\xF7#\x14a\x01\xF0W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xEBW\x80c\xF5\xC9\x89\x9D\x14a\x01\xE6W\x80c\xF6<[\xAB\x14a\x01\xE1Wc\xFA\xBC\x1C\xBC\x14a\x01\xDCW_\x80\xFD[a\x1D\xE5V[a\x1D\xCAV[a\x06\xC1V[a\x1D9V[a\x1C\xF5V[a\x1B\xB1V[a\x1BrV[a\x1BPV[a\x1B(V[a\x1B\0V[a\x1AqV[a\x1A\xBCV[a\x1A\x94V[a\x1A\x16V[a\x19iV[a\x18\xE9V[a\x17{V[a\x17\nV[a\x16\xC6V[a\x16\x82V[a\x16DV[a\x16'V[a\x14\xAEV[a\x11\xC9V[a\x0F\x1AV[a\x0E\xEDV[a\x0EzV[a\r\xD3V[a\x0B\xC8V[a\nhV[a\n6V[a\t\xBCV[a\x08\x12V[a\x07{V[a\x07BV[a\x07\x01V[a\x06OV[a\x03oV[4a\x03ZW` 6`\x03\x19\x01\x12a\x03ZW`\x045`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01R\x90` \x82`$\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\x91\x82\x15a\x03UWa\x03$\x92a\x03\x10\x91_\x91a\x03&W[Pa\x1E\xE7V[a\x03\x1F`fT\x82\x81\x16\x14a\x1E\xFDV[aE\xA5V[\0[a\x03H\x91P` =` \x11a\x03NW[a\x03@\x81\x83a\x04\xDCV[\x81\x01\x90a\x1E\xC7V[_a\x03\nV[P=a\x036V[a\x1E\xDCV[_\x80\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x03ZWV[4a\x03ZW`\xA06`\x03\x19\x01\x12a\x03ZW`\x045a\x03\x8C\x81a\x03^V[a\x04\0`$5a\x03\x9B\x81a\x03^V[`D5a\x03\xA7\x81a\x03^V[`d5\x90a\x03\xB4\x82a\x03^V[`\x845\x92a\x03\xC1\x84a\x03^V[_T\x95a\x03\xE6`\xFF`\x08\x89\x90\x1C\x16\x15\x80\x98\x81\x99a\x04\x7FW[\x81\x15a\x04_W[Pa\x1F\x13V[\x86a\x03\xF7`\x01`\xFF\x19_T\x16\x17_UV[a\x04HWa\x1FvV[a\x04\x06W\0[a\x04\x14a\xFF\0\x19_T\x16_UV[`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90\x80` \x81\x01[\x03\x90\xA1\0[a\x04Za\x01\0a\xFF\0\x19_T\x16\x17_UV[a\x1FvV[0;\x15\x91P\x81a\x04qW[P_a\x03\xE0V[`\xFF\x16`\x01\x14\x90P_a\x04jV[`\x01`\xFF\x82\x16\x10\x91Pa\x03\xD9V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17a\x04\xBCW`@RV[a\x04\x8DV[`\x80\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17a\x04\xBCW`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17a\x04\xBCW`@RV[`@Q\x90a\x05\ra\x01\0\x83a\x04\xDCV[V[`@Q\x90a\x05\r`@\x83a\x04\xDCV[`@Q\x90a\x05\r``\x83a\x04\xDCV[`@Q\x90a\x05\r`\xA0\x83a\x04\xDCV[\x90a\x05\r`@Q\x92\x83a\x04\xDCV[`@\x90`\xE3\x19\x01\x12a\x03ZW`@Q\x90a\x05c\x82a\x04\xA1V[`\xE45\x82Ra\x01\x045` \x83\x01RV[\x91\x90\x82`@\x91\x03\x12a\x03ZW`@Qa\x05\x8B\x81a\x04\xA1V[` \x80\x82\x94\x805\x84R\x015\x91\x01RV[\x90\x80`\x1F\x83\x01\x12\x15a\x03ZW`@Q\x91a\x05\xB6`@\x84a\x04\xDCV[\x82\x90`@\x81\x01\x92\x83\x11a\x03ZW\x90[\x82\x82\x10a\x05\xD2WPPP\x90V[\x815\x81R` \x91\x82\x01\x91\x01a\x05\xC5V[\x90`\x80`c\x19\x83\x01\x12a\x03ZW`@Qa\x05\xFB\x81a\x04\xA1V[` a\x06\x16\x82\x94a\x06\r\x81`da\x05\x9BV[\x84R`\xA4a\x05\x9BV[\x91\x01RV[\x91\x90`\x80\x83\x82\x03\x12a\x03ZW` a\x06\x16`@Q\x92a\x069\x84a\x04\xA1V[`@\x84\x96a\x06G\x83\x82a\x05\x9BV[\x86R\x01a\x05\x9BV[4a\x03ZWa\x01 6`\x03\x19\x01\x12a\x03ZW`\x045`@6`#\x19\x01\x12a\x03ZWa\x06\xA7`@\x91\x82Qa\x06\x81\x81a\x04\xA1V[`$5\x81R`D5` \x82\x01Ra\x06\x976a\x05\xE2V[\x90a\x06\xA16a\x05JV[\x92a +V[\x82Q\x91\x15\x15\x82R\x15\x15` \x82\x01R\xF3[_\x91\x03\x12a\x03ZWV[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW` `@Qc\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\xF3[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`\xCDT`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[c\xFF\xFF\xFF\xFF\x81\x16\x03a\x03ZWV[5\x90a\x05\r\x82a\x07)V[4a\x03ZW` 6`\x03\x19\x01\x12a\x03ZWc\xFF\xFF\xFF\xFF`\x045a\x07d\x81a\x07)V[\x16_R`\xCB` R` `@_ T`@Q\x90\x81R\xF3[4a\x03ZW` 6`\x03\x19\x01\x12a\x03ZWc\xFF\xFF\xFF\xFF`\x045a\x07\x9D\x81a\x07)V[\x16_R`\xCA` R` `@_ T`@Q\x90\x81R\xF3[`\x01`\x01`@\x1B\x03\x81\x11a\x04\xBCW`\x05\x1B` \x01\x90V[\x90` \x80\x83Q\x92\x83\x81R\x01\x92\x01\x90_[\x81\x81\x10a\x07\xE8WPPP\x90V[\x82Q\x84R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x07\xDBV[\x90` a\x08\x0F\x92\x81\x81R\x01\x90a\x07\xCBV[\x90V[4a\x03ZW`@6`\x03\x19\x01\x12a\x03ZW`\x045a\x08/\x81a\x03^V[`$5\x90`\x01`\x01`@\x1B\x03\x82\x11a\x03ZW6`#\x83\x01\x12\x15a\x03ZW\x81`\x04\x015\x91a\x08[\x83a\x07\xB4V[\x92a\x08i`@Q\x94\x85a\x04\xDCV[\x80\x84R`$` \x85\x01\x91`\x05\x1B\x83\x01\x01\x916\x83\x11a\x03ZW`$\x01\x90[\x82\x82\x10a\x08\xAAWa\x08\xA6a\x08\x9A\x86\x86a!\x95V[`@Q\x91\x82\x91\x82a\x07\xFEV[\x03\x90\xF3[` \x80\x91\x835a\x08\xB9\x81a\x03^V[\x81R\x01\x91\x01\x90a\x08\x86V[`\x01`\x01`@\x1B\x03\x81\x11a\x04\xBCW`\x1F\x01`\x1F\x19\x16` \x01\x90V[\x92\x91\x92a\x08\xEB\x82a\x08\xC4V[\x91a\x08\xF9`@Q\x93\x84a\x04\xDCV[\x82\x94\x81\x84R\x81\x83\x01\x11a\x03ZW\x82\x81` \x93\x84_\x96\x017\x01\x01RV[\x90\x80` \x83Q\x91\x82\x81R\x01\x91` \x80\x83`\x05\x1B\x83\x01\x01\x94\x01\x92_\x91[\x83\x83\x10a\t@WPPPPP\x90V[\x90\x91\x92\x93\x94`\x1F\x19\x82\x82\x03\x01\x83R\x85Q\x90` \x80\x83Q\x92\x83\x81R\x01\x92\x01\x90_\x90[\x80\x82\x10a\t\x80WPPP` \x80`\x01\x92\x97\x01\x93\x01\x93\x01\x91\x93\x92\x90a\t1V[\x90\x91\x92` ```\x01\x92`\x01`\x01``\x1B\x03`@\x88Q\x86\x80`\xA0\x1B\x03\x81Q\x16\x84R\x85\x81\x01Q\x86\x85\x01R\x01Q\x16`@\x82\x01R\x01\x94\x01\x92\x01\x90a\taV[4a\x03ZW``6`\x03\x19\x01\x12a\x03ZW`\x045a\t\xD9\x81a\x03^V[`$5`\x01`\x01`@\x1B\x03\x81\x11a\x03ZW6`#\x82\x01\x12\x15a\x03ZWa\x08\xA6\x91a\n\x10a\n\"\x926\x90`$\x81`\x04\x015\x91\x01a\x08\xDFV[`D5\x91a\n\x1D\x83a\x07)V[a#\xD3V[`@Q\x91\x82\x91` \x83R` \x83\x01\x90a\t\x15V[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`\xD1T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[\x80\x15\x15\x03a\x03ZWV[4a\x03ZW` 6`\x03\x19\x01\x12a\x03ZW`\x045a\n\x85\x81a\n^V[`@Qc\x8D\xA5\xCB[`\xE0\x1B\x81R` \x81`\x04\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\x90\x81\x15a\x03UW_\x91a\n\xFAW[P`\x01`\x01`\xA0\x1B\x03\x163\x03a\n\xEBWa\x03$\x90aJ\x80V[cpp\xF3\xB1`\xE1\x1B_R`\x04_\xFD[a\x0B\x1C\x91P` =` \x11a\x0B\"W[a\x0B\x14\x81\x83a\x04\xDCV[\x81\x01\x90a\"ZV[_a\n\xD2V[P=a\x0B\nV[\x90\x80`\x1F\x83\x01\x12\x15a\x03ZW\x815a\x0B@\x81a\x07\xB4V[\x92a\x0BN`@Q\x94\x85a\x04\xDCV[\x81\x84R` \x80\x85\x01\x92`\x05\x1B\x82\x01\x01\x92\x83\x11a\x03ZW` \x01\x90[\x82\x82\x10a\x0BvWPPP\x90V[\x815\x81R` \x91\x82\x01\x91\x01a\x0BiV[` `@\x81\x83\x01\x92\x82\x81R\x84Q\x80\x94R\x01\x92\x01\x90_[\x81\x81\x10a\x0B\xA9WPPP\x90V[\x82Q`\x01`\x01`\xA0\x1B\x03\x16\x84R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x0B\x9CV[4a\x03ZW`@6`\x03\x19\x01\x12a\x03ZW`\x045a\x0B\xE5\x81a\x03^V[`$5`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x0C\x04\x906\x90`\x04\x01a\x0B)V[a\x0C\x0E\x81Qa!3V[\x91`\x01`\x01`\xA0\x1B\x03\x16_[\x82Q\x81\x10\x15a\x0C\xABW\x80` a\x0C3a\x0CS\x93\x86a!rV[Q`@Q\x80\x94\x81\x92c\nZ\xEC\x19`\xE2\x1B\x83R`\x04\x83\x01\x91\x90` \x83\x01\x92RV[\x03\x81\x86Z\xFA\x91\x82\x15a\x03UW`\x01\x92a\x0C\x87\x91_\x91a\x0C\x8DW[Pa\x0Cx\x83\x88a!rV[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90RV[\x01a\x0C\x1AV[a\x0C\xA5\x91P` =\x81\x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[_a\x0CmV[`@Q\x80a\x08\xA6\x86\x82a\x0B\x86V[\x91\x81`\x1F\x84\x01\x12\x15a\x03ZW\x825\x91`\x01`\x01`@\x1B\x03\x83\x11a\x03ZW` \x83\x81\x86\x01\x95\x01\x01\x11a\x03ZWV[\x90` \x80\x83Q\x92\x83\x81R\x01\x92\x01\x90_[\x81\x81\x10a\r\x03WPPP\x90V[\x82Qc\xFF\xFF\xFF\xFF\x16\x84R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x0C\xF6V[\x90` \x82R``a\rma\rXa\rB\x84Q`\x80` \x88\x01R`\xA0\x87\x01\x90a\x0C\xE6V[` \x85\x01Q\x86\x82\x03`\x1F\x19\x01`@\x88\x01Ra\x0C\xE6V[`@\x84\x01Q\x85\x82\x03`\x1F\x19\x01\x84\x87\x01Ra\x0C\xE6V[\x91\x01Q\x91`\x80`\x1F\x19\x82\x84\x03\x01\x91\x01R\x81Q\x80\x82R` \x82\x01\x91` \x80\x83`\x05\x1B\x83\x01\x01\x94\x01\x92_\x91[\x83\x83\x10a\r\xA6WPPPPP\x90V[\x90\x91\x92\x93\x94` \x80a\r\xC4`\x01\x93`\x1F\x19\x86\x82\x03\x01\x87R\x89Qa\x0C\xE6V[\x97\x01\x93\x01\x93\x01\x91\x93\x92\x90a\r\x97V[4a\x03ZW`\x806`\x03\x19\x01\x12a\x03ZW`\x045a\r\xF0\x81a\x03^V[`$5\x90a\r\xFD\x82a\x07)V[`D5`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x0E\x1C\x906\x90`\x04\x01a\x0C\xB9V[\x91`d5\x92`\x01`\x01`@\x1B\x03\x84\x11a\x03ZW6`#\x85\x01\x12\x15a\x03ZW\x83`\x04\x015\x92`\x01`\x01`@\x1B\x03\x84\x11a\x03ZW6`$\x85`\x05\x1B\x87\x01\x01\x11a\x03ZWa\x08\xA6\x95`$a\x0En\x96\x01\x93a(\xE7V[`@Q\x91\x82\x91\x82a\r\x1FV[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`@Qc#}\xFBG`\xE1\x1B\x81R3`\x04\x82\x01R` \x81`$\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\x03UWa\x0E\xE5\x91_\x91a\x03&WPa\x1E\xE7V[a\x03$aEqV[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW` `@Qg\x01cEx]\x8A\0\0\x81R\xF3[`\xFF\x81\x16\x03a\x03ZWV[4a\x03ZW` 6`\x03\x19\x01\x12a\x03ZW` `\x01`\xFF`\x045a\x0F=\x81a\x0F\x0FV[\x16\x1B\x80`fT\x16\x14`@Q\x90\x81R\xF3[\x90\x81`\x80\x91\x03\x12a\x03ZW\x90V[`@\x90`#\x19\x01\x12a\x03ZW`$\x90V[\x90\x80`\x1F\x83\x01\x12\x15a\x03ZW\x815a\x0F\x83\x81a\x07\xB4V[\x92a\x0F\x91`@Q\x94\x85a\x04\xDCV[\x81\x84R` \x80\x85\x01\x92`\x05\x1B\x82\x01\x01\x92\x83\x11a\x03ZW` \x01\x90[\x82\x82\x10a\x0F\xB9WPPP\x90V[` \x80\x91\x835a\x0F\xC8\x81a\x07)V[\x81R\x01\x91\x01\x90a\x0F\xACV[\x81`\x1F\x82\x01\x12\x15a\x03ZW\x805a\x0F\xE9\x81a\x07\xB4V[\x92a\x0F\xF7`@Q\x94\x85a\x04\xDCV[\x81\x84R` \x80\x85\x01\x92`\x06\x1B\x84\x01\x01\x92\x81\x84\x11a\x03ZW` \x01\x91[\x83\x83\x10a\x10!WPPPP\x90V[` `@\x91a\x100\x84\x86a\x05sV[\x81R\x01\x92\x01\x91a\x10\x13V[\x90\x80`\x1F\x83\x01\x12\x15a\x03ZW\x815a\x10R\x81a\x07\xB4V[\x92a\x10``@Q\x94\x85a\x04\xDCV[\x81\x84R` \x80\x85\x01\x92`\x05\x1B\x82\x01\x01\x91\x83\x83\x11a\x03ZW` \x82\x01\x90[\x83\x82\x10a\x10\x8CWPPPPP\x90V[\x815`\x01`\x01`@\x1B\x03\x81\x11a\x03ZW` \x91a\x10\xAE\x87\x84\x80\x94\x88\x01\x01a\x0FlV[\x81R\x01\x91\x01\x90a\x10}V[\x91\x90\x91a\x01\x80\x81\x84\x03\x12a\x03ZWa\x10\xCFa\x04\xFDV[\x92\x815`\x01`\x01`@\x1B\x03\x81\x11a\x03ZW\x81a\x10\xEC\x91\x84\x01a\x0FlV[\x84R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11a\x03ZW\x81a\x11\r\x91\x84\x01a\x0F\xD3V[` \x85\x01R`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11a\x03ZW\x81a\x111\x91\x84\x01a\x0F\xD3V[`@\x85\x01Ra\x11C\x81``\x84\x01a\x06\x1BV[``\x85\x01Ra\x11U\x81`\xE0\x84\x01a\x05sV[`\x80\x85\x01Ra\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11a\x03ZW\x81a\x11z\x91\x84\x01a\x0FlV[`\xA0\x85\x01Ra\x01@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11a\x03ZW\x81a\x11\x9F\x91\x84\x01a\x0FlV[`\xC0\x85\x01Ra\x01`\x82\x015`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x11\xC2\x92\x01a\x10;V[`\xE0\x83\x01RV[4a\x03ZW`\x806`\x03\x19\x01\x12a\x03ZW`\x045`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x11\xF9\x906\x90`\x04\x01a\x0FMV[a\x12\x026a\x0F[V[\x90`d5`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x12\"\x906\x90`\x04\x01a\x10\xB9V[`\xCDT\x90\x92\x90`\x01`\x01`\xA0\x1B\x03\x163\x03a\x140Wa\x12E` \x83\x94\x93\x01a-OV[\x91a\x13Ha\x12V`@\x86\x01\x86a-YV[\x92\x90\x94a\x12\xB6a\x12h``\x89\x01a-OV[\x97`@Qa\x12\x8C\x81a\x12~` \x82\x01\x94\x85a-\x8BV[\x03`\x1F\x19\x81\x01\x83R\x82a\x04\xDCV[Q\x90 a\x12\xAFa\x12\x9B\x88a-OV[c\xFF\xFF\xFF\xFF\x16_R`\xCA` R`@_ \x90V[T\x14a.\x12V[a\x12\xE0a\x12\xD9a\x12\xC5\x87a-OV[c\xFF\xFF\xFF\xFF\x16_R`\xCB` R`@_ \x90V[T\x15a.\x84V[\x83c\xFF\xFF\xFF\xFFC\x16\x96a\x13*a\x13\"a\x13\x19\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\x86a/\x15V[c\xFF\xFF\xFF\xFF\x16\x90V[\x89\x11\x15a//V[`@Q` \x81\x01\x90a\x13@\x81a\x12~\x8B\x85a/\xAFV[Q\x90 a<\xE7V[\x91\x90`\xFF_\x96\x16\x95[\x82\x81\x10a\x13\xCEW\x7F4\x9C\x1E\xE6\x0EN\x89r\xEE\x9D\xBAd,\x17tT=\\A6\x87\x9B\x7FL\xAA\xF0K\xF8\x1AHz*\x86\x86\x86a\x13\x93a\x13\x87a\x05\x0FV[c\xFF\xFF\xFF\xFF\x90\x94\x16\x84RV[` \x83\x01R`@Q` \x81\x01\x90a\x13\xAF\x81a\x12~\x86\x86\x86a0\x92V[Q\x90 a\x13\xBEa\x12\xC5\x83a-OV[Ua\x04C`@Q\x92\x83\x92\x83a0\x92V[\x80a\x14*a\x14\x06a\x14\x01a\x13\xF5a\x13\xE8`\x01\x96\x88Qa!rV[Q`\x01`\x01``\x1B\x03\x16\x90V[`\x01`\x01``\x1B\x03\x16\x90V[a/\xBFV[a\x14#a\x13\xF5\x8Ba\x14\x1Ea\x13\xE8\x87` \x8B\x01Qa!rV[a/\xFEV[\x11\x15a0!V[\x01a\x13QV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAggregator must be the caller\0\0\0`D\x82\x01R`d\x90\xFD[` `@\x81\x83\x01\x92\x82\x81R\x84Q\x80\x94R\x01\x92\x01\x90_[\x81\x81\x10a\x14\x98WPPP\x90V[\x82Q\x84R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x14\x8BV[4a\x03ZW``6`\x03\x19\x01\x12a\x03ZW`\x045a\x14\xCB\x81a\x03^V[`$5`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x14\xEA\x906\x90`\x04\x01a\x0B)V[`D5\x91a\x14\xF7\x83a\x07)V[`@Qca\xC8\xA1/`\xE1\x1B\x81R\x90`\x01`\x01`\xA0\x1B\x03\x16_\x82\x80a\x15\x1F\x86\x88`\x04\x84\x01a0\xBCV[\x03\x81\x84Z\xFA\x91\x82\x15a\x03UW_\x92a\x16\x03W[Pa\x15=\x83Qa!3V[\x93_[\x84Q\x81\x10\x15a\x15\xF5Wa\x15S\x81\x86a!rV[Q\x90` \x83a\x15oa\x15e\x84\x89a!rV[Qc\xFF\xFF\xFF\xFF\x16\x90V[`@Qc\x04\xECcQ`\xE0\x1B\x81R`\x04\x81\x01\x95\x90\x95Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x86\x01R\x16`D\x84\x01R\x82`d\x81\x87Z\xFA\x80\x15a\x03UW`\x01\x92_\x91a\x15\xC7W[P\x82\x80`\xC0\x1B\x03\x16a\x15\xC0\x82\x89a!rV[R\x01a\x15@V[a\x15\xE8\x91P` =\x81\x11a\x15\xEEW[a\x15\xE0\x81\x83a\x04\xDCV[\x81\x01\x90a(^V[_a\x15\xAEV[P=a\x15\xD6V[`@Q\x80a\x08\xA6\x88\x82a\x14uV[a\x16 \x91\x92P=\x80_\x83>a\x16\x18\x81\x83a\x04\xDCV[\x81\x01\x90a'-V[\x90_a\x152V[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW` `fT`@Q\x90\x81R\xF3[4a\x03ZW` 6`\x03\x19\x01\x12a\x03ZWc\xFF\xFF\xFF\xFF`\x045a\x16f\x81a\x07)V[\x16_R`\xCC` R` `\xFF`@_ T\x16`@Q\x90\x15\x15\x81R\xF3[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`@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\x03ZW_6`\x03\x19\x01\x12a\x03ZW`@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\x03ZW`\xC06`\x03\x19\x01\x12a\x03ZW`\x045`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x17:\x906\x90`\x04\x01a\x0FMV[a\x17C6a\x0F[V[\x90`@6`c\x19\x01\x12a\x03ZW`\xA45`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x03$\x92a\x17u`d\x926\x90`\x04\x01a\x0F\xD3V[\x92a5\nV[4a\x03ZW``6`\x03\x19\x01\x12a\x03ZW`$5`\x045a\x17\x9B\x82a\x07)V[`D5`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x17\xBA\x906\x90`\x04\x01a\x0C\xB9V[`\xCET\x91\x93\x90\x92\x91`\x01`\x01`\xA0\x1B\x03\x163\x03a\x18\x9AWa\x03$\x93a\x18\x84\x93a\x18\x04a\x18\x0B\x93a\x17\xE8a:\xE9V[\x95\x86RCc\xFF\xFF\xFF\xFF\x16` \x87\x01Rc\xFF\xFF\xFF\xFF\x16``\x86\x01RV[6\x91a\x08\xDFV[`@\x82\x01R`@Q` \x81\x01\x90a\x18&\x81a\x12~\x85\x85a;\rV[Q\x90 a\x18;a\x12\x9B`\xC9Tc\xFF\xFF\xFF\xFF\x16\x90V[U`\xC9Tc\xFF\xFF\xFF\xFF\x16\x90\x7F\x16\x95\xB8\xD0n\xC8\0\xB4a^t\\\xFB[\xD0\x0C\x1F(ua]B\x92\\;Z\xFAT;\xB2LH`@Q\x80a\x18|c\xFF\xFF\xFF\xFF\x86\x16\x94\x82a;\rV[\x03\x90\xA2a.\xE5V[c\xFF\xFF\xFF\xFF\x16c\xFF\xFF\xFF\xFF\x19`\xC9T\x16\x17`\xC9UV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FTask generator must be the calle`D\x82\x01R`9`\xF9\x1B`d\x82\x01R`\x84\x90\xFD[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`@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[\x90` \x80\x83Q\x92\x83\x81R\x01\x92\x01\x90_[\x81\x81\x10a\x19JWPPP\x90V[\x82Q`\x01`\x01``\x1B\x03\x16\x84R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x19=V[4a\x03ZW`\x806`\x03\x19\x01\x12a\x03ZW`\x045`$5`\x01`\x01`@\x1B\x03\x81\x11a\x03ZWa\x19\x9C\x906\x90`\x04\x01a\x0C\xB9V[\x90\x91`D5a\x19\xAA\x81a\x07)V[`d5\x92`\x01`\x01`@\x1B\x03\x84\x11a\x03ZWa\x1A\x0C\x94a\x19\xD1a\x19\xD7\x956\x90`\x04\x01a\x10\xB9V[\x93a<\xE7V[`@Q\x92\x83\x92`@\x84R` a\x19\xF8\x82Q`@\x80\x88\x01R`\x80\x87\x01\x90a\x19-V[\x91\x01Q\x84\x82\x03`?\x19\x01``\x86\x01Ra\x19-V[\x90` \x83\x01R\x03\x90\xF3[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZWa\x1A.aL\\V[`3\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16\x90\x91U_\x90`\x01`\x01`\xA0\x1B\x03\x16\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x82\x80\xA3\0[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW` c\xFF\xFF\xFF\xFF`\xC9T\x16`@Q\x90\x81R\xF3[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`\xCET`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`@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\x03ZW_6`\x03\x19\x01\x12a\x03ZW`3T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`\xCFT`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW` `\xFF`\x97T\x16`@Q\x90\x15\x15\x81R\xF3[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`\xD0T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[`@\x90a\x08\x0F\x93\x92\x81R\x81` \x82\x01R\x01\x90a\t\x15V[4a\x03ZW``6`\x03\x19\x01\x12a\x03ZW`\x045a\x1B\xCE\x81a\x03^V[`$5`D5a\x1B\xDD\x81a\x07)V[a\x1C\x1Ea\x1B\xE8a!\x11V[\x92\x80a\x1B\xF3\x85a!eV[R`@Qca\xC8\xA1/`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x16\x94\x90\x92_\x91\x84\x91\x82\x91\x87`\x04\x84\x01a0\xBCV[\x03\x81\x87Z\xFA\x93\x84\x15a\x03UW\x83a\x1CHa\x13\x19a\x15ea\x1C}\x98` \x97_\x91a\x1C\xDBW[Pa!eV[\x92`@Q\x96\x87\x94\x85\x93\x84\x93c\x04\xECcQ`\xE0\x1B\x85R`\x04\x85\x01c\xFF\xFF\xFF\xFF`@\x92\x95\x94\x93``\x83\x01\x96\x83R\x16` \x82\x01R\x01RV[\x03\x91Z\xFA\x80\x15a\x03UWa\x1C\xAC\x92_\x91a\x1C\xBCW[P`\x01`\x01`\xC0\x1B\x03\x16\x92a\x1C\xA6\x84aL\xB4V[\x90a#\xD3V[\x90a\x08\xA6`@Q\x92\x83\x92\x83a\x1B\x9AV[a\x1C\xD5\x91P` =` \x11a\x15\xEEWa\x15\xE0\x81\x83a\x04\xDCV[_a\x1C\x92V[a\x1C\xEF\x91P=\x80_\x83>a\x16\x18\x81\x83a\x04\xDCV[_a\x1CBV[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW`@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\x03ZW` 6`\x03\x19\x01\x12a\x03ZW`\x045a\x1DV\x81a\x03^V[a\x1D^aL\\V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x15a\x1DvWa\x03$\x90aE\xD7V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x90\xFD[4a\x03ZW_6`\x03\x19\x01\x12a\x03ZW` `@Q`d\x81R\xF3[4a\x03ZW` 6`\x03\x19\x01\x12a\x03ZW`\x045`@Qcu[6\xBD`\xE1\x1B\x81R` \x81`\x04\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\x90\x81\x15a\x03UW_\x91a\x1E\xA8W[P`\x01`\x01`\xA0\x1B\x03\x163\x03a\x1E\x99Wa\x1Eg`fT\x19\x82\x19\x81\x16\x14a\x1E\xFDV[\x80`fU`@Q\x90\x81R\x7F5\x82\xD1\x82\x8E&\xBFV\xBD\x80\x15\x02\xBC\x02\x1A\xC0\xBC\x8A\xFBW\xC8&\xE4\x98kEY<\x8F\xAD8\x9C` 3\x92\xA2\0[cyH!\xFF`\xE0\x1B_R`\x04_\xFD[a\x1E\xC1\x91P` =` \x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[_a\x1EFV[\x90\x81` \x91\x03\x12a\x03ZWQa\x08\x0F\x81a\n^V[`@Q=_\x82>=\x90\xFD[\x15a\x1E\xEEWV[c\x1Dw\xD4w`\xE2\x1B_R`\x04_\xFD[\x15a\x1F\x04WV[c\xC6\x1D\xCA]`\xE0\x1B_R`\x04_\xFD[\x15a\x1F\x1AWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x90\xFD[a\x1F\x7F\x90aE\xD7V[`\x01\x80`\xA0\x1B\x03\x16`\x01`\x01``\x1B\x03`\xA0\x1B`\xCDT\x16\x17`\xCDU`\x01\x80`\xA0\x1B\x03\x16`\x01`\x01``\x1B\x03`\xA0\x1B`\xCET\x16\x17`\xCEU`\x01\x80`\xA0\x1B\x03\x16`\x01`\x01``\x1B\x03`\xA0\x1B`\xD0T\x16\x17`\xD0U`\x01\x80`\xA0\x1B\x03\x16`\x01`\x01``\x1B\x03`\xA0\x1B`\xCFT\x16\x17`\xCFUV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[\x90`\x02\x81\x10\x15a \x12W`\x05\x1B\x01\x90V[a\x1F\xEDV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[a!\x07a \xE4a!\r\x95a \xDEa \xD7\x85\x87Q` \x89\x01Q\x8AQQ` \x8CQ\x01Q` \x8D\x01` \x81QQ\x91Q\x01Q\x91\x89Q\x93` \x8B\x01Q\x95`@Q\x97` \x89\x01\x99\x8AR` \x8A\x01R`@\x89\x01R``\x88\x01R`\x80\x87\x01R`\xA0\x86\x01R`\xC0\x85\x01R`\xE0\x84\x01Ra\x01\0\x83\x01Ra \xAE\x81a\x01 \x84\x01\x03`\x1F\x19\x81\x01\x83R\x82a\x04\xDCV[Q\x90 \x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x90\x06\x90V[\x80\x96aFcV[\x90aF\xA9V[\x92a \xDEa \xF9a \xF3aG\x0BV[\x94aH\x02V[\x91a!\x02aI\x1EV[aFcV[\x91aIRV[\x90\x91V[`@\x80Q\x90\x91\x90a!\"\x83\x82a\x04\xDCV[`\x01\x81R\x91`\x1F\x19\x016` \x84\x017V[\x90a!=\x82a\x07\xB4V[a!J`@Q\x91\x82a\x04\xDCV[\x82\x81R\x80\x92a![`\x1F\x19\x91a\x07\xB4V[\x01\x90` 6\x91\x017V[\x80Q\x15a \x12W` \x01\x90V[\x80Q\x82\x10\x15a \x12W` \x91`\x05\x1B\x01\x01\x90V[\x90\x81` \x91\x03\x12a\x03ZWQ\x90V[\x91\x90\x91a!\xA2\x83Qa!3V[\x92_[\x81Q\x81\x10\x15a\"UW\x80` a!\xCEa!\xC1a!\xF7\x94\x86a!rV[Q`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\x04\x82\x01R\x92\x83\x90\x81\x90`$\x82\x01\x90V[\x03\x81`\x01`\x01`\xA0\x1B\x03\x88\x16Z\xFA\x80\x15a\x03UW`\x01\x92_\x91a\"'W[Pa\" \x82\x88a!rV[R\x01a!\xA5V[a\"H\x91P` =\x81\x11a\"NW[a\"@\x81\x83a\x04\xDCV[\x81\x01\x90a!\x86V[_a\"\x15V[P=a\"6V[PPPV[\x90\x81` \x91\x03\x12a\x03ZWQa\x08\x0F\x81a\x03^V[\x90a\"y\x82a\x07\xB4V[a\"\x86`@Q\x91\x82a\x04\xDCV[\x82\x81R` \x81\x93a\"\x99`\x1F\x19\x91a\x07\xB4V[\x01\x91\x01_[\x82\x81\x10a\"\xAAWPPPV[``\x82\x82\x01R` \x01a\"\x9EV[\x90\x81Q\x81\x10\x15a \x12W\x01` \x01\x90V[` \x81\x83\x03\x12a\x03ZW\x80Q\x90`\x01`\x01`@\x1B\x03\x82\x11a\x03ZW\x01\x90\x80`\x1F\x83\x01\x12\x15a\x03ZW\x81Qa\"\xFC\x81a\x07\xB4V[\x92a#\n`@Q\x94\x85a\x04\xDCV[\x81\x84R` \x80\x85\x01\x92`\x05\x1B\x82\x01\x01\x92\x83\x11a\x03ZW` \x01\x90[\x82\x82\x10a#2WPPP\x90V[\x81Q\x81R` \x91\x82\x01\x91\x01a#%V[\x90a#L\x82a\x07\xB4V[a#Y`@Q\x91\x82a\x04\xDCV[\x82\x81R\x80\x92a#j`\x1F\x19\x91a\x07\xB4V[\x01_[\x81\x81\x10a#yWPPPV[`@Q\x90``\x82\x01\x91\x80\x83\x10`\x01`\x01`@\x1B\x03\x84\x11\x17a\x04\xBCW` \x92`@R_\x81R_\x83\x82\x01R_`@\x82\x01R\x82\x82\x86\x01\x01R\x01a#mV[\x90\x81` \x91\x03\x12a\x03ZWQ`\x01`\x01``\x1B\x03\x81\x16\x81\x03a\x03ZW\x90V[`@Qch0H5`\xE0\x1B\x81R\x93\x91\x92\x91\x90`\x01`\x01`\xA0\x1B\x03\x16` \x85`\x04\x81\x84Z\xFA\x94\x85\x15a\x03UW_\x95a&\xE8W[P`@QcOL\x91\xE1`\xE1\x1B\x81R\x94` \x86`\x04\x81\x85Z\xFA\x91\x82\x15a\x03UW`\x04\x96_\x93a&\xC6W[P` \x90`@Q\x97\x88\x80\x92c.\xFA,\xA3`\xE1\x1B\x82RZ\xFA\x95\x86\x15a\x03UW_\x96a&\xA5W[Pa$a\x85\x93\x92\x95Qa\"oV[\x94_\x93[\x80Q\x85\x10\x15a&\x9BWa$\x92a$\x8Ca$~\x87\x84a\"\xB8V[Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x90V[`\xF8\x1C\x90V[`@Qc\x89\x02bE`\xE0\x1B\x81R`\xFF\x82\x16`\x04\x82\x01Rc\xFF\xFF\xFF\xFF\x88\x16`$\x82\x01R\x90\x94\x90\x92_\x84`D\x81`\x01`\x01`\xA0\x1B\x03\x85\x16Z\xFA\x93\x84\x15a\x03UW_\x94a&wW[Pa$\xE2\x84Qa#BV[a$\xEC\x88\x8Ba!rV[Ra$\xF7\x87\x8Aa!rV[P_[\x84Q\x81\x10\x15a&fW\x80` a%\x13a%5\x93\x88a!rV[Q\x8D`@Q\x80\x80\x96\x81\x94c\x08\xF6b\x9D`\xE3\x1B\x83R`\x04\x83\x01\x91\x90` \x83\x01\x92RV[\x03\x91`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x91\x82\x15a\x03UW_\x92a&FW[Pa%[\x81\x87a!rV[Q\x8A` \x8Aa%j\x85\x8Ba!rV[Q`@Qc\xFA(\xC6'`\xE0\x1B\x81R`\x04\x81\x01\x91\x90\x91R`\xFF\x91\x90\x91\x16`$\x82\x01Rc\xFF\xFF\xFF\xFF\x92\x90\x92\x16`D\x83\x01R\x81`d\x81`\x01`\x01`\xA0\x1B\x03\x8D\x16Z\xFA\x93\x84\x15a\x03UWa%\xFD\x8C\x8Fa%\xF8`\x01\x98a&\x0F\x97\x89\x97_\x92a&\x16W[Pa%\xE3a%\xD4a\x05\x1EV[`\x01`\x01`\xA0\x1B\x03\x90\x98\x16\x88RV[` \x87\x01R`\x01`\x01``\x1B\x03\x16`@\x86\x01RV[a!rV[Q\x90a&\t\x83\x83a!rV[Ra!rV[P\x01a$\xFAV[a&8\x91\x92P` =\x81\x11a&?W[a&0\x81\x83a\x04\xDCV[\x81\x01\x90a#\xB4V[\x90_a%\xC8V[P=a&&V[a&_\x91\x92P` =\x81\x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[\x90_a%PV[P`\x01\x90\x96\x01\x95\x90\x94P\x91Pa$eV[a&\x94\x91\x94P=\x80_\x83>a&\x8C\x81\x83a\x04\xDCV[\x81\x01\x90a\"\xC9V[\x92_a$\xD7V[PPP\x93PPP\x90V[a&\xBF\x91\x96P` =` \x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[\x94_a$SV[` \x91\x93Pa&\xE1\x90\x82=\x84\x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[\x92\x90a$.V[a'\x02\x91\x95P` =` \x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[\x93_a$\x05V[`@Q\x90a'\x16\x82a\x04\xC1V[``\x80\x83\x81\x81R\x81` \x82\x01R\x81`@\x82\x01R\x01RV[` \x81\x83\x03\x12a\x03ZW\x80Q\x90`\x01`\x01`@\x1B\x03\x82\x11a\x03ZW\x01\x90\x80`\x1F\x83\x01\x12\x15a\x03ZW\x81Qa'`\x81a\x07\xB4V[\x92a'n`@Q\x94\x85a\x04\xDCV[\x81\x84R` \x80\x85\x01\x92`\x05\x1B\x82\x01\x01\x92\x83\x11a\x03ZW` \x01\x90[\x82\x82\x10a'\x96WPPP\x90V[` \x80\x91\x83Qa'\xA5\x81a\x07)V[\x81R\x01\x91\x01\x90a'\x89V[c\xFF\xFF\xFF\xFF\x90\x91\x16\x81R`@` \x82\x01\x81\x90R\x81\x01\x83\x90R`\x01`\x01`\xFB\x1B\x03\x83\x11a\x03ZW``\x92`\x05\x1B\x80\x92\x84\x83\x017\x01\x01\x90V[\x90\x80` \x93\x92\x81\x84R\x84\x84\x017_\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[`@\x90c\xFF\xFF\xFF\xFFa\x08\x0F\x95\x93\x16\x81R\x81` \x82\x01R\x01\x91a'\xE7V[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\xFF\x16`\xFF\x81\x14a(IW`\x01\x01\x90V[a($V[\x91\x90\x81\x10\x15a \x12W`\x05\x1B\x01\x90V[\x90\x81` \x91\x03\x12a\x03ZWQ`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x03a\x03ZW\x90V[\x15a(\x84WV[c%\xECl\x1F`\xE0\x1B_R`\x04_\xFD[\x90\x82\x10\x15a \x12W\x01\x90V[\x90\x81` \x91\x03\x12a\x03ZWQa\x08\x0F\x81a\x07)V[_\x19\x81\x14a(IW`\x01\x01\x90V[\x91a(\xE0` \x92c\xFF\xFF\xFF\xFF\x92\x96\x95\x96`@\x86R`@\x86\x01\x91a'\xE7V[\x94\x16\x91\x01RV[\x95\x93\x94\x95\x92\x90\x91\x92a(\xF7a'\tV[P`@Qch0H5`\xE0\x1B\x81R\x93`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x91\x90` \x85`\x04\x81\x86Z\xFA\x94\x85\x15a\x03UW_\x95a-.W[Pa)4a'\tV[\x94`@Qca\xC8\xA1/`\xE1\x1B\x81R_\x81\x80a)T\x8D\x8D\x8B`\x04\x85\x01a'\xB0V[\x03\x81\x88Z\xFA\x90\x81\x15a\x03UW_\x91a-\x14W[P\x86R`@Qc@\xE0:\x81`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x92\x90_\x81\x80a)\x97\x85\x87\x8B`\x04\x85\x01a(\x07V[\x03\x81\x87Z\xFA\x90\x81\x15a\x03UW_\x91a,\xFAW[P`@\x87\x01Ra)\xB9\x81a\"oV[\x98``\x87\x01\x99\x8AR_[`\xFF\x81\x16\x83\x81\x10\x15a,EW\x88_a)\xEC\x83\x8Fa)\xDF\x88a!3V[\x90Q\x90a&\t\x83\x83a!rV[P_\x8A\x86\x8F[\x81\x84\x10a*oWPPPP\x90P\x8Ca*\t\x82a!3V[\x91_[\x81\x81\x10a*6WPP\x91a*+\x91a*1\x94\x93Q\x90a&\t\x83\x83a!rV[Pa(8V[a)\xC3V[\x80a*ia*Ta\x15e`\x01\x94a*N\x8A\x89Qa!rV[Qa!rV[a*^\x83\x88a!rV[\x90c\xFF\xFF\xFF\xFF\x16\x90RV[\x01a*\x0CV[a\x15e\x84a*\x84\x81` \x96\x95a*\x8C\x95a(NV[5\x97Qa!rV[`@Qc\x04\xECcQ`\xE0\x1B\x81R`\x04\x81\x01\x96\x90\x96Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x87\x01R\x16`D\x85\x01R\x83`d\x81\x8DZ\xFA\x80\x15a\x03UW\x88\x8F\x88\x8A\x91\x8F\x94a+1`\x01a+$\x81\x93\x8D\x80\x9D_\x92a,\x19W[Pa$\x8Ca+\0a+\x0E\x92a*\xF9\x87\x80`\xC0\x1B\x03\x86\x16\x15\x15a(}V[\x8B\x8Da(\x93V[5`\x01`\x01`\xF8\x1B\x03\x19\x16\x90V[`\x01`\x01`\xC0\x1B\x03\x91\x82\x16`\xFF\x91\x90\x91\x16\x1C\x16\x90V[\x16`\x01`\x01`\xC0\x1B\x03\x16\x90V[\x14a+MW[PPPPP`\x01\x91\x92P\x01\x90\x8A\x91\x8A\x86\x8Fa)\xF2V[\x85\x97a+o\x93a+h` \x97\x99\x98a$\x8C\x95a+\0\x95a(NV[5\x95a(\x93V[`@Qc\xDD\x98F\xB9`\xE0\x1B\x81R`\x04\x81\x01\x92\x90\x92R`\xFF\x16`$\x82\x01Rc\xFF\xFF\xFF\xFF\x93\x90\x93\x16`D\x84\x01R\x82`d\x81\x8CZ\xFA\x90\x81\x15a\x03UW\x8Fa+\xCD\x90a+\xD2\x93\x83\x88`\x01\x97_\x93a+\xE1W[Pa*N\x90a*^\x93\x94Qa!rV[a(\xB4V[\x90P\x82\x91\x8A\x88\x8F\x88\x8A\x91a+7V[a*^\x93P\x90a,\na*N\x92` =\x81\x11a,\x12W[a,\x02\x81\x83a\x04\xDCV[\x81\x01\x90a(\x9FV[\x93P\x90a+\xBDV[P=a+\xF8V[a+\x0E\x91\x92Pa+\0a,<a$\x8C\x92` =\x81\x11a\x15\xEEWa\x15\xE0\x81\x83a\x04\xDCV[\x93\x92PPa*\xDCV[PPP\x92\x90\x95\x97P`\x04\x94\x96P` \x91P`@Q\x94\x85\x80\x92c.\xFA,\xA3`\xE1\x1B\x82RZ\xFA\x90\x81\x15a\x03UWa,\x9B\x94_\x94\x85\x93a,\xD9W[P`@Qc5IR\xA3`\xE2\x1B\x81R\x95\x86\x94\x85\x93\x84\x93`\x04\x85\x01a(\xC2V[\x03\x91`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x03UW_\x91a,\xBFW[P` \x82\x01R\x90V[a,\xD3\x91P=\x80_\x83>a\x16\x18\x81\x83a\x04\xDCV[_a,\xB6V[a,\xF3\x91\x93P` =` \x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[\x91_a,}V[a-\x0E\x91P=\x80_\x83>a\x16\x18\x81\x83a\x04\xDCV[_a)\xAAV[a-(\x91P=\x80_\x83>a\x16\x18\x81\x83a\x04\xDCV[_a)gV[a-H\x91\x95P` =` \x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[\x93_a)+V[5a\x08\x0F\x81a\x07)V[\x905\x90`\x1E\x19\x816\x03\x01\x82\x12\x15a\x03ZW\x01\x805\x90`\x01`\x01`@\x1B\x03\x82\x11a\x03ZW` \x01\x91\x816\x03\x83\x13a\x03ZWV[` \x81R\x815` \x82\x01Rc\xFF\xFF\xFF\xFF` \x83\x015a-\xA9\x81a\x07)V[\x16`@\x82\x01R`@\x82\x015`\x1E\x19\x836\x03\x01\x81\x12\x15a\x03ZW\x82\x01\x90` \x825\x92\x01`\x01`\x01`@\x1B\x03\x83\x11a\x03ZW\x826\x03\x81\x13a\x03ZWa.\x07``a.\0`\x80\x93a\x08\x0F\x96\x85\x84\x88\x01R`\xA0\x87\x01\x91a'\xE7V[\x95\x01a\x077V[c\xFF\xFF\xFF\xFF\x16\x91\x01RV[\x15a.\x19WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7Fsupplied task does not match the`D\x82\x01R\x7F one recorded in the contract\0\0\0`d\x82\x01R`\x84\x90\xFD[\x15a.\x8BWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`,`$\x82\x01R\x7FAggregator has already responded`D\x82\x01Rk to the task`\xA0\x1B`d\x82\x01R`\x84\x90\xFD[c\xFF\xFF\xFF\xFF`\x01\x91\x16\x01\x90c\xFF\xFF\xFF\xFF\x82\x11a(IWV[c\xFF\xFF\xFF\xFF`d\x91\x16\x01\x90c\xFF\xFF\xFF\xFF\x82\x11a(IWV[\x90c\xFF\xFF\xFF\xFF\x80\x91\x16\x91\x16\x01\x90c\xFF\xFF\xFF\xFF\x82\x11a(IWV[\x15a/6WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`-`$\x82\x01R\x7FAggregator has responded to the `D\x82\x01Rltask too late`\x98\x1B`d\x82\x01R`\x84\x90\xFD[` \x80\x91c\xFF\xFF\xFF\xFF\x815a/\xA5\x81a\x07)V[\x16\x84R\x015\x91\x01RV[`@\x81\x01\x92\x91a\x05\r\x91\x90a/\x91V[\x90`d\x82\x02\x91\x80\x83\x04`d\x14\x90\x15\x17\x15a(IWV[\x90`\x06\x82\x02\x91\x80\x83\x04`\x06\x14\x90\x15\x17\x15a(IWV[\x81\x81\x02\x92\x91\x81\x15\x91\x84\x04\x14\x17\x15a(IWV[\x90`\x01`\x01``\x1B\x03\x80\x91\x16\x91\x16\x02\x90`\x01`\x01``\x1B\x03\x82\x16\x91\x82\x03a(IWV[\x15a0(WV[`\x84`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`@`$\x82\x01R\x7FSignatories do not own at least `D\x82\x01R\x7Fthreshold percentage of a quorum`d\x82\x01R\xFD[\x90\x92\x91` ``\x91a0\xA8\x84`\x80\x81\x01\x97a/\x91V[c\xFF\xFF\xFF\xFF\x81Q\x16`@\x85\x01R\x01Q\x91\x01RV[`@\x90c\xFF\xFF\xFF\xFFa\x08\x0F\x94\x93\x16\x81R\x81` \x82\x01R\x01\x90a\x07\xCBV[\x15a0\xE0WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`!`$\x82\x01R\x7FTask hasn't been responded to ye`D\x82\x01R`\x1D`\xFA\x1B`d\x82\x01R`\x84\x90\xFD[\x90\x92\x91` ``\x91a1E\x84`\x80\x81\x01\x97a/\x91V[c\xFF\xFF\xFF\xFF\x815a1U\x81a\x07)V[\x16`@\x85\x01R\x015\x91\x01RV[\x15a1iWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`=`$\x82\x01R\x7FTask response does not match the`D\x82\x01R\x7F one recorded in the contract\0\0\0`d\x82\x01R`\x84\x90\xFD[\x15a1\xDBWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R\x7FThe response to this task has al`D\x82\x01R\x7Fready been challenged successful`d\x82\x01Rb6<\x97`\xE9\x1B`\x84\x82\x01R`\xA4\x90\xFD[\x15a2YWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FThe challenge period for this ta`D\x82\x01R\x7Fsk has already expired.\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x90\xFD[`\x04\x91c\xFF\xFF\xFF\xFF`\xE0\x1B\x90`\xE0\x1B\x16\x81R\x01` \x82Q\x91\x92\x01\x90_[\x81\x81\x10a2\xEEWPPP\x90V[\x82Q\x84R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a2\xE1V[\x15a3\x0BWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`P`$\x82\x01R\x7FThe pubkeys of non-signing opera`D\x82\x01R\x7Ftors supplied by the challenger `d\x82\x01Ro0\xB92\x9077\xBA\x101\xB7\xB992\xB1\xBA\x17`\x81\x1B`\x84\x82\x01R`\xA4\x90\xFD[` \x81\x83\x03\x12a\x03ZW\x80Q\x90`\x01`\x01`@\x1B\x03\x82\x11a\x03ZW\x01\x90\x80`\x1F\x83\x01\x12\x15a\x03ZW\x81Qa3\xC2\x81a\x07\xB4V[\x92a3\xD0`@Q\x94\x85a\x04\xDCV[\x81\x84R` \x80\x85\x01\x92`\x05\x1B\x82\x01\x01\x92\x83\x11a\x03ZW` \x01\x90[\x82\x82\x10a3\xF8WPPP\x90V[` \x80\x91\x83Qa4\x07\x81a\x03^V[\x81R\x01\x91\x01\x90a3\xEBV[`@Q\x90a4!`@\x83a\x04\xDCV[`\x12\x82Rq9\xB60\xB9\xB4/\xBA42\xAF\xB7\xB82\xB90\xBA7\xB9`q\x1B` \x83\x01RV[\x80Q\x80\x83R` \x92\x91\x81\x90\x84\x01\x84\x84\x01^_\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[\x91\x90` \x83R`\xC0\x83\x01\x92`\x01\x80`\xA0\x1B\x03\x82Q\x16` \x82\x01Rc\xFF\xFF\xFF\xFF` \x83\x01Q\x16`@\x82\x01R`@\x82\x01Q\x93`\xA0``\x83\x01R\x84Q\x80\x91R` `\xE0\x83\x01\x95\x01\x90_[\x81\x81\x10a4\xEBWPPP`\x80a4\xD6a\x08\x0F\x94\x95``\x85\x01Q`\x1F\x19\x85\x83\x03\x01\x84\x86\x01Ra\x07\xCBV[\x92\x01Q\x90`\xA0`\x1F\x19\x82\x85\x03\x01\x91\x01Ra4BV[\x82Q`\x01`\x01`\xA0\x1B\x03\x16\x87R` \x96\x87\x01\x96\x90\x92\x01\x91`\x01\x01a4\xADV[\x93\x92\x91\x90\x92`\x01a5\x1A\x85a-OV[\x94` a5\xD6\x885a5Ea5=\x8Ac\xFF\xFF\xFF\xFF\x16_R`\xCB` R`@_ \x90V[T\x15\x15a0\xD9V[a5\x80a5`\x8Ac\xFF\xFF\xFF\xFF\x16_R`\xCB` R`@_ \x90V[T`@Q\x85\x81\x01\x90a5w\x81a\x12~\x8D\x8B\x86a1/V[Q\x90 \x14a1bV[a5\xABa5\xA5a5\x9E\x8Bc\xFF\xFF\xFF\xFF\x16_R`\xCC` R`@_ \x90V[T`\xFF\x16\x90V[\x15a1\xD4V[a5\xD0a5\xC2a\x13\x19a5\xBD\x8Aa-OV[a.\xFDV[c\xFF\xFF\xFF\xFFC\x16\x11\x15a2RV[\x80a/\xEBV[\x91\x015\x14\x14a:\xB7Wa5\xE9\x83Qa!3V[\x93_[\x84Q\x81\x10\x15a6)W\x80a6\x18a6\x05`\x01\x93\x88a!rV[Q\x80Q_R` \x01Q` R`@_ \x90V[a6\"\x82\x89a!rV[R\x01a5\xECV[P\x90\x92\x93\x91\x94a6c` \x82\x01\x96` a6B\x89a-OV[`@Qa6W\x81a\x12~\x8A\x86\x83\x01\x95\x86a2\xC4V[Q\x90 \x91\x015\x14a3\x04V[a6m\x85Qa!3V[\x95\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\x94_[\x87Q\x81\x10\x15a7\x1DW\x80` a6\xB4a6\xD4\x93\x89a!rV[Q`@Q\x80\x94\x81\x92ct]\xCDs`\xE1\x1B\x83R`\x04\x83\x01\x91\x90` \x83\x01\x92RV[\x03\x81\x8BZ\xFA\x91\x82\x15a\x03UW`\x01\x92a6\xF9\x91_\x91a6\xFFW[Pa\x0Cx\x83\x8Da!rV[\x01a6\x9BV[a7\x17\x91P` =\x81\x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[_a6\xEEV[P\x92\x96\x95P\x92P\x92a7|a7Ea7M`@\x87\x01\x95a7=\x87\x89a-YV[\x93\x90\x91a-OV[\x926\x91a\x08\xDFV[\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\x16a#\xD3V[\x90_\x91[\x80Q\x83\x10\x15a:YW_\x93[a7\x96\x84\x83a!rV[QQ\x85\x10\x15a:LWa7\xD6\x98` \x80a7\xB4\x88a*N\x89\x88a!rV[Q\x01Q`@Q\x80\x9C\x81\x92c\x08\xF6b\x9D`\xE3\x1B\x83R`\x04\x83\x01\x91\x90` \x83\x01\x92RV[\x03\x81\x87Z\xFA\x99\x8A\x15a\x03UW_\x9Aa:,W[P_[\x89Q\x81\x10\x15a:\x1BWa8\x11a8\x05a!\xC1\x83\x8Da!rV[`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x8C\x16\x14a8(W`\x01\x01a7\xECV[P\x96\x97\x90\x91a8\xE4\x95\x96\x93\x92[_\x8Aa8\x8F`\xFFa8ga$\x8Ca+\0\x8Ca8a\x8Da8[`\xD1T`\x01\x80`\xA0\x1B\x03\x16\x90V[\x98a-YV[\x90a(\x93V[a8\x81a8ra\x05\x0FV[`\x01`\x01`\xA0\x1B\x03\x90\x95\x16\x85RV[\x16c\xFF\xFF\xFF\xFF\x16` \x83\x01RV[`\xD0Ta8\xA6\x90a8\x05\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Qc\x10]\xEA\x1F`\xE2\x1B\x81R\x82Q`\x01`\x01`\xA0\x1B\x03\x16`\x04\x82\x01R` \x90\x92\x01Qc\xFF\xFF\xFF\xFF\x16`$\x83\x01R\x90\x98\x89\x91\x90\x82\x90\x81\x90`D\x82\x01\x90V[\x03\x91Z\xFA\x96\x87\x15a\x03UW_\x97a9\xF7W[Pa9\x01\x87Qa!3V[\x98_[\x8AQ\x81\x10\x15a9*W\x80g\x01cEx]\x8A\0\0a9#`\x01\x93\x8Ea!rV[R\x01a9\x04V[P\x9A\x92\x99\x98\x90\x96a9h`\xFFa9Oa$\x8Ca+\0\x8B\x8F\x8C\x9F\x99\x9B\x9Ca8a\x91a-YV[a9Za%\xD4a\x05-V[\x16c\xFF\xFF\xFF\xFF\x16` \x86\x01RV[`@\x84\x01R``\x83\x01Ra9za4\x12V[`\x80\x83\x01R`\xCFTa9\x96\x90a8\x05\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[\x80;\x15a\x03ZW`@Qcjf\x9BA`\xE0\x1B\x81R\x92_\x91\x84\x91\x82\x90\x84\x90\x82\x90a9\xC2\x90`\x04\x83\x01a4fV[\x03\x92Z\xF1\x91\x82\x15a\x03UW`\x01\x92a9\xDDW[P\x01\x93a7\x8CV[\x80a9\xEB_a9\xF1\x93a\x04\xDCV[\x80a\x06\xB7V[_a9\xD5V[a:\x14\x91\x97P=\x80_\x83>a:\x0C\x81\x83a\x04\xDCV[\x81\x01\x90a3\x8FV[\x95_a8\xF6V[P\x96\x97\x90\x91a8\xE4\x95\x96\x93\x92a85V[a:E\x91\x9AP` =\x81\x11a\x0B\"Wa\x0B\x14\x81\x83a\x04\xDCV[\x98_a7\xE9V[\x93P`\x01\x90\x92\x01\x91a7\x80V[PPP\x93\x92PPPa:\x89a:|\x82c\xFF\xFF\xFF\xFF\x16_R`\xCC` R`@_ \x90V[\x80T`\xFF\x19\x16`\x01\x17\x90UV[c\xFF\xFF\xFF\xFF3\x91\x16\x7F\xC2\r\x1B\xB0\xF1b6\x800k\x83\xD4\xFFK\xB9\x9A+\xEB\x9D\x86\xD9x2\xF3\xCA@\xFD\x13\xA2\x9D\xF1\xEC_\x80\xA3V[\x93PPPc\xFF\xFF\xFF\xFF3\x91\x16\x7F\xFD>&\xBE\xEBYg\xFCZW\xA0Di\x14\xEA\xBCE\xB4\xAAGLg\xA5\x1BKQ`\xCA\xC6\r\xDB\x05_\x80\xA3V[`@Q\x90a:\xF6\x82a\x04\xC1V[_``\x83\x82\x81R\x82` \x82\x01R\x81`@\x82\x01R\x01RV[` \x81R\x81Q` \x82\x01Rc\xFF\xFF\xFF\xFF` \x83\x01Q\x16`@\x82\x01R`\x80c\xFF\xFF\xFF\xFF``a;H`@\x86\x01Q\x84\x83\x87\x01R`\xA0\x86\x01\x90a4BV[\x94\x01Q\x16\x91\x01R\x90V[`@Q\x90a;_\x82a\x04\xA1V[``` \x83\x82\x81R\x01RV[\x15a;rWV[b\xF8 -`\xE5\x1B_R`\x04_\xFD[\x15a;\x87WV[cCqJ\xFD`\xE0\x1B_R`\x04_\xFD[\x15a;\x9DWV[c_\x83/A`\xE0\x1B_R`\x04_\xFD[\x15a;\xB3WV[cK\x87OE`\xE0\x1B_R`\x04_\xFD[\x90\x81` \x91\x03\x12a\x03ZWQa\x08\x0F\x81a\x0F\x0FV[_\x19\x81\x01\x91\x90\x82\x11a(IWV[\x15a;\xECWV[c?\xDCe\x05`\xE2\x1B_R`\x04_\xFD[\x90`\x01\x82\x01\x80\x92\x11a(IWV[\x90`\x02\x82\x01\x80\x92\x11a(IWV[\x90`\x03\x82\x01\x80\x92\x11a(IWV[\x90`\x04\x82\x01\x80\x92\x11a(IWV[\x90`\x05\x82\x01\x80\x92\x11a(IWV[\x91\x90\x82\x01\x80\x92\x11a(IWV[\x15a<UWV[c\xAF\xFC^\xDB`\xE0\x1B_R`\x04_\xFD[\x90\x81` \x91\x03\x12a\x03ZWQg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x16\x81\x03a\x03ZW\x90V[\x15a<\x8CWV[c\xE11\n\xED`\xE0\x1B_R`\x04_\xFD[\x90`\x01`\x01``\x1B\x03\x80\x91\x16\x91\x16\x03\x90`\x01`\x01``\x1B\x03\x82\x11a(IWV[\x15a<\xC2WV[cg\x98\x8D3`\xE0\x1B_R`\x04_\xFD[\x15a<\xD8WV[c\xAB\x1B#k`\xE0\x1B_R`\x04_\xFD[\x94\x93\x92\x90\x91\x93a<\xF5a;RV[Pa=\x01\x85\x15\x15a;kV[`@\x84\x01QQ\x85\x14\x80aEcW[\x80aEUW[\x80aEGW[a=$\x90a;\x80V[a=6` \x85\x01QQ\x85QQ\x14a;\x96V[a=Mc\xFF\xFF\xFF\xFFC\x16c\xFF\xFF\xFF\xFF\x84\x16\x10a;\xACV[a=Ua\x05\x0FV[_\x81R_` \x82\x01R\x92a=ga;RV[a=p\x87a!3V[` \x82\x01Ra=~\x87a!3V[\x81Ra=\x88a;RV[\x92a=\x97` \x88\x01QQa!3V[\x84Ra=\xA7` \x88\x01QQa!3V[` \x85\x81\x01\x91\x90\x91R`@Qc\x9A\xA1e=`\xE0\x1B\x81R\x90\x81`\x04\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\x03UWa>\x10\x91_\x91aE\x18W[Pa>\x0B6\x8B\x87a\x08\xDFV[aJ\xBEV[\x98_\x96[` \x89\x01Q\x80Q\x89\x10\x15a?oW` \x88a>da\x15e\x8Ca>\\\x8F\x96\x86\x8Ea>Aa6\x05\x86\x80\x95a!rV[a>N\x84\x84\x84\x01Qa!rV[R\x82a?<W[\x01Qa!rV[Q\x95Qa!rV[`@Qc\x04\xECcQ`\xE0\x1B\x81R`\x04\x81\x01\x94\x90\x94Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x85\x01R\x16`D\x83\x01R\x81`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\xFA\x91\x82\x15a\x03UWa \xDE\x8Aa?\x11\x8Fa?\n\x8F\x84` \x8F\x92a?\x01\x93a>\xF9\x84`\x01\x9Ea?\x17\x9E_\x91a?\x1FW[P\x8F\x80`\xC0\x1B\x03\x16\x92Qa!rV[R\x01Qa!rV[Q\x93\x8DQa!rV[Q\x16aJ\xE9V[\x90aK\x1AV[\x97\x01\x96a>\x14V[a?6\x91P\x86=\x81\x11a\x15\xEEWa\x15\xE0\x81\x83a\x04\xDCV[_a>\xEAV[a?ja?L\x84\x84\x84\x01Qa!rV[Qa?c\x84\x84\x01Qa?]\x87a;\xD7V[\x90a!rV[Q\x10a;\xE5V[a>UV[P\x90\x95\x97\x94\x96Pa?\x84\x91\x98\x93\x92\x99PaK\xD7V[\x91a?\x91`\x97T`\xFF\x16\x90V[\x90\x81\x15aE\x10W`@Qc\x18\x89\x1F\xD7`\xE3\x1B\x81R` \x81`\x04\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\x90\x81\x15a\x03UW_\x91aD\xF1W[P\x91\x90[_\x92[\x81\x84\x10a@BWPPPPP\x92a@)a@$a@\x1Da@<\x95\x85a\x12~\x98`\x80``` \x99\x01Q\x92\x01Q\x92a +V[\x91\x90a<\xBBV[a<\xD1V[\x01Q`@Q\x92\x83\x91` \x83\x01\x95\x86a2\xC4V[Q\x90 \x90V[\x92\x98\x95\x96\x90\x93\x99\x91\x97\x94\x87\x8B\x88\x8C\x88\x8DaC\xEBW[a\x15e\x82`\xA0a@\x97a$\x8Ca+\0\x84a@\x9F\x97a@\x91a@\x83a6\x05\x8F\x9C`@` \x9F\x9E\x01Qa!rV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90V[\x9Ba(\x93V[\x97\x01Qa!rV[`@Qc\x1A/2\xAB`\xE2\x1B\x81R`\xFF\x95\x90\x95\x16`\x04\x86\x01Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x86\x01R\x16`D\x84\x01R\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\xFA\x90\x81\x15a\x03UWaAca\x15e\x8F\x95\x8F\x90aA[\x8F\x97\x8F\x96\x84\x8FaAU`\xC0\x96aAN\x84\x8F` \x9F\x90a>Ua+\0\x99`@\x93a$\x8C\x9C_\x91aC\xBDW[Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x91\x82\x16\x91\x16\x14a<\x85V[Q\x90aF\xA9V[\x9Ca(\x93V[\x96\x01Qa!rV[`@Qcd\x14\xA6+`\xE1\x1B\x81R`\xFF\x94\x90\x94\x16`\x04\x85\x01Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x85\x01R\x16`D\x83\x01R\x81`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\xFA\x90\x81\x15a\x03UWaA\xF0\x91\x8C\x8F\x92_\x92aC\x99W[P` aA\xE2\x92\x93\x01Qa!rV[\x90`\x01`\x01``\x1B\x03\x16\x90RV[aB\x10\x8CaA\xE2\x8CaB\ta\x13\xE8\x82` \x86\x01Qa!rV[\x92Qa!rV[_\x98_[` \x8A\x01QQ\x81\x10\x15aC\x80W\x8B\x8DaBR\x89aBEa$\x8Ca+\0\x86\x8F\x89aB=\x91Qa!rV[Q\x94\x87a(\x93V[`\xFF\x16\x1C`\x01\x90\x81\x16\x14\x90V[aBaW[PP`\x01\x01aB\x14V[\x8A\x8AaB\xE3\x85\x9F\x94\x8F\x96\x86a*N\x8F\x93`\xE0aB\x9Aa\x15e\x95` aB\x92a$\x8Ca+\0\x83\x9FaB\xA3\x9C\x89\x91a(\x93V[\x9A\x01Qa!rV[Q\x9B\x01Qa!rV[`@Qcy_JW`\xE1\x1B\x81R`\xFF\x90\x93\x16`\x04\x84\x01Rc\xFF\xFF\xFF\xFF\x93\x84\x16`$\x84\x01R`D\x83\x01\x96\x90\x96R\x91\x90\x94\x16`d\x85\x01R\x83\x90\x81\x90`\x84\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\x90\x81\x15a\x03UW\x8FaCO\x90\x8F\x93`\x01\x95\x94\x86\x95_\x92aCZW[PaCIaA\xE2\x92\x93Q\x93aCDa\x13\xE8\x84\x87a!rV[a<\x9BV[\x92a!rV[\x01\x9A\x90P\x8B\x8DaBWV[aA\xE2\x92PaCyaCI\x91` =\x81\x11a&?Wa&0\x81\x83a\x04\xDCV[\x92PaC,V[P\x93\x91\x97\x96\x99`\x01\x91\x96\x99P\x9A\x94\x92\x9A\x01\x92\x91\x90a?\xECV[aA\xE2\x92PaC\xB6` \x91\x82=\x81\x11a&?Wa&0\x81\x83a\x04\xDCV[\x92PaA\xD3V[` aC\xDE\x92P=\x81\x11aC\xE4W[aC\xD6\x81\x83a\x04\xDCV[\x81\x01\x90a<dV[_aA8V[P=aC\xCCV[aD(\x94PaD\x05\x92Pa$\x8C\x91a+\0\x91` \x95a(\x93V[`@Qc\x12M\x06!`\xE1\x1B\x81R`\xFF\x90\x91\x16`\x04\x82\x01R\x91\x82\x90\x81\x90`$\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\x03UW` \x89a@\x9F\x8F\x93\x8F`\xA0\x8F\x97a$\x8Ca+\0\x8F\x8F\x90a@\x91a@\x83a6\x05\x8F`@\x8B\x96\x91\x8F\x88\x93a\x15e\x9FaD\xAC\x90aD\xB2\x93a@\x97\x9F_\x92aD\xC8W[Pc\xFF\xFF\xFF\xFF\x80\x91\x16\x93\x16\x90a<AV[\x11a<NV[PPPPPP\x97PPPPPP\x92\x93PPa@WV[` c\xFF\xFF\xFF\xFF\x92\x93P\x82\x91aD\xE9\x91=\x81\x11a\"NWa\"@\x81\x83a\x04\xDCV[\x92\x91PaD\x9BV[aE\n\x91P` =` \x11a,\x12Wa,\x02\x81\x83a\x04\xDCV[_a?\xE5V[_\x91\x90a?\xE9V[aE:\x91P` =` \x11aE@W[aE2\x81\x83a\x04\xDCV[\x81\x01\x90a;\xC2V[_a=\xFFV[P=aE(V[P`\xE0\x84\x01QQ\x85\x14a=\x1BV[P`\xC0\x84\x01QQ\x85\x14a=\x15V[P`\xA0\x84\x01QQ\x85\x14a=\x0FV[_\x19`fU`@Q_\x19\x81R\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=` 3\x92\xA2V[\x80`fU`@Q\x90\x81R\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=` 3\x92\xA2V[`3\x80T`\x01`\x01`\xA0\x1B\x03\x92\x83\x16`\x01`\x01`\xA0\x1B\x03\x19\x82\x16\x81\x17\x90\x92U\x90\x91\x16\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0_\x80\xA3V[`@Q\x90aF,\x82a\x04\xA1V[_` \x83\x82\x81R\x01RV[`@Q\x90a\x01\x80aFH\x81\x84a\x04\xDCV[6\x837V[`@Q\x90aF\\` \x83a\x04\xDCV[` 6\x837V[\x91\x90`@\x90``aFraF\x1FV[\x94\x85\x92` \x85Q\x92aF\x84\x85\x85a\x04\xDCV[\x846\x857\x80Q\x84R\x01Q` \x83\x01R\x84\x82\x01R`\x07a\x07\xCF\x19Z\x01\xFA\x15aF\xA7WV[\xFE[` \x92\x91`\x80`@\x92aF\xBAaF\x1FV[\x95\x86\x93\x81\x86Q\x93aF\xCB\x86\x86a\x04\xDCV[\x856\x867\x80Q\x85R\x01Q\x82\x84\x01R\x80Q\x86\x84\x01R\x01Q``\x82\x01R`\x06a\x07\xCF\x19Z\x01\xFA\x80\x15aF\xA7W\x15aF\xFCWV[c\xD4\xB6\x8F\xD7`\xE0\x1B_R`\x04_\xFD[`@QaG\x17\x81a\x04\xA1V[`@\x90\x81QaG&\x83\x82a\x04\xDCV[\x826\x827\x81R` \x82Q\x91aG;\x84\x84a\x04\xDCV[\x836\x847\x01R\x80QaGM\x82\x82a\x04\xDCV[\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81R\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED` \x82\x01R\x81Q\x90aG\xA3\x83\x83a\x04\xDCV[\x7F']\xC4\xA2\x88\xD1\xAF\xB3\xCB\xB1\xAC\t\x18u$\xC7\xDB69]\xF7\xBE;\x99\xE6s\xB1:\x07Ze\xEC\x82R\x7F\x1D\x9B\xEF\xCD\x05\xA52>m\xA4\xD45\xF3\xB6\x17\xCD\xB3\xAF\x83(\\-\xF7\x11\xEF9\xC0\x15q\x82\x7F\x9D` \x83\x01RaG\xF8\x83Q\x93\x84a\x04\xDCV[\x82R` \x82\x01R\x90V[_Q` aM\xF7_9_Q\x90_R\x90aH\x19aF\x1FV[P_\x91\x90\x06` `\xC0\x83[aI\x19W_\x93_Q` aM\xF7_9_Q\x90_R`\x03\x81\x86\x81\x81\x80\t\t\x08`@QaHO\x85\x82a\x04\xDCV[\x846\x827\x84\x81\x85`@QaHc\x82\x82a\x04\xDCV[\x816\x827\x83\x81R\x83` \x82\x01R\x83`@\x82\x01R\x85``\x82\x01R\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R`\x80\x82\x01R_Q` aM\xF7_9_Q\x90_R`\xA0\x82\x01R`\x05a\x07\xCF\x19Z\x01\xFA\x80\x15aF\xA7WaH\xCD\x90aM\xE0V[Q\x91aI\x19W_Q` aM\xF7_9_Q\x90_R\x82\x80\t\x14aI\x04WP_Q` aM\xF7_9_Q\x90_R`\x01_\x94\x08\x92\x93aH$V[\x92\x93PPaI\x10a\x05\x0FV[\x92\x83R\x82\x01R\x90V[a \x17V[aI&aF\x1FV[P`@QaI3\x81a\x04\xA1V[`\x01\x81R`\x02` \x82\x01R\x90V[\x90`\x0C\x81\x10\x15a \x12W`\x05\x1B\x01\x90V[\x93\x92\x90\x91aI``@a\x05<V[\x94\x85R` \x85\x01RaIr`@a\x05<V[\x91\x82R` \x82\x01RaI\x82aF7V[\x92_[`\x02\x81\x10aI\xAFWPPP` a\x01\x80\x92aI\x9EaFMV[\x93\x84\x91`\x08b\x01\xD4\xC0\xFA\x91Q\x15\x15\x90V[\x80aI\xBB`\x01\x92a/\xD5V[aI\xC5\x82\x85a \x01V[QQaI\xD1\x82\x89aIAV[R` aI\xDE\x83\x86a \x01V[Q\x01QaI\xF3aI\xED\x83a;\xFBV[\x89aIAV[RaI\xFE\x82\x86a \x01V[QQQaJ\raI\xED\x83a<\tV[RaJ#aJ\x1B\x83\x87a \x01V[QQ` \x01\x90V[QaJ0aI\xED\x83a<\x17V[R` aJ=\x83\x87a \x01V[Q\x01QQaJMaI\xED\x83a<%V[RaJyaJsaJl` aJc\x86\x8Aa \x01V[Q\x01Q` \x01\x90V[Q\x92a<3V[\x88aIAV[R\x01aI\x85V[` \x7F@\xE4\xED\x88\n)\xE0\xF6\xDD\xCE0tW\xFBu\xCD\xDFO\xEE\xF7\xD3\xEC\xB00\x1B\xFD\xF4\x97j\x0E-\xFC\x91\x15\x15`\xFF\x19`\x97T\x16`\xFF\x82\x16\x17`\x97U`@Q\x90\x81R\xA1V[\x90`\x01aJ\xCC`\xFF\x93aMhV[\x92\x83\x92\x16\x1B\x11\x15aJ\xDAW\x90V[c\xCA\x95s3`\xE0\x1B_R`\x04_\xFD[\x80_\x91[aJ\xF5WP\x90V[_\x19\x81\x01\x81\x81\x11a(IWa\xFF\xFF\x91\x16\x91\x16a\xFF\xFF\x81\x14a(IW`\x01\x01\x90\x80aJ\xEDV[\x90aK#aF\x1FV[Pa\xFF\xFF\x81\x16\x90a\x02\0\x82\x10\x15aK\xC8W`\x01\x82\x14aK\xC3WaKDa\x05\x0FV[_\x81R_` \x82\x01R\x92\x90`\x01\x90_\x92[a\xFF\xFF\x83\x16\x85\x10\x15aKiWPPPPP\x90V[`\x01a\xFF\xFF\x83\x16`\xFF\x86\x16\x1C\x81\x16\x14aK\xA3W[`\x01aK\x99aK\x8E\x83`\xFF\x94aF\xA9V[\x94`\x01\x1Ba\xFF\xFE\x16\x90V[\x94\x01\x16\x92\x91aKUV[\x94`\x01aK\x99aK\x8EaK\xB8\x89`\xFF\x95aF\xA9V[\x98\x93PPPPaK}V[PP\x90V[c\x7F\xC4\xEA}`\xE1\x1B_R`\x04_\xFD[aK\xDFaF\x1FV[P\x80Q\x90\x81\x15\x80aLPW[\x15aL\x0CWPP`@QaL\0`@\x82a\x04\xDCV[_\x81R_` \x82\x01R\x90V[` _Q` aM\xF7_9_Q\x90_R\x91\x01Q\x06_Q` aM\xF7_9_Q\x90_R\x03_Q` aM\xF7_9_Q\x90_R\x81\x11a(IW`@Q\x91aG\xF8\x83a\x04\xA1V[P` \x81\x01Q\x15aK\xEBV[`3T`\x01`\x01`\xA0\x1B\x03\x163\x03aLpWV[`d`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R` `$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R\xFD[a\xFF\xFFaL\xC0\x82aJ\xE9V[\x16aL\xCA\x81a\x08\xC4V[\x90aL\xD8`@Q\x92\x83a\x04\xDCV[\x80\x82RaL\xE7`\x1F\x19\x91a\x08\xC4V[\x016` \x83\x017__[\x82Q\x82\x10\x80aMGW[\x15aM@W`\x01\x81\x1B\x84\x16aM\x19W[aM\x14\x90a(\xB4V[aL\xF1V[\x90`\x01aM\x14\x91`\xFF`\xF8\x1B\x84`\xF8\x1B\x16_\x1AaM6\x82\x87a\"\xB8V[S\x01\x91\x90PaM\x0BV[PP\x90P\x90V[Pa\x01\0\x81\x10aL\xFBV[\x15aMYWV[c\x10\x19\x10i`\xE3\x1B_R`\x04_\xFD[\x90a\x01\0\x82Q\x11aM\xD1W\x81Q\x15aM\xCCW` \x82\x01Q`\x01\x90`\xF8\x1C\x81\x90\x1B[\x83Q\x82\x10\x15aM\xC7W`\x01\x90aM\xB2aM\xA8a$\x8Ca$~\x86\x89a\"\xB8V[`\xFF`\x01\x91\x16\x1B\x90V[\x90aM\xBE\x81\x83\x11aMRV[\x17\x91\x01\x90aM\x89V[\x92PPV[_\x91PV[c}\xA5NG`\xE1\x1B_R`\x04_\xFD[\x15aM\xE7WV[c\xD5\x1E\xDA\xE3`\xE0\x1B_R`\x04_\xFD\xFE0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\xA2dipfsX\"\x12 \xBC~V\xE7\0\x1D1\xFE\xD06\xCFSVO\xE2\x86\x1A\x94\xFE\xEE\xD9\x17\xB3\xC5\xDC\\\x11\x1A\r6\x87!dsolcC\0\x08\x1B\x003", + ); + /**Custom error with signature `BitmapValueTooLarge()` and selector `0xca957333`. + ```solidity + error BitmapValueTooLarge(); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct BitmapValueTooLarge {} + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<BitmapValueTooLarge> for UnderlyingRustTuple<'_> { + fn from(value: BitmapValueTooLarge) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for BitmapValueTooLarge { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for BitmapValueTooLarge { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "BitmapValueTooLarge()"; + const SELECTOR: [u8; 4] = [202u8, 149u8, 115u8, 51u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `BytesArrayLengthTooLong()` and selector `0xfb4a9c8e`. + ```solidity + error BytesArrayLengthTooLong(); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct BytesArrayLengthTooLong {} + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<BytesArrayLengthTooLong> for UnderlyingRustTuple<'_> { + fn from(value: BytesArrayLengthTooLong) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for BytesArrayLengthTooLong { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for BytesArrayLengthTooLong { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "BytesArrayLengthTooLong()"; + const SELECTOR: [u8; 4] = [251u8, 74u8, 156u8, 142u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `BytesArrayNotOrdered()` and selector `0x80c88348`. + ```solidity + error BytesArrayNotOrdered(); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct BytesArrayNotOrdered {} + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<BytesArrayNotOrdered> for UnderlyingRustTuple<'_> { + fn from(value: BytesArrayNotOrdered) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for BytesArrayNotOrdered { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for BytesArrayNotOrdered { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "BytesArrayNotOrdered()"; + const SELECTOR: [u8; 4] = [128u8, 200u8, 131u8, 72u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `CurrentlyPaused()` and selector `0x840a48d5`. + ```solidity + error CurrentlyPaused(); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct CurrentlyPaused {} + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<CurrentlyPaused> for UnderlyingRustTuple<'_> { + fn from(value: CurrentlyPaused) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for CurrentlyPaused { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for CurrentlyPaused { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "CurrentlyPaused()"; + const SELECTOR: [u8; 4] = [132u8, 10u8, 72u8, 213u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `ECAddFailed()` and selector `0xd4b68fd7`. + ```solidity + error ECAddFailed(); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ECAddFailed {} + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<ECAddFailed> for UnderlyingRustTuple<'_> { + fn from(value: ECAddFailed) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for ECAddFailed { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for ECAddFailed { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ECAddFailed()"; + const SELECTOR: [u8; 4] = [212u8, 182u8, 143u8, 215u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `ECMulFailed()` and selector `0x4633be32`. + ```solidity + error ECMulFailed(); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ECMulFailed {} + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<ECMulFailed> for UnderlyingRustTuple<'_> { + fn from(value: ECMulFailed) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for ECMulFailed { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for ECMulFailed { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ECMulFailed()"; + const SELECTOR: [u8; 4] = [70u8, 51u8, 190u8, 50u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `ExpModFailed()` and selector `0xd51edae3`. + ```solidity + error ExpModFailed(); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ExpModFailed {} + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<ExpModFailed> for UnderlyingRustTuple<'_> { + fn from(value: ExpModFailed) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for ExpModFailed { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for ExpModFailed { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ExpModFailed()"; + const SELECTOR: [u8; 4] = [213u8, 30u8, 218u8, 227u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InputAddressZero()` and selector `0x73632176`. + ```solidity + error InputAddressZero(); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct InputAddressZero {} + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<InputAddressZero> for UnderlyingRustTuple<'_> { + fn from(value: InputAddressZero) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for InputAddressZero { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InputAddressZero { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InputAddressZero()"; + const SELECTOR: [u8; 4] = [115u8, 99u8, 33u8, 118u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InputArrayLengthMismatch()` and selector `0x43714afd`. + ```solidity + error InputArrayLengthMismatch(); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct InputArrayLengthMismatch {} + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<InputArrayLengthMismatch> for UnderlyingRustTuple<'_> { + fn from(value: InputArrayLengthMismatch) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for InputArrayLengthMismatch { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InputArrayLengthMismatch { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InputArrayLengthMismatch()"; + const SELECTOR: [u8; 4] = [67u8, 113u8, 74u8, 253u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InputEmptyQuorumNumbers()` and selector `0x1f0405a0`. + ```solidity + error InputEmptyQuorumNumbers(); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct InputEmptyQuorumNumbers {} + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<InputEmptyQuorumNumbers> for UnderlyingRustTuple<'_> { + fn from(value: InputEmptyQuorumNumbers) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for InputEmptyQuorumNumbers { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InputEmptyQuorumNumbers { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InputEmptyQuorumNumbers()"; + const SELECTOR: [u8; 4] = [31u8, 4u8, 5u8, 160u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InputNonSignerLengthMismatch()` and selector `0x5f832f41`. + ```solidity + error InputNonSignerLengthMismatch(); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct InputNonSignerLengthMismatch {} + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<InputNonSignerLengthMismatch> for UnderlyingRustTuple<'_> { + fn from(value: InputNonSignerLengthMismatch) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for InputNonSignerLengthMismatch { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InputNonSignerLengthMismatch { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InputNonSignerLengthMismatch()"; + const SELECTOR: [u8; 4] = [95u8, 131u8, 47u8, 65u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidBLSPairingKey()` and selector `0x67988d33`. + ```solidity + error InvalidBLSPairingKey(); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct InvalidBLSPairingKey {} + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<InvalidBLSPairingKey> for UnderlyingRustTuple<'_> { + fn from(value: InvalidBLSPairingKey) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidBLSPairingKey { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidBLSPairingKey { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidBLSPairingKey()"; + const SELECTOR: [u8; 4] = [103u8, 152u8, 141u8, 51u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidBLSSignature()` and selector `0xab1b236b`. + ```solidity + error InvalidBLSSignature(); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct InvalidBLSSignature {} + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<InvalidBLSSignature> for UnderlyingRustTuple<'_> { + fn from(value: InvalidBLSSignature) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidBLSSignature { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidBLSSignature { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidBLSSignature()"; + const SELECTOR: [u8; 4] = [171u8, 27u8, 35u8, 107u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidNewPausedStatus()` and selector `0xc61dca5d`. + ```solidity + error InvalidNewPausedStatus(); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct InvalidNewPausedStatus {} + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<InvalidNewPausedStatus> for UnderlyingRustTuple<'_> { + fn from(value: InvalidNewPausedStatus) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidNewPausedStatus { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidNewPausedStatus { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidNewPausedStatus()"; + const SELECTOR: [u8; 4] = [198u8, 29u8, 202u8, 93u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidQuorumApkHash()` and selector `0xe1310aed`. + ```solidity + error InvalidQuorumApkHash(); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct InvalidQuorumApkHash {} + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<InvalidQuorumApkHash> for UnderlyingRustTuple<'_> { + fn from(value: InvalidQuorumApkHash) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidQuorumApkHash { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidQuorumApkHash { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidQuorumApkHash()"; + const SELECTOR: [u8; 4] = [225u8, 49u8, 10u8, 237u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidReferenceBlocknumber()` and selector `0x4b874f45`. + ```solidity + error InvalidReferenceBlocknumber(); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct InvalidReferenceBlocknumber {} + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<InvalidReferenceBlocknumber> for UnderlyingRustTuple<'_> { + fn from(value: InvalidReferenceBlocknumber) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidReferenceBlocknumber { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidReferenceBlocknumber { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidReferenceBlocknumber()"; + const SELECTOR: [u8; 4] = [75u8, 135u8, 79u8, 69u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `NonSignerPubkeysNotSorted()` and selector `0xff719414`. + ```solidity + error NonSignerPubkeysNotSorted(); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct NonSignerPubkeysNotSorted {} + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<NonSignerPubkeysNotSorted> for UnderlyingRustTuple<'_> { + fn from(value: NonSignerPubkeysNotSorted) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for NonSignerPubkeysNotSorted { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for NonSignerPubkeysNotSorted { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "NonSignerPubkeysNotSorted()"; + const SELECTOR: [u8; 4] = [255u8, 113u8, 148u8, 20u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `OnlyPauser()` and selector `0x75df51dc`. + ```solidity + error OnlyPauser(); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct OnlyPauser {} + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<OnlyPauser> for UnderlyingRustTuple<'_> { + fn from(value: OnlyPauser) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyPauser { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for OnlyPauser { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "OnlyPauser()"; + const SELECTOR: [u8; 4] = [117u8, 223u8, 81u8, 220u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `OnlyRegistryCoordinatorOwner()` and selector `0xe0e1e762`. + ```solidity + error OnlyRegistryCoordinatorOwner(); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct OnlyRegistryCoordinatorOwner {} + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<OnlyRegistryCoordinatorOwner> for UnderlyingRustTuple<'_> { + fn from(value: OnlyRegistryCoordinatorOwner) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyRegistryCoordinatorOwner { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for OnlyRegistryCoordinatorOwner { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "OnlyRegistryCoordinatorOwner()"; + const SELECTOR: [u8; 4] = [224u8, 225u8, 231u8, 98u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `OnlyUnpauser()` and selector `0x794821ff`. + ```solidity + error OnlyUnpauser(); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct OnlyUnpauser {} + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<OnlyUnpauser> for UnderlyingRustTuple<'_> { + fn from(value: OnlyUnpauser) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyUnpauser { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for OnlyUnpauser { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "OnlyUnpauser()"; + const SELECTOR: [u8; 4] = [121u8, 72u8, 33u8, 255u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `OperatorNotRegistered()` and selector `0x25ec6c1f`. + ```solidity + error OperatorNotRegistered(); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct OperatorNotRegistered {} + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<OperatorNotRegistered> for UnderlyingRustTuple<'_> { + fn from(value: OperatorNotRegistered) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for OperatorNotRegistered { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for OperatorNotRegistered { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "OperatorNotRegistered()"; + const SELECTOR: [u8; 4] = [37u8, 236u8, 108u8, 31u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `ScalarTooLarge()` and selector `0xff89d4fa`. + ```solidity + error ScalarTooLarge(); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ScalarTooLarge {} + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<ScalarTooLarge> for UnderlyingRustTuple<'_> { + fn from(value: ScalarTooLarge) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for ScalarTooLarge { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for ScalarTooLarge { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ScalarTooLarge()"; + const SELECTOR: [u8; 4] = [255u8, 137u8, 212u8, 250u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `StaleStakesForbidden()` and selector `0xaffc5edb`. + ```solidity + error StaleStakesForbidden(); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct StaleStakesForbidden {} + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<StaleStakesForbidden> for UnderlyingRustTuple<'_> { + fn from(value: StaleStakesForbidden) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for StaleStakesForbidden { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for StaleStakesForbidden { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "StaleStakesForbidden()"; + const SELECTOR: [u8; 4] = [175u8, 252u8, 94u8, 219u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`. + ```solidity + event Initialized(uint8 version); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct Initialized { + #[allow(missing_docs)] + pub version: u8, + } + #[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 Initialized { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "Initialized(uint8)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, + 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, + 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: <Self::TopicList as alloy_sol_types::SolType>::RustType, + data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { version: data.0 } + } + #[inline] + fn check_signature( + topics: &<Self::TopicList as alloy_sol_types::SolType>::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<'_> { + ( + <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize( + &self.version, + ), + ) + } + #[inline] + fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::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() < <Self::TopicList as alloy_sol_types::TopicList>::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 Initialized { + 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<&Initialized> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Initialized) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `NewTaskCreated(uint32,(uint256,uint32,bytes,uint32))` and selector `0x1695b8d06ec800b4615e745cfb5bd00c1f2875615d42925c3b5afa543bb24c48`. + ```solidity + event NewTaskCreated(uint32 indexed taskIndex, IIncredibleSquaringTaskManager.Task task); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct NewTaskCreated { + #[allow(missing_docs)] + pub taskIndex: u32, + #[allow(missing_docs)] + pub task: <IIncredibleSquaringTaskManager::Task as alloy::sol_types::SolType>::RustType, + } + #[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 NewTaskCreated { + type DataTuple<'a> = (IIncredibleSquaringTaskManager::Task,); + type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<32>, + ); + const SIGNATURE: &'static str = "NewTaskCreated(uint32,(uint256,uint32,bytes,uint32))"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 22u8, 149u8, 184u8, 208u8, 110u8, 200u8, 0u8, 180u8, 97u8, 94u8, 116u8, 92u8, + 251u8, 91u8, 208u8, 12u8, 31u8, 40u8, 117u8, 97u8, 93u8, 66u8, 146u8, 92u8, + 59u8, 90u8, 250u8, 84u8, 59u8, 178u8, 76u8, 72u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: <Self::TopicList as alloy_sol_types::SolType>::RustType, + data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + taskIndex: topics.1, + task: data.0, + } + } + #[inline] + fn check_signature( + topics: &<Self::TopicList as alloy_sol_types::SolType>::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<'_> { + ( + <IIncredibleSquaringTaskManager::Task as alloy_sol_types::SolType>::tokenize( + &self.task, + ), + ) + } + #[inline] + fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType { + (Self::SIGNATURE_HASH.into(), self.taskIndex.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = <alloy::sol_types::sol_data::Uint< + 32, + > as alloy_sol_types::EventTopic>::encode_topic(&self.taskIndex); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for NewTaskCreated { + 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<&NewTaskCreated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &NewTaskCreated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. + ```solidity + event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct OwnershipTransferred { + #[allow(missing_docs)] + pub previousOwner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOwner: 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 OwnershipTransferred { + type DataTuple<'a> = (); + type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OwnershipTransferred(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, + 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, + 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: <Self::TopicList as alloy_sol_types::SolType>::RustType, + data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + previousOwner: topics.1, + newOwner: topics.2, + } + } + #[inline] + fn check_signature( + topics: &<Self::TopicList as alloy_sol_types::SolType>::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<'_> { + () + } + #[inline] + fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.previousOwner.clone(), + self.newOwner.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic( + &self.previousOwner, + ); + out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic( + &self.newOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { + 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<&OwnershipTransferred> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Paused(address,uint256)` and selector `0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d`. + ```solidity + event Paused(address indexed account, uint256 newPausedStatus); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct Paused { + #[allow(missing_docs)] + pub account: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newPausedStatus: 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; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Paused { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Paused(address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 171u8, 64u8, 163u8, 116u8, 188u8, 81u8, 222u8, 55u8, 34u8, 0u8, 168u8, 188u8, + 152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8, 11u8, 182u8, + 224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: <Self::TopicList as alloy_sol_types::SolType>::RustType, + data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + account: topics.1, + newPausedStatus: data.0, + } + } + #[inline] + fn check_signature( + topics: &<Self::TopicList as alloy_sol_types::SolType>::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<'_> { + ( + <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType { + (Self::SIGNATURE_HASH.into(), self.account.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic( + &self.account, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Paused { + 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<&Paused> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Paused) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `StaleStakesForbiddenUpdate(bool)` and selector `0x40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc`. + ```solidity + event StaleStakesForbiddenUpdate(bool value); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct StaleStakesForbiddenUpdate { + #[allow(missing_docs)] + pub value: bool, + } + #[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 StaleStakesForbiddenUpdate { + type DataTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "StaleStakesForbiddenUpdate(bool)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 64u8, 228u8, 237u8, 136u8, 10u8, 41u8, 224u8, 246u8, 221u8, 206u8, 48u8, 116u8, + 87u8, 251u8, 117u8, 205u8, 223u8, 79u8, 238u8, 247u8, 211u8, 236u8, 176u8, + 48u8, 27u8, 253u8, 244u8, 151u8, 106u8, 14u8, 45u8, 252u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: <Self::TopicList as alloy_sol_types::SolType>::RustType, + data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { value: data.0 } + } + #[inline] + fn check_signature( + topics: &<Self::TopicList as alloy_sol_types::SolType>::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<'_> { + ( + <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize( + &self.value, + ), + ) + } + #[inline] + fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::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() < <Self::TopicList as alloy_sol_types::TopicList>::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 StaleStakesForbiddenUpdate { + 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<&StaleStakesForbiddenUpdate> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &StaleStakesForbiddenUpdate) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `TaskChallengedSuccessfully(uint32,address)` and selector `0xc20d1bb0f1623680306b83d4ff4bb99a2beb9d86d97832f3ca40fd13a29df1ec`. + ```solidity + event TaskChallengedSuccessfully(uint32 indexed taskIndex, address indexed challenger); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct TaskChallengedSuccessfully { + #[allow(missing_docs)] + pub taskIndex: u32, + #[allow(missing_docs)] + pub challenger: 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 TaskChallengedSuccessfully { + type DataTuple<'a> = (); + type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "TaskChallengedSuccessfully(uint32,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 194u8, 13u8, 27u8, 176u8, 241u8, 98u8, 54u8, 128u8, 48u8, 107u8, 131u8, 212u8, + 255u8, 75u8, 185u8, 154u8, 43u8, 235u8, 157u8, 134u8, 217u8, 120u8, 50u8, + 243u8, 202u8, 64u8, 253u8, 19u8, 162u8, 157u8, 241u8, 236u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: <Self::TopicList as alloy_sol_types::SolType>::RustType, + data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + taskIndex: topics.1, + challenger: topics.2, + } + } + #[inline] + fn check_signature( + topics: &<Self::TopicList as alloy_sol_types::SolType>::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<'_> { + () + } + #[inline] + fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.taskIndex.clone(), + self.challenger.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = <alloy::sol_types::sol_data::Uint< + 32, + > as alloy_sol_types::EventTopic>::encode_topic(&self.taskIndex); + out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic( + &self.challenger, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for TaskChallengedSuccessfully { + 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<&TaskChallengedSuccessfully> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &TaskChallengedSuccessfully) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `TaskChallengedUnsuccessfully(uint32,address)` and selector `0xfd3e26beeb5967fc5a57a0446914eabc45b4aa474c67a51b4b5160cac60ddb05`. + ```solidity + event TaskChallengedUnsuccessfully(uint32 indexed taskIndex, address indexed challenger); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct TaskChallengedUnsuccessfully { + #[allow(missing_docs)] + pub taskIndex: u32, + #[allow(missing_docs)] + pub challenger: 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 TaskChallengedUnsuccessfully { + type DataTuple<'a> = (); + type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "TaskChallengedUnsuccessfully(uint32,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 253u8, 62u8, 38u8, 190u8, 235u8, 89u8, 103u8, 252u8, 90u8, 87u8, 160u8, 68u8, + 105u8, 20u8, 234u8, 188u8, 69u8, 180u8, 170u8, 71u8, 76u8, 103u8, 165u8, 27u8, + 75u8, 81u8, 96u8, 202u8, 198u8, 13u8, 219u8, 5u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: <Self::TopicList as alloy_sol_types::SolType>::RustType, + data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + taskIndex: topics.1, + challenger: topics.2, + } + } + #[inline] + fn check_signature( + topics: &<Self::TopicList as alloy_sol_types::SolType>::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<'_> { + () + } + #[inline] + fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.taskIndex.clone(), + self.challenger.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = <alloy::sol_types::sol_data::Uint< + 32, + > as alloy_sol_types::EventTopic>::encode_topic(&self.taskIndex); + out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic( + &self.challenger, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for TaskChallengedUnsuccessfully { + 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<&TaskChallengedUnsuccessfully> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &TaskChallengedUnsuccessfully) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `TaskCompleted(uint32)` and selector `0x9a144f228a931b9d0d1696fbcdaf310b24b5d2d21e799db623fc986a0f547430`. + ```solidity + event TaskCompleted(uint32 indexed taskIndex); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct TaskCompleted { + #[allow(missing_docs)] + pub taskIndex: u32, + } + #[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 TaskCompleted { + type DataTuple<'a> = (); + type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<32>, + ); + const SIGNATURE: &'static str = "TaskCompleted(uint32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 154u8, 20u8, 79u8, 34u8, 138u8, 147u8, 27u8, 157u8, 13u8, 22u8, 150u8, 251u8, + 205u8, 175u8, 49u8, 11u8, 36u8, 181u8, 210u8, 210u8, 30u8, 121u8, 157u8, 182u8, + 35u8, 252u8, 152u8, 106u8, 15u8, 84u8, 116u8, 48u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: <Self::TopicList as alloy_sol_types::SolType>::RustType, + data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + taskIndex: topics.1, + } + } + #[inline] + fn check_signature( + topics: &<Self::TopicList as alloy_sol_types::SolType>::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<'_> { + () + } + #[inline] + fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType { + (Self::SIGNATURE_HASH.into(), self.taskIndex.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = <alloy::sol_types::sol_data::Uint< + 32, + > as alloy_sol_types::EventTopic>::encode_topic(&self.taskIndex); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for TaskCompleted { + 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<&TaskCompleted> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &TaskCompleted) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `TaskResponded((uint32,uint256),(uint32,bytes32))` and selector `0x349c1ee60e4e8972ee9dba642c1774543d5c4136879b7f4caaf04bf81a487a2a`. + ```solidity + event TaskResponded(IIncredibleSquaringTaskManager.TaskResponse taskResponse, IIncredibleSquaringTaskManager.TaskResponseMetadata taskResponseMetadata); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct TaskResponded { + #[allow(missing_docs)] + pub taskResponse: <IIncredibleSquaringTaskManager::TaskResponse as alloy::sol_types::SolType>::RustType, + #[allow(missing_docs)] + pub taskResponseMetadata: <IIncredibleSquaringTaskManager::TaskResponseMetadata as alloy::sol_types::SolType>::RustType, + } + #[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 TaskResponded { + type DataTuple<'a> = ( + IIncredibleSquaringTaskManager::TaskResponse, + IIncredibleSquaringTaskManager::TaskResponseMetadata, + ); + type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "TaskResponded((uint32,uint256),(uint32,bytes32))"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 52u8, 156u8, 30u8, 230u8, 14u8, 78u8, 137u8, 114u8, 238u8, 157u8, 186u8, 100u8, + 44u8, 23u8, 116u8, 84u8, 61u8, 92u8, 65u8, 54u8, 135u8, 155u8, 127u8, 76u8, + 170u8, 240u8, 75u8, 248u8, 26u8, 72u8, 122u8, 42u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: <Self::TopicList as alloy_sol_types::SolType>::RustType, + data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + taskResponse: data.0, + taskResponseMetadata: data.1, + } + } + #[inline] + fn check_signature( + topics: &<Self::TopicList as alloy_sol_types::SolType>::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<'_> { + ( + <IIncredibleSquaringTaskManager::TaskResponse as alloy_sol_types::SolType>::tokenize( + &self.taskResponse, + ), + <IIncredibleSquaringTaskManager::TaskResponseMetadata as alloy_sol_types::SolType>::tokenize( + &self.taskResponseMetadata, + ), + ) + } + #[inline] + fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::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() < <Self::TopicList as alloy_sol_types::TopicList>::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 TaskResponded { + 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<&TaskResponded> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &TaskResponded) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Unpaused(address,uint256)` and selector `0x3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c`. + ```solidity + event Unpaused(address indexed account, uint256 newPausedStatus); + ```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct Unpaused { + #[allow(missing_docs)] + pub account: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newPausedStatus: 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; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Unpaused { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Unpaused(address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = + alloy_sol_types::private::B256::new([ + 53u8, 130u8, 209u8, 130u8, 142u8, 38u8, 191u8, 86u8, 189u8, 128u8, 21u8, 2u8, + 188u8, 2u8, 26u8, 192u8, 188u8, 138u8, 251u8, 87u8, 200u8, 38u8, 228u8, 152u8, + 107u8, 69u8, 89u8, 60u8, 143u8, 173u8, 56u8, 156u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: <Self::TopicList as alloy_sol_types::SolType>::RustType, + data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + account: topics.1, + newPausedStatus: data.0, + } + } + #[inline] + fn check_signature( + topics: &<Self::TopicList as alloy_sol_types::SolType>::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<'_> { + ( + <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType { + (Self::SIGNATURE_HASH.into(), self.account.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH); + out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic( + &self.account, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Unpaused { + 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<&Unpaused> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Unpaused) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. + ```solidity + constructor(address _slashingRegistryCoordinator, address _pauserRegistry, uint32 _taskResponseWindowBlock, address _serviceManager); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct constructorCall { + #[allow(missing_docs)] + pub _slashingRegistryCoordinator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _pauserRegistry: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _taskResponseWindowBlock: u32, + #[allow(missing_docs)] + pub _serviceManager: alloy::sol_types::private::Address, + } + 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::Uint<32>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + u32, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + ( + value._slashingRegistryCoordinator, + value._pauserRegistry, + value._taskResponseWindowBlock, + value._serviceManager, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _slashingRegistryCoordinator: tuple.0, + _pauserRegistry: tuple.1, + _taskResponseWindowBlock: tuple.2, + _serviceManager: 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::Uint<32>, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize( + &self._slashingRegistryCoordinator, + ), + <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize( + &self._pauserRegistry, + ), + <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize( + &self._taskResponseWindowBlock, + ), + <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize( + &self._serviceManager, + ), + ) + } + } + }; + /**Function with signature `TASK_CHALLENGE_WINDOW_BLOCK()` and selector `0xf63c5bab`. + ```solidity + function TASK_CHALLENGE_WINDOW_BLOCK() external view returns (uint32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct TASK_CHALLENGE_WINDOW_BLOCKCall {} + ///Container type for the return parameters of the [`TASK_CHALLENGE_WINDOW_BLOCK()`](TASK_CHALLENGE_WINDOW_BLOCKCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct TASK_CHALLENGE_WINDOW_BLOCKReturn { + #[allow(missing_docs)] + pub _0: u32, + } + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<TASK_CHALLENGE_WINDOW_BLOCKCall> for UnderlyingRustTuple<'_> { + fn from(value: TASK_CHALLENGE_WINDOW_BLOCKCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for TASK_CHALLENGE_WINDOW_BLOCKCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<TASK_CHALLENGE_WINDOW_BLOCKReturn> for UnderlyingRustTuple<'_> { + fn from(value: TASK_CHALLENGE_WINDOW_BLOCKReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for TASK_CHALLENGE_WINDOW_BLOCKReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for TASK_CHALLENGE_WINDOW_BLOCKCall { + type Parameters<'a> = (); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = TASK_CHALLENGE_WINDOW_BLOCKReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "TASK_CHALLENGE_WINDOW_BLOCK()"; + const SELECTOR: [u8; 4] = [246u8, 60u8, 91u8, 171u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> 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<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `TASK_RESPONSE_WINDOW_BLOCK()` and selector `0x1ad43189`. + ```solidity + function TASK_RESPONSE_WINDOW_BLOCK() external view returns (uint32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct TASK_RESPONSE_WINDOW_BLOCKCall {} + ///Container type for the return parameters of the [`TASK_RESPONSE_WINDOW_BLOCK()`](TASK_RESPONSE_WINDOW_BLOCKCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct TASK_RESPONSE_WINDOW_BLOCKReturn { + #[allow(missing_docs)] + pub _0: u32, + } + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<TASK_RESPONSE_WINDOW_BLOCKCall> for UnderlyingRustTuple<'_> { + fn from(value: TASK_RESPONSE_WINDOW_BLOCKCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for TASK_RESPONSE_WINDOW_BLOCKCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<TASK_RESPONSE_WINDOW_BLOCKReturn> for UnderlyingRustTuple<'_> { + fn from(value: TASK_RESPONSE_WINDOW_BLOCKReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for TASK_RESPONSE_WINDOW_BLOCKReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for TASK_RESPONSE_WINDOW_BLOCKCall { + type Parameters<'a> = (); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = TASK_RESPONSE_WINDOW_BLOCKReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "TASK_RESPONSE_WINDOW_BLOCK()"; + const SELECTOR: [u8; 4] = [26u8, 212u8, 49u8, 137u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> 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<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `WADS_TO_SLASH()` and selector `0x5a2d7f02`. + ```solidity + function WADS_TO_SLASH() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct WADS_TO_SLASHCall {} + ///Container type for the return parameters of the [`WADS_TO_SLASH()`](WADS_TO_SLASHCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct WADS_TO_SLASHReturn { + #[allow(missing_docs)] + pub _0: 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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<WADS_TO_SLASHCall> for UnderlyingRustTuple<'_> { + fn from(value: WADS_TO_SLASHCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for WADS_TO_SLASHCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<WADS_TO_SLASHReturn> for UnderlyingRustTuple<'_> { + fn from(value: WADS_TO_SLASHReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for WADS_TO_SLASHReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for WADS_TO_SLASHCall { + type Parameters<'a> = (); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = WADS_TO_SLASHReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "WADS_TO_SLASH()"; + const SELECTOR: [u8; 4] = [90u8, 45u8, 127u8, 2u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> 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<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `aggregator()` and selector `0x245a7bfc`. + ```solidity + function aggregator() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct aggregatorCall {} + ///Container type for the return parameters of the [`aggregator()`](aggregatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct aggregatorReturn { + #[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; + { + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<aggregatorCall> for UnderlyingRustTuple<'_> { + fn from(value: aggregatorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for aggregatorCall { + 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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<aggregatorReturn> for UnderlyingRustTuple<'_> { + fn from(value: aggregatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for aggregatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for aggregatorCall { + type Parameters<'a> = (); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = aggregatorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "aggregator()"; + const SELECTOR: [u8; 4] = [36u8, 90u8, 123u8, 252u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> 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<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `allTaskHashes(uint32)` and selector `0x2d89f6fc`. + ```solidity + function allTaskHashes(uint32) external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct allTaskHashesCall { + #[allow(missing_docs)] + pub _0: u32, + } + ///Container type for the return parameters of the [`allTaskHashes(uint32)`](allTaskHashesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct allTaskHashesReturn { + #[allow(missing_docs)] + 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<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<allTaskHashesCall> for UnderlyingRustTuple<'_> { + fn from(value: allTaskHashesCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for allTaskHashesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<allTaskHashesReturn> for UnderlyingRustTuple<'_> { + fn from(value: allTaskHashesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for allTaskHashesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for allTaskHashesCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = allTaskHashesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "allTaskHashes(uint32)"; + const SELECTOR: [u8; 4] = [45u8, 137u8, 246u8, 252u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `allTaskResponses(uint32)` and selector `0x2cb223d5`. + ```solidity + function allTaskResponses(uint32) external view returns (bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct allTaskResponsesCall { + #[allow(missing_docs)] + pub _0: u32, + } + ///Container type for the return parameters of the [`allTaskResponses(uint32)`](allTaskResponsesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct allTaskResponsesReturn { + #[allow(missing_docs)] + 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<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<allTaskResponsesCall> for UnderlyingRustTuple<'_> { + fn from(value: allTaskResponsesCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for allTaskResponsesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<allTaskResponsesReturn> for UnderlyingRustTuple<'_> { + fn from(value: allTaskResponsesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for allTaskResponsesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for allTaskResponsesCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = allTaskResponsesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "allTaskResponses(uint32)"; + const SELECTOR: [u8; 4] = [44u8, 178u8, 35u8, 213u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `allocationManager()` and selector `0xca8aa7c7`. + ```solidity + function allocationManager() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct allocationManagerCall {} + ///Container type for the return parameters of the [`allocationManager()`](allocationManagerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct allocationManagerReturn { + #[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; + { + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<allocationManagerCall> for UnderlyingRustTuple<'_> { + fn from(value: allocationManagerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for allocationManagerCall { + 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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<allocationManagerReturn> for UnderlyingRustTuple<'_> { + fn from(value: allocationManagerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for allocationManagerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for allocationManagerCall { + type Parameters<'a> = (); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = allocationManagerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "allocationManager()"; + const SELECTOR: [u8; 4] = [202u8, 138u8, 167u8, 199u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> 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<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `blsApkRegistry()` and selector `0x5df45946`. + ```solidity + function blsApkRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct blsApkRegistryCall {} + ///Container type for the return parameters of the [`blsApkRegistry()`](blsApkRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct blsApkRegistryReturn { + #[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; + { + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<blsApkRegistryCall> for UnderlyingRustTuple<'_> { + fn from(value: blsApkRegistryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsApkRegistryCall { + 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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<blsApkRegistryReturn> for UnderlyingRustTuple<'_> { + fn from(value: blsApkRegistryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsApkRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for blsApkRegistryCall { + type Parameters<'a> = (); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = blsApkRegistryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "blsApkRegistry()"; + const SELECTOR: [u8; 4] = [93u8, 244u8, 89u8, 70u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> 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<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `checkSignatures(bytes32,bytes,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))` and selector `0x6efb4636`. + ```solidity + function checkSignatures(bytes32 msgHash, bytes memory quorumNumbers, uint32 referenceBlockNumber, IBLSSignatureCheckerTypes.NonSignerStakesAndSignature memory params) external view returns (IBLSSignatureCheckerTypes.QuorumStakeTotals memory, bytes32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct checkSignaturesCall { + #[allow(missing_docs)] + pub msgHash: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub quorumNumbers: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] + pub referenceBlockNumber: u32, + #[allow(missing_docs)] + pub params: <IBLSSignatureCheckerTypes::NonSignerStakesAndSignature as alloy::sol_types::SolType>::RustType, + } + ///Container type for the return parameters of the [`checkSignatures(bytes32,bytes,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))`](checkSignaturesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct checkSignaturesReturn { + #[allow(missing_docs)] + pub _0: + <IBLSSignatureCheckerTypes::QuorumStakeTotals as alloy::sol_types::SolType>::RustType, + #[allow(missing_docs)] + pub _1: 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::Bytes, + alloy::sol_types::sol_data::Uint<32>, + IBLSSignatureCheckerTypes::NonSignerStakesAndSignature, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::Bytes, + u32, + <IBLSSignatureCheckerTypes::NonSignerStakesAndSignature as alloy::sol_types::SolType>::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<checkSignaturesCall> for UnderlyingRustTuple<'_> { + fn from(value: checkSignaturesCall) -> Self { + ( + value.msgHash, + value.quorumNumbers, + value.referenceBlockNumber, + value.params, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for checkSignaturesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + msgHash: tuple.0, + quorumNumbers: tuple.1, + referenceBlockNumber: tuple.2, + params: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + IBLSSignatureCheckerTypes::QuorumStakeTotals, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + <IBLSSignatureCheckerTypes::QuorumStakeTotals as alloy::sol_types::SolType>::RustType, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<checkSignaturesReturn> for UnderlyingRustTuple<'_> { + fn from(value: checkSignaturesReturn) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for checkSignaturesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for checkSignaturesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Uint<32>, + IBLSSignatureCheckerTypes::NonSignerStakesAndSignature, + ); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = checkSignaturesReturn; + type ReturnTuple<'a> = ( + IBLSSignatureCheckerTypes::QuorumStakeTotals, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "checkSignatures(bytes32,bytes,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))"; + const SELECTOR: [u8; 4] = [110u8, 251u8, 70u8, 54u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + <alloy::sol_types::sol_data::FixedBytes< + 32, + > as alloy_sol_types::SolType>::tokenize(&self.msgHash), + <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize( + &self.quorumNumbers, + ), + <alloy::sol_types::sol_data::Uint< + 32, + > as alloy_sol_types::SolType>::tokenize(&self.referenceBlockNumber), + <IBLSSignatureCheckerTypes::NonSignerStakesAndSignature as alloy_sol_types::SolType>::tokenize( + &self.params, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `createNewTask(uint256,uint32,bytes)` and selector `0x6b92787e`. + ```solidity + function createNewTask(uint256 numberToBeSquared, uint32 quorumThresholdPercentage, bytes memory quorumNumbers) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct createNewTaskCall { + #[allow(missing_docs)] + pub numberToBeSquared: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub quorumThresholdPercentage: u32, + #[allow(missing_docs)] + pub quorumNumbers: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`createNewTask(uint256,uint32,bytes)`](createNewTaskCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct createNewTaskReturn {} + #[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<32>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + u32, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<createNewTaskCall> for UnderlyingRustTuple<'_> { + fn from(value: createNewTaskCall) -> Self { + ( + value.numberToBeSquared, + value.quorumThresholdPercentage, + value.quorumNumbers, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for createNewTaskCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + numberToBeSquared: tuple.0, + quorumThresholdPercentage: tuple.1, + quorumNumbers: tuple.2, + } + } + } + } + { + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<createNewTaskReturn> for UnderlyingRustTuple<'_> { + fn from(value: createNewTaskReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for createNewTaskReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for createNewTaskCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = createNewTaskReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "createNewTask(uint256,uint32,bytes)"; + const SELECTOR: [u8; 4] = [107u8, 146u8, 120u8, 126u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize( + &self.numberToBeSquared, + ), + <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize( + &self.quorumThresholdPercentage, + ), + <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize( + &self.quorumNumbers, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `delegation()` and selector `0xdf5cf723`. + ```solidity + function delegation() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationCall {} + ///Container type for the return parameters of the [`delegation()`](delegationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct delegationReturn { + #[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; + { + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<delegationCall> for UnderlyingRustTuple<'_> { + fn from(value: delegationCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationCall { + 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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<delegationReturn> for UnderlyingRustTuple<'_> { + fn from(value: delegationReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for delegationCall { + type Parameters<'a> = (); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = delegationReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "delegation()"; + const SELECTOR: [u8; 4] = [223u8, 92u8, 247u8, 35u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> 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<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `generator()` and selector `0x7afa1eed`. + ```solidity + function generator() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct generatorCall {} + ///Container type for the return parameters of the [`generator()`](generatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct generatorReturn { + #[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; + { + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<generatorCall> for UnderlyingRustTuple<'_> { + fn from(value: generatorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for generatorCall { + 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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<generatorReturn> for UnderlyingRustTuple<'_> { + fn from(value: generatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for generatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for generatorCall { + type Parameters<'a> = (); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = generatorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "generator()"; + const SELECTOR: [u8; 4] = [122u8, 250u8, 30u8, 237u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> 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<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getBatchOperatorFromId(address,bytes32[])` and selector `0x4d2b57fe`. + ```solidity + function getBatchOperatorFromId(address registryCoordinator, bytes32[] memory operatorIds) external view returns (address[] memory operators); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getBatchOperatorFromIdCall { + #[allow(missing_docs)] + pub registryCoordinator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub operatorIds: alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>, + } + ///Container type for the return parameters of the [`getBatchOperatorFromId(address,bytes32[])`](getBatchOperatorFromIdCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getBatchOperatorFromIdReturn { + #[allow(missing_docs)] + pub operators: alloy::sol_types::private::Vec<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> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::FixedBytes<32>>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<getBatchOperatorFromIdCall> for UnderlyingRustTuple<'_> { + fn from(value: getBatchOperatorFromIdCall) -> Self { + (value.registryCoordinator, value.operatorIds) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for getBatchOperatorFromIdCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + registryCoordinator: tuple.0, + operatorIds: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<getBatchOperatorFromIdReturn> for UnderlyingRustTuple<'_> { + fn from(value: getBatchOperatorFromIdReturn) -> Self { + (value.operators,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for getBatchOperatorFromIdReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { operators: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getBatchOperatorFromIdCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::FixedBytes<32>>, + ); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = getBatchOperatorFromIdReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getBatchOperatorFromId(address,bytes32[])"; + const SELECTOR: [u8; 4] = [77u8, 43u8, 87u8, 254u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize( + &self.registryCoordinator, + ), + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::FixedBytes<32>, + > as alloy_sol_types::SolType>::tokenize(&self.operatorIds), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getBatchOperatorId(address,address[])` and selector `0x31b36bd9`. + ```solidity + function getBatchOperatorId(address registryCoordinator, address[] memory operators) external view returns (bytes32[] memory operatorIds); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getBatchOperatorIdCall { + #[allow(missing_docs)] + pub registryCoordinator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub operators: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>, + } + ///Container type for the return parameters of the [`getBatchOperatorId(address,address[])`](getBatchOperatorIdCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getBatchOperatorIdReturn { + #[allow(missing_docs)] + pub operatorIds: alloy::sol_types::private::Vec<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::Address, + alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Vec<alloy::sol_types::private::Address>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<getBatchOperatorIdCall> for UnderlyingRustTuple<'_> { + fn from(value: getBatchOperatorIdCall) -> Self { + (value.registryCoordinator, value.operators) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for getBatchOperatorIdCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + registryCoordinator: tuple.0, + operators: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::FixedBytes<32>>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = + (alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<getBatchOperatorIdReturn> for UnderlyingRustTuple<'_> { + fn from(value: getBatchOperatorIdReturn) -> Self { + (value.operatorIds,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for getBatchOperatorIdReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operatorIds: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getBatchOperatorIdCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>, + ); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = getBatchOperatorIdReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::FixedBytes<32>>,); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getBatchOperatorId(address,address[])"; + const SELECTOR: [u8; 4] = [49u8, 179u8, 107u8, 217u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize( + &self.registryCoordinator, + ), + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Address, + > as alloy_sol_types::SolType>::tokenize(&self.operators), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getCheckSignaturesIndices(address,uint32,bytes,bytes32[])` and selector `0x4f739f74`. + ```solidity + function getCheckSignaturesIndices(address registryCoordinator, uint32 referenceBlockNumber, bytes memory quorumNumbers, bytes32[] memory nonSignerOperatorIds) external view returns (OperatorStateRetriever.CheckSignaturesIndices memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCheckSignaturesIndicesCall { + #[allow(missing_docs)] + pub registryCoordinator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub referenceBlockNumber: u32, + #[allow(missing_docs)] + pub quorumNumbers: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] + pub nonSignerOperatorIds: + alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>, + } + ///Container type for the return parameters of the [`getCheckSignaturesIndices(address,uint32,bytes,bytes32[])`](getCheckSignaturesIndicesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getCheckSignaturesIndicesReturn { + #[allow(missing_docs)] + pub _0: + <OperatorStateRetriever::CheckSignaturesIndices as alloy::sol_types::SolType>::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::Address, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::FixedBytes<32>>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + u32, + alloy::sol_types::private::Bytes, + alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<getCheckSignaturesIndicesCall> for UnderlyingRustTuple<'_> { + fn from(value: getCheckSignaturesIndicesCall) -> Self { + ( + value.registryCoordinator, + value.referenceBlockNumber, + value.quorumNumbers, + value.nonSignerOperatorIds, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for getCheckSignaturesIndicesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + registryCoordinator: tuple.0, + referenceBlockNumber: tuple.1, + quorumNumbers: tuple.2, + nonSignerOperatorIds: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (OperatorStateRetriever::CheckSignaturesIndices,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + <OperatorStateRetriever::CheckSignaturesIndices as alloy::sol_types::SolType>::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<getCheckSignaturesIndicesReturn> for UnderlyingRustTuple<'_> { + fn from(value: getCheckSignaturesIndicesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for getCheckSignaturesIndicesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getCheckSignaturesIndicesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<32>, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::FixedBytes<32>>, + ); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = getCheckSignaturesIndicesReturn; + type ReturnTuple<'a> = (OperatorStateRetriever::CheckSignaturesIndices,); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "getCheckSignaturesIndices(address,uint32,bytes,bytes32[])"; + const SELECTOR: [u8; 4] = [79u8, 115u8, 159u8, 116u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize( + &self.registryCoordinator, + ), + <alloy::sol_types::sol_data::Uint< + 32, + > as alloy_sol_types::SolType>::tokenize(&self.referenceBlockNumber), + <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize( + &self.quorumNumbers, + ), + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::FixedBytes<32>, + > as alloy_sol_types::SolType>::tokenize(&self.nonSignerOperatorIds), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorState(address,bytes,uint32)` and selector `0x3563b0d1`. + ```solidity + function getOperatorState(address registryCoordinator, bytes memory quorumNumbers, uint32 blockNumber) external view returns (OperatorStateRetriever.Operator[][] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorState_0Call { + #[allow(missing_docs)] + pub registryCoordinator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub quorumNumbers: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] + pub blockNumber: u32, + } + ///Container type for the return parameters of the [`getOperatorState(address,bytes,uint32)`](getOperatorState_0Call) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorState_0Return { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec< + <OperatorStateRetriever::Operator as alloy::sol_types::SolType>::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::Address, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + u32, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<getOperatorState_0Call> for UnderlyingRustTuple<'_> { + fn from(value: getOperatorState_0Call) -> Self { + ( + value.registryCoordinator, + value.quorumNumbers, + value.blockNumber, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for getOperatorState_0Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + registryCoordinator: tuple.0, + quorumNumbers: tuple.1, + blockNumber: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array<OperatorStateRetriever::Operator>, + >, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec< + <OperatorStateRetriever::Operator as alloy::sol_types::SolType>::RustType, + >, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<getOperatorState_0Return> for UnderlyingRustTuple<'_> { + fn from(value: getOperatorState_0Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for getOperatorState_0Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorState_0Call { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Uint<32>, + ); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorState_0Return; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array<OperatorStateRetriever::Operator>, + >, + ); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorState(address,bytes,uint32)"; + const SELECTOR: [u8; 4] = [53u8, 99u8, 176u8, 209u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize( + &self.registryCoordinator, + ), + <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize( + &self.quorumNumbers, + ), + <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize( + &self.blockNumber, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getOperatorState(address,bytes32,uint32)` and selector `0xcefdc1d4`. + ```solidity + function getOperatorState(address registryCoordinator, bytes32 operatorId, uint32 blockNumber) external view returns (uint256, OperatorStateRetriever.Operator[][] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorState_1Call { + #[allow(missing_docs)] + pub registryCoordinator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub operatorId: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub blockNumber: u32, + } + ///Container type for the return parameters of the [`getOperatorState(address,bytes32,uint32)`](getOperatorState_1Call) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getOperatorState_1Return { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub _1: alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec< + <OperatorStateRetriever::Operator as alloy::sol_types::SolType>::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::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::FixedBytes<32>, + u32, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<getOperatorState_1Call> for UnderlyingRustTuple<'_> { + fn from(value: getOperatorState_1Call) -> Self { + ( + value.registryCoordinator, + value.operatorId, + value.blockNumber, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for getOperatorState_1Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + registryCoordinator: tuple.0, + operatorId: tuple.1, + blockNumber: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array<OperatorStateRetriever::Operator>, + >, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::Vec< + alloy::sol_types::private::Vec< + <OperatorStateRetriever::Operator as alloy::sol_types::SolType>::RustType, + >, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<getOperatorState_1Return> for UnderlyingRustTuple<'_> { + fn from(value: getOperatorState_1Return) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for getOperatorState_1Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + _1: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getOperatorState_1Call { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<32>, + ); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = getOperatorState_1Return; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::Array<OperatorStateRetriever::Operator>, + >, + ); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getOperatorState(address,bytes32,uint32)"; + const SELECTOR: [u8; 4] = [206u8, 253u8, 193u8, 212u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize( + &self.registryCoordinator, + ), + <alloy::sol_types::sol_data::FixedBytes< + 32, + > as alloy_sol_types::SolType>::tokenize(&self.operatorId), + <alloy::sol_types::sol_data::Uint< + 32, + > as alloy_sol_types::SolType>::tokenize(&self.blockNumber), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getQuorumBitmapsAtBlockNumber(address,bytes32[],uint32)` and selector `0x5c155662`. + ```solidity + function getQuorumBitmapsAtBlockNumber(address registryCoordinator, bytes32[] memory operatorIds, uint32 blockNumber) external view returns (uint256[] memory); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getQuorumBitmapsAtBlockNumberCall { + #[allow(missing_docs)] + pub registryCoordinator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub operatorIds: alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>, + #[allow(missing_docs)] + pub blockNumber: u32, + } + ///Container type for the return parameters of the [`getQuorumBitmapsAtBlockNumber(address,bytes32[],uint32)`](getQuorumBitmapsAtBlockNumberCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getQuorumBitmapsAtBlockNumberReturn { + #[allow(missing_docs)] + pub _0: + alloy::sol_types::private::Vec<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::Address, + alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::FixedBytes<32>>, + alloy::sol_types::sol_data::Uint<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>, + u32, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<getQuorumBitmapsAtBlockNumberCall> for UnderlyingRustTuple<'_> { + fn from(value: getQuorumBitmapsAtBlockNumberCall) -> Self { + ( + value.registryCoordinator, + value.operatorIds, + value.blockNumber, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for getQuorumBitmapsAtBlockNumberCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + registryCoordinator: tuple.0, + operatorIds: tuple.1, + blockNumber: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = + (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<getQuorumBitmapsAtBlockNumberReturn> for UnderlyingRustTuple<'_> { + fn from(value: getQuorumBitmapsAtBlockNumberReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for getQuorumBitmapsAtBlockNumberReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getQuorumBitmapsAtBlockNumberCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::FixedBytes<32>>, + alloy::sol_types::sol_data::Uint<32>, + ); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = getQuorumBitmapsAtBlockNumberReturn; + type ReturnTuple<'a> = + (alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = + "getQuorumBitmapsAtBlockNumber(address,bytes32[],uint32)"; + const SELECTOR: [u8; 4] = [92u8, 21u8, 86u8, 98u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize( + &self.registryCoordinator, + ), + <alloy::sol_types::sol_data::Array< + alloy::sol_types::sol_data::FixedBytes<32>, + > as alloy_sol_types::SolType>::tokenize(&self.operatorIds), + <alloy::sol_types::sol_data::Uint< + 32, + > as alloy_sol_types::SolType>::tokenize(&self.blockNumber), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `getTaskResponseWindowBlock()` and selector `0xf5c9899d`. + ```solidity + function getTaskResponseWindowBlock() external view returns (uint32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getTaskResponseWindowBlockCall {} + ///Container type for the return parameters of the [`getTaskResponseWindowBlock()`](getTaskResponseWindowBlockCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct getTaskResponseWindowBlockReturn { + #[allow(missing_docs)] + pub _0: u32, + } + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<getTaskResponseWindowBlockCall> for UnderlyingRustTuple<'_> { + fn from(value: getTaskResponseWindowBlockCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for getTaskResponseWindowBlockCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<getTaskResponseWindowBlockReturn> for UnderlyingRustTuple<'_> { + fn from(value: getTaskResponseWindowBlockReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for getTaskResponseWindowBlockReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getTaskResponseWindowBlockCall { + type Parameters<'a> = (); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = getTaskResponseWindowBlockReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getTaskResponseWindowBlock()"; + const SELECTOR: [u8; 4] = [245u8, 201u8, 137u8, 157u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> 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<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `initialize(address,address,address,address,address)` and selector `0x1459457a`. + ```solidity + function initialize(address initialOwner, address _aggregator, address _generator, address _allocationManager, address _slasher) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeCall { + #[allow(missing_docs)] + pub initialOwner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _aggregator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _generator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _allocationManager: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _slasher: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`initialize(address,address,address,address,address)`](initializeCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct initializeReturn {} + #[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::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + 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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> { + fn from(value: initializeCall) -> Self { + ( + value.initialOwner, + value._aggregator, + value._generator, + value._allocationManager, + value._slasher, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + initialOwner: tuple.0, + _aggregator: tuple.1, + _generator: tuple.2, + _allocationManager: tuple.3, + _slasher: tuple.4, + } + } + } + } + { + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> { + fn from(value: initializeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for initializeCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = initializeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "initialize(address,address,address,address,address)"; + const SELECTOR: [u8; 4] = [20u8, 89u8, 69u8, 122u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize( + &self.initialOwner, + ), + <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize( + &self._aggregator, + ), + <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize( + &self._generator, + ), + <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize( + &self._allocationManager, + ), + <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize( + &self._slasher, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `instantSlasher()` and selector `0x9b290e98`. + ```solidity + function instantSlasher() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct instantSlasherCall {} + ///Container type for the return parameters of the [`instantSlasher()`](instantSlasherCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct instantSlasherReturn { + #[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; + { + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<instantSlasherCall> for UnderlyingRustTuple<'_> { + fn from(value: instantSlasherCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for instantSlasherCall { + 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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<instantSlasherReturn> for UnderlyingRustTuple<'_> { + fn from(value: instantSlasherReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for instantSlasherReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for instantSlasherCall { + type Parameters<'a> = (); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = instantSlasherReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "instantSlasher()"; + const SELECTOR: [u8; 4] = [155u8, 41u8, 14u8, 152u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> 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<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `latestTaskNum()` and selector `0x8b00ce7c`. + ```solidity + function latestTaskNum() external view returns (uint32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct latestTaskNumCall {} + ///Container type for the return parameters of the [`latestTaskNum()`](latestTaskNumCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct latestTaskNumReturn { + #[allow(missing_docs)] + pub _0: u32, + } + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<latestTaskNumCall> for UnderlyingRustTuple<'_> { + fn from(value: latestTaskNumCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for latestTaskNumCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<latestTaskNumReturn> for UnderlyingRustTuple<'_> { + fn from(value: latestTaskNumReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for latestTaskNumReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for latestTaskNumCall { + type Parameters<'a> = (); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = latestTaskNumReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "latestTaskNum()"; + const SELECTOR: [u8; 4] = [139u8, 0u8, 206u8, 124u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> 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<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. + ```solidity + function owner() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerReturn { + #[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; + { + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall { + 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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> 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<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `pause(uint256)` and selector `0x136439dd`. + ```solidity + function pause(uint256 newPausedStatus) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseCall { + #[allow(missing_docs)] + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`pause(uint256)`](pauseCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseReturn {} + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<pauseCall> for UnderlyingRustTuple<'_> { + fn from(value: pauseCall) -> Self { + (value.newPausedStatus,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newPausedStatus: 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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<pauseReturn> for UnderlyingRustTuple<'_> { + fn from(value: pauseReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pauseCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = pauseReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pause(uint256)"; + const SELECTOR: [u8; 4] = [19u8, 100u8, 57u8, 221u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `pauseAll()` and selector `0x595c6a67`. + ```solidity + function pauseAll() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseAllCall {} + ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauseAllReturn {} + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<pauseAllCall> for UnderlyingRustTuple<'_> { + fn from(value: pauseAllCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseAllCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<pauseAllReturn> for UnderlyingRustTuple<'_> { + fn from(value: pauseAllReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseAllReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pauseAllCall { + type Parameters<'a> = (); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = pauseAllReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pauseAll()"; + const SELECTOR: [u8; 4] = [89u8, 92u8, 106u8, 103u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> 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<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `paused(uint8)` and selector `0x5ac86ab7`. + ```solidity + function paused(uint8 index) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct paused_0Call { + #[allow(missing_docs)] + pub index: u8, + } + ///Container type for the return parameters of the [`paused(uint8)`](paused_0Call) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct paused_0Return { + #[allow(missing_docs)] + pub _0: bool, + } + #[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<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<paused_0Call> for UnderlyingRustTuple<'_> { + fn from(value: paused_0Call) -> Self { + (value.index,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for paused_0Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { index: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<paused_0Return> for UnderlyingRustTuple<'_> { + fn from(value: paused_0Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for paused_0Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for paused_0Call { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = paused_0Return; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "paused(uint8)"; + const SELECTOR: [u8; 4] = [90u8, 200u8, 106u8, 183u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize( + &self.index, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `paused()` and selector `0x5c975abb`. + ```solidity + function paused() external view returns (uint256); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct paused_1Call {} + ///Container type for the return parameters of the [`paused()`](paused_1Call) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct paused_1Return { + #[allow(missing_docs)] + pub _0: 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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<paused_1Call> for UnderlyingRustTuple<'_> { + fn from(value: paused_1Call) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for paused_1Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<paused_1Return> for UnderlyingRustTuple<'_> { + fn from(value: paused_1Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for paused_1Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for paused_1Call { + type Parameters<'a> = (); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = paused_1Return; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "paused()"; + const SELECTOR: [u8; 4] = [92u8, 151u8, 90u8, 187u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> 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<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `pauserRegistry()` and selector `0x886f1195`. + ```solidity + function pauserRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauserRegistryCall {} + ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct pauserRegistryReturn { + #[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; + { + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<pauserRegistryCall> for UnderlyingRustTuple<'_> { + fn from(value: pauserRegistryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauserRegistryCall { + 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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<pauserRegistryReturn> for UnderlyingRustTuple<'_> { + fn from(value: pauserRegistryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauserRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for pauserRegistryCall { + type Parameters<'a> = (); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = pauserRegistryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "pauserRegistry()"; + const SELECTOR: [u8; 4] = [136u8, 111u8, 17u8, 149u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> 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<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `raiseAndResolveChallenge((uint256,uint32,bytes,uint32),(uint32,uint256),(uint32,bytes32),(uint256,uint256)[])` and selector `0x6b532e9e`. + ```solidity + function raiseAndResolveChallenge(IIncredibleSquaringTaskManager.Task memory task, IIncredibleSquaringTaskManager.TaskResponse memory taskResponse, IIncredibleSquaringTaskManager.TaskResponseMetadata memory taskResponseMetadata, BN254.G1Point[] memory pubkeysOfNonSigningOperators) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct raiseAndResolveChallengeCall { + #[allow(missing_docs)] + pub task: <IIncredibleSquaringTaskManager::Task as alloy::sol_types::SolType>::RustType, + #[allow(missing_docs)] + pub taskResponse: <IIncredibleSquaringTaskManager::TaskResponse as alloy::sol_types::SolType>::RustType, + #[allow(missing_docs)] + pub taskResponseMetadata: <IIncredibleSquaringTaskManager::TaskResponseMetadata as alloy::sol_types::SolType>::RustType, + #[allow(missing_docs)] + pub pubkeysOfNonSigningOperators: alloy::sol_types::private::Vec< + <BN254::G1Point as alloy::sol_types::SolType>::RustType, + >, + } + ///Container type for the return parameters of the [`raiseAndResolveChallenge((uint256,uint32,bytes,uint32),(uint32,uint256),(uint32,bytes32),(uint256,uint256)[])`](raiseAndResolveChallengeCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct raiseAndResolveChallengeReturn {} + #[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> = ( + IIncredibleSquaringTaskManager::Task, + IIncredibleSquaringTaskManager::TaskResponse, + IIncredibleSquaringTaskManager::TaskResponseMetadata, + alloy::sol_types::sol_data::Array<BN254::G1Point>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + <IIncredibleSquaringTaskManager::Task as alloy::sol_types::SolType>::RustType, + <IIncredibleSquaringTaskManager::TaskResponse as alloy::sol_types::SolType>::RustType, + <IIncredibleSquaringTaskManager::TaskResponseMetadata as alloy::sol_types::SolType>::RustType, + alloy::sol_types::private::Vec< + <BN254::G1Point as alloy::sol_types::SolType>::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<raiseAndResolveChallengeCall> for UnderlyingRustTuple<'_> { + fn from(value: raiseAndResolveChallengeCall) -> Self { + ( + value.task, + value.taskResponse, + value.taskResponseMetadata, + value.pubkeysOfNonSigningOperators, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for raiseAndResolveChallengeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + task: tuple.0, + taskResponse: tuple.1, + taskResponseMetadata: tuple.2, + pubkeysOfNonSigningOperators: tuple.3, + } + } + } + } + { + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<raiseAndResolveChallengeReturn> for UnderlyingRustTuple<'_> { + fn from(value: raiseAndResolveChallengeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for raiseAndResolveChallengeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for raiseAndResolveChallengeCall { + type Parameters<'a> = ( + IIncredibleSquaringTaskManager::Task, + IIncredibleSquaringTaskManager::TaskResponse, + IIncredibleSquaringTaskManager::TaskResponseMetadata, + alloy::sol_types::sol_data::Array<BN254::G1Point>, + ); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = raiseAndResolveChallengeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "raiseAndResolveChallenge((uint256,uint32,bytes,uint32),(uint32,uint256),(uint32,bytes32),(uint256,uint256)[])"; + const SELECTOR: [u8; 4] = [107u8, 83u8, 46u8, 158u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + <IIncredibleSquaringTaskManager::Task as alloy_sol_types::SolType>::tokenize( + &self.task, + ), + <IIncredibleSquaringTaskManager::TaskResponse as alloy_sol_types::SolType>::tokenize( + &self.taskResponse, + ), + <IIncredibleSquaringTaskManager::TaskResponseMetadata as alloy_sol_types::SolType>::tokenize( + &self.taskResponseMetadata, + ), + <alloy::sol_types::sol_data::Array< + BN254::G1Point, + > as alloy_sol_types::SolType>::tokenize( + &self.pubkeysOfNonSigningOperators, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `registryCoordinator()` and selector `0x6d14a987`. + ```solidity + function registryCoordinator() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorCall {} + ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct registryCoordinatorReturn { + #[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; + { + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<registryCoordinatorCall> for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for registryCoordinatorCall { + 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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<registryCoordinatorReturn> for UnderlyingRustTuple<'_> { + fn from(value: registryCoordinatorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for registryCoordinatorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for registryCoordinatorCall { + type Parameters<'a> = (); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = registryCoordinatorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "registryCoordinator()"; + const SELECTOR: [u8; 4] = [109u8, 20u8, 169u8, 135u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> 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<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `renounceOwnership()` and selector `0x715018a6`. + ```solidity + function renounceOwnership() external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct renounceOwnershipCall {} + ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct renounceOwnershipReturn {} + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<renounceOwnershipCall> for UnderlyingRustTuple<'_> { + fn from(value: renounceOwnershipCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<renounceOwnershipReturn> for UnderlyingRustTuple<'_> { + fn from(value: renounceOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for renounceOwnershipCall { + type Parameters<'a> = (); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = renounceOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "renounceOwnership()"; + const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> 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<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `respondToTask((uint256,uint32,bytes,uint32),(uint32,uint256),(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))` and selector `0x5baec9a0`. + ```solidity + function respondToTask(IIncredibleSquaringTaskManager.Task memory task, IIncredibleSquaringTaskManager.TaskResponse memory taskResponse, IBLSSignatureCheckerTypes.NonSignerStakesAndSignature memory nonSignerStakesAndSignature) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct respondToTaskCall { + #[allow(missing_docs)] + pub task: <IIncredibleSquaringTaskManager::Task as alloy::sol_types::SolType>::RustType, + #[allow(missing_docs)] + pub taskResponse: <IIncredibleSquaringTaskManager::TaskResponse as alloy::sol_types::SolType>::RustType, + #[allow(missing_docs)] + pub nonSignerStakesAndSignature: <IBLSSignatureCheckerTypes::NonSignerStakesAndSignature as alloy::sol_types::SolType>::RustType, + } + ///Container type for the return parameters of the [`respondToTask((uint256,uint32,bytes,uint32),(uint32,uint256),(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))`](respondToTaskCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct respondToTaskReturn {} + #[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> = ( + IIncredibleSquaringTaskManager::Task, + IIncredibleSquaringTaskManager::TaskResponse, + IBLSSignatureCheckerTypes::NonSignerStakesAndSignature, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + <IIncredibleSquaringTaskManager::Task as alloy::sol_types::SolType>::RustType, + <IIncredibleSquaringTaskManager::TaskResponse as alloy::sol_types::SolType>::RustType, + <IBLSSignatureCheckerTypes::NonSignerStakesAndSignature as alloy::sol_types::SolType>::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<respondToTaskCall> for UnderlyingRustTuple<'_> { + fn from(value: respondToTaskCall) -> Self { + ( + value.task, + value.taskResponse, + value.nonSignerStakesAndSignature, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for respondToTaskCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + task: tuple.0, + taskResponse: tuple.1, + nonSignerStakesAndSignature: tuple.2, + } + } + } + } + { + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<respondToTaskReturn> for UnderlyingRustTuple<'_> { + fn from(value: respondToTaskReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for respondToTaskReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for respondToTaskCall { + type Parameters<'a> = ( + IIncredibleSquaringTaskManager::Task, + IIncredibleSquaringTaskManager::TaskResponse, + IBLSSignatureCheckerTypes::NonSignerStakesAndSignature, + ); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = respondToTaskReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "respondToTask((uint256,uint32,bytes,uint32),(uint32,uint256),(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))"; + const SELECTOR: [u8; 4] = [91u8, 174u8, 201u8, 160u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + <IIncredibleSquaringTaskManager::Task as alloy_sol_types::SolType>::tokenize( + &self.task, + ), + <IIncredibleSquaringTaskManager::TaskResponse as alloy_sol_types::SolType>::tokenize( + &self.taskResponse, + ), + <IBLSSignatureCheckerTypes::NonSignerStakesAndSignature as alloy_sol_types::SolType>::tokenize( + &self.nonSignerStakesAndSignature, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `serviceManager()` and selector `0x3998fdd3`. + ```solidity + function serviceManager() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct serviceManagerCall {} + ///Container type for the return parameters of the [`serviceManager()`](serviceManagerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct serviceManagerReturn { + #[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; + { + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<serviceManagerCall> for UnderlyingRustTuple<'_> { + fn from(value: serviceManagerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for serviceManagerCall { + 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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<serviceManagerReturn> for UnderlyingRustTuple<'_> { + fn from(value: serviceManagerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for serviceManagerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for serviceManagerCall { + type Parameters<'a> = (); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = serviceManagerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "serviceManager()"; + const SELECTOR: [u8; 4] = [57u8, 152u8, 253u8, 211u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> 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<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `setStaleStakesForbidden(bool)` and selector `0x416c7e5e`. + ```solidity + function setStaleStakesForbidden(bool value) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setStaleStakesForbiddenCall { + #[allow(missing_docs)] + pub value: bool, + } + ///Container type for the return parameters of the [`setStaleStakesForbidden(bool)`](setStaleStakesForbiddenCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setStaleStakesForbiddenReturn {} + #[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::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<setStaleStakesForbiddenCall> for UnderlyingRustTuple<'_> { + fn from(value: setStaleStakesForbiddenCall) -> Self { + (value.value,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for setStaleStakesForbiddenCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { value: 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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<setStaleStakesForbiddenReturn> for UnderlyingRustTuple<'_> { + fn from(value: setStaleStakesForbiddenReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for setStaleStakesForbiddenReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setStaleStakesForbiddenCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Bool,); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = setStaleStakesForbiddenReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setStaleStakesForbidden(bool)"; + const SELECTOR: [u8; 4] = [65u8, 108u8, 126u8, 94u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize( + &self.value, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `stakeRegistry()` and selector `0x68304835`. + ```solidity + function stakeRegistry() external view returns (address); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakeRegistryCall {} + ///Container type for the return parameters of the [`stakeRegistry()`](stakeRegistryCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct stakeRegistryReturn { + #[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; + { + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<stakeRegistryCall> for UnderlyingRustTuple<'_> { + fn from(value: stakeRegistryCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for stakeRegistryCall { + 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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<stakeRegistryReturn> for UnderlyingRustTuple<'_> { + fn from(value: stakeRegistryReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for stakeRegistryReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for stakeRegistryCall { + type Parameters<'a> = (); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = stakeRegistryReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "stakeRegistry()"; + const SELECTOR: [u8; 4] = [104u8, 48u8, 72u8, 53u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> 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<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `staleStakesForbidden()` and selector `0xb98d0908`. + ```solidity + function staleStakesForbidden() external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct staleStakesForbiddenCall {} + ///Container type for the return parameters of the [`staleStakesForbidden()`](staleStakesForbiddenCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct staleStakesForbiddenReturn { + #[allow(missing_docs)] + pub _0: bool, + } + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<staleStakesForbiddenCall> for UnderlyingRustTuple<'_> { + fn from(value: staleStakesForbiddenCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for staleStakesForbiddenCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<staleStakesForbiddenReturn> for UnderlyingRustTuple<'_> { + fn from(value: staleStakesForbiddenReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for staleStakesForbiddenReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for staleStakesForbiddenCall { + type Parameters<'a> = (); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = staleStakesForbiddenReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "staleStakesForbidden()"; + const SELECTOR: [u8; 4] = [185u8, 141u8, 9u8, 8u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> 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<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `taskNumber()` and selector `0x72d18e8d`. + ```solidity + function taskNumber() external view returns (uint32); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct taskNumberCall {} + ///Container type for the return parameters of the [`taskNumber()`](taskNumberCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct taskNumberReturn { + #[allow(missing_docs)] + pub _0: u32, + } + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<taskNumberCall> for UnderlyingRustTuple<'_> { + fn from(value: taskNumberCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for taskNumberCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<taskNumberReturn> for UnderlyingRustTuple<'_> { + fn from(value: taskNumberReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for taskNumberReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for taskNumberCall { + type Parameters<'a> = (); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = taskNumberReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "taskNumber()"; + const SELECTOR: [u8; 4] = [114u8, 209u8, 142u8, 141u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> 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<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `taskSuccesfullyChallenged(uint32)` and selector `0x5decc3f5`. + ```solidity + function taskSuccesfullyChallenged(uint32) external view returns (bool); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct taskSuccesfullyChallengedCall { + #[allow(missing_docs)] + pub _0: u32, + } + ///Container type for the return parameters of the [`taskSuccesfullyChallenged(uint32)`](taskSuccesfullyChallengedCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct taskSuccesfullyChallengedReturn { + #[allow(missing_docs)] + pub _0: bool, + } + #[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<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u32,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<taskSuccesfullyChallengedCall> for UnderlyingRustTuple<'_> { + fn from(value: taskSuccesfullyChallengedCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for taskSuccesfullyChallengedCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<taskSuccesfullyChallengedReturn> for UnderlyingRustTuple<'_> { + fn from(value: taskSuccesfullyChallengedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for taskSuccesfullyChallengedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for taskSuccesfullyChallengedCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = taskSuccesfullyChallengedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "taskSuccesfullyChallenged(uint32)"; + const SELECTOR: [u8; 4] = [93u8, 236u8, 195u8, 245u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. + ```solidity + function transferOwnership(address newOwner) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct transferOwnershipCall { + #[allow(missing_docs)] + pub newOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[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::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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<transferOwnershipCall> for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipCall) -> Self { + (value.newOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for transferOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newOwner: 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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<transferOwnershipReturn> for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for transferOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferOwnershipCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = transferOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferOwnership(address)"; + const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize( + &self.newOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `trySignatureAndApkVerification(bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint256,uint256))` and selector `0x171f1d5b`. + ```solidity + function trySignatureAndApkVerification(bytes32 msgHash, BN254.G1Point memory apk, BN254.G2Point memory apkG2, BN254.G1Point memory sigma) external view returns (bool pairingSuccessful, bool siganatureIsValid); + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct trySignatureAndApkVerificationCall { + #[allow(missing_docs)] + pub msgHash: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub apk: <BN254::G1Point as alloy::sol_types::SolType>::RustType, + #[allow(missing_docs)] + pub apkG2: <BN254::G2Point as alloy::sol_types::SolType>::RustType, + #[allow(missing_docs)] + pub sigma: <BN254::G1Point as alloy::sol_types::SolType>::RustType, + } + ///Container type for the return parameters of the [`trySignatureAndApkVerification(bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint256,uint256))`](trySignatureAndApkVerificationCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct trySignatureAndApkVerificationReturn { + #[allow(missing_docs)] + pub pairingSuccessful: bool, + #[allow(missing_docs)] + pub siganatureIsValid: bool, + } + #[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>, + BN254::G1Point, + BN254::G2Point, + BN254::G1Point, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<32>, + <BN254::G1Point as alloy::sol_types::SolType>::RustType, + <BN254::G2Point as alloy::sol_types::SolType>::RustType, + <BN254::G1Point as alloy::sol_types::SolType>::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<trySignatureAndApkVerificationCall> for UnderlyingRustTuple<'_> { + fn from(value: trySignatureAndApkVerificationCall) -> Self { + (value.msgHash, value.apk, value.apkG2, value.sigma) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for trySignatureAndApkVerificationCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + msgHash: tuple.0, + apk: tuple.1, + apkG2: tuple.2, + sigma: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bool, + alloy::sol_types::sol_data::Bool, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool, bool); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<trySignatureAndApkVerificationReturn> for UnderlyingRustTuple<'_> { + fn from(value: trySignatureAndApkVerificationReturn) -> Self { + (value.pairingSuccessful, value.siganatureIsValid) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for trySignatureAndApkVerificationReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + pairingSuccessful: tuple.0, + siganatureIsValid: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for trySignatureAndApkVerificationCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::FixedBytes<32>, + BN254::G1Point, + BN254::G2Point, + BN254::G1Point, + ); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = trySignatureAndApkVerificationReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Bool, + alloy::sol_types::sol_data::Bool, + ); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "trySignatureAndApkVerification(bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint256,uint256))"; + const SELECTOR: [u8; 4] = [23u8, 31u8, 29u8, 91u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + <alloy::sol_types::sol_data::FixedBytes< + 32, + > as alloy_sol_types::SolType>::tokenize(&self.msgHash), + <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.apk), + <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.apkG2), + <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + /**Function with signature `unpause(uint256)` and selector `0xfabc1cbc`. + ```solidity + function unpause(uint256 newPausedStatus) external; + ```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct unpauseCall { + #[allow(missing_docs)] + pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`unpause(uint256)`](unpauseCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct unpauseReturn {} + #[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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<unpauseCall> for UnderlyingRustTuple<'_> { + fn from(value: unpauseCall) -> Self { + (value.newPausedStatus,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + newPausedStatus: 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<UnderlyingRustTuple>) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<unpauseReturn> for UnderlyingRustTuple<'_> { + fn from(value: unpauseReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for unpauseCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>; + type Return = unpauseReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "unpause(uint256)"; + const SELECTOR: [u8; 4] = [250u8, 188u8, 28u8, 188u8]; + #[inline] + fn new<'a>( + tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize( + &self.newPausedStatus, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<Self::Return> { + <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence( + data, validate, + ) + .map(Into::into) + } + } + }; + ///Container for all the [`IncredibleSquaringTaskManager`](self) function calls. + pub enum IncredibleSquaringTaskManagerCalls { + #[allow(missing_docs)] + TASK_CHALLENGE_WINDOW_BLOCK(TASK_CHALLENGE_WINDOW_BLOCKCall), + #[allow(missing_docs)] + TASK_RESPONSE_WINDOW_BLOCK(TASK_RESPONSE_WINDOW_BLOCKCall), + #[allow(missing_docs)] + WADS_TO_SLASH(WADS_TO_SLASHCall), + #[allow(missing_docs)] + aggregator(aggregatorCall), + #[allow(missing_docs)] + allTaskHashes(allTaskHashesCall), + #[allow(missing_docs)] + allTaskResponses(allTaskResponsesCall), + #[allow(missing_docs)] + allocationManager(allocationManagerCall), + #[allow(missing_docs)] + blsApkRegistry(blsApkRegistryCall), + #[allow(missing_docs)] + checkSignatures(checkSignaturesCall), + #[allow(missing_docs)] + createNewTask(createNewTaskCall), + #[allow(missing_docs)] + delegation(delegationCall), + #[allow(missing_docs)] + generator(generatorCall), + #[allow(missing_docs)] + getBatchOperatorFromId(getBatchOperatorFromIdCall), + #[allow(missing_docs)] + getBatchOperatorId(getBatchOperatorIdCall), + #[allow(missing_docs)] + getCheckSignaturesIndices(getCheckSignaturesIndicesCall), + #[allow(missing_docs)] + getOperatorState_0(getOperatorState_0Call), + #[allow(missing_docs)] + getOperatorState_1(getOperatorState_1Call), + #[allow(missing_docs)] + getQuorumBitmapsAtBlockNumber(getQuorumBitmapsAtBlockNumberCall), + #[allow(missing_docs)] + getTaskResponseWindowBlock(getTaskResponseWindowBlockCall), + #[allow(missing_docs)] + initialize(initializeCall), + #[allow(missing_docs)] + instantSlasher(instantSlasherCall), + #[allow(missing_docs)] + latestTaskNum(latestTaskNumCall), + #[allow(missing_docs)] + owner(ownerCall), + #[allow(missing_docs)] + pause(pauseCall), + #[allow(missing_docs)] + pauseAll(pauseAllCall), + #[allow(missing_docs)] + paused_0(paused_0Call), + #[allow(missing_docs)] + paused_1(paused_1Call), + #[allow(missing_docs)] + pauserRegistry(pauserRegistryCall), + #[allow(missing_docs)] + raiseAndResolveChallenge(raiseAndResolveChallengeCall), + #[allow(missing_docs)] + registryCoordinator(registryCoordinatorCall), + #[allow(missing_docs)] + renounceOwnership(renounceOwnershipCall), + #[allow(missing_docs)] + respondToTask(respondToTaskCall), + #[allow(missing_docs)] + serviceManager(serviceManagerCall), + #[allow(missing_docs)] + setStaleStakesForbidden(setStaleStakesForbiddenCall), + #[allow(missing_docs)] + stakeRegistry(stakeRegistryCall), + #[allow(missing_docs)] + staleStakesForbidden(staleStakesForbiddenCall), + #[allow(missing_docs)] + taskNumber(taskNumberCall), + #[allow(missing_docs)] + taskSuccesfullyChallenged(taskSuccesfullyChallengedCall), + #[allow(missing_docs)] + transferOwnership(transferOwnershipCall), + #[allow(missing_docs)] + trySignatureAndApkVerification(trySignatureAndApkVerificationCall), + #[allow(missing_docs)] + unpause(unpauseCall), + } + #[automatically_derived] + impl IncredibleSquaringTaskManagerCalls { + /// 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]] = &[ + [19u8, 100u8, 57u8, 221u8], + [20u8, 89u8, 69u8, 122u8], + [23u8, 31u8, 29u8, 91u8], + [26u8, 212u8, 49u8, 137u8], + [36u8, 90u8, 123u8, 252u8], + [44u8, 178u8, 35u8, 213u8], + [45u8, 137u8, 246u8, 252u8], + [49u8, 179u8, 107u8, 217u8], + [53u8, 99u8, 176u8, 209u8], + [57u8, 152u8, 253u8, 211u8], + [65u8, 108u8, 126u8, 94u8], + [77u8, 43u8, 87u8, 254u8], + [79u8, 115u8, 159u8, 116u8], + [89u8, 92u8, 106u8, 103u8], + [90u8, 45u8, 127u8, 2u8], + [90u8, 200u8, 106u8, 183u8], + [91u8, 174u8, 201u8, 160u8], + [92u8, 21u8, 86u8, 98u8], + [92u8, 151u8, 90u8, 187u8], + [93u8, 236u8, 195u8, 245u8], + [93u8, 244u8, 89u8, 70u8], + [104u8, 48u8, 72u8, 53u8], + [107u8, 83u8, 46u8, 158u8], + [107u8, 146u8, 120u8, 126u8], + [109u8, 20u8, 169u8, 135u8], + [110u8, 251u8, 70u8, 54u8], + [113u8, 80u8, 24u8, 166u8], + [114u8, 209u8, 142u8, 141u8], + [122u8, 250u8, 30u8, 237u8], + [136u8, 111u8, 17u8, 149u8], + [139u8, 0u8, 206u8, 124u8], + [141u8, 165u8, 203u8, 91u8], + [155u8, 41u8, 14u8, 152u8], + [185u8, 141u8, 9u8, 8u8], + [202u8, 138u8, 167u8, 199u8], + [206u8, 253u8, 193u8, 212u8], + [223u8, 92u8, 247u8, 35u8], + [242u8, 253u8, 227u8, 139u8], + [245u8, 201u8, 137u8, 157u8], + [246u8, 60u8, 91u8, 171u8], + [250u8, 188u8, 28u8, 188u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IncredibleSquaringTaskManagerCalls { + const NAME: &'static str = "IncredibleSquaringTaskManagerCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 41usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::TASK_CHALLENGE_WINDOW_BLOCK(_) => { + <TASK_CHALLENGE_WINDOW_BLOCKCall as alloy_sol_types::SolCall>::SELECTOR + } + Self::TASK_RESPONSE_WINDOW_BLOCK(_) => { + <TASK_RESPONSE_WINDOW_BLOCKCall as alloy_sol_types::SolCall>::SELECTOR + } + Self::WADS_TO_SLASH(_) => <WADS_TO_SLASHCall as alloy_sol_types::SolCall>::SELECTOR, + Self::aggregator(_) => <aggregatorCall as alloy_sol_types::SolCall>::SELECTOR, + Self::allTaskHashes(_) => <allTaskHashesCall as alloy_sol_types::SolCall>::SELECTOR, + Self::allTaskResponses(_) => { + <allTaskResponsesCall as alloy_sol_types::SolCall>::SELECTOR + } + Self::allocationManager(_) => { + <allocationManagerCall as alloy_sol_types::SolCall>::SELECTOR + } + Self::blsApkRegistry(_) => { + <blsApkRegistryCall as alloy_sol_types::SolCall>::SELECTOR + } + Self::checkSignatures(_) => { + <checkSignaturesCall as alloy_sol_types::SolCall>::SELECTOR + } + Self::createNewTask(_) => <createNewTaskCall as alloy_sol_types::SolCall>::SELECTOR, + Self::delegation(_) => <delegationCall as alloy_sol_types::SolCall>::SELECTOR, + Self::generator(_) => <generatorCall as alloy_sol_types::SolCall>::SELECTOR, + Self::getBatchOperatorFromId(_) => { + <getBatchOperatorFromIdCall as alloy_sol_types::SolCall>::SELECTOR + } + Self::getBatchOperatorId(_) => { + <getBatchOperatorIdCall as alloy_sol_types::SolCall>::SELECTOR + } + Self::getCheckSignaturesIndices(_) => { + <getCheckSignaturesIndicesCall as alloy_sol_types::SolCall>::SELECTOR + } + Self::getOperatorState_0(_) => { + <getOperatorState_0Call as alloy_sol_types::SolCall>::SELECTOR + } + Self::getOperatorState_1(_) => { + <getOperatorState_1Call as alloy_sol_types::SolCall>::SELECTOR + } + Self::getQuorumBitmapsAtBlockNumber(_) => { + <getQuorumBitmapsAtBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR + } + Self::getTaskResponseWindowBlock(_) => { + <getTaskResponseWindowBlockCall as alloy_sol_types::SolCall>::SELECTOR + } + Self::initialize(_) => <initializeCall as alloy_sol_types::SolCall>::SELECTOR, + Self::instantSlasher(_) => { + <instantSlasherCall as alloy_sol_types::SolCall>::SELECTOR + } + Self::latestTaskNum(_) => <latestTaskNumCall as alloy_sol_types::SolCall>::SELECTOR, + Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR, + Self::pause(_) => <pauseCall as alloy_sol_types::SolCall>::SELECTOR, + Self::pauseAll(_) => <pauseAllCall as alloy_sol_types::SolCall>::SELECTOR, + Self::paused_0(_) => <paused_0Call as alloy_sol_types::SolCall>::SELECTOR, + Self::paused_1(_) => <paused_1Call as alloy_sol_types::SolCall>::SELECTOR, + Self::pauserRegistry(_) => { + <pauserRegistryCall as alloy_sol_types::SolCall>::SELECTOR + } + Self::raiseAndResolveChallenge(_) => { + <raiseAndResolveChallengeCall as alloy_sol_types::SolCall>::SELECTOR + } + Self::registryCoordinator(_) => { + <registryCoordinatorCall as alloy_sol_types::SolCall>::SELECTOR + } + Self::renounceOwnership(_) => { + <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR + } + Self::respondToTask(_) => <respondToTaskCall as alloy_sol_types::SolCall>::SELECTOR, + Self::serviceManager(_) => { + <serviceManagerCall as alloy_sol_types::SolCall>::SELECTOR + } + Self::setStaleStakesForbidden(_) => { + <setStaleStakesForbiddenCall as alloy_sol_types::SolCall>::SELECTOR + } + Self::stakeRegistry(_) => <stakeRegistryCall as alloy_sol_types::SolCall>::SELECTOR, + Self::staleStakesForbidden(_) => { + <staleStakesForbiddenCall as alloy_sol_types::SolCall>::SELECTOR + } + Self::taskNumber(_) => <taskNumberCall as alloy_sol_types::SolCall>::SELECTOR, + Self::taskSuccesfullyChallenged(_) => { + <taskSuccesfullyChallengedCall as alloy_sol_types::SolCall>::SELECTOR + } + Self::transferOwnership(_) => { + <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR + } + Self::trySignatureAndApkVerification(_) => { + <trySignatureAndApkVerificationCall as alloy_sol_types::SolCall>::SELECTOR + } + Self::unpause(_) => <unpauseCall as alloy_sol_types::SolCall>::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<Self> { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result< + IncredibleSquaringTaskManagerCalls, + >] = &[ + { + fn pause( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <pauseCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate) + .map(IncredibleSquaringTaskManagerCalls::pause) + } + pause + }, + { + fn initialize( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate) + .map(IncredibleSquaringTaskManagerCalls::initialize) + } + initialize + }, + { + fn trySignatureAndApkVerification( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <trySignatureAndApkVerificationCall as alloy_sol_types::SolCall>::abi_decode_raw( + data, + validate, + ) + .map( + IncredibleSquaringTaskManagerCalls::trySignatureAndApkVerification, + ) + } + trySignatureAndApkVerification + }, + { + fn TASK_RESPONSE_WINDOW_BLOCK( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <TASK_RESPONSE_WINDOW_BLOCKCall as alloy_sol_types::SolCall>::abi_decode_raw( + data, + validate, + ) + .map( + IncredibleSquaringTaskManagerCalls::TASK_RESPONSE_WINDOW_BLOCK, + ) + } + TASK_RESPONSE_WINDOW_BLOCK + }, + { + fn aggregator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <aggregatorCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate) + .map(IncredibleSquaringTaskManagerCalls::aggregator) + } + aggregator + }, + { + fn allTaskResponses( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <allTaskResponsesCall as alloy_sol_types::SolCall>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerCalls::allTaskResponses) + } + allTaskResponses + }, + { + fn allTaskHashes( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <allTaskHashesCall as alloy_sol_types::SolCall>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerCalls::allTaskHashes) + } + allTaskHashes + }, + { + fn getBatchOperatorId( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <getBatchOperatorIdCall as alloy_sol_types::SolCall>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerCalls::getBatchOperatorId) + } + getBatchOperatorId + }, + { + fn getOperatorState_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <getOperatorState_0Call as alloy_sol_types::SolCall>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerCalls::getOperatorState_0) + } + getOperatorState_0 + }, + { + fn serviceManager( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <serviceManagerCall as alloy_sol_types::SolCall>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerCalls::serviceManager) + } + serviceManager + }, + { + fn setStaleStakesForbidden( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <setStaleStakesForbiddenCall as alloy_sol_types::SolCall>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerCalls::setStaleStakesForbidden) + } + setStaleStakesForbidden + }, + { + fn getBatchOperatorFromId( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <getBatchOperatorFromIdCall as alloy_sol_types::SolCall>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerCalls::getBatchOperatorFromId) + } + getBatchOperatorFromId + }, + { + fn getCheckSignaturesIndices( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <getCheckSignaturesIndicesCall as alloy_sol_types::SolCall>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerCalls::getCheckSignaturesIndices) + } + getCheckSignaturesIndices + }, + { + fn pauseAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <pauseAllCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate) + .map(IncredibleSquaringTaskManagerCalls::pauseAll) + } + pauseAll + }, + { + fn WADS_TO_SLASH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <WADS_TO_SLASHCall as alloy_sol_types::SolCall>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerCalls::WADS_TO_SLASH) + } + WADS_TO_SLASH + }, + { + fn paused_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <paused_0Call as alloy_sol_types::SolCall>::abi_decode_raw(data, validate) + .map(IncredibleSquaringTaskManagerCalls::paused_0) + } + paused_0 + }, + { + fn respondToTask( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <respondToTaskCall as alloy_sol_types::SolCall>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerCalls::respondToTask) + } + respondToTask + }, + { + fn getQuorumBitmapsAtBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <getQuorumBitmapsAtBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw( + data, + validate, + ) + .map( + IncredibleSquaringTaskManagerCalls::getQuorumBitmapsAtBlockNumber, + ) + } + getQuorumBitmapsAtBlockNumber + }, + { + fn paused_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <paused_1Call as alloy_sol_types::SolCall>::abi_decode_raw(data, validate) + .map(IncredibleSquaringTaskManagerCalls::paused_1) + } + paused_1 + }, + { + fn taskSuccesfullyChallenged( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <taskSuccesfullyChallengedCall as alloy_sol_types::SolCall>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerCalls::taskSuccesfullyChallenged) + } + taskSuccesfullyChallenged + }, + { + fn blsApkRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <blsApkRegistryCall as alloy_sol_types::SolCall>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerCalls::blsApkRegistry) + } + blsApkRegistry + }, + { + fn stakeRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <stakeRegistryCall as alloy_sol_types::SolCall>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerCalls::stakeRegistry) + } + stakeRegistry + }, + { + fn raiseAndResolveChallenge( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <raiseAndResolveChallengeCall as alloy_sol_types::SolCall>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerCalls::raiseAndResolveChallenge) + } + raiseAndResolveChallenge + }, + { + fn createNewTask( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <createNewTaskCall as alloy_sol_types::SolCall>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerCalls::createNewTask) + } + createNewTask + }, + { + fn registryCoordinator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <registryCoordinatorCall as alloy_sol_types::SolCall>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerCalls::registryCoordinator) + } + registryCoordinator + }, + { + fn checkSignatures( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <checkSignaturesCall as alloy_sol_types::SolCall>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerCalls::checkSignatures) + } + checkSignatures + }, + { + fn renounceOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerCalls::renounceOwnership) + } + renounceOwnership + }, + { + fn taskNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <taskNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate) + .map(IncredibleSquaringTaskManagerCalls::taskNumber) + } + taskNumber + }, + { + fn generator( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <generatorCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate) + .map(IncredibleSquaringTaskManagerCalls::generator) + } + generator + }, + { + fn pauserRegistry( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <pauserRegistryCall as alloy_sol_types::SolCall>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerCalls::pauserRegistry) + } + pauserRegistry + }, + { + fn latestTaskNum( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <latestTaskNumCall as alloy_sol_types::SolCall>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerCalls::latestTaskNum) + } + latestTaskNum + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate) + .map(IncredibleSquaringTaskManagerCalls::owner) + } + owner + }, + { + fn instantSlasher( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <instantSlasherCall as alloy_sol_types::SolCall>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerCalls::instantSlasher) + } + instantSlasher + }, + { + fn staleStakesForbidden( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <staleStakesForbiddenCall as alloy_sol_types::SolCall>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerCalls::staleStakesForbidden) + } + staleStakesForbidden + }, + { + fn allocationManager( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <allocationManagerCall as alloy_sol_types::SolCall>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerCalls::allocationManager) + } + allocationManager + }, + { + fn getOperatorState_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <getOperatorState_1Call as alloy_sol_types::SolCall>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerCalls::getOperatorState_1) + } + getOperatorState_1 + }, + { + fn delegation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <delegationCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate) + .map(IncredibleSquaringTaskManagerCalls::delegation) + } + delegation + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerCalls::transferOwnership) + } + transferOwnership + }, + { + fn getTaskResponseWindowBlock( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <getTaskResponseWindowBlockCall as alloy_sol_types::SolCall>::abi_decode_raw( + data, + validate, + ) + .map( + IncredibleSquaringTaskManagerCalls::getTaskResponseWindowBlock, + ) + } + getTaskResponseWindowBlock + }, + { + fn TASK_CHALLENGE_WINDOW_BLOCK( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <TASK_CHALLENGE_WINDOW_BLOCKCall as alloy_sol_types::SolCall>::abi_decode_raw( + data, + validate, + ) + .map( + IncredibleSquaringTaskManagerCalls::TASK_CHALLENGE_WINDOW_BLOCK, + ) + } + TASK_CHALLENGE_WINDOW_BLOCK + }, + { + fn unpause( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerCalls> + { + <unpauseCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate) + .map(IncredibleSquaringTaskManagerCalls::unpause) + } + unpause + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + <Self as alloy_sol_types::SolInterface>::NAME, + selector, + )); + }; + DECODE_SHIMS[idx](data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::TASK_CHALLENGE_WINDOW_BLOCK(inner) => { + <TASK_CHALLENGE_WINDOW_BLOCKCall as alloy_sol_types::SolCall>::abi_encoded_size( + inner, + ) + } + Self::TASK_RESPONSE_WINDOW_BLOCK(inner) => { + <TASK_RESPONSE_WINDOW_BLOCKCall as alloy_sol_types::SolCall>::abi_encoded_size( + inner, + ) + } + Self::WADS_TO_SLASH(inner) => { + <WADS_TO_SLASHCall as alloy_sol_types::SolCall>::abi_encoded_size( + inner, + ) + } + Self::aggregator(inner) => { + <aggregatorCall as alloy_sol_types::SolCall>::abi_encoded_size(inner) + } + Self::allTaskHashes(inner) => { + <allTaskHashesCall as alloy_sol_types::SolCall>::abi_encoded_size( + inner, + ) + } + Self::allTaskResponses(inner) => { + <allTaskResponsesCall as alloy_sol_types::SolCall>::abi_encoded_size( + inner, + ) + } + Self::allocationManager(inner) => { + <allocationManagerCall as alloy_sol_types::SolCall>::abi_encoded_size( + inner, + ) + } + Self::blsApkRegistry(inner) => { + <blsApkRegistryCall as alloy_sol_types::SolCall>::abi_encoded_size( + inner, + ) + } + Self::checkSignatures(inner) => { + <checkSignaturesCall as alloy_sol_types::SolCall>::abi_encoded_size( + inner, + ) + } + Self::createNewTask(inner) => { + <createNewTaskCall as alloy_sol_types::SolCall>::abi_encoded_size( + inner, + ) + } + Self::delegation(inner) => { + <delegationCall as alloy_sol_types::SolCall>::abi_encoded_size(inner) + } + Self::generator(inner) => { + <generatorCall as alloy_sol_types::SolCall>::abi_encoded_size(inner) + } + Self::getBatchOperatorFromId(inner) => { + <getBatchOperatorFromIdCall as alloy_sol_types::SolCall>::abi_encoded_size( + inner, + ) + } + Self::getBatchOperatorId(inner) => { + <getBatchOperatorIdCall as alloy_sol_types::SolCall>::abi_encoded_size( + inner, + ) + } + Self::getCheckSignaturesIndices(inner) => { + <getCheckSignaturesIndicesCall as alloy_sol_types::SolCall>::abi_encoded_size( + inner, + ) + } + Self::getOperatorState_0(inner) => { + <getOperatorState_0Call as alloy_sol_types::SolCall>::abi_encoded_size( + inner, + ) + } + Self::getOperatorState_1(inner) => { + <getOperatorState_1Call as alloy_sol_types::SolCall>::abi_encoded_size( + inner, + ) + } + Self::getQuorumBitmapsAtBlockNumber(inner) => { + <getQuorumBitmapsAtBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size( + inner, + ) + } + Self::getTaskResponseWindowBlock(inner) => { + <getTaskResponseWindowBlockCall as alloy_sol_types::SolCall>::abi_encoded_size( + inner, + ) + } + Self::initialize(inner) => { + <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner) + } + Self::instantSlasher(inner) => { + <instantSlasherCall as alloy_sol_types::SolCall>::abi_encoded_size( + inner, + ) + } + Self::latestTaskNum(inner) => { + <latestTaskNumCall as alloy_sol_types::SolCall>::abi_encoded_size( + inner, + ) + } + Self::owner(inner) => { + <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner) + } + Self::pause(inner) => { + <pauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner) + } + Self::pauseAll(inner) => { + <pauseAllCall as alloy_sol_types::SolCall>::abi_encoded_size(inner) + } + Self::paused_0(inner) => { + <paused_0Call as alloy_sol_types::SolCall>::abi_encoded_size(inner) + } + Self::paused_1(inner) => { + <paused_1Call as alloy_sol_types::SolCall>::abi_encoded_size(inner) + } + Self::pauserRegistry(inner) => { + <pauserRegistryCall as alloy_sol_types::SolCall>::abi_encoded_size( + inner, + ) + } + Self::raiseAndResolveChallenge(inner) => { + <raiseAndResolveChallengeCall as alloy_sol_types::SolCall>::abi_encoded_size( + inner, + ) + } + Self::registryCoordinator(inner) => { + <registryCoordinatorCall as alloy_sol_types::SolCall>::abi_encoded_size( + inner, + ) + } + Self::renounceOwnership(inner) => { + <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size( + inner, + ) + } + Self::respondToTask(inner) => { + <respondToTaskCall as alloy_sol_types::SolCall>::abi_encoded_size( + inner, + ) + } + Self::serviceManager(inner) => { + <serviceManagerCall as alloy_sol_types::SolCall>::abi_encoded_size( + inner, + ) + } + Self::setStaleStakesForbidden(inner) => { + <setStaleStakesForbiddenCall as alloy_sol_types::SolCall>::abi_encoded_size( + inner, + ) + } + Self::stakeRegistry(inner) => { + <stakeRegistryCall as alloy_sol_types::SolCall>::abi_encoded_size( + inner, + ) + } + Self::staleStakesForbidden(inner) => { + <staleStakesForbiddenCall as alloy_sol_types::SolCall>::abi_encoded_size( + inner, + ) + } + Self::taskNumber(inner) => { + <taskNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(inner) + } + Self::taskSuccesfullyChallenged(inner) => { + <taskSuccesfullyChallengedCall as alloy_sol_types::SolCall>::abi_encoded_size( + inner, + ) + } + Self::transferOwnership(inner) => { + <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size( + inner, + ) + } + Self::trySignatureAndApkVerification(inner) => { + <trySignatureAndApkVerificationCall as alloy_sol_types::SolCall>::abi_encoded_size( + inner, + ) + } + Self::unpause(inner) => { + <unpauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) { + match self { + Self::TASK_CHALLENGE_WINDOW_BLOCK(inner) => { + <TASK_CHALLENGE_WINDOW_BLOCKCall as alloy_sol_types::SolCall>::abi_encode_raw( + inner, out, + ) + } + Self::TASK_RESPONSE_WINDOW_BLOCK(inner) => { + <TASK_RESPONSE_WINDOW_BLOCKCall as alloy_sol_types::SolCall>::abi_encode_raw( + inner, out, + ) + } + Self::WADS_TO_SLASH(inner) => { + <WADS_TO_SLASHCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out) + } + Self::aggregator(inner) => { + <aggregatorCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out) + } + Self::allTaskHashes(inner) => { + <allTaskHashesCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out) + } + Self::allTaskResponses(inner) => { + <allTaskResponsesCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out) + } + Self::allocationManager(inner) => { + <allocationManagerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out) + } + Self::blsApkRegistry(inner) => { + <blsApkRegistryCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out) + } + Self::checkSignatures(inner) => { + <checkSignaturesCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out) + } + Self::createNewTask(inner) => { + <createNewTaskCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out) + } + Self::delegation(inner) => { + <delegationCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out) + } + Self::generator(inner) => { + <generatorCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out) + } + Self::getBatchOperatorFromId(inner) => { + <getBatchOperatorFromIdCall as alloy_sol_types::SolCall>::abi_encode_raw( + inner, out, + ) + } + Self::getBatchOperatorId(inner) => { + <getBatchOperatorIdCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out) + } + Self::getCheckSignaturesIndices(inner) => { + <getCheckSignaturesIndicesCall as alloy_sol_types::SolCall>::abi_encode_raw( + inner, out, + ) + } + Self::getOperatorState_0(inner) => { + <getOperatorState_0Call as alloy_sol_types::SolCall>::abi_encode_raw(inner, out) + } + Self::getOperatorState_1(inner) => { + <getOperatorState_1Call as alloy_sol_types::SolCall>::abi_encode_raw(inner, out) + } + Self::getQuorumBitmapsAtBlockNumber(inner) => { + <getQuorumBitmapsAtBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw( + inner, out, + ) + } + Self::getTaskResponseWindowBlock(inner) => { + <getTaskResponseWindowBlockCall as alloy_sol_types::SolCall>::abi_encode_raw( + inner, out, + ) + } + Self::initialize(inner) => { + <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out) + } + Self::instantSlasher(inner) => { + <instantSlasherCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out) + } + Self::latestTaskNum(inner) => { + <latestTaskNumCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out) + } + Self::owner(inner) => { + <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out) + } + Self::pause(inner) => { + <pauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out) + } + Self::pauseAll(inner) => { + <pauseAllCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out) + } + Self::paused_0(inner) => { + <paused_0Call as alloy_sol_types::SolCall>::abi_encode_raw(inner, out) + } + Self::paused_1(inner) => { + <paused_1Call as alloy_sol_types::SolCall>::abi_encode_raw(inner, out) + } + Self::pauserRegistry(inner) => { + <pauserRegistryCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out) + } + Self::raiseAndResolveChallenge(inner) => { + <raiseAndResolveChallengeCall as alloy_sol_types::SolCall>::abi_encode_raw( + inner, out, + ) + } + Self::registryCoordinator(inner) => { + <registryCoordinatorCall as alloy_sol_types::SolCall>::abi_encode_raw( + inner, out, + ) + } + Self::renounceOwnership(inner) => { + <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out) + } + Self::respondToTask(inner) => { + <respondToTaskCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out) + } + Self::serviceManager(inner) => { + <serviceManagerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out) + } + Self::setStaleStakesForbidden(inner) => { + <setStaleStakesForbiddenCall as alloy_sol_types::SolCall>::abi_encode_raw( + inner, out, + ) + } + Self::stakeRegistry(inner) => { + <stakeRegistryCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out) + } + Self::staleStakesForbidden(inner) => { + <staleStakesForbiddenCall as alloy_sol_types::SolCall>::abi_encode_raw( + inner, out, + ) + } + Self::taskNumber(inner) => { + <taskNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out) + } + Self::taskSuccesfullyChallenged(inner) => { + <taskSuccesfullyChallengedCall as alloy_sol_types::SolCall>::abi_encode_raw( + inner, out, + ) + } + Self::transferOwnership(inner) => { + <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out) + } + Self::trySignatureAndApkVerification(inner) => { + <trySignatureAndApkVerificationCall as alloy_sol_types::SolCall>::abi_encode_raw( + inner, out, + ) + } + Self::unpause(inner) => { + <unpauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`IncredibleSquaringTaskManager`](self) custom errors. + pub enum IncredibleSquaringTaskManagerErrors { + #[allow(missing_docs)] + BitmapValueTooLarge(BitmapValueTooLarge), + #[allow(missing_docs)] + BytesArrayLengthTooLong(BytesArrayLengthTooLong), + #[allow(missing_docs)] + BytesArrayNotOrdered(BytesArrayNotOrdered), + #[allow(missing_docs)] + CurrentlyPaused(CurrentlyPaused), + #[allow(missing_docs)] + ECAddFailed(ECAddFailed), + #[allow(missing_docs)] + ECMulFailed(ECMulFailed), + #[allow(missing_docs)] + ExpModFailed(ExpModFailed), + #[allow(missing_docs)] + InputAddressZero(InputAddressZero), + #[allow(missing_docs)] + InputArrayLengthMismatch(InputArrayLengthMismatch), + #[allow(missing_docs)] + InputEmptyQuorumNumbers(InputEmptyQuorumNumbers), + #[allow(missing_docs)] + InputNonSignerLengthMismatch(InputNonSignerLengthMismatch), + #[allow(missing_docs)] + InvalidBLSPairingKey(InvalidBLSPairingKey), + #[allow(missing_docs)] + InvalidBLSSignature(InvalidBLSSignature), + #[allow(missing_docs)] + InvalidNewPausedStatus(InvalidNewPausedStatus), + #[allow(missing_docs)] + InvalidQuorumApkHash(InvalidQuorumApkHash), + #[allow(missing_docs)] + InvalidReferenceBlocknumber(InvalidReferenceBlocknumber), + #[allow(missing_docs)] + NonSignerPubkeysNotSorted(NonSignerPubkeysNotSorted), + #[allow(missing_docs)] + OnlyPauser(OnlyPauser), + #[allow(missing_docs)] + OnlyRegistryCoordinatorOwner(OnlyRegistryCoordinatorOwner), + #[allow(missing_docs)] + OnlyUnpauser(OnlyUnpauser), + #[allow(missing_docs)] + OperatorNotRegistered(OperatorNotRegistered), + #[allow(missing_docs)] + ScalarTooLarge(ScalarTooLarge), + #[allow(missing_docs)] + StaleStakesForbidden(StaleStakesForbidden), + } + #[automatically_derived] + impl IncredibleSquaringTaskManagerErrors { + /// 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]] = &[ + [31u8, 4u8, 5u8, 160u8], + [37u8, 236u8, 108u8, 31u8], + [67u8, 113u8, 74u8, 253u8], + [70u8, 51u8, 190u8, 50u8], + [75u8, 135u8, 79u8, 69u8], + [95u8, 131u8, 47u8, 65u8], + [103u8, 152u8, 141u8, 51u8], + [115u8, 99u8, 33u8, 118u8], + [117u8, 223u8, 81u8, 220u8], + [121u8, 72u8, 33u8, 255u8], + [128u8, 200u8, 131u8, 72u8], + [132u8, 10u8, 72u8, 213u8], + [171u8, 27u8, 35u8, 107u8], + [175u8, 252u8, 94u8, 219u8], + [198u8, 29u8, 202u8, 93u8], + [202u8, 149u8, 115u8, 51u8], + [212u8, 182u8, 143u8, 215u8], + [213u8, 30u8, 218u8, 227u8], + [224u8, 225u8, 231u8, 98u8], + [225u8, 49u8, 10u8, 237u8], + [251u8, 74u8, 156u8, 142u8], + [255u8, 113u8, 148u8, 20u8], + [255u8, 137u8, 212u8, 250u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IncredibleSquaringTaskManagerErrors { + const NAME: &'static str = "IncredibleSquaringTaskManagerErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 23usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::BitmapValueTooLarge(_) => { + <BitmapValueTooLarge as alloy_sol_types::SolError>::SELECTOR + } + Self::BytesArrayLengthTooLong(_) => { + <BytesArrayLengthTooLong as alloy_sol_types::SolError>::SELECTOR + } + Self::BytesArrayNotOrdered(_) => { + <BytesArrayNotOrdered as alloy_sol_types::SolError>::SELECTOR + } + Self::CurrentlyPaused(_) => { + <CurrentlyPaused as alloy_sol_types::SolError>::SELECTOR + } + Self::ECAddFailed(_) => <ECAddFailed as alloy_sol_types::SolError>::SELECTOR, + Self::ECMulFailed(_) => <ECMulFailed as alloy_sol_types::SolError>::SELECTOR, + Self::ExpModFailed(_) => <ExpModFailed as alloy_sol_types::SolError>::SELECTOR, + Self::InputAddressZero(_) => { + <InputAddressZero as alloy_sol_types::SolError>::SELECTOR + } + Self::InputArrayLengthMismatch(_) => { + <InputArrayLengthMismatch as alloy_sol_types::SolError>::SELECTOR + } + Self::InputEmptyQuorumNumbers(_) => { + <InputEmptyQuorumNumbers as alloy_sol_types::SolError>::SELECTOR + } + Self::InputNonSignerLengthMismatch(_) => { + <InputNonSignerLengthMismatch as alloy_sol_types::SolError>::SELECTOR + } + Self::InvalidBLSPairingKey(_) => { + <InvalidBLSPairingKey as alloy_sol_types::SolError>::SELECTOR + } + Self::InvalidBLSSignature(_) => { + <InvalidBLSSignature as alloy_sol_types::SolError>::SELECTOR + } + Self::InvalidNewPausedStatus(_) => { + <InvalidNewPausedStatus as alloy_sol_types::SolError>::SELECTOR + } + Self::InvalidQuorumApkHash(_) => { + <InvalidQuorumApkHash as alloy_sol_types::SolError>::SELECTOR + } + Self::InvalidReferenceBlocknumber(_) => { + <InvalidReferenceBlocknumber as alloy_sol_types::SolError>::SELECTOR + } + Self::NonSignerPubkeysNotSorted(_) => { + <NonSignerPubkeysNotSorted as alloy_sol_types::SolError>::SELECTOR + } + Self::OnlyPauser(_) => <OnlyPauser as alloy_sol_types::SolError>::SELECTOR, + Self::OnlyRegistryCoordinatorOwner(_) => { + <OnlyRegistryCoordinatorOwner as alloy_sol_types::SolError>::SELECTOR + } + Self::OnlyUnpauser(_) => <OnlyUnpauser as alloy_sol_types::SolError>::SELECTOR, + Self::OperatorNotRegistered(_) => { + <OperatorNotRegistered as alloy_sol_types::SolError>::SELECTOR + } + Self::ScalarTooLarge(_) => <ScalarTooLarge as alloy_sol_types::SolError>::SELECTOR, + Self::StaleStakesForbidden(_) => { + <StaleStakesForbidden as alloy_sol_types::SolError>::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<Self> { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result< + IncredibleSquaringTaskManagerErrors, + >] = &[ + { + fn InputEmptyQuorumNumbers( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors> + { + <InputEmptyQuorumNumbers as alloy_sol_types::SolError>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerErrors::InputEmptyQuorumNumbers) + } + InputEmptyQuorumNumbers + }, + { + fn OperatorNotRegistered( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors> + { + <OperatorNotRegistered as alloy_sol_types::SolError>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerErrors::OperatorNotRegistered) + } + OperatorNotRegistered + }, + { + fn InputArrayLengthMismatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors> + { + <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerErrors::InputArrayLengthMismatch) + } + InputArrayLengthMismatch + }, + { + fn ECMulFailed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors> + { + <ECMulFailed as alloy_sol_types::SolError>::abi_decode_raw(data, validate) + .map(IncredibleSquaringTaskManagerErrors::ECMulFailed) + } + ECMulFailed + }, + { + fn InvalidReferenceBlocknumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors> + { + <InvalidReferenceBlocknumber as alloy_sol_types::SolError>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerErrors::InvalidReferenceBlocknumber) + } + InvalidReferenceBlocknumber + }, + { + fn InputNonSignerLengthMismatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors> + { + <InputNonSignerLengthMismatch as alloy_sol_types::SolError>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerErrors::InputNonSignerLengthMismatch) + } + InputNonSignerLengthMismatch + }, + { + fn InvalidBLSPairingKey( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors> + { + <InvalidBLSPairingKey as alloy_sol_types::SolError>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerErrors::InvalidBLSPairingKey) + } + InvalidBLSPairingKey + }, + { + fn InputAddressZero( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors> + { + <InputAddressZero as alloy_sol_types::SolError>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerErrors::InputAddressZero) + } + InputAddressZero + }, + { + fn OnlyPauser( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors> + { + <OnlyPauser as alloy_sol_types::SolError>::abi_decode_raw(data, validate) + .map(IncredibleSquaringTaskManagerErrors::OnlyPauser) + } + OnlyPauser + }, + { + fn OnlyUnpauser( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors> + { + <OnlyUnpauser as alloy_sol_types::SolError>::abi_decode_raw(data, validate) + .map(IncredibleSquaringTaskManagerErrors::OnlyUnpauser) + } + OnlyUnpauser + }, + { + fn BytesArrayNotOrdered( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors> + { + <BytesArrayNotOrdered as alloy_sol_types::SolError>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerErrors::BytesArrayNotOrdered) + } + BytesArrayNotOrdered + }, + { + fn CurrentlyPaused( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors> + { + <CurrentlyPaused as alloy_sol_types::SolError>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerErrors::CurrentlyPaused) + } + CurrentlyPaused + }, + { + fn InvalidBLSSignature( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors> + { + <InvalidBLSSignature as alloy_sol_types::SolError>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerErrors::InvalidBLSSignature) + } + InvalidBLSSignature + }, + { + fn StaleStakesForbidden( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors> + { + <StaleStakesForbidden as alloy_sol_types::SolError>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerErrors::StaleStakesForbidden) + } + StaleStakesForbidden + }, + { + fn InvalidNewPausedStatus( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors> + { + <InvalidNewPausedStatus as alloy_sol_types::SolError>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerErrors::InvalidNewPausedStatus) + } + InvalidNewPausedStatus + }, + { + fn BitmapValueTooLarge( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors> + { + <BitmapValueTooLarge as alloy_sol_types::SolError>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerErrors::BitmapValueTooLarge) + } + BitmapValueTooLarge + }, + { + fn ECAddFailed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors> + { + <ECAddFailed as alloy_sol_types::SolError>::abi_decode_raw(data, validate) + .map(IncredibleSquaringTaskManagerErrors::ECAddFailed) + } + ECAddFailed + }, + { + fn ExpModFailed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors> + { + <ExpModFailed as alloy_sol_types::SolError>::abi_decode_raw(data, validate) + .map(IncredibleSquaringTaskManagerErrors::ExpModFailed) + } + ExpModFailed + }, + { + fn OnlyRegistryCoordinatorOwner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors> + { + <OnlyRegistryCoordinatorOwner as alloy_sol_types::SolError>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerErrors::OnlyRegistryCoordinatorOwner) + } + OnlyRegistryCoordinatorOwner + }, + { + fn InvalidQuorumApkHash( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors> + { + <InvalidQuorumApkHash as alloy_sol_types::SolError>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerErrors::InvalidQuorumApkHash) + } + InvalidQuorumApkHash + }, + { + fn BytesArrayLengthTooLong( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors> + { + <BytesArrayLengthTooLong as alloy_sol_types::SolError>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerErrors::BytesArrayLengthTooLong) + } + BytesArrayLengthTooLong + }, + { + fn NonSignerPubkeysNotSorted( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors> + { + <NonSignerPubkeysNotSorted as alloy_sol_types::SolError>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerErrors::NonSignerPubkeysNotSorted) + } + NonSignerPubkeysNotSorted + }, + { + fn ScalarTooLarge( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<IncredibleSquaringTaskManagerErrors> + { + <ScalarTooLarge as alloy_sol_types::SolError>::abi_decode_raw( + data, validate, + ) + .map(IncredibleSquaringTaskManagerErrors::ScalarTooLarge) + } + ScalarTooLarge + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err(alloy_sol_types::Error::unknown_selector( + <Self as alloy_sol_types::SolInterface>::NAME, + selector, + )); + }; + DECODE_SHIMS[idx](data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::BitmapValueTooLarge(inner) => { + <BitmapValueTooLarge as alloy_sol_types::SolError>::abi_encoded_size(inner) + } + Self::BytesArrayLengthTooLong(inner) => { + <BytesArrayLengthTooLong as alloy_sol_types::SolError>::abi_encoded_size(inner) + } + Self::BytesArrayNotOrdered(inner) => { + <BytesArrayNotOrdered as alloy_sol_types::SolError>::abi_encoded_size(inner) + } + Self::CurrentlyPaused(inner) => { + <CurrentlyPaused as alloy_sol_types::SolError>::abi_encoded_size(inner) + } + Self::ECAddFailed(inner) => { + <ECAddFailed as alloy_sol_types::SolError>::abi_encoded_size(inner) + } + Self::ECMulFailed(inner) => { + <ECMulFailed as alloy_sol_types::SolError>::abi_encoded_size(inner) + } + Self::ExpModFailed(inner) => { + <ExpModFailed as alloy_sol_types::SolError>::abi_encoded_size(inner) + } + Self::InputAddressZero(inner) => { + <InputAddressZero as alloy_sol_types::SolError>::abi_encoded_size(inner) + } + Self::InputArrayLengthMismatch(inner) => { + <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_encoded_size(inner) + } + Self::InputEmptyQuorumNumbers(inner) => { + <InputEmptyQuorumNumbers as alloy_sol_types::SolError>::abi_encoded_size(inner) + } + Self::InputNonSignerLengthMismatch(inner) => { + <InputNonSignerLengthMismatch as alloy_sol_types::SolError>::abi_encoded_size( + inner, + ) + } + Self::InvalidBLSPairingKey(inner) => { + <InvalidBLSPairingKey as alloy_sol_types::SolError>::abi_encoded_size(inner) + } + Self::InvalidBLSSignature(inner) => { + <InvalidBLSSignature as alloy_sol_types::SolError>::abi_encoded_size(inner) + } + Self::InvalidNewPausedStatus(inner) => { + <InvalidNewPausedStatus as alloy_sol_types::SolError>::abi_encoded_size(inner) + } + Self::InvalidQuorumApkHash(inner) => { + <InvalidQuorumApkHash as alloy_sol_types::SolError>::abi_encoded_size(inner) + } + Self::InvalidReferenceBlocknumber(inner) => { + <InvalidReferenceBlocknumber as alloy_sol_types::SolError>::abi_encoded_size( + inner, + ) + } + Self::NonSignerPubkeysNotSorted(inner) => { + <NonSignerPubkeysNotSorted as alloy_sol_types::SolError>::abi_encoded_size( + inner, + ) + } + Self::OnlyPauser(inner) => { + <OnlyPauser as alloy_sol_types::SolError>::abi_encoded_size(inner) + } + Self::OnlyRegistryCoordinatorOwner(inner) => { + <OnlyRegistryCoordinatorOwner as alloy_sol_types::SolError>::abi_encoded_size( + inner, + ) + } + Self::OnlyUnpauser(inner) => { + <OnlyUnpauser as alloy_sol_types::SolError>::abi_encoded_size(inner) + } + Self::OperatorNotRegistered(inner) => { + <OperatorNotRegistered as alloy_sol_types::SolError>::abi_encoded_size(inner) + } + Self::ScalarTooLarge(inner) => { + <ScalarTooLarge as alloy_sol_types::SolError>::abi_encoded_size(inner) + } + Self::StaleStakesForbidden(inner) => { + <StaleStakesForbidden as alloy_sol_types::SolError>::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) { + match self { + Self::BitmapValueTooLarge(inner) => { + <BitmapValueTooLarge as alloy_sol_types::SolError>::abi_encode_raw(inner, out) + } + Self::BytesArrayLengthTooLong(inner) => { + <BytesArrayLengthTooLong as alloy_sol_types::SolError>::abi_encode_raw( + inner, out, + ) + } + Self::BytesArrayNotOrdered(inner) => { + <BytesArrayNotOrdered as alloy_sol_types::SolError>::abi_encode_raw(inner, out) + } + Self::CurrentlyPaused(inner) => { + <CurrentlyPaused as alloy_sol_types::SolError>::abi_encode_raw(inner, out) + } + Self::ECAddFailed(inner) => { + <ECAddFailed as alloy_sol_types::SolError>::abi_encode_raw(inner, out) + } + Self::ECMulFailed(inner) => { + <ECMulFailed as alloy_sol_types::SolError>::abi_encode_raw(inner, out) + } + Self::ExpModFailed(inner) => { + <ExpModFailed as alloy_sol_types::SolError>::abi_encode_raw(inner, out) + } + Self::InputAddressZero(inner) => { + <InputAddressZero as alloy_sol_types::SolError>::abi_encode_raw(inner, out) + } + Self::InputArrayLengthMismatch(inner) => { + <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_encode_raw( + inner, out, + ) + } + Self::InputEmptyQuorumNumbers(inner) => { + <InputEmptyQuorumNumbers as alloy_sol_types::SolError>::abi_encode_raw( + inner, out, + ) + } + Self::InputNonSignerLengthMismatch(inner) => { + <InputNonSignerLengthMismatch as alloy_sol_types::SolError>::abi_encode_raw( + inner, out, + ) + } + Self::InvalidBLSPairingKey(inner) => { + <InvalidBLSPairingKey as alloy_sol_types::SolError>::abi_encode_raw(inner, out) + } + Self::InvalidBLSSignature(inner) => { + <InvalidBLSSignature as alloy_sol_types::SolError>::abi_encode_raw(inner, out) + } + Self::InvalidNewPausedStatus(inner) => { + <InvalidNewPausedStatus as alloy_sol_types::SolError>::abi_encode_raw( + inner, out, + ) + } + Self::InvalidQuorumApkHash(inner) => { + <InvalidQuorumApkHash as alloy_sol_types::SolError>::abi_encode_raw(inner, out) + } + Self::InvalidReferenceBlocknumber(inner) => { + <InvalidReferenceBlocknumber as alloy_sol_types::SolError>::abi_encode_raw( + inner, out, + ) + } + Self::NonSignerPubkeysNotSorted(inner) => { + <NonSignerPubkeysNotSorted as alloy_sol_types::SolError>::abi_encode_raw( + inner, out, + ) + } + Self::OnlyPauser(inner) => { + <OnlyPauser as alloy_sol_types::SolError>::abi_encode_raw(inner, out) + } + Self::OnlyRegistryCoordinatorOwner(inner) => { + <OnlyRegistryCoordinatorOwner as alloy_sol_types::SolError>::abi_encode_raw( + inner, out, + ) + } + Self::OnlyUnpauser(inner) => { + <OnlyUnpauser as alloy_sol_types::SolError>::abi_encode_raw(inner, out) + } + Self::OperatorNotRegistered(inner) => { + <OperatorNotRegistered as alloy_sol_types::SolError>::abi_encode_raw(inner, out) + } + Self::ScalarTooLarge(inner) => { + <ScalarTooLarge as alloy_sol_types::SolError>::abi_encode_raw(inner, out) + } + Self::StaleStakesForbidden(inner) => { + <StaleStakesForbidden as alloy_sol_types::SolError>::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`IncredibleSquaringTaskManager`](self) events. + pub enum IncredibleSquaringTaskManagerEvents { + #[allow(missing_docs)] + Initialized(Initialized), + #[allow(missing_docs)] + NewTaskCreated(NewTaskCreated), + #[allow(missing_docs)] + OwnershipTransferred(OwnershipTransferred), + #[allow(missing_docs)] + Paused(Paused), + #[allow(missing_docs)] + StaleStakesForbiddenUpdate(StaleStakesForbiddenUpdate), + #[allow(missing_docs)] + TaskChallengedSuccessfully(TaskChallengedSuccessfully), + #[allow(missing_docs)] + TaskChallengedUnsuccessfully(TaskChallengedUnsuccessfully), + #[allow(missing_docs)] + TaskCompleted(TaskCompleted), + #[allow(missing_docs)] + TaskResponded(TaskResponded), + #[allow(missing_docs)] + Unpaused(Unpaused), + } + #[automatically_derived] + impl IncredibleSquaringTaskManagerEvents { + /// 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]] = &[ + [ + 22u8, 149u8, 184u8, 208u8, 110u8, 200u8, 0u8, 180u8, 97u8, 94u8, 116u8, 92u8, + 251u8, 91u8, 208u8, 12u8, 31u8, 40u8, 117u8, 97u8, 93u8, 66u8, 146u8, 92u8, 59u8, + 90u8, 250u8, 84u8, 59u8, 178u8, 76u8, 72u8, + ], + [ + 52u8, 156u8, 30u8, 230u8, 14u8, 78u8, 137u8, 114u8, 238u8, 157u8, 186u8, 100u8, + 44u8, 23u8, 116u8, 84u8, 61u8, 92u8, 65u8, 54u8, 135u8, 155u8, 127u8, 76u8, 170u8, + 240u8, 75u8, 248u8, 26u8, 72u8, 122u8, 42u8, + ], + [ + 53u8, 130u8, 209u8, 130u8, 142u8, 38u8, 191u8, 86u8, 189u8, 128u8, 21u8, 2u8, + 188u8, 2u8, 26u8, 192u8, 188u8, 138u8, 251u8, 87u8, 200u8, 38u8, 228u8, 152u8, + 107u8, 69u8, 89u8, 60u8, 143u8, 173u8, 56u8, 156u8, + ], + [ + 64u8, 228u8, 237u8, 136u8, 10u8, 41u8, 224u8, 246u8, 221u8, 206u8, 48u8, 116u8, + 87u8, 251u8, 117u8, 205u8, 223u8, 79u8, 238u8, 247u8, 211u8, 236u8, 176u8, 48u8, + 27u8, 253u8, 244u8, 151u8, 106u8, 14u8, 45u8, 252u8, + ], + [ + 127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, 56u8, + 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, 96u8, + 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8, + ], + [ + 139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, 208u8, + 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, 175u8, 227u8, + 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8, + ], + [ + 154u8, 20u8, 79u8, 34u8, 138u8, 147u8, 27u8, 157u8, 13u8, 22u8, 150u8, 251u8, + 205u8, 175u8, 49u8, 11u8, 36u8, 181u8, 210u8, 210u8, 30u8, 121u8, 157u8, 182u8, + 35u8, 252u8, 152u8, 106u8, 15u8, 84u8, 116u8, 48u8, + ], + [ + 171u8, 64u8, 163u8, 116u8, 188u8, 81u8, 222u8, 55u8, 34u8, 0u8, 168u8, 188u8, + 152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8, 11u8, 182u8, + 224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8, + ], + [ + 194u8, 13u8, 27u8, 176u8, 241u8, 98u8, 54u8, 128u8, 48u8, 107u8, 131u8, 212u8, + 255u8, 75u8, 185u8, 154u8, 43u8, 235u8, 157u8, 134u8, 217u8, 120u8, 50u8, 243u8, + 202u8, 64u8, 253u8, 19u8, 162u8, 157u8, 241u8, 236u8, + ], + [ + 253u8, 62u8, 38u8, 190u8, 235u8, 89u8, 103u8, 252u8, 90u8, 87u8, 160u8, 68u8, + 105u8, 20u8, 234u8, 188u8, 69u8, 180u8, 170u8, 71u8, 76u8, 103u8, 165u8, 27u8, + 75u8, 81u8, 96u8, 202u8, 198u8, 13u8, 219u8, 5u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IncredibleSquaringTaskManagerEvents { + const NAME: &'static str = "IncredibleSquaringTaskManagerEvents"; + const COUNT: usize = 10usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result<Self> { + match topics.first().copied() { + Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => { + <Initialized as alloy_sol_types::SolEvent>::decode_raw_log( + topics, data, validate, + ) + .map(Self::Initialized) + } + Some(<NewTaskCreated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => { + <NewTaskCreated as alloy_sol_types::SolEvent>::decode_raw_log( + topics, data, validate, + ) + .map(Self::NewTaskCreated) + } + Some(<OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => { + <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log( + topics, data, validate, + ) + .map(Self::OwnershipTransferred) + } + Some(<Paused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => { + <Paused as alloy_sol_types::SolEvent>::decode_raw_log(topics, data, validate) + .map(Self::Paused) + } + Some(<StaleStakesForbiddenUpdate as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => { + <StaleStakesForbiddenUpdate as alloy_sol_types::SolEvent>::decode_raw_log( + topics, data, validate, + ) + .map(Self::StaleStakesForbiddenUpdate) + } + Some(<TaskChallengedSuccessfully as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => { + <TaskChallengedSuccessfully as alloy_sol_types::SolEvent>::decode_raw_log( + topics, data, validate, + ) + .map(Self::TaskChallengedSuccessfully) + } + Some( + <TaskChallengedUnsuccessfully as alloy_sol_types::SolEvent>::SIGNATURE_HASH, + ) => <TaskChallengedUnsuccessfully as alloy_sol_types::SolEvent>::decode_raw_log( + topics, data, validate, + ) + .map(Self::TaskChallengedUnsuccessfully), + Some(<TaskCompleted as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => { + <TaskCompleted as alloy_sol_types::SolEvent>::decode_raw_log( + topics, data, validate, + ) + .map(Self::TaskCompleted) + } + Some(<TaskResponded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => { + <TaskResponded as alloy_sol_types::SolEvent>::decode_raw_log( + topics, data, validate, + ) + .map(Self::TaskResponded) + } + Some(<Unpaused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => { + <Unpaused as alloy_sol_types::SolEvent>::decode_raw_log(topics, data, validate) + .map(Self::Unpaused) + } + _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: <Self as alloy_sol_types::SolEventInterface>::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 IncredibleSquaringTaskManagerEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::NewTaskCreated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Paused(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + Self::StaleStakesForbiddenUpdate(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::TaskChallengedSuccessfully(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::TaskChallengedUnsuccessfully(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::TaskCompleted(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::TaskResponded(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Unpaused(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner), + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Initialized(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::NewTaskCreated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Paused(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner), + Self::StaleStakesForbiddenUpdate(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::TaskChallengedSuccessfully(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::TaskChallengedUnsuccessfully(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::TaskCompleted(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::TaskResponded(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Unpaused(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IncredibleSquaringTaskManager`](self) contract instance. + + See the [wrapper's documentation](`IncredibleSquaringTaskManagerInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider<T, N>, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IncredibleSquaringTaskManagerInstance<T, P, N> { + IncredibleSquaringTaskManagerInstance::<T, P, N>::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<T, N>, + N: alloy_contract::private::Network, + >( + provider: P, + _slashingRegistryCoordinator: alloy::sol_types::private::Address, + _pauserRegistry: alloy::sol_types::private::Address, + _taskResponseWindowBlock: u32, + _serviceManager: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result<IncredibleSquaringTaskManagerInstance<T, P, N>>, + > { + IncredibleSquaringTaskManagerInstance::<T, P, N>::deploy( + provider, + _slashingRegistryCoordinator, + _pauserRegistry, + _taskResponseWindowBlock, + _serviceManager, + ) + } + /**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<T, N>, + N: alloy_contract::private::Network, + >( + provider: P, + _slashingRegistryCoordinator: alloy::sol_types::private::Address, + _pauserRegistry: alloy::sol_types::private::Address, + _taskResponseWindowBlock: u32, + _serviceManager: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder<T, P, N> { + IncredibleSquaringTaskManagerInstance::<T, P, N>::deploy_builder( + provider, + _slashingRegistryCoordinator, + _pauserRegistry, + _taskResponseWindowBlock, + _serviceManager, + ) + } + /**A [`IncredibleSquaringTaskManager`](self) instance. + + Contains type-safe methods for interacting with an on-chain instance of the + [`IncredibleSquaringTaskManager`](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 IncredibleSquaringTaskManagerInstance<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<T, P, N> ::core::fmt::Debug for IncredibleSquaringTaskManagerInstance<T, P, N> { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IncredibleSquaringTaskManagerInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider<T, N>, + N: alloy_contract::private::Network, + > IncredibleSquaringTaskManagerInstance<T, P, N> + { + /**Creates a new wrapper around an on-chain [`IncredibleSquaringTaskManager`](self) contract instance. + + See the [wrapper's documentation](`IncredibleSquaringTaskManagerInstance`) 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, + _slashingRegistryCoordinator: alloy::sol_types::private::Address, + _pauserRegistry: alloy::sol_types::private::Address, + _taskResponseWindowBlock: u32, + _serviceManager: alloy::sol_types::private::Address, + ) -> alloy_contract::Result<IncredibleSquaringTaskManagerInstance<T, P, N>> { + let call_builder = Self::deploy_builder( + provider, + _slashingRegistryCoordinator, + _pauserRegistry, + _taskResponseWindowBlock, + _serviceManager, + ); + 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, + _slashingRegistryCoordinator: alloy::sol_types::private::Address, + _pauserRegistry: alloy::sol_types::private::Address, + _taskResponseWindowBlock: u32, + _serviceManager: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder<T, P, N> { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode(&constructorCall { + _slashingRegistryCoordinator, + _pauserRegistry, + _taskResponseWindowBlock, + _serviceManager, + })[..], + ] + .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<T, P: ::core::clone::Clone, N> IncredibleSquaringTaskManagerInstance<T, &P, N> { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IncredibleSquaringTaskManagerInstance<T, P, N> { + IncredibleSquaringTaskManagerInstance { + 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<T, N>, + N: alloy_contract::private::Network, + > IncredibleSquaringTaskManagerInstance<T, P, N> + { + /// 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<C: alloy_sol_types::SolCall>( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder<T, &P, C, N> { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`TASK_CHALLENGE_WINDOW_BLOCK`] function. + pub fn TASK_CHALLENGE_WINDOW_BLOCK( + &self, + ) -> alloy_contract::SolCallBuilder<T, &P, TASK_CHALLENGE_WINDOW_BLOCKCall, N> { + self.call_builder(&TASK_CHALLENGE_WINDOW_BLOCKCall {}) + } + ///Creates a new call builder for the [`TASK_RESPONSE_WINDOW_BLOCK`] function. + pub fn TASK_RESPONSE_WINDOW_BLOCK( + &self, + ) -> alloy_contract::SolCallBuilder<T, &P, TASK_RESPONSE_WINDOW_BLOCKCall, N> { + self.call_builder(&TASK_RESPONSE_WINDOW_BLOCKCall {}) + } + ///Creates a new call builder for the [`WADS_TO_SLASH`] function. + pub fn WADS_TO_SLASH(&self) -> alloy_contract::SolCallBuilder<T, &P, WADS_TO_SLASHCall, N> { + self.call_builder(&WADS_TO_SLASHCall {}) + } + ///Creates a new call builder for the [`aggregator`] function. + pub fn aggregator(&self) -> alloy_contract::SolCallBuilder<T, &P, aggregatorCall, N> { + self.call_builder(&aggregatorCall {}) + } + ///Creates a new call builder for the [`allTaskHashes`] function. + pub fn allTaskHashes( + &self, + _0: u32, + ) -> alloy_contract::SolCallBuilder<T, &P, allTaskHashesCall, N> { + self.call_builder(&allTaskHashesCall { _0 }) + } + ///Creates a new call builder for the [`allTaskResponses`] function. + pub fn allTaskResponses( + &self, + _0: u32, + ) -> alloy_contract::SolCallBuilder<T, &P, allTaskResponsesCall, N> { + self.call_builder(&allTaskResponsesCall { _0 }) + } + ///Creates a new call builder for the [`allocationManager`] function. + pub fn allocationManager( + &self, + ) -> alloy_contract::SolCallBuilder<T, &P, allocationManagerCall, N> { + self.call_builder(&allocationManagerCall {}) + } + ///Creates a new call builder for the [`blsApkRegistry`] function. + pub fn blsApkRegistry( + &self, + ) -> alloy_contract::SolCallBuilder<T, &P, blsApkRegistryCall, N> { + self.call_builder(&blsApkRegistryCall {}) + } + ///Creates a new call builder for the [`checkSignatures`] function. + pub fn checkSignatures( + &self, + msgHash: alloy::sol_types::private::FixedBytes<32>, + quorumNumbers: alloy::sol_types::private::Bytes, + referenceBlockNumber: u32, + params: <IBLSSignatureCheckerTypes::NonSignerStakesAndSignature as alloy::sol_types::SolType>::RustType, + ) -> alloy_contract::SolCallBuilder<T, &P, checkSignaturesCall, N> { + self.call_builder(&checkSignaturesCall { + msgHash, + quorumNumbers, + referenceBlockNumber, + params, + }) + } + ///Creates a new call builder for the [`createNewTask`] function. + pub fn createNewTask( + &self, + numberToBeSquared: alloy::sol_types::private::primitives::aliases::U256, + quorumThresholdPercentage: u32, + quorumNumbers: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder<T, &P, createNewTaskCall, N> { + self.call_builder(&createNewTaskCall { + numberToBeSquared, + quorumThresholdPercentage, + quorumNumbers, + }) + } + ///Creates a new call builder for the [`delegation`] function. + pub fn delegation(&self) -> alloy_contract::SolCallBuilder<T, &P, delegationCall, N> { + self.call_builder(&delegationCall {}) + } + ///Creates a new call builder for the [`generator`] function. + pub fn generator(&self) -> alloy_contract::SolCallBuilder<T, &P, generatorCall, N> { + self.call_builder(&generatorCall {}) + } + ///Creates a new call builder for the [`getBatchOperatorFromId`] function. + pub fn getBatchOperatorFromId( + &self, + registryCoordinator: alloy::sol_types::private::Address, + operatorIds: alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>, + ) -> alloy_contract::SolCallBuilder<T, &P, getBatchOperatorFromIdCall, N> { + self.call_builder(&getBatchOperatorFromIdCall { + registryCoordinator, + operatorIds, + }) + } + ///Creates a new call builder for the [`getBatchOperatorId`] function. + pub fn getBatchOperatorId( + &self, + registryCoordinator: alloy::sol_types::private::Address, + operators: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>, + ) -> alloy_contract::SolCallBuilder<T, &P, getBatchOperatorIdCall, N> { + self.call_builder(&getBatchOperatorIdCall { + registryCoordinator, + operators, + }) + } + ///Creates a new call builder for the [`getCheckSignaturesIndices`] function. + pub fn getCheckSignaturesIndices( + &self, + registryCoordinator: alloy::sol_types::private::Address, + referenceBlockNumber: u32, + quorumNumbers: alloy::sol_types::private::Bytes, + nonSignerOperatorIds: alloy::sol_types::private::Vec< + alloy::sol_types::private::FixedBytes<32>, + >, + ) -> alloy_contract::SolCallBuilder<T, &P, getCheckSignaturesIndicesCall, N> { + self.call_builder(&getCheckSignaturesIndicesCall { + registryCoordinator, + referenceBlockNumber, + quorumNumbers, + nonSignerOperatorIds, + }) + } + ///Creates a new call builder for the [`getOperatorState_0`] function. + pub fn getOperatorState_0( + &self, + registryCoordinator: alloy::sol_types::private::Address, + quorumNumbers: alloy::sol_types::private::Bytes, + blockNumber: u32, + ) -> alloy_contract::SolCallBuilder<T, &P, getOperatorState_0Call, N> { + self.call_builder(&getOperatorState_0Call { + registryCoordinator, + quorumNumbers, + blockNumber, + }) + } + ///Creates a new call builder for the [`getOperatorState_1`] function. + pub fn getOperatorState_1( + &self, + registryCoordinator: alloy::sol_types::private::Address, + operatorId: alloy::sol_types::private::FixedBytes<32>, + blockNumber: u32, + ) -> alloy_contract::SolCallBuilder<T, &P, getOperatorState_1Call, N> { + self.call_builder(&getOperatorState_1Call { + registryCoordinator, + operatorId, + blockNumber, + }) + } + ///Creates a new call builder for the [`getQuorumBitmapsAtBlockNumber`] function. + pub fn getQuorumBitmapsAtBlockNumber( + &self, + registryCoordinator: alloy::sol_types::private::Address, + operatorIds: alloy::sol_types::private::Vec<alloy::sol_types::private::FixedBytes<32>>, + blockNumber: u32, + ) -> alloy_contract::SolCallBuilder<T, &P, getQuorumBitmapsAtBlockNumberCall, N> { + self.call_builder(&getQuorumBitmapsAtBlockNumberCall { + registryCoordinator, + operatorIds, + blockNumber, + }) + } + ///Creates a new call builder for the [`getTaskResponseWindowBlock`] function. + pub fn getTaskResponseWindowBlock( + &self, + ) -> alloy_contract::SolCallBuilder<T, &P, getTaskResponseWindowBlockCall, N> { + self.call_builder(&getTaskResponseWindowBlockCall {}) + } + ///Creates a new call builder for the [`initialize`] function. + pub fn initialize( + &self, + initialOwner: alloy::sol_types::private::Address, + _aggregator: alloy::sol_types::private::Address, + _generator: alloy::sol_types::private::Address, + _allocationManager: alloy::sol_types::private::Address, + _slasher: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder<T, &P, initializeCall, N> { + self.call_builder(&initializeCall { + initialOwner, + _aggregator, + _generator, + _allocationManager, + _slasher, + }) + } + ///Creates a new call builder for the [`instantSlasher`] function. + pub fn instantSlasher( + &self, + ) -> alloy_contract::SolCallBuilder<T, &P, instantSlasherCall, N> { + self.call_builder(&instantSlasherCall {}) + } + ///Creates a new call builder for the [`latestTaskNum`] function. + pub fn latestTaskNum(&self) -> alloy_contract::SolCallBuilder<T, &P, latestTaskNumCall, N> { + self.call_builder(&latestTaskNumCall {}) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder<T, &P, ownerCall, N> { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`pause`] function. + pub fn pause( + &self, + newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder<T, &P, pauseCall, N> { + self.call_builder(&pauseCall { newPausedStatus }) + } + ///Creates a new call builder for the [`pauseAll`] function. + pub fn pauseAll(&self) -> alloy_contract::SolCallBuilder<T, &P, pauseAllCall, N> { + self.call_builder(&pauseAllCall {}) + } + ///Creates a new call builder for the [`paused_0`] function. + pub fn paused_0( + &self, + index: u8, + ) -> alloy_contract::SolCallBuilder<T, &P, paused_0Call, N> { + self.call_builder(&paused_0Call { index }) + } + ///Creates a new call builder for the [`paused_1`] function. + pub fn paused_1(&self) -> alloy_contract::SolCallBuilder<T, &P, paused_1Call, N> { + self.call_builder(&paused_1Call {}) + } + ///Creates a new call builder for the [`pauserRegistry`] function. + pub fn pauserRegistry( + &self, + ) -> alloy_contract::SolCallBuilder<T, &P, pauserRegistryCall, N> { + self.call_builder(&pauserRegistryCall {}) + } + ///Creates a new call builder for the [`raiseAndResolveChallenge`] function. + pub fn raiseAndResolveChallenge( + &self, + task: <IIncredibleSquaringTaskManager::Task as alloy::sol_types::SolType>::RustType, + taskResponse: <IIncredibleSquaringTaskManager::TaskResponse as alloy::sol_types::SolType>::RustType, + taskResponseMetadata: <IIncredibleSquaringTaskManager::TaskResponseMetadata as alloy::sol_types::SolType>::RustType, + pubkeysOfNonSigningOperators: alloy::sol_types::private::Vec< + <BN254::G1Point as alloy::sol_types::SolType>::RustType, + >, + ) -> alloy_contract::SolCallBuilder<T, &P, raiseAndResolveChallengeCall, N> { + self.call_builder(&raiseAndResolveChallengeCall { + task, + taskResponse, + taskResponseMetadata, + pubkeysOfNonSigningOperators, + }) + } + ///Creates a new call builder for the [`registryCoordinator`] function. + pub fn registryCoordinator( + &self, + ) -> alloy_contract::SolCallBuilder<T, &P, registryCoordinatorCall, N> { + self.call_builder(®istryCoordinatorCall {}) + } + ///Creates a new call builder for the [`renounceOwnership`] function. + pub fn renounceOwnership( + &self, + ) -> alloy_contract::SolCallBuilder<T, &P, renounceOwnershipCall, N> { + self.call_builder(&renounceOwnershipCall {}) + } + ///Creates a new call builder for the [`respondToTask`] function. + pub fn respondToTask( + &self, + task: <IIncredibleSquaringTaskManager::Task as alloy::sol_types::SolType>::RustType, + taskResponse: <IIncredibleSquaringTaskManager::TaskResponse as alloy::sol_types::SolType>::RustType, + nonSignerStakesAndSignature: <IBLSSignatureCheckerTypes::NonSignerStakesAndSignature as alloy::sol_types::SolType>::RustType, + ) -> alloy_contract::SolCallBuilder<T, &P, respondToTaskCall, N> { + self.call_builder(&respondToTaskCall { + task, + taskResponse, + nonSignerStakesAndSignature, + }) + } + ///Creates a new call builder for the [`serviceManager`] function. + pub fn serviceManager( + &self, + ) -> alloy_contract::SolCallBuilder<T, &P, serviceManagerCall, N> { + self.call_builder(&serviceManagerCall {}) + } + ///Creates a new call builder for the [`setStaleStakesForbidden`] function. + pub fn setStaleStakesForbidden( + &self, + value: bool, + ) -> alloy_contract::SolCallBuilder<T, &P, setStaleStakesForbiddenCall, N> { + self.call_builder(&setStaleStakesForbiddenCall { value }) + } + ///Creates a new call builder for the [`stakeRegistry`] function. + pub fn stakeRegistry(&self) -> alloy_contract::SolCallBuilder<T, &P, stakeRegistryCall, N> { + self.call_builder(&stakeRegistryCall {}) + } + ///Creates a new call builder for the [`staleStakesForbidden`] function. + pub fn staleStakesForbidden( + &self, + ) -> alloy_contract::SolCallBuilder<T, &P, staleStakesForbiddenCall, N> { + self.call_builder(&staleStakesForbiddenCall {}) + } + ///Creates a new call builder for the [`taskNumber`] function. + pub fn taskNumber(&self) -> alloy_contract::SolCallBuilder<T, &P, taskNumberCall, N> { + self.call_builder(&taskNumberCall {}) + } + ///Creates a new call builder for the [`taskSuccesfullyChallenged`] function. + pub fn taskSuccesfullyChallenged( + &self, + _0: u32, + ) -> alloy_contract::SolCallBuilder<T, &P, taskSuccesfullyChallengedCall, N> { + self.call_builder(&taskSuccesfullyChallengedCall { _0 }) + } + ///Creates a new call builder for the [`transferOwnership`] function. + pub fn transferOwnership( + &self, + newOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder<T, &P, transferOwnershipCall, N> { + self.call_builder(&transferOwnershipCall { newOwner }) + } + ///Creates a new call builder for the [`trySignatureAndApkVerification`] function. + pub fn trySignatureAndApkVerification( + &self, + msgHash: alloy::sol_types::private::FixedBytes<32>, + apk: <BN254::G1Point as alloy::sol_types::SolType>::RustType, + apkG2: <BN254::G2Point as alloy::sol_types::SolType>::RustType, + sigma: <BN254::G1Point as alloy::sol_types::SolType>::RustType, + ) -> alloy_contract::SolCallBuilder<T, &P, trySignatureAndApkVerificationCall, N> { + self.call_builder(&trySignatureAndApkVerificationCall { + msgHash, + apk, + apkG2, + sigma, + }) + } + ///Creates a new call builder for the [`unpause`] function. + pub fn unpause( + &self, + newPausedStatus: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder<T, &P, unpauseCall, N> { + self.call_builder(&unpauseCall { newPausedStatus }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider<T, N>, + N: alloy_contract::private::Network, + > IncredibleSquaringTaskManagerInstance<T, P, N> + { + /// 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<E: alloy_sol_types::SolEvent>( + &self, + ) -> alloy_contract::Event<T, &P, E, N> { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Initialized`] event. + pub fn Initialized_filter(&self) -> alloy_contract::Event<T, &P, Initialized, N> { + self.event_filter::<Initialized>() + } + ///Creates a new event filter for the [`NewTaskCreated`] event. + pub fn NewTaskCreated_filter(&self) -> alloy_contract::Event<T, &P, NewTaskCreated, N> { + self.event_filter::<NewTaskCreated>() + } + ///Creates a new event filter for the [`OwnershipTransferred`] event. + pub fn OwnershipTransferred_filter( + &self, + ) -> alloy_contract::Event<T, &P, OwnershipTransferred, N> { + self.event_filter::<OwnershipTransferred>() + } + ///Creates a new event filter for the [`Paused`] event. + pub fn Paused_filter(&self) -> alloy_contract::Event<T, &P, Paused, N> { + self.event_filter::<Paused>() + } + ///Creates a new event filter for the [`StaleStakesForbiddenUpdate`] event. + pub fn StaleStakesForbiddenUpdate_filter( + &self, + ) -> alloy_contract::Event<T, &P, StaleStakesForbiddenUpdate, N> { + self.event_filter::<StaleStakesForbiddenUpdate>() + } + ///Creates a new event filter for the [`TaskChallengedSuccessfully`] event. + pub fn TaskChallengedSuccessfully_filter( + &self, + ) -> alloy_contract::Event<T, &P, TaskChallengedSuccessfully, N> { + self.event_filter::<TaskChallengedSuccessfully>() + } + ///Creates a new event filter for the [`TaskChallengedUnsuccessfully`] event. + pub fn TaskChallengedUnsuccessfully_filter( + &self, + ) -> alloy_contract::Event<T, &P, TaskChallengedUnsuccessfully, N> { + self.event_filter::<TaskChallengedUnsuccessfully>() + } + ///Creates a new event filter for the [`TaskCompleted`] event. + pub fn TaskCompleted_filter(&self) -> alloy_contract::Event<T, &P, TaskCompleted, N> { + self.event_filter::<TaskCompleted>() + } + ///Creates a new event filter for the [`TaskResponded`] event. + pub fn TaskResponded_filter(&self) -> alloy_contract::Event<T, &P, TaskResponded, N> { + self.event_filter::<TaskResponded>() + } + ///Creates a new event filter for the [`Unpaused`] event. + pub fn Unpaused_filter(&self) -> alloy_contract::Event<T, &P, Unpaused, N> { + self.event_filter::<Unpaused>() + } + } +} diff --git a/examples/aggregator/src/bindings/mod.rs b/examples/aggregator/src/bindings/mod.rs new file mode 100644 index 000000000..c25490a7b --- /dev/null +++ b/examples/aggregator/src/bindings/mod.rs @@ -0,0 +1,6 @@ +#![allow(unused_imports, clippy::all, rustdoc::all)] +//! This module contains the sol! generated bindings for solidity contracts. +//! This is autogenerated code. +//! Do not manually edit these files. +//! These files may be overwritten by the codegen system at any time. +pub mod r#iincrediblesquaringtaskmanager; diff --git a/examples/aggregator/src/main.rs b/examples/aggregator/src/main.rs new file mode 100644 index 000000000..725bf2ca0 --- /dev/null +++ b/examples/aggregator/src/main.rs @@ -0,0 +1,135 @@ +use alloy::network::EthereumWallet; +use alloy::primitives::{Address, U256}; +use alloy::providers::ProviderBuilder; +use alloy::signers::local::PrivateKeySigner; +use alloy::transports::http::reqwest::Url; +use alloy::{ + contract::private::{Provider, Transport}, + network::Network, +}; +use bindings::iincrediblesquaringtaskmanager::IBLSSignatureCheckerTypes::NonSignerStakesAndSignature as ContractNonSignerStakesAndSignature; +use bindings::iincrediblesquaringtaskmanager::IIncredibleSquaringTaskManager::{ + Task as ContractTask, TaskResponse as ContractTaskResponse, +}; +use bindings::iincrediblesquaringtaskmanager::IncredibleSquaringTaskManager::IncredibleSquaringTaskManagerInstance; +use bindings::iincrediblesquaringtaskmanager::IncredibleSquaringTaskManager::NewTaskCreated; +use bindings::iincrediblesquaringtaskmanager::BN254::{G1Point, G2Point}; +use eigen_aggregator::{Aggregator, AggregatorConfig}; +use eigen_task_processor::task::Task; +use eigen_task_processor::task_manager::{TaskManagerContract, TaskManagerError}; +use eigen_task_processor::task_response::TaskResponse; +use eigen_task_processor::IndexingTaskProcessor; +use eigen_utils::slashing::middleware::iblssignaturechecker::IBLSSignatureCheckerTypes::NonSignerStakesAndSignature; +use std::str::FromStr; + +pub mod bindings; + +impl<T, P, N> TaskManagerContract<T, P, N> for IncredibleSquaringTaskManagerInstance<T, P, N> +where + T: Transport + Clone + Send + Sync, + P: Provider<T, N>, + N: Network, +{ + type Input = U256; + type Output = U256; + type NewTaskEvent = NewTaskCreated; + + async fn respond_to_task( + &self, + task: Task<Self::Input>, + response: TaskResponse<Self::Output>, + non_signer_stakes_and_signature: NonSignerStakesAndSignature, + ) -> Result<(), TaskManagerError> { + let contract_task = ContractTask { + numberToBeSquared: task.input, + taskCreatedBlock: task.task_created_block, + quorumNumbers: task.quorum_numbers, + quorumThresholdPercentage: task.quorum_threshold_percentage, + }; + + let contract_response = ContractTaskResponse { + numberSquared: response.response, + referenceTaskIndex: response.task_index, + }; + + let apk_g2 = G2Point { + X: non_signer_stakes_and_signature.apkG2.X, + Y: non_signer_stakes_and_signature.apkG2.Y, + }; + + let sigma = G1Point { + X: non_signer_stakes_and_signature.sigma.X, + Y: non_signer_stakes_and_signature.sigma.Y, + }; + + let quorum_apks = non_signer_stakes_and_signature + .quorumApks + .iter() + .map(|apk| G1Point { X: apk.X, Y: apk.Y }) + .collect(); + + let non_signer_pubkeys = non_signer_stakes_and_signature + .nonSignerPubkeys + .iter() + .map(|pubkey| G1Point { + X: pubkey.X, + Y: pubkey.Y, + }) + .collect(); + + let non_signer_stakes_and_signature = ContractNonSignerStakesAndSignature { + nonSignerStakeIndices: non_signer_stakes_and_signature.nonSignerStakeIndices, + nonSignerQuorumBitmapIndices: non_signer_stakes_and_signature + .nonSignerQuorumBitmapIndices, + quorumApkIndices: non_signer_stakes_and_signature.quorumApkIndices, + totalStakeIndices: non_signer_stakes_and_signature.totalStakeIndices, + apkG2: apk_g2, + quorumApks: quorum_apks, + nonSignerPubkeys: non_signer_pubkeys, + sigma, + }; + + self.respondToTask( + contract_task, + contract_response, + non_signer_stakes_and_signature, + ) + .send() + .await + .unwrap() + .get_receipt() + .await + .unwrap(); + + Ok(()) + } +} + +#[tokio::main] +async fn main() { + let registry_coordinator = + Address::from_str("0x7969c5ed335650692bc04293b07f5bf2e7a673c0").unwrap(); + let operator_state_retriever = + Address::from_str("0x1429859428c0abc9c2c47c8ee9fbaf82cfa0f20f").unwrap(); + let http_rpc_url = "http://localhost:8545".to_string(); + let signer = "0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80"; + let task_manager_address = + Address::from_str("0x742d35cc6634c0532925a3b844f51254ab06f58e").unwrap(); + let url = Url::parse(&http_rpc_url).unwrap(); + let wallet = EthereumWallet::new(PrivateKeySigner::from_str(signer).unwrap()); + let provider = ProviderBuilder::new().wallet(wallet).on_http(url); + + let contract = IncredibleSquaringTaskManagerInstance::new(task_manager_address, provider); + let task_processor = IndexingTaskProcessor::new(contract); + + let config = AggregatorConfig { + server_address: "http://localhost:8080".to_string(), + http_rpc_url: "http://localhost:8545".to_string(), + ws_rpc_url: "ws://localhost:8545".to_string(), + registry_coordinator, + operator_state_retriever, + }; + + let aggregator = Aggregator::new(config, task_processor).await.unwrap(); + aggregator.start().await.unwrap(); +}