hotshot_contract_adapter/bindings/
light_client_v3_mock.rs

1///Module containing a contract's types and functions.
2/**
3
4```solidity
5library BN254 {
6    type BaseField is uint256;
7    type ScalarField is uint256;
8    struct G1Point { BaseField x; BaseField y; }
9}
10```*/
11#[allow(
12    non_camel_case_types,
13    non_snake_case,
14    clippy::pub_underscore_fields,
15    clippy::style,
16    clippy::empty_structs_with_brackets
17)]
18pub mod BN254 {
19    use super::*;
20    use alloy::sol_types as alloy_sol_types;
21    #[derive(serde::Serialize, serde::Deserialize)]
22    #[derive(Default, Debug, PartialEq, Eq, Hash)]
23    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
24    #[derive(Clone)]
25    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
26    const _: () = {
27        use alloy::sol_types as alloy_sol_types;
28        #[automatically_derived]
29        impl alloy_sol_types::private::SolTypeValue<BaseField>
30        for alloy::sol_types::private::primitives::aliases::U256 {
31            #[inline]
32            fn stv_to_tokens(
33                &self,
34            ) -> <alloy::sol_types::sol_data::Uint<
35                256,
36            > as alloy_sol_types::SolType>::Token<'_> {
37                alloy_sol_types::private::SolTypeValue::<
38                    alloy::sol_types::sol_data::Uint<256>,
39                >::stv_to_tokens(self)
40            }
41            #[inline]
42            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
43                <alloy::sol_types::sol_data::Uint<
44                    256,
45                > as alloy_sol_types::SolType>::tokenize(self)
46                    .0
47            }
48            #[inline]
49            fn stv_abi_encode_packed_to(
50                &self,
51                out: &mut alloy_sol_types::private::Vec<u8>,
52            ) {
53                <alloy::sol_types::sol_data::Uint<
54                    256,
55                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
56            }
57            #[inline]
58            fn stv_abi_packed_encoded_size(&self) -> usize {
59                <alloy::sol_types::sol_data::Uint<
60                    256,
61                > as alloy_sol_types::SolType>::abi_encoded_size(self)
62            }
63        }
64        #[automatically_derived]
65        impl BaseField {
66            /// The Solidity type name.
67            pub const NAME: &'static str = stringify!(@ name);
68            /// Convert from the underlying value type.
69            #[inline]
70            pub const fn from_underlying(
71                value: alloy::sol_types::private::primitives::aliases::U256,
72            ) -> Self {
73                Self(value)
74            }
75            /// Return the underlying value.
76            #[inline]
77            pub const fn into_underlying(
78                self,
79            ) -> alloy::sol_types::private::primitives::aliases::U256 {
80                self.0
81            }
82            /// Return the single encoding of this value, delegating to the
83            /// underlying type.
84            #[inline]
85            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
86                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
87            }
88            /// Return the packed encoding of this value, delegating to the
89            /// underlying type.
90            #[inline]
91            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
92                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
93            }
94        }
95        #[automatically_derived]
96        impl From<alloy::sol_types::private::primitives::aliases::U256> for BaseField {
97            fn from(
98                value: alloy::sol_types::private::primitives::aliases::U256,
99            ) -> Self {
100                Self::from_underlying(value)
101            }
102        }
103        #[automatically_derived]
104        impl From<BaseField> for alloy::sol_types::private::primitives::aliases::U256 {
105            fn from(value: BaseField) -> Self {
106                value.into_underlying()
107            }
108        }
109        #[automatically_derived]
110        impl alloy_sol_types::SolType for BaseField {
111            type RustType = alloy::sol_types::private::primitives::aliases::U256;
112            type Token<'a> = <alloy::sol_types::sol_data::Uint<
113                256,
114            > as alloy_sol_types::SolType>::Token<'a>;
115            const SOL_NAME: &'static str = Self::NAME;
116            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
117                256,
118            > as alloy_sol_types::SolType>::ENCODED_SIZE;
119            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
120                256,
121            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
122            #[inline]
123            fn valid_token(token: &Self::Token<'_>) -> bool {
124                Self::type_check(token).is_ok()
125            }
126            #[inline]
127            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
128                <alloy::sol_types::sol_data::Uint<
129                    256,
130                > as alloy_sol_types::SolType>::type_check(token)
131            }
132            #[inline]
133            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
134                <alloy::sol_types::sol_data::Uint<
135                    256,
136                > as alloy_sol_types::SolType>::detokenize(token)
137            }
138        }
139        #[automatically_derived]
140        impl alloy_sol_types::EventTopic for BaseField {
141            #[inline]
142            fn topic_preimage_length(rust: &Self::RustType) -> usize {
143                <alloy::sol_types::sol_data::Uint<
144                    256,
145                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
146            }
147            #[inline]
148            fn encode_topic_preimage(
149                rust: &Self::RustType,
150                out: &mut alloy_sol_types::private::Vec<u8>,
151            ) {
152                <alloy::sol_types::sol_data::Uint<
153                    256,
154                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
155            }
156            #[inline]
157            fn encode_topic(
158                rust: &Self::RustType,
159            ) -> alloy_sol_types::abi::token::WordToken {
160                <alloy::sol_types::sol_data::Uint<
161                    256,
162                > as alloy_sol_types::EventTopic>::encode_topic(rust)
163            }
164        }
165    };
166    #[derive(serde::Serialize, serde::Deserialize)]
167    #[derive(Default, Debug, PartialEq, Eq, Hash)]
168    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
169    #[derive(Clone)]
170    pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
171    const _: () = {
172        use alloy::sol_types as alloy_sol_types;
173        #[automatically_derived]
174        impl alloy_sol_types::private::SolTypeValue<ScalarField>
175        for alloy::sol_types::private::primitives::aliases::U256 {
176            #[inline]
177            fn stv_to_tokens(
178                &self,
179            ) -> <alloy::sol_types::sol_data::Uint<
180                256,
181            > as alloy_sol_types::SolType>::Token<'_> {
182                alloy_sol_types::private::SolTypeValue::<
183                    alloy::sol_types::sol_data::Uint<256>,
184                >::stv_to_tokens(self)
185            }
186            #[inline]
187            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
188                <alloy::sol_types::sol_data::Uint<
189                    256,
190                > as alloy_sol_types::SolType>::tokenize(self)
191                    .0
192            }
193            #[inline]
194            fn stv_abi_encode_packed_to(
195                &self,
196                out: &mut alloy_sol_types::private::Vec<u8>,
197            ) {
198                <alloy::sol_types::sol_data::Uint<
199                    256,
200                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
201            }
202            #[inline]
203            fn stv_abi_packed_encoded_size(&self) -> usize {
204                <alloy::sol_types::sol_data::Uint<
205                    256,
206                > as alloy_sol_types::SolType>::abi_encoded_size(self)
207            }
208        }
209        #[automatically_derived]
210        impl ScalarField {
211            /// The Solidity type name.
212            pub const NAME: &'static str = stringify!(@ name);
213            /// Convert from the underlying value type.
214            #[inline]
215            pub const fn from_underlying(
216                value: alloy::sol_types::private::primitives::aliases::U256,
217            ) -> Self {
218                Self(value)
219            }
220            /// Return the underlying value.
221            #[inline]
222            pub const fn into_underlying(
223                self,
224            ) -> alloy::sol_types::private::primitives::aliases::U256 {
225                self.0
226            }
227            /// Return the single encoding of this value, delegating to the
228            /// underlying type.
229            #[inline]
230            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
231                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
232            }
233            /// Return the packed encoding of this value, delegating to the
234            /// underlying type.
235            #[inline]
236            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
237                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
238            }
239        }
240        #[automatically_derived]
241        impl From<alloy::sol_types::private::primitives::aliases::U256> for ScalarField {
242            fn from(
243                value: alloy::sol_types::private::primitives::aliases::U256,
244            ) -> Self {
245                Self::from_underlying(value)
246            }
247        }
248        #[automatically_derived]
249        impl From<ScalarField> for alloy::sol_types::private::primitives::aliases::U256 {
250            fn from(value: ScalarField) -> Self {
251                value.into_underlying()
252            }
253        }
254        #[automatically_derived]
255        impl alloy_sol_types::SolType for ScalarField {
256            type RustType = alloy::sol_types::private::primitives::aliases::U256;
257            type Token<'a> = <alloy::sol_types::sol_data::Uint<
258                256,
259            > as alloy_sol_types::SolType>::Token<'a>;
260            const SOL_NAME: &'static str = Self::NAME;
261            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
262                256,
263            > as alloy_sol_types::SolType>::ENCODED_SIZE;
264            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
265                256,
266            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
267            #[inline]
268            fn valid_token(token: &Self::Token<'_>) -> bool {
269                Self::type_check(token).is_ok()
270            }
271            #[inline]
272            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
273                <alloy::sol_types::sol_data::Uint<
274                    256,
275                > as alloy_sol_types::SolType>::type_check(token)
276            }
277            #[inline]
278            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
279                <alloy::sol_types::sol_data::Uint<
280                    256,
281                > as alloy_sol_types::SolType>::detokenize(token)
282            }
283        }
284        #[automatically_derived]
285        impl alloy_sol_types::EventTopic for ScalarField {
286            #[inline]
287            fn topic_preimage_length(rust: &Self::RustType) -> usize {
288                <alloy::sol_types::sol_data::Uint<
289                    256,
290                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
291            }
292            #[inline]
293            fn encode_topic_preimage(
294                rust: &Self::RustType,
295                out: &mut alloy_sol_types::private::Vec<u8>,
296            ) {
297                <alloy::sol_types::sol_data::Uint<
298                    256,
299                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
300            }
301            #[inline]
302            fn encode_topic(
303                rust: &Self::RustType,
304            ) -> alloy_sol_types::abi::token::WordToken {
305                <alloy::sol_types::sol_data::Uint<
306                    256,
307                > as alloy_sol_types::EventTopic>::encode_topic(rust)
308            }
309        }
310    };
311    #[derive(serde::Serialize, serde::Deserialize)]
312    #[derive(Default, Debug, PartialEq, Eq, Hash)]
313    /**```solidity
314struct G1Point { BaseField x; BaseField y; }
315```*/
316    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
317    #[derive(Clone)]
318    pub struct G1Point {
319        #[allow(missing_docs)]
320        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
321        #[allow(missing_docs)]
322        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
323    }
324    #[allow(
325        non_camel_case_types,
326        non_snake_case,
327        clippy::pub_underscore_fields,
328        clippy::style
329    )]
330    const _: () = {
331        use alloy::sol_types as alloy_sol_types;
332        #[doc(hidden)]
333        #[allow(dead_code)]
334        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
335        #[doc(hidden)]
336        type UnderlyingRustTuple<'a> = (
337            <BaseField as alloy::sol_types::SolType>::RustType,
338            <BaseField as alloy::sol_types::SolType>::RustType,
339        );
340        #[cfg(test)]
341        #[allow(dead_code, unreachable_patterns)]
342        fn _type_assertion(
343            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
344        ) {
345            match _t {
346                alloy_sol_types::private::AssertTypeEq::<
347                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
348                >(_) => {}
349            }
350        }
351        #[automatically_derived]
352        #[doc(hidden)]
353        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
354            fn from(value: G1Point) -> Self {
355                (value.x, value.y)
356            }
357        }
358        #[automatically_derived]
359        #[doc(hidden)]
360        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
361            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
362                Self { x: tuple.0, y: tuple.1 }
363            }
364        }
365        #[automatically_derived]
366        impl alloy_sol_types::SolValue for G1Point {
367            type SolType = Self;
368        }
369        #[automatically_derived]
370        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
371            #[inline]
372            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
373                (
374                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
375                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
376                )
377            }
378            #[inline]
379            fn stv_abi_encoded_size(&self) -> usize {
380                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
381                    return size;
382                }
383                let tuple = <UnderlyingRustTuple<
384                    '_,
385                > as ::core::convert::From<Self>>::from(self.clone());
386                <UnderlyingSolTuple<
387                    '_,
388                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
389            }
390            #[inline]
391            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
392                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
393            }
394            #[inline]
395            fn stv_abi_encode_packed_to(
396                &self,
397                out: &mut alloy_sol_types::private::Vec<u8>,
398            ) {
399                let tuple = <UnderlyingRustTuple<
400                    '_,
401                > as ::core::convert::From<Self>>::from(self.clone());
402                <UnderlyingSolTuple<
403                    '_,
404                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
405            }
406            #[inline]
407            fn stv_abi_packed_encoded_size(&self) -> usize {
408                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
409                    return size;
410                }
411                let tuple = <UnderlyingRustTuple<
412                    '_,
413                > as ::core::convert::From<Self>>::from(self.clone());
414                <UnderlyingSolTuple<
415                    '_,
416                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
417            }
418        }
419        #[automatically_derived]
420        impl alloy_sol_types::SolType for G1Point {
421            type RustType = Self;
422            type Token<'a> = <UnderlyingSolTuple<
423                'a,
424            > as alloy_sol_types::SolType>::Token<'a>;
425            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
426            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
427                '_,
428            > as alloy_sol_types::SolType>::ENCODED_SIZE;
429            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
430                '_,
431            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
432            #[inline]
433            fn valid_token(token: &Self::Token<'_>) -> bool {
434                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
435            }
436            #[inline]
437            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
438                let tuple = <UnderlyingSolTuple<
439                    '_,
440                > as alloy_sol_types::SolType>::detokenize(token);
441                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
442            }
443        }
444        #[automatically_derived]
445        impl alloy_sol_types::SolStruct for G1Point {
446            const NAME: &'static str = "G1Point";
447            #[inline]
448            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
449                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
450            }
451            #[inline]
452            fn eip712_components() -> alloy_sol_types::private::Vec<
453                alloy_sol_types::private::Cow<'static, str>,
454            > {
455                alloy_sol_types::private::Vec::new()
456            }
457            #[inline]
458            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
459                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
460            }
461            #[inline]
462            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
463                [
464                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
465                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
466                ]
467                    .concat()
468            }
469        }
470        #[automatically_derived]
471        impl alloy_sol_types::EventTopic for G1Point {
472            #[inline]
473            fn topic_preimage_length(rust: &Self::RustType) -> usize {
474                0usize
475                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
476                        &rust.x,
477                    )
478                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
479                        &rust.y,
480                    )
481            }
482            #[inline]
483            fn encode_topic_preimage(
484                rust: &Self::RustType,
485                out: &mut alloy_sol_types::private::Vec<u8>,
486            ) {
487                out.reserve(
488                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
489                );
490                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
491                    &rust.x,
492                    out,
493                );
494                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
495                    &rust.y,
496                    out,
497                );
498            }
499            #[inline]
500            fn encode_topic(
501                rust: &Self::RustType,
502            ) -> alloy_sol_types::abi::token::WordToken {
503                let mut out = alloy_sol_types::private::Vec::new();
504                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
505                    rust,
506                    &mut out,
507                );
508                alloy_sol_types::abi::token::WordToken(
509                    alloy_sol_types::private::keccak256(out),
510                )
511            }
512        }
513    };
514    use alloy::contract as alloy_contract;
515    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
516
517See the [wrapper's documentation](`BN254Instance`) for more details.*/
518    #[inline]
519    pub const fn new<
520        P: alloy_contract::private::Provider<N>,
521        N: alloy_contract::private::Network,
522    >(address: alloy_sol_types::private::Address, __provider: P) -> BN254Instance<P, N> {
523        BN254Instance::<P, N>::new(address, __provider)
524    }
525    /**A [`BN254`](self) instance.
526
527Contains type-safe methods for interacting with an on-chain instance of the
528[`BN254`](self) contract located at a given `address`, using a given
529provider `P`.
530
531If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
532documentation on how to provide it), the `deploy` and `deploy_builder` methods can
533be used to deploy a new instance of the contract.
534
535See the [module-level documentation](self) for all the available methods.*/
536    #[derive(Clone)]
537    pub struct BN254Instance<P, N = alloy_contract::private::Ethereum> {
538        address: alloy_sol_types::private::Address,
539        provider: P,
540        _network: ::core::marker::PhantomData<N>,
541    }
542    #[automatically_derived]
543    impl<P, N> ::core::fmt::Debug for BN254Instance<P, N> {
544        #[inline]
545        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
546            f.debug_tuple("BN254Instance").field(&self.address).finish()
547        }
548    }
549    /// Instantiation and getters/setters.
550    #[automatically_derived]
551    impl<
552        P: alloy_contract::private::Provider<N>,
553        N: alloy_contract::private::Network,
554    > BN254Instance<P, N> {
555        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
556
557See the [wrapper's documentation](`BN254Instance`) for more details.*/
558        #[inline]
559        pub const fn new(
560            address: alloy_sol_types::private::Address,
561            __provider: P,
562        ) -> Self {
563            Self {
564                address,
565                provider: __provider,
566                _network: ::core::marker::PhantomData,
567            }
568        }
569        /// Returns a reference to the address.
570        #[inline]
571        pub const fn address(&self) -> &alloy_sol_types::private::Address {
572            &self.address
573        }
574        /// Sets the address.
575        #[inline]
576        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
577            self.address = address;
578        }
579        /// Sets the address and returns `self`.
580        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
581            self.set_address(address);
582            self
583        }
584        /// Returns a reference to the provider.
585        #[inline]
586        pub const fn provider(&self) -> &P {
587            &self.provider
588        }
589    }
590    impl<P: ::core::clone::Clone, N> BN254Instance<&P, N> {
591        /// Clones the provider and returns a new instance with the cloned provider.
592        #[inline]
593        pub fn with_cloned_provider(self) -> BN254Instance<P, N> {
594            BN254Instance {
595                address: self.address,
596                provider: ::core::clone::Clone::clone(&self.provider),
597                _network: ::core::marker::PhantomData,
598            }
599        }
600    }
601    /// Function calls.
602    #[automatically_derived]
603    impl<
604        P: alloy_contract::private::Provider<N>,
605        N: alloy_contract::private::Network,
606    > BN254Instance<P, N> {
607        /// Creates a new call builder using this contract instance's provider and address.
608        ///
609        /// Note that the call can be any function call, not just those defined in this
610        /// contract. Prefer using the other methods for building type-safe contract calls.
611        pub fn call_builder<C: alloy_sol_types::SolCall>(
612            &self,
613            call: &C,
614        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
615            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
616        }
617    }
618    /// Event filters.
619    #[automatically_derived]
620    impl<
621        P: alloy_contract::private::Provider<N>,
622        N: alloy_contract::private::Network,
623    > BN254Instance<P, N> {
624        /// Creates a new event filter using this contract instance's provider and address.
625        ///
626        /// Note that the type can be any event, not just those defined in this contract.
627        /// Prefer using the other methods for building type-safe event filters.
628        pub fn event_filter<E: alloy_sol_types::SolEvent>(
629            &self,
630        ) -> alloy_contract::Event<&P, E, N> {
631            alloy_contract::Event::new_sol(&self.provider, &self.address)
632        }
633    }
634}
635///Module containing a contract's types and functions.
636/**
637
638```solidity
639library IPlonkVerifier {
640    struct PlonkProof { BN254.G1Point wire0; BN254.G1Point wire1; BN254.G1Point wire2; BN254.G1Point wire3; BN254.G1Point wire4; BN254.G1Point prodPerm; BN254.G1Point split0; BN254.G1Point split1; BN254.G1Point split2; BN254.G1Point split3; BN254.G1Point split4; BN254.G1Point zeta; BN254.G1Point zetaOmega; BN254.ScalarField wireEval0; BN254.ScalarField wireEval1; BN254.ScalarField wireEval2; BN254.ScalarField wireEval3; BN254.ScalarField wireEval4; BN254.ScalarField sigmaEval0; BN254.ScalarField sigmaEval1; BN254.ScalarField sigmaEval2; BN254.ScalarField sigmaEval3; BN254.ScalarField prodPermZetaOmegaEval; }
641    struct VerifyingKey { uint256 domainSize; uint256 numInputs; BN254.G1Point sigma0; BN254.G1Point sigma1; BN254.G1Point sigma2; BN254.G1Point sigma3; BN254.G1Point sigma4; BN254.G1Point q1; BN254.G1Point q2; BN254.G1Point q3; BN254.G1Point q4; BN254.G1Point qM12; BN254.G1Point qM34; BN254.G1Point qO; BN254.G1Point qC; BN254.G1Point qH1; BN254.G1Point qH2; BN254.G1Point qH3; BN254.G1Point qH4; BN254.G1Point qEcc; bytes32 g2LSB; bytes32 g2MSB; }
642}
643```*/
644#[allow(
645    non_camel_case_types,
646    non_snake_case,
647    clippy::pub_underscore_fields,
648    clippy::style,
649    clippy::empty_structs_with_brackets
650)]
651pub mod IPlonkVerifier {
652    use super::*;
653    use alloy::sol_types as alloy_sol_types;
654    #[derive(serde::Serialize, serde::Deserialize)]
655    #[derive()]
656    /**```solidity
657struct PlonkProof { BN254.G1Point wire0; BN254.G1Point wire1; BN254.G1Point wire2; BN254.G1Point wire3; BN254.G1Point wire4; BN254.G1Point prodPerm; BN254.G1Point split0; BN254.G1Point split1; BN254.G1Point split2; BN254.G1Point split3; BN254.G1Point split4; BN254.G1Point zeta; BN254.G1Point zetaOmega; BN254.ScalarField wireEval0; BN254.ScalarField wireEval1; BN254.ScalarField wireEval2; BN254.ScalarField wireEval3; BN254.ScalarField wireEval4; BN254.ScalarField sigmaEval0; BN254.ScalarField sigmaEval1; BN254.ScalarField sigmaEval2; BN254.ScalarField sigmaEval3; BN254.ScalarField prodPermZetaOmegaEval; }
658```*/
659    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
660    #[derive(Clone)]
661    pub struct PlonkProof {
662        #[allow(missing_docs)]
663        pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
664        #[allow(missing_docs)]
665        pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
666        #[allow(missing_docs)]
667        pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
668        #[allow(missing_docs)]
669        pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
670        #[allow(missing_docs)]
671        pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
672        #[allow(missing_docs)]
673        pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
674        #[allow(missing_docs)]
675        pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
676        #[allow(missing_docs)]
677        pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
678        #[allow(missing_docs)]
679        pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
680        #[allow(missing_docs)]
681        pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
682        #[allow(missing_docs)]
683        pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
684        #[allow(missing_docs)]
685        pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
686        #[allow(missing_docs)]
687        pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
688        #[allow(missing_docs)]
689        pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
690        #[allow(missing_docs)]
691        pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
692        #[allow(missing_docs)]
693        pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
694        #[allow(missing_docs)]
695        pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
696        #[allow(missing_docs)]
697        pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
698        #[allow(missing_docs)]
699        pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
700        #[allow(missing_docs)]
701        pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
702        #[allow(missing_docs)]
703        pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
704        #[allow(missing_docs)]
705        pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
706        #[allow(missing_docs)]
707        pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
708    }
709    #[allow(
710        non_camel_case_types,
711        non_snake_case,
712        clippy::pub_underscore_fields,
713        clippy::style
714    )]
715    const _: () = {
716        use alloy::sol_types as alloy_sol_types;
717        #[doc(hidden)]
718        #[allow(dead_code)]
719        type UnderlyingSolTuple<'a> = (
720            BN254::G1Point,
721            BN254::G1Point,
722            BN254::G1Point,
723            BN254::G1Point,
724            BN254::G1Point,
725            BN254::G1Point,
726            BN254::G1Point,
727            BN254::G1Point,
728            BN254::G1Point,
729            BN254::G1Point,
730            BN254::G1Point,
731            BN254::G1Point,
732            BN254::G1Point,
733            BN254::ScalarField,
734            BN254::ScalarField,
735            BN254::ScalarField,
736            BN254::ScalarField,
737            BN254::ScalarField,
738            BN254::ScalarField,
739            BN254::ScalarField,
740            BN254::ScalarField,
741            BN254::ScalarField,
742            BN254::ScalarField,
743        );
744        #[doc(hidden)]
745        type UnderlyingRustTuple<'a> = (
746            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
747            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
748            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
749            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
750            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
751            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
752            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
753            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
754            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
755            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
756            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
757            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
758            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
759            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
760            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
761            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
762            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
763            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
764            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
765            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
766            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
767            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
768            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
769        );
770        #[cfg(test)]
771        #[allow(dead_code, unreachable_patterns)]
772        fn _type_assertion(
773            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
774        ) {
775            match _t {
776                alloy_sol_types::private::AssertTypeEq::<
777                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
778                >(_) => {}
779            }
780        }
781        #[automatically_derived]
782        #[doc(hidden)]
783        impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
784            fn from(value: PlonkProof) -> Self {
785                (
786                    value.wire0,
787                    value.wire1,
788                    value.wire2,
789                    value.wire3,
790                    value.wire4,
791                    value.prodPerm,
792                    value.split0,
793                    value.split1,
794                    value.split2,
795                    value.split3,
796                    value.split4,
797                    value.zeta,
798                    value.zetaOmega,
799                    value.wireEval0,
800                    value.wireEval1,
801                    value.wireEval2,
802                    value.wireEval3,
803                    value.wireEval4,
804                    value.sigmaEval0,
805                    value.sigmaEval1,
806                    value.sigmaEval2,
807                    value.sigmaEval3,
808                    value.prodPermZetaOmegaEval,
809                )
810            }
811        }
812        #[automatically_derived]
813        #[doc(hidden)]
814        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
815            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
816                Self {
817                    wire0: tuple.0,
818                    wire1: tuple.1,
819                    wire2: tuple.2,
820                    wire3: tuple.3,
821                    wire4: tuple.4,
822                    prodPerm: tuple.5,
823                    split0: tuple.6,
824                    split1: tuple.7,
825                    split2: tuple.8,
826                    split3: tuple.9,
827                    split4: tuple.10,
828                    zeta: tuple.11,
829                    zetaOmega: tuple.12,
830                    wireEval0: tuple.13,
831                    wireEval1: tuple.14,
832                    wireEval2: tuple.15,
833                    wireEval3: tuple.16,
834                    wireEval4: tuple.17,
835                    sigmaEval0: tuple.18,
836                    sigmaEval1: tuple.19,
837                    sigmaEval2: tuple.20,
838                    sigmaEval3: tuple.21,
839                    prodPermZetaOmegaEval: tuple.22,
840                }
841            }
842        }
843        #[automatically_derived]
844        impl alloy_sol_types::SolValue for PlonkProof {
845            type SolType = Self;
846        }
847        #[automatically_derived]
848        impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
849            #[inline]
850            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
851                (
852                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
853                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
854                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
855                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
856                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
857                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
858                        &self.prodPerm,
859                    ),
860                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
861                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
862                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
863                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
864                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
865                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
866                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
867                        &self.zetaOmega,
868                    ),
869                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
870                        &self.wireEval0,
871                    ),
872                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
873                        &self.wireEval1,
874                    ),
875                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
876                        &self.wireEval2,
877                    ),
878                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
879                        &self.wireEval3,
880                    ),
881                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
882                        &self.wireEval4,
883                    ),
884                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
885                        &self.sigmaEval0,
886                    ),
887                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
888                        &self.sigmaEval1,
889                    ),
890                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
891                        &self.sigmaEval2,
892                    ),
893                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
894                        &self.sigmaEval3,
895                    ),
896                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
897                        &self.prodPermZetaOmegaEval,
898                    ),
899                )
900            }
901            #[inline]
902            fn stv_abi_encoded_size(&self) -> usize {
903                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
904                    return size;
905                }
906                let tuple = <UnderlyingRustTuple<
907                    '_,
908                > as ::core::convert::From<Self>>::from(self.clone());
909                <UnderlyingSolTuple<
910                    '_,
911                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
912            }
913            #[inline]
914            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
915                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
916            }
917            #[inline]
918            fn stv_abi_encode_packed_to(
919                &self,
920                out: &mut alloy_sol_types::private::Vec<u8>,
921            ) {
922                let tuple = <UnderlyingRustTuple<
923                    '_,
924                > as ::core::convert::From<Self>>::from(self.clone());
925                <UnderlyingSolTuple<
926                    '_,
927                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
928            }
929            #[inline]
930            fn stv_abi_packed_encoded_size(&self) -> usize {
931                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
932                    return size;
933                }
934                let tuple = <UnderlyingRustTuple<
935                    '_,
936                > as ::core::convert::From<Self>>::from(self.clone());
937                <UnderlyingSolTuple<
938                    '_,
939                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
940            }
941        }
942        #[automatically_derived]
943        impl alloy_sol_types::SolType for PlonkProof {
944            type RustType = Self;
945            type Token<'a> = <UnderlyingSolTuple<
946                'a,
947            > as alloy_sol_types::SolType>::Token<'a>;
948            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
949            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
950                '_,
951            > as alloy_sol_types::SolType>::ENCODED_SIZE;
952            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
953                '_,
954            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
955            #[inline]
956            fn valid_token(token: &Self::Token<'_>) -> bool {
957                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
958            }
959            #[inline]
960            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
961                let tuple = <UnderlyingSolTuple<
962                    '_,
963                > as alloy_sol_types::SolType>::detokenize(token);
964                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
965            }
966        }
967        #[automatically_derived]
968        impl alloy_sol_types::SolStruct for PlonkProof {
969            const NAME: &'static str = "PlonkProof";
970            #[inline]
971            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
972                alloy_sol_types::private::Cow::Borrowed(
973                    "PlonkProof(G1Point wire0,G1Point wire1,G1Point wire2,G1Point wire3,G1Point wire4,G1Point prodPerm,G1Point split0,G1Point split1,G1Point split2,G1Point split3,G1Point split4,G1Point zeta,G1Point zetaOmega,uint256 wireEval0,uint256 wireEval1,uint256 wireEval2,uint256 wireEval3,uint256 wireEval4,uint256 sigmaEval0,uint256 sigmaEval1,uint256 sigmaEval2,uint256 sigmaEval3,uint256 prodPermZetaOmegaEval)",
974                )
975            }
976            #[inline]
977            fn eip712_components() -> alloy_sol_types::private::Vec<
978                alloy_sol_types::private::Cow<'static, str>,
979            > {
980                let mut components = alloy_sol_types::private::Vec::with_capacity(13);
981                components
982                    .push(
983                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
984                    );
985                components
986                    .extend(
987                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
988                    );
989                components
990                    .push(
991                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
992                    );
993                components
994                    .extend(
995                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
996                    );
997                components
998                    .push(
999                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1000                    );
1001                components
1002                    .extend(
1003                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1004                    );
1005                components
1006                    .push(
1007                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1008                    );
1009                components
1010                    .extend(
1011                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1012                    );
1013                components
1014                    .push(
1015                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1016                    );
1017                components
1018                    .extend(
1019                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1020                    );
1021                components
1022                    .push(
1023                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1024                    );
1025                components
1026                    .extend(
1027                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1028                    );
1029                components
1030                    .push(
1031                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1032                    );
1033                components
1034                    .extend(
1035                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1036                    );
1037                components
1038                    .push(
1039                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1040                    );
1041                components
1042                    .extend(
1043                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1044                    );
1045                components
1046                    .push(
1047                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1048                    );
1049                components
1050                    .extend(
1051                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1052                    );
1053                components
1054                    .push(
1055                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1056                    );
1057                components
1058                    .extend(
1059                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1060                    );
1061                components
1062                    .push(
1063                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1064                    );
1065                components
1066                    .extend(
1067                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1068                    );
1069                components
1070                    .push(
1071                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1072                    );
1073                components
1074                    .extend(
1075                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1076                    );
1077                components
1078                    .push(
1079                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1080                    );
1081                components
1082                    .extend(
1083                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1084                    );
1085                components
1086            }
1087            #[inline]
1088            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1089                [
1090                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1091                            &self.wire0,
1092                        )
1093                        .0,
1094                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1095                            &self.wire1,
1096                        )
1097                        .0,
1098                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1099                            &self.wire2,
1100                        )
1101                        .0,
1102                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1103                            &self.wire3,
1104                        )
1105                        .0,
1106                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1107                            &self.wire4,
1108                        )
1109                        .0,
1110                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1111                            &self.prodPerm,
1112                        )
1113                        .0,
1114                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1115                            &self.split0,
1116                        )
1117                        .0,
1118                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1119                            &self.split1,
1120                        )
1121                        .0,
1122                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1123                            &self.split2,
1124                        )
1125                        .0,
1126                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1127                            &self.split3,
1128                        )
1129                        .0,
1130                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1131                            &self.split4,
1132                        )
1133                        .0,
1134                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1135                            &self.zeta,
1136                        )
1137                        .0,
1138                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1139                            &self.zetaOmega,
1140                        )
1141                        .0,
1142                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1143                            &self.wireEval0,
1144                        )
1145                        .0,
1146                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1147                            &self.wireEval1,
1148                        )
1149                        .0,
1150                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1151                            &self.wireEval2,
1152                        )
1153                        .0,
1154                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1155                            &self.wireEval3,
1156                        )
1157                        .0,
1158                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1159                            &self.wireEval4,
1160                        )
1161                        .0,
1162                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1163                            &self.sigmaEval0,
1164                        )
1165                        .0,
1166                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1167                            &self.sigmaEval1,
1168                        )
1169                        .0,
1170                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1171                            &self.sigmaEval2,
1172                        )
1173                        .0,
1174                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1175                            &self.sigmaEval3,
1176                        )
1177                        .0,
1178                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1179                            &self.prodPermZetaOmegaEval,
1180                        )
1181                        .0,
1182                ]
1183                    .concat()
1184            }
1185        }
1186        #[automatically_derived]
1187        impl alloy_sol_types::EventTopic for PlonkProof {
1188            #[inline]
1189            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1190                0usize
1191                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1192                        &rust.wire0,
1193                    )
1194                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1195                        &rust.wire1,
1196                    )
1197                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1198                        &rust.wire2,
1199                    )
1200                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1201                        &rust.wire3,
1202                    )
1203                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1204                        &rust.wire4,
1205                    )
1206                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1207                        &rust.prodPerm,
1208                    )
1209                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1210                        &rust.split0,
1211                    )
1212                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1213                        &rust.split1,
1214                    )
1215                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1216                        &rust.split2,
1217                    )
1218                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1219                        &rust.split3,
1220                    )
1221                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1222                        &rust.split4,
1223                    )
1224                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1225                        &rust.zeta,
1226                    )
1227                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1228                        &rust.zetaOmega,
1229                    )
1230                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1231                        &rust.wireEval0,
1232                    )
1233                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1234                        &rust.wireEval1,
1235                    )
1236                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1237                        &rust.wireEval2,
1238                    )
1239                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1240                        &rust.wireEval3,
1241                    )
1242                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1243                        &rust.wireEval4,
1244                    )
1245                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1246                        &rust.sigmaEval0,
1247                    )
1248                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1249                        &rust.sigmaEval1,
1250                    )
1251                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1252                        &rust.sigmaEval2,
1253                    )
1254                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1255                        &rust.sigmaEval3,
1256                    )
1257                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1258                        &rust.prodPermZetaOmegaEval,
1259                    )
1260            }
1261            #[inline]
1262            fn encode_topic_preimage(
1263                rust: &Self::RustType,
1264                out: &mut alloy_sol_types::private::Vec<u8>,
1265            ) {
1266                out.reserve(
1267                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1268                );
1269                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1270                    &rust.wire0,
1271                    out,
1272                );
1273                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1274                    &rust.wire1,
1275                    out,
1276                );
1277                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1278                    &rust.wire2,
1279                    out,
1280                );
1281                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1282                    &rust.wire3,
1283                    out,
1284                );
1285                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1286                    &rust.wire4,
1287                    out,
1288                );
1289                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1290                    &rust.prodPerm,
1291                    out,
1292                );
1293                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1294                    &rust.split0,
1295                    out,
1296                );
1297                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1298                    &rust.split1,
1299                    out,
1300                );
1301                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1302                    &rust.split2,
1303                    out,
1304                );
1305                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1306                    &rust.split3,
1307                    out,
1308                );
1309                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1310                    &rust.split4,
1311                    out,
1312                );
1313                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1314                    &rust.zeta,
1315                    out,
1316                );
1317                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1318                    &rust.zetaOmega,
1319                    out,
1320                );
1321                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1322                    &rust.wireEval0,
1323                    out,
1324                );
1325                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1326                    &rust.wireEval1,
1327                    out,
1328                );
1329                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1330                    &rust.wireEval2,
1331                    out,
1332                );
1333                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1334                    &rust.wireEval3,
1335                    out,
1336                );
1337                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1338                    &rust.wireEval4,
1339                    out,
1340                );
1341                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1342                    &rust.sigmaEval0,
1343                    out,
1344                );
1345                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1346                    &rust.sigmaEval1,
1347                    out,
1348                );
1349                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1350                    &rust.sigmaEval2,
1351                    out,
1352                );
1353                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1354                    &rust.sigmaEval3,
1355                    out,
1356                );
1357                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1358                    &rust.prodPermZetaOmegaEval,
1359                    out,
1360                );
1361            }
1362            #[inline]
1363            fn encode_topic(
1364                rust: &Self::RustType,
1365            ) -> alloy_sol_types::abi::token::WordToken {
1366                let mut out = alloy_sol_types::private::Vec::new();
1367                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1368                    rust,
1369                    &mut out,
1370                );
1371                alloy_sol_types::abi::token::WordToken(
1372                    alloy_sol_types::private::keccak256(out),
1373                )
1374            }
1375        }
1376    };
1377    #[derive(serde::Serialize, serde::Deserialize)]
1378    #[derive()]
1379    /**```solidity
1380struct VerifyingKey { uint256 domainSize; uint256 numInputs; BN254.G1Point sigma0; BN254.G1Point sigma1; BN254.G1Point sigma2; BN254.G1Point sigma3; BN254.G1Point sigma4; BN254.G1Point q1; BN254.G1Point q2; BN254.G1Point q3; BN254.G1Point q4; BN254.G1Point qM12; BN254.G1Point qM34; BN254.G1Point qO; BN254.G1Point qC; BN254.G1Point qH1; BN254.G1Point qH2; BN254.G1Point qH3; BN254.G1Point qH4; BN254.G1Point qEcc; bytes32 g2LSB; bytes32 g2MSB; }
1381```*/
1382    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1383    #[derive(Clone)]
1384    pub struct VerifyingKey {
1385        #[allow(missing_docs)]
1386        pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1387        #[allow(missing_docs)]
1388        pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1389        #[allow(missing_docs)]
1390        pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1391        #[allow(missing_docs)]
1392        pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1393        #[allow(missing_docs)]
1394        pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1395        #[allow(missing_docs)]
1396        pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1397        #[allow(missing_docs)]
1398        pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1399        #[allow(missing_docs)]
1400        pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1401        #[allow(missing_docs)]
1402        pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1403        #[allow(missing_docs)]
1404        pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1405        #[allow(missing_docs)]
1406        pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1407        #[allow(missing_docs)]
1408        pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1409        #[allow(missing_docs)]
1410        pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1411        #[allow(missing_docs)]
1412        pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1413        #[allow(missing_docs)]
1414        pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1415        #[allow(missing_docs)]
1416        pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1417        #[allow(missing_docs)]
1418        pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1419        #[allow(missing_docs)]
1420        pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1421        #[allow(missing_docs)]
1422        pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1423        #[allow(missing_docs)]
1424        pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1425        #[allow(missing_docs)]
1426        pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1427        #[allow(missing_docs)]
1428        pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1429    }
1430    #[allow(
1431        non_camel_case_types,
1432        non_snake_case,
1433        clippy::pub_underscore_fields,
1434        clippy::style
1435    )]
1436    const _: () = {
1437        use alloy::sol_types as alloy_sol_types;
1438        #[doc(hidden)]
1439        #[allow(dead_code)]
1440        type UnderlyingSolTuple<'a> = (
1441            alloy::sol_types::sol_data::Uint<256>,
1442            alloy::sol_types::sol_data::Uint<256>,
1443            BN254::G1Point,
1444            BN254::G1Point,
1445            BN254::G1Point,
1446            BN254::G1Point,
1447            BN254::G1Point,
1448            BN254::G1Point,
1449            BN254::G1Point,
1450            BN254::G1Point,
1451            BN254::G1Point,
1452            BN254::G1Point,
1453            BN254::G1Point,
1454            BN254::G1Point,
1455            BN254::G1Point,
1456            BN254::G1Point,
1457            BN254::G1Point,
1458            BN254::G1Point,
1459            BN254::G1Point,
1460            BN254::G1Point,
1461            alloy::sol_types::sol_data::FixedBytes<32>,
1462            alloy::sol_types::sol_data::FixedBytes<32>,
1463        );
1464        #[doc(hidden)]
1465        type UnderlyingRustTuple<'a> = (
1466            alloy::sol_types::private::primitives::aliases::U256,
1467            alloy::sol_types::private::primitives::aliases::U256,
1468            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1469            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1470            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1471            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1472            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1473            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1474            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1475            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1476            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1477            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1478            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1479            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1480            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1481            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1482            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1483            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1484            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1485            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1486            alloy::sol_types::private::FixedBytes<32>,
1487            alloy::sol_types::private::FixedBytes<32>,
1488        );
1489        #[cfg(test)]
1490        #[allow(dead_code, unreachable_patterns)]
1491        fn _type_assertion(
1492            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1493        ) {
1494            match _t {
1495                alloy_sol_types::private::AssertTypeEq::<
1496                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1497                >(_) => {}
1498            }
1499        }
1500        #[automatically_derived]
1501        #[doc(hidden)]
1502        impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1503            fn from(value: VerifyingKey) -> Self {
1504                (
1505                    value.domainSize,
1506                    value.numInputs,
1507                    value.sigma0,
1508                    value.sigma1,
1509                    value.sigma2,
1510                    value.sigma3,
1511                    value.sigma4,
1512                    value.q1,
1513                    value.q2,
1514                    value.q3,
1515                    value.q4,
1516                    value.qM12,
1517                    value.qM34,
1518                    value.qO,
1519                    value.qC,
1520                    value.qH1,
1521                    value.qH2,
1522                    value.qH3,
1523                    value.qH4,
1524                    value.qEcc,
1525                    value.g2LSB,
1526                    value.g2MSB,
1527                )
1528            }
1529        }
1530        #[automatically_derived]
1531        #[doc(hidden)]
1532        impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1533            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1534                Self {
1535                    domainSize: tuple.0,
1536                    numInputs: tuple.1,
1537                    sigma0: tuple.2,
1538                    sigma1: tuple.3,
1539                    sigma2: tuple.4,
1540                    sigma3: tuple.5,
1541                    sigma4: tuple.6,
1542                    q1: tuple.7,
1543                    q2: tuple.8,
1544                    q3: tuple.9,
1545                    q4: tuple.10,
1546                    qM12: tuple.11,
1547                    qM34: tuple.12,
1548                    qO: tuple.13,
1549                    qC: tuple.14,
1550                    qH1: tuple.15,
1551                    qH2: tuple.16,
1552                    qH3: tuple.17,
1553                    qH4: tuple.18,
1554                    qEcc: tuple.19,
1555                    g2LSB: tuple.20,
1556                    g2MSB: tuple.21,
1557                }
1558            }
1559        }
1560        #[automatically_derived]
1561        impl alloy_sol_types::SolValue for VerifyingKey {
1562            type SolType = Self;
1563        }
1564        #[automatically_derived]
1565        impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1566            #[inline]
1567            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1568                (
1569                    <alloy::sol_types::sol_data::Uint<
1570                        256,
1571                    > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1572                    <alloy::sol_types::sol_data::Uint<
1573                        256,
1574                    > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1575                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1576                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1577                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1578                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1579                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1580                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1581                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1582                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1583                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1584                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1585                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1586                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1587                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1588                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1589                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1590                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1591                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1592                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1593                    <alloy::sol_types::sol_data::FixedBytes<
1594                        32,
1595                    > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1596                    <alloy::sol_types::sol_data::FixedBytes<
1597                        32,
1598                    > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1599                )
1600            }
1601            #[inline]
1602            fn stv_abi_encoded_size(&self) -> usize {
1603                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1604                    return size;
1605                }
1606                let tuple = <UnderlyingRustTuple<
1607                    '_,
1608                > as ::core::convert::From<Self>>::from(self.clone());
1609                <UnderlyingSolTuple<
1610                    '_,
1611                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1612            }
1613            #[inline]
1614            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1615                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1616            }
1617            #[inline]
1618            fn stv_abi_encode_packed_to(
1619                &self,
1620                out: &mut alloy_sol_types::private::Vec<u8>,
1621            ) {
1622                let tuple = <UnderlyingRustTuple<
1623                    '_,
1624                > as ::core::convert::From<Self>>::from(self.clone());
1625                <UnderlyingSolTuple<
1626                    '_,
1627                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1628            }
1629            #[inline]
1630            fn stv_abi_packed_encoded_size(&self) -> usize {
1631                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1632                    return size;
1633                }
1634                let tuple = <UnderlyingRustTuple<
1635                    '_,
1636                > as ::core::convert::From<Self>>::from(self.clone());
1637                <UnderlyingSolTuple<
1638                    '_,
1639                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1640            }
1641        }
1642        #[automatically_derived]
1643        impl alloy_sol_types::SolType for VerifyingKey {
1644            type RustType = Self;
1645            type Token<'a> = <UnderlyingSolTuple<
1646                'a,
1647            > as alloy_sol_types::SolType>::Token<'a>;
1648            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1649            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1650                '_,
1651            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1652            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1653                '_,
1654            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1655            #[inline]
1656            fn valid_token(token: &Self::Token<'_>) -> bool {
1657                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1658            }
1659            #[inline]
1660            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1661                let tuple = <UnderlyingSolTuple<
1662                    '_,
1663                > as alloy_sol_types::SolType>::detokenize(token);
1664                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1665            }
1666        }
1667        #[automatically_derived]
1668        impl alloy_sol_types::SolStruct for VerifyingKey {
1669            const NAME: &'static str = "VerifyingKey";
1670            #[inline]
1671            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1672                alloy_sol_types::private::Cow::Borrowed(
1673                    "VerifyingKey(uint256 domainSize,uint256 numInputs,G1Point sigma0,G1Point sigma1,G1Point sigma2,G1Point sigma3,G1Point sigma4,G1Point q1,G1Point q2,G1Point q3,G1Point q4,G1Point qM12,G1Point qM34,G1Point qO,G1Point qC,G1Point qH1,G1Point qH2,G1Point qH3,G1Point qH4,G1Point qEcc,bytes32 g2LSB,bytes32 g2MSB)",
1674                )
1675            }
1676            #[inline]
1677            fn eip712_components() -> alloy_sol_types::private::Vec<
1678                alloy_sol_types::private::Cow<'static, str>,
1679            > {
1680                let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1681                components
1682                    .push(
1683                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1684                    );
1685                components
1686                    .extend(
1687                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1688                    );
1689                components
1690                    .push(
1691                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1692                    );
1693                components
1694                    .extend(
1695                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1696                    );
1697                components
1698                    .push(
1699                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1700                    );
1701                components
1702                    .extend(
1703                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1704                    );
1705                components
1706                    .push(
1707                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1708                    );
1709                components
1710                    .extend(
1711                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1712                    );
1713                components
1714                    .push(
1715                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1716                    );
1717                components
1718                    .extend(
1719                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1720                    );
1721                components
1722                    .push(
1723                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1724                    );
1725                components
1726                    .extend(
1727                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1728                    );
1729                components
1730                    .push(
1731                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1732                    );
1733                components
1734                    .extend(
1735                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1736                    );
1737                components
1738                    .push(
1739                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1740                    );
1741                components
1742                    .extend(
1743                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1744                    );
1745                components
1746                    .push(
1747                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1748                    );
1749                components
1750                    .extend(
1751                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1752                    );
1753                components
1754                    .push(
1755                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1756                    );
1757                components
1758                    .extend(
1759                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1760                    );
1761                components
1762                    .push(
1763                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1764                    );
1765                components
1766                    .extend(
1767                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1768                    );
1769                components
1770                    .push(
1771                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1772                    );
1773                components
1774                    .extend(
1775                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1776                    );
1777                components
1778                    .push(
1779                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1780                    );
1781                components
1782                    .extend(
1783                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1784                    );
1785                components
1786                    .push(
1787                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1788                    );
1789                components
1790                    .extend(
1791                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1792                    );
1793                components
1794                    .push(
1795                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1796                    );
1797                components
1798                    .extend(
1799                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1800                    );
1801                components
1802                    .push(
1803                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1804                    );
1805                components
1806                    .extend(
1807                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1808                    );
1809                components
1810                    .push(
1811                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1812                    );
1813                components
1814                    .extend(
1815                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1816                    );
1817                components
1818                    .push(
1819                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1820                    );
1821                components
1822                    .extend(
1823                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1824                    );
1825                components
1826            }
1827            #[inline]
1828            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1829                [
1830                    <alloy::sol_types::sol_data::Uint<
1831                        256,
1832                    > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1833                        .0,
1834                    <alloy::sol_types::sol_data::Uint<
1835                        256,
1836                    > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1837                        .0,
1838                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1839                            &self.sigma0,
1840                        )
1841                        .0,
1842                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1843                            &self.sigma1,
1844                        )
1845                        .0,
1846                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1847                            &self.sigma2,
1848                        )
1849                        .0,
1850                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1851                            &self.sigma3,
1852                        )
1853                        .0,
1854                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1855                            &self.sigma4,
1856                        )
1857                        .0,
1858                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1859                            &self.q1,
1860                        )
1861                        .0,
1862                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1863                            &self.q2,
1864                        )
1865                        .0,
1866                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1867                            &self.q3,
1868                        )
1869                        .0,
1870                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1871                            &self.q4,
1872                        )
1873                        .0,
1874                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1875                            &self.qM12,
1876                        )
1877                        .0,
1878                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1879                            &self.qM34,
1880                        )
1881                        .0,
1882                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1883                            &self.qO,
1884                        )
1885                        .0,
1886                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1887                            &self.qC,
1888                        )
1889                        .0,
1890                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1891                            &self.qH1,
1892                        )
1893                        .0,
1894                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1895                            &self.qH2,
1896                        )
1897                        .0,
1898                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1899                            &self.qH3,
1900                        )
1901                        .0,
1902                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1903                            &self.qH4,
1904                        )
1905                        .0,
1906                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1907                            &self.qEcc,
1908                        )
1909                        .0,
1910                    <alloy::sol_types::sol_data::FixedBytes<
1911                        32,
1912                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1913                        .0,
1914                    <alloy::sol_types::sol_data::FixedBytes<
1915                        32,
1916                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1917                        .0,
1918                ]
1919                    .concat()
1920            }
1921        }
1922        #[automatically_derived]
1923        impl alloy_sol_types::EventTopic for VerifyingKey {
1924            #[inline]
1925            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1926                0usize
1927                    + <alloy::sol_types::sol_data::Uint<
1928                        256,
1929                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1930                        &rust.domainSize,
1931                    )
1932                    + <alloy::sol_types::sol_data::Uint<
1933                        256,
1934                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1935                        &rust.numInputs,
1936                    )
1937                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1938                        &rust.sigma0,
1939                    )
1940                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1941                        &rust.sigma1,
1942                    )
1943                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1944                        &rust.sigma2,
1945                    )
1946                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1947                        &rust.sigma3,
1948                    )
1949                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1950                        &rust.sigma4,
1951                    )
1952                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1953                        &rust.q1,
1954                    )
1955                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1956                        &rust.q2,
1957                    )
1958                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1959                        &rust.q3,
1960                    )
1961                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1962                        &rust.q4,
1963                    )
1964                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1965                        &rust.qM12,
1966                    )
1967                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1968                        &rust.qM34,
1969                    )
1970                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1971                        &rust.qO,
1972                    )
1973                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1974                        &rust.qC,
1975                    )
1976                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1977                        &rust.qH1,
1978                    )
1979                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1980                        &rust.qH2,
1981                    )
1982                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1983                        &rust.qH3,
1984                    )
1985                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1986                        &rust.qH4,
1987                    )
1988                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1989                        &rust.qEcc,
1990                    )
1991                    + <alloy::sol_types::sol_data::FixedBytes<
1992                        32,
1993                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1994                    + <alloy::sol_types::sol_data::FixedBytes<
1995                        32,
1996                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1997            }
1998            #[inline]
1999            fn encode_topic_preimage(
2000                rust: &Self::RustType,
2001                out: &mut alloy_sol_types::private::Vec<u8>,
2002            ) {
2003                out.reserve(
2004                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2005                );
2006                <alloy::sol_types::sol_data::Uint<
2007                    256,
2008                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2009                    &rust.domainSize,
2010                    out,
2011                );
2012                <alloy::sol_types::sol_data::Uint<
2013                    256,
2014                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2015                    &rust.numInputs,
2016                    out,
2017                );
2018                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2019                    &rust.sigma0,
2020                    out,
2021                );
2022                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2023                    &rust.sigma1,
2024                    out,
2025                );
2026                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2027                    &rust.sigma2,
2028                    out,
2029                );
2030                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2031                    &rust.sigma3,
2032                    out,
2033                );
2034                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2035                    &rust.sigma4,
2036                    out,
2037                );
2038                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2039                    &rust.q1,
2040                    out,
2041                );
2042                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2043                    &rust.q2,
2044                    out,
2045                );
2046                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2047                    &rust.q3,
2048                    out,
2049                );
2050                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2051                    &rust.q4,
2052                    out,
2053                );
2054                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2055                    &rust.qM12,
2056                    out,
2057                );
2058                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2059                    &rust.qM34,
2060                    out,
2061                );
2062                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2063                    &rust.qO,
2064                    out,
2065                );
2066                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2067                    &rust.qC,
2068                    out,
2069                );
2070                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2071                    &rust.qH1,
2072                    out,
2073                );
2074                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2075                    &rust.qH2,
2076                    out,
2077                );
2078                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2079                    &rust.qH3,
2080                    out,
2081                );
2082                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2083                    &rust.qH4,
2084                    out,
2085                );
2086                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2087                    &rust.qEcc,
2088                    out,
2089                );
2090                <alloy::sol_types::sol_data::FixedBytes<
2091                    32,
2092                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2093                    &rust.g2LSB,
2094                    out,
2095                );
2096                <alloy::sol_types::sol_data::FixedBytes<
2097                    32,
2098                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2099                    &rust.g2MSB,
2100                    out,
2101                );
2102            }
2103            #[inline]
2104            fn encode_topic(
2105                rust: &Self::RustType,
2106            ) -> alloy_sol_types::abi::token::WordToken {
2107                let mut out = alloy_sol_types::private::Vec::new();
2108                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2109                    rust,
2110                    &mut out,
2111                );
2112                alloy_sol_types::abi::token::WordToken(
2113                    alloy_sol_types::private::keccak256(out),
2114                )
2115            }
2116        }
2117    };
2118    use alloy::contract as alloy_contract;
2119    /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2120
2121See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2122    #[inline]
2123    pub const fn new<
2124        P: alloy_contract::private::Provider<N>,
2125        N: alloy_contract::private::Network,
2126    >(
2127        address: alloy_sol_types::private::Address,
2128        __provider: P,
2129    ) -> IPlonkVerifierInstance<P, N> {
2130        IPlonkVerifierInstance::<P, N>::new(address, __provider)
2131    }
2132    /**A [`IPlonkVerifier`](self) instance.
2133
2134Contains type-safe methods for interacting with an on-chain instance of the
2135[`IPlonkVerifier`](self) contract located at a given `address`, using a given
2136provider `P`.
2137
2138If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2139documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2140be used to deploy a new instance of the contract.
2141
2142See the [module-level documentation](self) for all the available methods.*/
2143    #[derive(Clone)]
2144    pub struct IPlonkVerifierInstance<P, N = alloy_contract::private::Ethereum> {
2145        address: alloy_sol_types::private::Address,
2146        provider: P,
2147        _network: ::core::marker::PhantomData<N>,
2148    }
2149    #[automatically_derived]
2150    impl<P, N> ::core::fmt::Debug for IPlonkVerifierInstance<P, N> {
2151        #[inline]
2152        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2153            f.debug_tuple("IPlonkVerifierInstance").field(&self.address).finish()
2154        }
2155    }
2156    /// Instantiation and getters/setters.
2157    #[automatically_derived]
2158    impl<
2159        P: alloy_contract::private::Provider<N>,
2160        N: alloy_contract::private::Network,
2161    > IPlonkVerifierInstance<P, N> {
2162        /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2163
2164See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2165        #[inline]
2166        pub const fn new(
2167            address: alloy_sol_types::private::Address,
2168            __provider: P,
2169        ) -> Self {
2170            Self {
2171                address,
2172                provider: __provider,
2173                _network: ::core::marker::PhantomData,
2174            }
2175        }
2176        /// Returns a reference to the address.
2177        #[inline]
2178        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2179            &self.address
2180        }
2181        /// Sets the address.
2182        #[inline]
2183        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2184            self.address = address;
2185        }
2186        /// Sets the address and returns `self`.
2187        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2188            self.set_address(address);
2189            self
2190        }
2191        /// Returns a reference to the provider.
2192        #[inline]
2193        pub const fn provider(&self) -> &P {
2194            &self.provider
2195        }
2196    }
2197    impl<P: ::core::clone::Clone, N> IPlonkVerifierInstance<&P, N> {
2198        /// Clones the provider and returns a new instance with the cloned provider.
2199        #[inline]
2200        pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<P, N> {
2201            IPlonkVerifierInstance {
2202                address: self.address,
2203                provider: ::core::clone::Clone::clone(&self.provider),
2204                _network: ::core::marker::PhantomData,
2205            }
2206        }
2207    }
2208    /// Function calls.
2209    #[automatically_derived]
2210    impl<
2211        P: alloy_contract::private::Provider<N>,
2212        N: alloy_contract::private::Network,
2213    > IPlonkVerifierInstance<P, N> {
2214        /// Creates a new call builder using this contract instance's provider and address.
2215        ///
2216        /// Note that the call can be any function call, not just those defined in this
2217        /// contract. Prefer using the other methods for building type-safe contract calls.
2218        pub fn call_builder<C: alloy_sol_types::SolCall>(
2219            &self,
2220            call: &C,
2221        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2222            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2223        }
2224    }
2225    /// Event filters.
2226    #[automatically_derived]
2227    impl<
2228        P: alloy_contract::private::Provider<N>,
2229        N: alloy_contract::private::Network,
2230    > IPlonkVerifierInstance<P, N> {
2231        /// Creates a new event filter using this contract instance's provider and address.
2232        ///
2233        /// Note that the type can be any event, not just those defined in this contract.
2234        /// Prefer using the other methods for building type-safe event filters.
2235        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2236            &self,
2237        ) -> alloy_contract::Event<&P, E, N> {
2238            alloy_contract::Event::new_sol(&self.provider, &self.address)
2239        }
2240    }
2241}
2242///Module containing a contract's types and functions.
2243/**
2244
2245```solidity
2246library LightClient {
2247    struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2248    struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2249    struct StateHistoryCommitment { uint64 l1BlockHeight; uint64 l1BlockTimestamp; uint64 hotShotBlockHeight; BN254.ScalarField hotShotBlockCommRoot; }
2250}
2251```*/
2252#[allow(
2253    non_camel_case_types,
2254    non_snake_case,
2255    clippy::pub_underscore_fields,
2256    clippy::style,
2257    clippy::empty_structs_with_brackets
2258)]
2259pub mod LightClient {
2260    use super::*;
2261    use alloy::sol_types as alloy_sol_types;
2262    #[derive(serde::Serialize, serde::Deserialize)]
2263    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2264    /**```solidity
2265struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2266```*/
2267    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2268    #[derive(Clone)]
2269    pub struct LightClientState {
2270        #[allow(missing_docs)]
2271        pub viewNum: u64,
2272        #[allow(missing_docs)]
2273        pub blockHeight: u64,
2274        #[allow(missing_docs)]
2275        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2276    }
2277    #[allow(
2278        non_camel_case_types,
2279        non_snake_case,
2280        clippy::pub_underscore_fields,
2281        clippy::style
2282    )]
2283    const _: () = {
2284        use alloy::sol_types as alloy_sol_types;
2285        #[doc(hidden)]
2286        #[allow(dead_code)]
2287        type UnderlyingSolTuple<'a> = (
2288            alloy::sol_types::sol_data::Uint<64>,
2289            alloy::sol_types::sol_data::Uint<64>,
2290            BN254::ScalarField,
2291        );
2292        #[doc(hidden)]
2293        type UnderlyingRustTuple<'a> = (
2294            u64,
2295            u64,
2296            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2297        );
2298        #[cfg(test)]
2299        #[allow(dead_code, unreachable_patterns)]
2300        fn _type_assertion(
2301            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2302        ) {
2303            match _t {
2304                alloy_sol_types::private::AssertTypeEq::<
2305                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2306                >(_) => {}
2307            }
2308        }
2309        #[automatically_derived]
2310        #[doc(hidden)]
2311        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
2312            fn from(value: LightClientState) -> Self {
2313                (value.viewNum, value.blockHeight, value.blockCommRoot)
2314            }
2315        }
2316        #[automatically_derived]
2317        #[doc(hidden)]
2318        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
2319            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2320                Self {
2321                    viewNum: tuple.0,
2322                    blockHeight: tuple.1,
2323                    blockCommRoot: tuple.2,
2324                }
2325            }
2326        }
2327        #[automatically_derived]
2328        impl alloy_sol_types::SolValue for LightClientState {
2329            type SolType = Self;
2330        }
2331        #[automatically_derived]
2332        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
2333            #[inline]
2334            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2335                (
2336                    <alloy::sol_types::sol_data::Uint<
2337                        64,
2338                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
2339                    <alloy::sol_types::sol_data::Uint<
2340                        64,
2341                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
2342                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2343                        &self.blockCommRoot,
2344                    ),
2345                )
2346            }
2347            #[inline]
2348            fn stv_abi_encoded_size(&self) -> usize {
2349                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2350                    return size;
2351                }
2352                let tuple = <UnderlyingRustTuple<
2353                    '_,
2354                > as ::core::convert::From<Self>>::from(self.clone());
2355                <UnderlyingSolTuple<
2356                    '_,
2357                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2358            }
2359            #[inline]
2360            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2361                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2362            }
2363            #[inline]
2364            fn stv_abi_encode_packed_to(
2365                &self,
2366                out: &mut alloy_sol_types::private::Vec<u8>,
2367            ) {
2368                let tuple = <UnderlyingRustTuple<
2369                    '_,
2370                > as ::core::convert::From<Self>>::from(self.clone());
2371                <UnderlyingSolTuple<
2372                    '_,
2373                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2374            }
2375            #[inline]
2376            fn stv_abi_packed_encoded_size(&self) -> usize {
2377                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2378                    return size;
2379                }
2380                let tuple = <UnderlyingRustTuple<
2381                    '_,
2382                > as ::core::convert::From<Self>>::from(self.clone());
2383                <UnderlyingSolTuple<
2384                    '_,
2385                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2386            }
2387        }
2388        #[automatically_derived]
2389        impl alloy_sol_types::SolType for LightClientState {
2390            type RustType = Self;
2391            type Token<'a> = <UnderlyingSolTuple<
2392                'a,
2393            > as alloy_sol_types::SolType>::Token<'a>;
2394            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2395            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2396                '_,
2397            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2398            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2399                '_,
2400            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2401            #[inline]
2402            fn valid_token(token: &Self::Token<'_>) -> bool {
2403                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2404            }
2405            #[inline]
2406            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2407                let tuple = <UnderlyingSolTuple<
2408                    '_,
2409                > as alloy_sol_types::SolType>::detokenize(token);
2410                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2411            }
2412        }
2413        #[automatically_derived]
2414        impl alloy_sol_types::SolStruct for LightClientState {
2415            const NAME: &'static str = "LightClientState";
2416            #[inline]
2417            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2418                alloy_sol_types::private::Cow::Borrowed(
2419                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
2420                )
2421            }
2422            #[inline]
2423            fn eip712_components() -> alloy_sol_types::private::Vec<
2424                alloy_sol_types::private::Cow<'static, str>,
2425            > {
2426                alloy_sol_types::private::Vec::new()
2427            }
2428            #[inline]
2429            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2430                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2431            }
2432            #[inline]
2433            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2434                [
2435                    <alloy::sol_types::sol_data::Uint<
2436                        64,
2437                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
2438                        .0,
2439                    <alloy::sol_types::sol_data::Uint<
2440                        64,
2441                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
2442                        .0,
2443                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2444                            &self.blockCommRoot,
2445                        )
2446                        .0,
2447                ]
2448                    .concat()
2449            }
2450        }
2451        #[automatically_derived]
2452        impl alloy_sol_types::EventTopic for LightClientState {
2453            #[inline]
2454            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2455                0usize
2456                    + <alloy::sol_types::sol_data::Uint<
2457                        64,
2458                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2459                        &rust.viewNum,
2460                    )
2461                    + <alloy::sol_types::sol_data::Uint<
2462                        64,
2463                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2464                        &rust.blockHeight,
2465                    )
2466                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2467                        &rust.blockCommRoot,
2468                    )
2469            }
2470            #[inline]
2471            fn encode_topic_preimage(
2472                rust: &Self::RustType,
2473                out: &mut alloy_sol_types::private::Vec<u8>,
2474            ) {
2475                out.reserve(
2476                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2477                );
2478                <alloy::sol_types::sol_data::Uint<
2479                    64,
2480                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2481                    &rust.viewNum,
2482                    out,
2483                );
2484                <alloy::sol_types::sol_data::Uint<
2485                    64,
2486                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2487                    &rust.blockHeight,
2488                    out,
2489                );
2490                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2491                    &rust.blockCommRoot,
2492                    out,
2493                );
2494            }
2495            #[inline]
2496            fn encode_topic(
2497                rust: &Self::RustType,
2498            ) -> alloy_sol_types::abi::token::WordToken {
2499                let mut out = alloy_sol_types::private::Vec::new();
2500                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2501                    rust,
2502                    &mut out,
2503                );
2504                alloy_sol_types::abi::token::WordToken(
2505                    alloy_sol_types::private::keccak256(out),
2506                )
2507            }
2508        }
2509    };
2510    #[derive(serde::Serialize, serde::Deserialize)]
2511    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2512    /**```solidity
2513struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2514```*/
2515    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2516    #[derive(Clone)]
2517    pub struct StakeTableState {
2518        #[allow(missing_docs)]
2519        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
2520        #[allow(missing_docs)]
2521        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2522        #[allow(missing_docs)]
2523        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2524        #[allow(missing_docs)]
2525        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2526    }
2527    #[allow(
2528        non_camel_case_types,
2529        non_snake_case,
2530        clippy::pub_underscore_fields,
2531        clippy::style
2532    )]
2533    const _: () = {
2534        use alloy::sol_types as alloy_sol_types;
2535        #[doc(hidden)]
2536        #[allow(dead_code)]
2537        type UnderlyingSolTuple<'a> = (
2538            alloy::sol_types::sol_data::Uint<256>,
2539            BN254::ScalarField,
2540            BN254::ScalarField,
2541            BN254::ScalarField,
2542        );
2543        #[doc(hidden)]
2544        type UnderlyingRustTuple<'a> = (
2545            alloy::sol_types::private::primitives::aliases::U256,
2546            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2547            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2548            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2549        );
2550        #[cfg(test)]
2551        #[allow(dead_code, unreachable_patterns)]
2552        fn _type_assertion(
2553            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2554        ) {
2555            match _t {
2556                alloy_sol_types::private::AssertTypeEq::<
2557                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2558                >(_) => {}
2559            }
2560        }
2561        #[automatically_derived]
2562        #[doc(hidden)]
2563        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
2564            fn from(value: StakeTableState) -> Self {
2565                (
2566                    value.threshold,
2567                    value.blsKeyComm,
2568                    value.schnorrKeyComm,
2569                    value.amountComm,
2570                )
2571            }
2572        }
2573        #[automatically_derived]
2574        #[doc(hidden)]
2575        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
2576            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2577                Self {
2578                    threshold: tuple.0,
2579                    blsKeyComm: tuple.1,
2580                    schnorrKeyComm: tuple.2,
2581                    amountComm: tuple.3,
2582                }
2583            }
2584        }
2585        #[automatically_derived]
2586        impl alloy_sol_types::SolValue for StakeTableState {
2587            type SolType = Self;
2588        }
2589        #[automatically_derived]
2590        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
2591            #[inline]
2592            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2593                (
2594                    <alloy::sol_types::sol_data::Uint<
2595                        256,
2596                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
2597                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2598                        &self.blsKeyComm,
2599                    ),
2600                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2601                        &self.schnorrKeyComm,
2602                    ),
2603                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2604                        &self.amountComm,
2605                    ),
2606                )
2607            }
2608            #[inline]
2609            fn stv_abi_encoded_size(&self) -> usize {
2610                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2611                    return size;
2612                }
2613                let tuple = <UnderlyingRustTuple<
2614                    '_,
2615                > as ::core::convert::From<Self>>::from(self.clone());
2616                <UnderlyingSolTuple<
2617                    '_,
2618                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2619            }
2620            #[inline]
2621            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2622                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2623            }
2624            #[inline]
2625            fn stv_abi_encode_packed_to(
2626                &self,
2627                out: &mut alloy_sol_types::private::Vec<u8>,
2628            ) {
2629                let tuple = <UnderlyingRustTuple<
2630                    '_,
2631                > as ::core::convert::From<Self>>::from(self.clone());
2632                <UnderlyingSolTuple<
2633                    '_,
2634                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2635            }
2636            #[inline]
2637            fn stv_abi_packed_encoded_size(&self) -> usize {
2638                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2639                    return size;
2640                }
2641                let tuple = <UnderlyingRustTuple<
2642                    '_,
2643                > as ::core::convert::From<Self>>::from(self.clone());
2644                <UnderlyingSolTuple<
2645                    '_,
2646                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2647            }
2648        }
2649        #[automatically_derived]
2650        impl alloy_sol_types::SolType for StakeTableState {
2651            type RustType = Self;
2652            type Token<'a> = <UnderlyingSolTuple<
2653                'a,
2654            > as alloy_sol_types::SolType>::Token<'a>;
2655            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2656            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2657                '_,
2658            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2659            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2660                '_,
2661            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2662            #[inline]
2663            fn valid_token(token: &Self::Token<'_>) -> bool {
2664                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2665            }
2666            #[inline]
2667            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2668                let tuple = <UnderlyingSolTuple<
2669                    '_,
2670                > as alloy_sol_types::SolType>::detokenize(token);
2671                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2672            }
2673        }
2674        #[automatically_derived]
2675        impl alloy_sol_types::SolStruct for StakeTableState {
2676            const NAME: &'static str = "StakeTableState";
2677            #[inline]
2678            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2679                alloy_sol_types::private::Cow::Borrowed(
2680                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
2681                )
2682            }
2683            #[inline]
2684            fn eip712_components() -> alloy_sol_types::private::Vec<
2685                alloy_sol_types::private::Cow<'static, str>,
2686            > {
2687                alloy_sol_types::private::Vec::new()
2688            }
2689            #[inline]
2690            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2691                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2692            }
2693            #[inline]
2694            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2695                [
2696                    <alloy::sol_types::sol_data::Uint<
2697                        256,
2698                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
2699                        .0,
2700                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2701                            &self.blsKeyComm,
2702                        )
2703                        .0,
2704                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2705                            &self.schnorrKeyComm,
2706                        )
2707                        .0,
2708                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2709                            &self.amountComm,
2710                        )
2711                        .0,
2712                ]
2713                    .concat()
2714            }
2715        }
2716        #[automatically_derived]
2717        impl alloy_sol_types::EventTopic for StakeTableState {
2718            #[inline]
2719            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2720                0usize
2721                    + <alloy::sol_types::sol_data::Uint<
2722                        256,
2723                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2724                        &rust.threshold,
2725                    )
2726                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2727                        &rust.blsKeyComm,
2728                    )
2729                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2730                        &rust.schnorrKeyComm,
2731                    )
2732                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2733                        &rust.amountComm,
2734                    )
2735            }
2736            #[inline]
2737            fn encode_topic_preimage(
2738                rust: &Self::RustType,
2739                out: &mut alloy_sol_types::private::Vec<u8>,
2740            ) {
2741                out.reserve(
2742                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2743                );
2744                <alloy::sol_types::sol_data::Uint<
2745                    256,
2746                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2747                    &rust.threshold,
2748                    out,
2749                );
2750                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2751                    &rust.blsKeyComm,
2752                    out,
2753                );
2754                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2755                    &rust.schnorrKeyComm,
2756                    out,
2757                );
2758                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2759                    &rust.amountComm,
2760                    out,
2761                );
2762            }
2763            #[inline]
2764            fn encode_topic(
2765                rust: &Self::RustType,
2766            ) -> alloy_sol_types::abi::token::WordToken {
2767                let mut out = alloy_sol_types::private::Vec::new();
2768                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2769                    rust,
2770                    &mut out,
2771                );
2772                alloy_sol_types::abi::token::WordToken(
2773                    alloy_sol_types::private::keccak256(out),
2774                )
2775            }
2776        }
2777    };
2778    #[derive(serde::Serialize, serde::Deserialize)]
2779    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2780    /**```solidity
2781struct StateHistoryCommitment { uint64 l1BlockHeight; uint64 l1BlockTimestamp; uint64 hotShotBlockHeight; BN254.ScalarField hotShotBlockCommRoot; }
2782```*/
2783    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2784    #[derive(Clone)]
2785    pub struct StateHistoryCommitment {
2786        #[allow(missing_docs)]
2787        pub l1BlockHeight: u64,
2788        #[allow(missing_docs)]
2789        pub l1BlockTimestamp: u64,
2790        #[allow(missing_docs)]
2791        pub hotShotBlockHeight: u64,
2792        #[allow(missing_docs)]
2793        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2794    }
2795    #[allow(
2796        non_camel_case_types,
2797        non_snake_case,
2798        clippy::pub_underscore_fields,
2799        clippy::style
2800    )]
2801    const _: () = {
2802        use alloy::sol_types as alloy_sol_types;
2803        #[doc(hidden)]
2804        #[allow(dead_code)]
2805        type UnderlyingSolTuple<'a> = (
2806            alloy::sol_types::sol_data::Uint<64>,
2807            alloy::sol_types::sol_data::Uint<64>,
2808            alloy::sol_types::sol_data::Uint<64>,
2809            BN254::ScalarField,
2810        );
2811        #[doc(hidden)]
2812        type UnderlyingRustTuple<'a> = (
2813            u64,
2814            u64,
2815            u64,
2816            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2817        );
2818        #[cfg(test)]
2819        #[allow(dead_code, unreachable_patterns)]
2820        fn _type_assertion(
2821            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2822        ) {
2823            match _t {
2824                alloy_sol_types::private::AssertTypeEq::<
2825                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2826                >(_) => {}
2827            }
2828        }
2829        #[automatically_derived]
2830        #[doc(hidden)]
2831        impl ::core::convert::From<StateHistoryCommitment> for UnderlyingRustTuple<'_> {
2832            fn from(value: StateHistoryCommitment) -> Self {
2833                (
2834                    value.l1BlockHeight,
2835                    value.l1BlockTimestamp,
2836                    value.hotShotBlockHeight,
2837                    value.hotShotBlockCommRoot,
2838                )
2839            }
2840        }
2841        #[automatically_derived]
2842        #[doc(hidden)]
2843        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StateHistoryCommitment {
2844            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2845                Self {
2846                    l1BlockHeight: tuple.0,
2847                    l1BlockTimestamp: tuple.1,
2848                    hotShotBlockHeight: tuple.2,
2849                    hotShotBlockCommRoot: tuple.3,
2850                }
2851            }
2852        }
2853        #[automatically_derived]
2854        impl alloy_sol_types::SolValue for StateHistoryCommitment {
2855            type SolType = Self;
2856        }
2857        #[automatically_derived]
2858        impl alloy_sol_types::private::SolTypeValue<Self> for StateHistoryCommitment {
2859            #[inline]
2860            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2861                (
2862                    <alloy::sol_types::sol_data::Uint<
2863                        64,
2864                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
2865                    <alloy::sol_types::sol_data::Uint<
2866                        64,
2867                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
2868                    <alloy::sol_types::sol_data::Uint<
2869                        64,
2870                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
2871                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2872                        &self.hotShotBlockCommRoot,
2873                    ),
2874                )
2875            }
2876            #[inline]
2877            fn stv_abi_encoded_size(&self) -> usize {
2878                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2879                    return size;
2880                }
2881                let tuple = <UnderlyingRustTuple<
2882                    '_,
2883                > as ::core::convert::From<Self>>::from(self.clone());
2884                <UnderlyingSolTuple<
2885                    '_,
2886                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2887            }
2888            #[inline]
2889            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2890                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2891            }
2892            #[inline]
2893            fn stv_abi_encode_packed_to(
2894                &self,
2895                out: &mut alloy_sol_types::private::Vec<u8>,
2896            ) {
2897                let tuple = <UnderlyingRustTuple<
2898                    '_,
2899                > as ::core::convert::From<Self>>::from(self.clone());
2900                <UnderlyingSolTuple<
2901                    '_,
2902                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2903            }
2904            #[inline]
2905            fn stv_abi_packed_encoded_size(&self) -> usize {
2906                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2907                    return size;
2908                }
2909                let tuple = <UnderlyingRustTuple<
2910                    '_,
2911                > as ::core::convert::From<Self>>::from(self.clone());
2912                <UnderlyingSolTuple<
2913                    '_,
2914                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2915            }
2916        }
2917        #[automatically_derived]
2918        impl alloy_sol_types::SolType for StateHistoryCommitment {
2919            type RustType = Self;
2920            type Token<'a> = <UnderlyingSolTuple<
2921                'a,
2922            > as alloy_sol_types::SolType>::Token<'a>;
2923            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2924            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2925                '_,
2926            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2927            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2928                '_,
2929            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2930            #[inline]
2931            fn valid_token(token: &Self::Token<'_>) -> bool {
2932                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2933            }
2934            #[inline]
2935            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2936                let tuple = <UnderlyingSolTuple<
2937                    '_,
2938                > as alloy_sol_types::SolType>::detokenize(token);
2939                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2940            }
2941        }
2942        #[automatically_derived]
2943        impl alloy_sol_types::SolStruct for StateHistoryCommitment {
2944            const NAME: &'static str = "StateHistoryCommitment";
2945            #[inline]
2946            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2947                alloy_sol_types::private::Cow::Borrowed(
2948                    "StateHistoryCommitment(uint64 l1BlockHeight,uint64 l1BlockTimestamp,uint64 hotShotBlockHeight,uint256 hotShotBlockCommRoot)",
2949                )
2950            }
2951            #[inline]
2952            fn eip712_components() -> alloy_sol_types::private::Vec<
2953                alloy_sol_types::private::Cow<'static, str>,
2954            > {
2955                alloy_sol_types::private::Vec::new()
2956            }
2957            #[inline]
2958            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2959                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2960            }
2961            #[inline]
2962            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2963                [
2964                    <alloy::sol_types::sol_data::Uint<
2965                        64,
2966                    > as alloy_sol_types::SolType>::eip712_data_word(&self.l1BlockHeight)
2967                        .0,
2968                    <alloy::sol_types::sol_data::Uint<
2969                        64,
2970                    > as alloy_sol_types::SolType>::eip712_data_word(
2971                            &self.l1BlockTimestamp,
2972                        )
2973                        .0,
2974                    <alloy::sol_types::sol_data::Uint<
2975                        64,
2976                    > as alloy_sol_types::SolType>::eip712_data_word(
2977                            &self.hotShotBlockHeight,
2978                        )
2979                        .0,
2980                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2981                            &self.hotShotBlockCommRoot,
2982                        )
2983                        .0,
2984                ]
2985                    .concat()
2986            }
2987        }
2988        #[automatically_derived]
2989        impl alloy_sol_types::EventTopic for StateHistoryCommitment {
2990            #[inline]
2991            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2992                0usize
2993                    + <alloy::sol_types::sol_data::Uint<
2994                        64,
2995                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2996                        &rust.l1BlockHeight,
2997                    )
2998                    + <alloy::sol_types::sol_data::Uint<
2999                        64,
3000                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
3001                        &rust.l1BlockTimestamp,
3002                    )
3003                    + <alloy::sol_types::sol_data::Uint<
3004                        64,
3005                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
3006                        &rust.hotShotBlockHeight,
3007                    )
3008                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
3009                        &rust.hotShotBlockCommRoot,
3010                    )
3011            }
3012            #[inline]
3013            fn encode_topic_preimage(
3014                rust: &Self::RustType,
3015                out: &mut alloy_sol_types::private::Vec<u8>,
3016            ) {
3017                out.reserve(
3018                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
3019                );
3020                <alloy::sol_types::sol_data::Uint<
3021                    64,
3022                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3023                    &rust.l1BlockHeight,
3024                    out,
3025                );
3026                <alloy::sol_types::sol_data::Uint<
3027                    64,
3028                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3029                    &rust.l1BlockTimestamp,
3030                    out,
3031                );
3032                <alloy::sol_types::sol_data::Uint<
3033                    64,
3034                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3035                    &rust.hotShotBlockHeight,
3036                    out,
3037                );
3038                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
3039                    &rust.hotShotBlockCommRoot,
3040                    out,
3041                );
3042            }
3043            #[inline]
3044            fn encode_topic(
3045                rust: &Self::RustType,
3046            ) -> alloy_sol_types::abi::token::WordToken {
3047                let mut out = alloy_sol_types::private::Vec::new();
3048                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
3049                    rust,
3050                    &mut out,
3051                );
3052                alloy_sol_types::abi::token::WordToken(
3053                    alloy_sol_types::private::keccak256(out),
3054                )
3055            }
3056        }
3057    };
3058    use alloy::contract as alloy_contract;
3059    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
3060
3061See the [wrapper's documentation](`LightClientInstance`) for more details.*/
3062    #[inline]
3063    pub const fn new<
3064        P: alloy_contract::private::Provider<N>,
3065        N: alloy_contract::private::Network,
3066    >(
3067        address: alloy_sol_types::private::Address,
3068        __provider: P,
3069    ) -> LightClientInstance<P, N> {
3070        LightClientInstance::<P, N>::new(address, __provider)
3071    }
3072    /**A [`LightClient`](self) instance.
3073
3074Contains type-safe methods for interacting with an on-chain instance of the
3075[`LightClient`](self) contract located at a given `address`, using a given
3076provider `P`.
3077
3078If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
3079documentation on how to provide it), the `deploy` and `deploy_builder` methods can
3080be used to deploy a new instance of the contract.
3081
3082See the [module-level documentation](self) for all the available methods.*/
3083    #[derive(Clone)]
3084    pub struct LightClientInstance<P, N = alloy_contract::private::Ethereum> {
3085        address: alloy_sol_types::private::Address,
3086        provider: P,
3087        _network: ::core::marker::PhantomData<N>,
3088    }
3089    #[automatically_derived]
3090    impl<P, N> ::core::fmt::Debug for LightClientInstance<P, N> {
3091        #[inline]
3092        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
3093            f.debug_tuple("LightClientInstance").field(&self.address).finish()
3094        }
3095    }
3096    /// Instantiation and getters/setters.
3097    #[automatically_derived]
3098    impl<
3099        P: alloy_contract::private::Provider<N>,
3100        N: alloy_contract::private::Network,
3101    > LightClientInstance<P, N> {
3102        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
3103
3104See the [wrapper's documentation](`LightClientInstance`) for more details.*/
3105        #[inline]
3106        pub const fn new(
3107            address: alloy_sol_types::private::Address,
3108            __provider: P,
3109        ) -> Self {
3110            Self {
3111                address,
3112                provider: __provider,
3113                _network: ::core::marker::PhantomData,
3114            }
3115        }
3116        /// Returns a reference to the address.
3117        #[inline]
3118        pub const fn address(&self) -> &alloy_sol_types::private::Address {
3119            &self.address
3120        }
3121        /// Sets the address.
3122        #[inline]
3123        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
3124            self.address = address;
3125        }
3126        /// Sets the address and returns `self`.
3127        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
3128            self.set_address(address);
3129            self
3130        }
3131        /// Returns a reference to the provider.
3132        #[inline]
3133        pub const fn provider(&self) -> &P {
3134            &self.provider
3135        }
3136    }
3137    impl<P: ::core::clone::Clone, N> LightClientInstance<&P, N> {
3138        /// Clones the provider and returns a new instance with the cloned provider.
3139        #[inline]
3140        pub fn with_cloned_provider(self) -> LightClientInstance<P, N> {
3141            LightClientInstance {
3142                address: self.address,
3143                provider: ::core::clone::Clone::clone(&self.provider),
3144                _network: ::core::marker::PhantomData,
3145            }
3146        }
3147    }
3148    /// Function calls.
3149    #[automatically_derived]
3150    impl<
3151        P: alloy_contract::private::Provider<N>,
3152        N: alloy_contract::private::Network,
3153    > LightClientInstance<P, N> {
3154        /// Creates a new call builder using this contract instance's provider and address.
3155        ///
3156        /// Note that the call can be any function call, not just those defined in this
3157        /// contract. Prefer using the other methods for building type-safe contract calls.
3158        pub fn call_builder<C: alloy_sol_types::SolCall>(
3159            &self,
3160            call: &C,
3161        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
3162            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
3163        }
3164    }
3165    /// Event filters.
3166    #[automatically_derived]
3167    impl<
3168        P: alloy_contract::private::Provider<N>,
3169        N: alloy_contract::private::Network,
3170    > LightClientInstance<P, N> {
3171        /// Creates a new event filter using this contract instance's provider and address.
3172        ///
3173        /// Note that the type can be any event, not just those defined in this contract.
3174        /// Prefer using the other methods for building type-safe event filters.
3175        pub fn event_filter<E: alloy_sol_types::SolEvent>(
3176            &self,
3177        ) -> alloy_contract::Event<&P, E, N> {
3178            alloy_contract::Event::new_sol(&self.provider, &self.address)
3179        }
3180    }
3181}
3182/**
3183
3184Generated by the following Solidity interface...
3185```solidity
3186library BN254 {
3187    type BaseField is uint256;
3188    type ScalarField is uint256;
3189    struct G1Point {
3190        BaseField x;
3191        BaseField y;
3192    }
3193}
3194
3195library IPlonkVerifier {
3196    struct PlonkProof {
3197        BN254.G1Point wire0;
3198        BN254.G1Point wire1;
3199        BN254.G1Point wire2;
3200        BN254.G1Point wire3;
3201        BN254.G1Point wire4;
3202        BN254.G1Point prodPerm;
3203        BN254.G1Point split0;
3204        BN254.G1Point split1;
3205        BN254.G1Point split2;
3206        BN254.G1Point split3;
3207        BN254.G1Point split4;
3208        BN254.G1Point zeta;
3209        BN254.G1Point zetaOmega;
3210        BN254.ScalarField wireEval0;
3211        BN254.ScalarField wireEval1;
3212        BN254.ScalarField wireEval2;
3213        BN254.ScalarField wireEval3;
3214        BN254.ScalarField wireEval4;
3215        BN254.ScalarField sigmaEval0;
3216        BN254.ScalarField sigmaEval1;
3217        BN254.ScalarField sigmaEval2;
3218        BN254.ScalarField sigmaEval3;
3219        BN254.ScalarField prodPermZetaOmegaEval;
3220    }
3221    struct VerifyingKey {
3222        uint256 domainSize;
3223        uint256 numInputs;
3224        BN254.G1Point sigma0;
3225        BN254.G1Point sigma1;
3226        BN254.G1Point sigma2;
3227        BN254.G1Point sigma3;
3228        BN254.G1Point sigma4;
3229        BN254.G1Point q1;
3230        BN254.G1Point q2;
3231        BN254.G1Point q3;
3232        BN254.G1Point q4;
3233        BN254.G1Point qM12;
3234        BN254.G1Point qM34;
3235        BN254.G1Point qO;
3236        BN254.G1Point qC;
3237        BN254.G1Point qH1;
3238        BN254.G1Point qH2;
3239        BN254.G1Point qH3;
3240        BN254.G1Point qH4;
3241        BN254.G1Point qEcc;
3242        bytes32 g2LSB;
3243        bytes32 g2MSB;
3244    }
3245}
3246
3247library LightClient {
3248    struct LightClientState {
3249        uint64 viewNum;
3250        uint64 blockHeight;
3251        BN254.ScalarField blockCommRoot;
3252    }
3253    struct StakeTableState {
3254        uint256 threshold;
3255        BN254.ScalarField blsKeyComm;
3256        BN254.ScalarField schnorrKeyComm;
3257        BN254.ScalarField amountComm;
3258    }
3259    struct StateHistoryCommitment {
3260        uint64 l1BlockHeight;
3261        uint64 l1BlockTimestamp;
3262        uint64 hotShotBlockHeight;
3263        BN254.ScalarField hotShotBlockCommRoot;
3264    }
3265}
3266
3267interface LightClientV3Mock {
3268    error AddressEmptyCode(address target);
3269    error DeprecatedApi();
3270    error ERC1967InvalidImplementation(address implementation);
3271    error ERC1967NonPayable();
3272    error FailedInnerCall();
3273    error InsufficientSnapshotHistory();
3274    error InvalidAddress();
3275    error InvalidArgs();
3276    error InvalidHotShotBlockForCommitmentCheck();
3277    error InvalidInitialization();
3278    error InvalidMaxStateHistory();
3279    error InvalidProof();
3280    error InvalidScalar();
3281    error MissingEpochRootUpdate();
3282    error NoChangeRequired();
3283    error NotInitializing();
3284    error OutdatedState();
3285    error OwnableInvalidOwner(address owner);
3286    error OwnableUnauthorizedAccount(address account);
3287    error ProverNotPermissioned();
3288    error UUPSUnauthorizedCallContext();
3289    error UUPSUnsupportedProxiableUUID(bytes32 slot);
3290    error WrongStakeTableUsed();
3291
3292    event Initialized(uint64 version);
3293    event NewEpoch(uint64 epoch);
3294    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
3295    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
3296    event PermissionedProverNotRequired();
3297    event PermissionedProverRequired(address permissionedProver);
3298    event Upgrade(address implementation);
3299    event Upgraded(address indexed implementation);
3300
3301    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
3302    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
3303    function authRoot() external view returns (uint256);
3304    function blocksPerEpoch() external view returns (uint64);
3305    function currentBlockNumber() external view returns (uint256);
3306    function currentEpoch() external view returns (uint64);
3307    function disablePermissionedProverMode() external;
3308    function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
3309    function epochStartBlock() external view returns (uint64);
3310    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3311    function firstEpoch() external view returns (uint64);
3312    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3313    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3314    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
3315    function getStateHistoryCount() external view returns (uint256);
3316    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
3317    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
3318    function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
3319    function initializeV3() external;
3320    function isEpochRoot(uint64 blockHeight) external view returns (bool);
3321    function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
3322    function isPermissionedProverEnabled() external view returns (bool);
3323    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 threshold) external view returns (bool);
3324    function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
3325    function newFinalizedState(LightClient.LightClientState memory, LightClient.StakeTableState memory, IPlonkVerifier.PlonkProof memory) external pure;
3326    function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, uint256 newAuthRoot, IPlonkVerifier.PlonkProof memory proof) external;
3327    function owner() external view returns (address);
3328    function permissionedProver() external view returns (address);
3329    function proxiableUUID() external view returns (bytes32);
3330    function renounceOwnership() external;
3331    function setBlocksPerEpoch(uint64 newBlocksPerEpoch) external;
3332    function setFinalizedState(LightClient.LightClientState memory state) external;
3333    function setHotShotDownSince(uint256 l1Height) external;
3334    function setHotShotUp() external;
3335    function setPermissionedProver(address prover) external;
3336    function setStateHistory(LightClient.StateHistoryCommitment[] memory _stateHistoryCommitments) external;
3337    function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
3338    function setVotingStakeTableState(LightClient.StakeTableState memory stake) external;
3339    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
3340    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
3341    function stateHistoryFirstIndex() external view returns (uint64);
3342    function stateHistoryRetentionPeriod() external view returns (uint32);
3343    function transferOwnership(address newOwner) external;
3344    function updateEpochStartBlock(uint64 newEpochStartBlock) external;
3345    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
3346    function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3347}
3348```
3349
3350...which was generated by the following JSON ABI:
3351```json
3352[
3353  {
3354    "type": "function",
3355    "name": "UPGRADE_INTERFACE_VERSION",
3356    "inputs": [],
3357    "outputs": [
3358      {
3359        "name": "",
3360        "type": "string",
3361        "internalType": "string"
3362      }
3363    ],
3364    "stateMutability": "view"
3365  },
3366  {
3367    "type": "function",
3368    "name": "_getVk",
3369    "inputs": [],
3370    "outputs": [
3371      {
3372        "name": "vk",
3373        "type": "tuple",
3374        "internalType": "struct IPlonkVerifier.VerifyingKey",
3375        "components": [
3376          {
3377            "name": "domainSize",
3378            "type": "uint256",
3379            "internalType": "uint256"
3380          },
3381          {
3382            "name": "numInputs",
3383            "type": "uint256",
3384            "internalType": "uint256"
3385          },
3386          {
3387            "name": "sigma0",
3388            "type": "tuple",
3389            "internalType": "struct BN254.G1Point",
3390            "components": [
3391              {
3392                "name": "x",
3393                "type": "uint256",
3394                "internalType": "BN254.BaseField"
3395              },
3396              {
3397                "name": "y",
3398                "type": "uint256",
3399                "internalType": "BN254.BaseField"
3400              }
3401            ]
3402          },
3403          {
3404            "name": "sigma1",
3405            "type": "tuple",
3406            "internalType": "struct BN254.G1Point",
3407            "components": [
3408              {
3409                "name": "x",
3410                "type": "uint256",
3411                "internalType": "BN254.BaseField"
3412              },
3413              {
3414                "name": "y",
3415                "type": "uint256",
3416                "internalType": "BN254.BaseField"
3417              }
3418            ]
3419          },
3420          {
3421            "name": "sigma2",
3422            "type": "tuple",
3423            "internalType": "struct BN254.G1Point",
3424            "components": [
3425              {
3426                "name": "x",
3427                "type": "uint256",
3428                "internalType": "BN254.BaseField"
3429              },
3430              {
3431                "name": "y",
3432                "type": "uint256",
3433                "internalType": "BN254.BaseField"
3434              }
3435            ]
3436          },
3437          {
3438            "name": "sigma3",
3439            "type": "tuple",
3440            "internalType": "struct BN254.G1Point",
3441            "components": [
3442              {
3443                "name": "x",
3444                "type": "uint256",
3445                "internalType": "BN254.BaseField"
3446              },
3447              {
3448                "name": "y",
3449                "type": "uint256",
3450                "internalType": "BN254.BaseField"
3451              }
3452            ]
3453          },
3454          {
3455            "name": "sigma4",
3456            "type": "tuple",
3457            "internalType": "struct BN254.G1Point",
3458            "components": [
3459              {
3460                "name": "x",
3461                "type": "uint256",
3462                "internalType": "BN254.BaseField"
3463              },
3464              {
3465                "name": "y",
3466                "type": "uint256",
3467                "internalType": "BN254.BaseField"
3468              }
3469            ]
3470          },
3471          {
3472            "name": "q1",
3473            "type": "tuple",
3474            "internalType": "struct BN254.G1Point",
3475            "components": [
3476              {
3477                "name": "x",
3478                "type": "uint256",
3479                "internalType": "BN254.BaseField"
3480              },
3481              {
3482                "name": "y",
3483                "type": "uint256",
3484                "internalType": "BN254.BaseField"
3485              }
3486            ]
3487          },
3488          {
3489            "name": "q2",
3490            "type": "tuple",
3491            "internalType": "struct BN254.G1Point",
3492            "components": [
3493              {
3494                "name": "x",
3495                "type": "uint256",
3496                "internalType": "BN254.BaseField"
3497              },
3498              {
3499                "name": "y",
3500                "type": "uint256",
3501                "internalType": "BN254.BaseField"
3502              }
3503            ]
3504          },
3505          {
3506            "name": "q3",
3507            "type": "tuple",
3508            "internalType": "struct BN254.G1Point",
3509            "components": [
3510              {
3511                "name": "x",
3512                "type": "uint256",
3513                "internalType": "BN254.BaseField"
3514              },
3515              {
3516                "name": "y",
3517                "type": "uint256",
3518                "internalType": "BN254.BaseField"
3519              }
3520            ]
3521          },
3522          {
3523            "name": "q4",
3524            "type": "tuple",
3525            "internalType": "struct BN254.G1Point",
3526            "components": [
3527              {
3528                "name": "x",
3529                "type": "uint256",
3530                "internalType": "BN254.BaseField"
3531              },
3532              {
3533                "name": "y",
3534                "type": "uint256",
3535                "internalType": "BN254.BaseField"
3536              }
3537            ]
3538          },
3539          {
3540            "name": "qM12",
3541            "type": "tuple",
3542            "internalType": "struct BN254.G1Point",
3543            "components": [
3544              {
3545                "name": "x",
3546                "type": "uint256",
3547                "internalType": "BN254.BaseField"
3548              },
3549              {
3550                "name": "y",
3551                "type": "uint256",
3552                "internalType": "BN254.BaseField"
3553              }
3554            ]
3555          },
3556          {
3557            "name": "qM34",
3558            "type": "tuple",
3559            "internalType": "struct BN254.G1Point",
3560            "components": [
3561              {
3562                "name": "x",
3563                "type": "uint256",
3564                "internalType": "BN254.BaseField"
3565              },
3566              {
3567                "name": "y",
3568                "type": "uint256",
3569                "internalType": "BN254.BaseField"
3570              }
3571            ]
3572          },
3573          {
3574            "name": "qO",
3575            "type": "tuple",
3576            "internalType": "struct BN254.G1Point",
3577            "components": [
3578              {
3579                "name": "x",
3580                "type": "uint256",
3581                "internalType": "BN254.BaseField"
3582              },
3583              {
3584                "name": "y",
3585                "type": "uint256",
3586                "internalType": "BN254.BaseField"
3587              }
3588            ]
3589          },
3590          {
3591            "name": "qC",
3592            "type": "tuple",
3593            "internalType": "struct BN254.G1Point",
3594            "components": [
3595              {
3596                "name": "x",
3597                "type": "uint256",
3598                "internalType": "BN254.BaseField"
3599              },
3600              {
3601                "name": "y",
3602                "type": "uint256",
3603                "internalType": "BN254.BaseField"
3604              }
3605            ]
3606          },
3607          {
3608            "name": "qH1",
3609            "type": "tuple",
3610            "internalType": "struct BN254.G1Point",
3611            "components": [
3612              {
3613                "name": "x",
3614                "type": "uint256",
3615                "internalType": "BN254.BaseField"
3616              },
3617              {
3618                "name": "y",
3619                "type": "uint256",
3620                "internalType": "BN254.BaseField"
3621              }
3622            ]
3623          },
3624          {
3625            "name": "qH2",
3626            "type": "tuple",
3627            "internalType": "struct BN254.G1Point",
3628            "components": [
3629              {
3630                "name": "x",
3631                "type": "uint256",
3632                "internalType": "BN254.BaseField"
3633              },
3634              {
3635                "name": "y",
3636                "type": "uint256",
3637                "internalType": "BN254.BaseField"
3638              }
3639            ]
3640          },
3641          {
3642            "name": "qH3",
3643            "type": "tuple",
3644            "internalType": "struct BN254.G1Point",
3645            "components": [
3646              {
3647                "name": "x",
3648                "type": "uint256",
3649                "internalType": "BN254.BaseField"
3650              },
3651              {
3652                "name": "y",
3653                "type": "uint256",
3654                "internalType": "BN254.BaseField"
3655              }
3656            ]
3657          },
3658          {
3659            "name": "qH4",
3660            "type": "tuple",
3661            "internalType": "struct BN254.G1Point",
3662            "components": [
3663              {
3664                "name": "x",
3665                "type": "uint256",
3666                "internalType": "BN254.BaseField"
3667              },
3668              {
3669                "name": "y",
3670                "type": "uint256",
3671                "internalType": "BN254.BaseField"
3672              }
3673            ]
3674          },
3675          {
3676            "name": "qEcc",
3677            "type": "tuple",
3678            "internalType": "struct BN254.G1Point",
3679            "components": [
3680              {
3681                "name": "x",
3682                "type": "uint256",
3683                "internalType": "BN254.BaseField"
3684              },
3685              {
3686                "name": "y",
3687                "type": "uint256",
3688                "internalType": "BN254.BaseField"
3689              }
3690            ]
3691          },
3692          {
3693            "name": "g2LSB",
3694            "type": "bytes32",
3695            "internalType": "bytes32"
3696          },
3697          {
3698            "name": "g2MSB",
3699            "type": "bytes32",
3700            "internalType": "bytes32"
3701          }
3702        ]
3703      }
3704    ],
3705    "stateMutability": "pure"
3706  },
3707  {
3708    "type": "function",
3709    "name": "authRoot",
3710    "inputs": [],
3711    "outputs": [
3712      {
3713        "name": "",
3714        "type": "uint256",
3715        "internalType": "uint256"
3716      }
3717    ],
3718    "stateMutability": "view"
3719  },
3720  {
3721    "type": "function",
3722    "name": "blocksPerEpoch",
3723    "inputs": [],
3724    "outputs": [
3725      {
3726        "name": "",
3727        "type": "uint64",
3728        "internalType": "uint64"
3729      }
3730    ],
3731    "stateMutability": "view"
3732  },
3733  {
3734    "type": "function",
3735    "name": "currentBlockNumber",
3736    "inputs": [],
3737    "outputs": [
3738      {
3739        "name": "",
3740        "type": "uint256",
3741        "internalType": "uint256"
3742      }
3743    ],
3744    "stateMutability": "view"
3745  },
3746  {
3747    "type": "function",
3748    "name": "currentEpoch",
3749    "inputs": [],
3750    "outputs": [
3751      {
3752        "name": "",
3753        "type": "uint64",
3754        "internalType": "uint64"
3755      }
3756    ],
3757    "stateMutability": "view"
3758  },
3759  {
3760    "type": "function",
3761    "name": "disablePermissionedProverMode",
3762    "inputs": [],
3763    "outputs": [],
3764    "stateMutability": "nonpayable"
3765  },
3766  {
3767    "type": "function",
3768    "name": "epochFromBlockNumber",
3769    "inputs": [
3770      {
3771        "name": "_blockNum",
3772        "type": "uint64",
3773        "internalType": "uint64"
3774      },
3775      {
3776        "name": "_blocksPerEpoch",
3777        "type": "uint64",
3778        "internalType": "uint64"
3779      }
3780    ],
3781    "outputs": [
3782      {
3783        "name": "",
3784        "type": "uint64",
3785        "internalType": "uint64"
3786      }
3787    ],
3788    "stateMutability": "pure"
3789  },
3790  {
3791    "type": "function",
3792    "name": "epochStartBlock",
3793    "inputs": [],
3794    "outputs": [
3795      {
3796        "name": "",
3797        "type": "uint64",
3798        "internalType": "uint64"
3799      }
3800    ],
3801    "stateMutability": "view"
3802  },
3803  {
3804    "type": "function",
3805    "name": "finalizedState",
3806    "inputs": [],
3807    "outputs": [
3808      {
3809        "name": "viewNum",
3810        "type": "uint64",
3811        "internalType": "uint64"
3812      },
3813      {
3814        "name": "blockHeight",
3815        "type": "uint64",
3816        "internalType": "uint64"
3817      },
3818      {
3819        "name": "blockCommRoot",
3820        "type": "uint256",
3821        "internalType": "BN254.ScalarField"
3822      }
3823    ],
3824    "stateMutability": "view"
3825  },
3826  {
3827    "type": "function",
3828    "name": "firstEpoch",
3829    "inputs": [],
3830    "outputs": [
3831      {
3832        "name": "",
3833        "type": "uint64",
3834        "internalType": "uint64"
3835      }
3836    ],
3837    "stateMutability": "view"
3838  },
3839  {
3840    "type": "function",
3841    "name": "genesisStakeTableState",
3842    "inputs": [],
3843    "outputs": [
3844      {
3845        "name": "threshold",
3846        "type": "uint256",
3847        "internalType": "uint256"
3848      },
3849      {
3850        "name": "blsKeyComm",
3851        "type": "uint256",
3852        "internalType": "BN254.ScalarField"
3853      },
3854      {
3855        "name": "schnorrKeyComm",
3856        "type": "uint256",
3857        "internalType": "BN254.ScalarField"
3858      },
3859      {
3860        "name": "amountComm",
3861        "type": "uint256",
3862        "internalType": "BN254.ScalarField"
3863      }
3864    ],
3865    "stateMutability": "view"
3866  },
3867  {
3868    "type": "function",
3869    "name": "genesisState",
3870    "inputs": [],
3871    "outputs": [
3872      {
3873        "name": "viewNum",
3874        "type": "uint64",
3875        "internalType": "uint64"
3876      },
3877      {
3878        "name": "blockHeight",
3879        "type": "uint64",
3880        "internalType": "uint64"
3881      },
3882      {
3883        "name": "blockCommRoot",
3884        "type": "uint256",
3885        "internalType": "BN254.ScalarField"
3886      }
3887    ],
3888    "stateMutability": "view"
3889  },
3890  {
3891    "type": "function",
3892    "name": "getHotShotCommitment",
3893    "inputs": [
3894      {
3895        "name": "hotShotBlockHeight",
3896        "type": "uint256",
3897        "internalType": "uint256"
3898      }
3899    ],
3900    "outputs": [
3901      {
3902        "name": "hotShotBlockCommRoot",
3903        "type": "uint256",
3904        "internalType": "BN254.ScalarField"
3905      },
3906      {
3907        "name": "hotshotBlockHeight",
3908        "type": "uint64",
3909        "internalType": "uint64"
3910      }
3911    ],
3912    "stateMutability": "view"
3913  },
3914  {
3915    "type": "function",
3916    "name": "getStateHistoryCount",
3917    "inputs": [],
3918    "outputs": [
3919      {
3920        "name": "",
3921        "type": "uint256",
3922        "internalType": "uint256"
3923      }
3924    ],
3925    "stateMutability": "view"
3926  },
3927  {
3928    "type": "function",
3929    "name": "getVersion",
3930    "inputs": [],
3931    "outputs": [
3932      {
3933        "name": "majorVersion",
3934        "type": "uint8",
3935        "internalType": "uint8"
3936      },
3937      {
3938        "name": "minorVersion",
3939        "type": "uint8",
3940        "internalType": "uint8"
3941      },
3942      {
3943        "name": "patchVersion",
3944        "type": "uint8",
3945        "internalType": "uint8"
3946      }
3947    ],
3948    "stateMutability": "pure"
3949  },
3950  {
3951    "type": "function",
3952    "name": "initialize",
3953    "inputs": [
3954      {
3955        "name": "_genesis",
3956        "type": "tuple",
3957        "internalType": "struct LightClient.LightClientState",
3958        "components": [
3959          {
3960            "name": "viewNum",
3961            "type": "uint64",
3962            "internalType": "uint64"
3963          },
3964          {
3965            "name": "blockHeight",
3966            "type": "uint64",
3967            "internalType": "uint64"
3968          },
3969          {
3970            "name": "blockCommRoot",
3971            "type": "uint256",
3972            "internalType": "BN254.ScalarField"
3973          }
3974        ]
3975      },
3976      {
3977        "name": "_genesisStakeTableState",
3978        "type": "tuple",
3979        "internalType": "struct LightClient.StakeTableState",
3980        "components": [
3981          {
3982            "name": "threshold",
3983            "type": "uint256",
3984            "internalType": "uint256"
3985          },
3986          {
3987            "name": "blsKeyComm",
3988            "type": "uint256",
3989            "internalType": "BN254.ScalarField"
3990          },
3991          {
3992            "name": "schnorrKeyComm",
3993            "type": "uint256",
3994            "internalType": "BN254.ScalarField"
3995          },
3996          {
3997            "name": "amountComm",
3998            "type": "uint256",
3999            "internalType": "BN254.ScalarField"
4000          }
4001        ]
4002      },
4003      {
4004        "name": "_stateHistoryRetentionPeriod",
4005        "type": "uint32",
4006        "internalType": "uint32"
4007      },
4008      {
4009        "name": "owner",
4010        "type": "address",
4011        "internalType": "address"
4012      }
4013    ],
4014    "outputs": [],
4015    "stateMutability": "nonpayable"
4016  },
4017  {
4018    "type": "function",
4019    "name": "initializeV2",
4020    "inputs": [
4021      {
4022        "name": "_blocksPerEpoch",
4023        "type": "uint64",
4024        "internalType": "uint64"
4025      },
4026      {
4027        "name": "_epochStartBlock",
4028        "type": "uint64",
4029        "internalType": "uint64"
4030      }
4031    ],
4032    "outputs": [],
4033    "stateMutability": "nonpayable"
4034  },
4035  {
4036    "type": "function",
4037    "name": "initializeV3",
4038    "inputs": [],
4039    "outputs": [],
4040    "stateMutability": "nonpayable"
4041  },
4042  {
4043    "type": "function",
4044    "name": "isEpochRoot",
4045    "inputs": [
4046      {
4047        "name": "blockHeight",
4048        "type": "uint64",
4049        "internalType": "uint64"
4050      }
4051    ],
4052    "outputs": [
4053      {
4054        "name": "",
4055        "type": "bool",
4056        "internalType": "bool"
4057      }
4058    ],
4059    "stateMutability": "view"
4060  },
4061  {
4062    "type": "function",
4063    "name": "isGtEpochRoot",
4064    "inputs": [
4065      {
4066        "name": "blockHeight",
4067        "type": "uint64",
4068        "internalType": "uint64"
4069      }
4070    ],
4071    "outputs": [
4072      {
4073        "name": "",
4074        "type": "bool",
4075        "internalType": "bool"
4076      }
4077    ],
4078    "stateMutability": "view"
4079  },
4080  {
4081    "type": "function",
4082    "name": "isPermissionedProverEnabled",
4083    "inputs": [],
4084    "outputs": [
4085      {
4086        "name": "",
4087        "type": "bool",
4088        "internalType": "bool"
4089      }
4090    ],
4091    "stateMutability": "view"
4092  },
4093  {
4094    "type": "function",
4095    "name": "lagOverEscapeHatchThreshold",
4096    "inputs": [
4097      {
4098        "name": "blockNumber",
4099        "type": "uint256",
4100        "internalType": "uint256"
4101      },
4102      {
4103        "name": "threshold",
4104        "type": "uint256",
4105        "internalType": "uint256"
4106      }
4107    ],
4108    "outputs": [
4109      {
4110        "name": "",
4111        "type": "bool",
4112        "internalType": "bool"
4113      }
4114    ],
4115    "stateMutability": "view"
4116  },
4117  {
4118    "type": "function",
4119    "name": "newFinalizedState",
4120    "inputs": [
4121      {
4122        "name": "",
4123        "type": "tuple",
4124        "internalType": "struct LightClient.LightClientState",
4125        "components": [
4126          {
4127            "name": "viewNum",
4128            "type": "uint64",
4129            "internalType": "uint64"
4130          },
4131          {
4132            "name": "blockHeight",
4133            "type": "uint64",
4134            "internalType": "uint64"
4135          },
4136          {
4137            "name": "blockCommRoot",
4138            "type": "uint256",
4139            "internalType": "BN254.ScalarField"
4140          }
4141        ]
4142      },
4143      {
4144        "name": "",
4145        "type": "tuple",
4146        "internalType": "struct IPlonkVerifier.PlonkProof",
4147        "components": [
4148          {
4149            "name": "wire0",
4150            "type": "tuple",
4151            "internalType": "struct BN254.G1Point",
4152            "components": [
4153              {
4154                "name": "x",
4155                "type": "uint256",
4156                "internalType": "BN254.BaseField"
4157              },
4158              {
4159                "name": "y",
4160                "type": "uint256",
4161                "internalType": "BN254.BaseField"
4162              }
4163            ]
4164          },
4165          {
4166            "name": "wire1",
4167            "type": "tuple",
4168            "internalType": "struct BN254.G1Point",
4169            "components": [
4170              {
4171                "name": "x",
4172                "type": "uint256",
4173                "internalType": "BN254.BaseField"
4174              },
4175              {
4176                "name": "y",
4177                "type": "uint256",
4178                "internalType": "BN254.BaseField"
4179              }
4180            ]
4181          },
4182          {
4183            "name": "wire2",
4184            "type": "tuple",
4185            "internalType": "struct BN254.G1Point",
4186            "components": [
4187              {
4188                "name": "x",
4189                "type": "uint256",
4190                "internalType": "BN254.BaseField"
4191              },
4192              {
4193                "name": "y",
4194                "type": "uint256",
4195                "internalType": "BN254.BaseField"
4196              }
4197            ]
4198          },
4199          {
4200            "name": "wire3",
4201            "type": "tuple",
4202            "internalType": "struct BN254.G1Point",
4203            "components": [
4204              {
4205                "name": "x",
4206                "type": "uint256",
4207                "internalType": "BN254.BaseField"
4208              },
4209              {
4210                "name": "y",
4211                "type": "uint256",
4212                "internalType": "BN254.BaseField"
4213              }
4214            ]
4215          },
4216          {
4217            "name": "wire4",
4218            "type": "tuple",
4219            "internalType": "struct BN254.G1Point",
4220            "components": [
4221              {
4222                "name": "x",
4223                "type": "uint256",
4224                "internalType": "BN254.BaseField"
4225              },
4226              {
4227                "name": "y",
4228                "type": "uint256",
4229                "internalType": "BN254.BaseField"
4230              }
4231            ]
4232          },
4233          {
4234            "name": "prodPerm",
4235            "type": "tuple",
4236            "internalType": "struct BN254.G1Point",
4237            "components": [
4238              {
4239                "name": "x",
4240                "type": "uint256",
4241                "internalType": "BN254.BaseField"
4242              },
4243              {
4244                "name": "y",
4245                "type": "uint256",
4246                "internalType": "BN254.BaseField"
4247              }
4248            ]
4249          },
4250          {
4251            "name": "split0",
4252            "type": "tuple",
4253            "internalType": "struct BN254.G1Point",
4254            "components": [
4255              {
4256                "name": "x",
4257                "type": "uint256",
4258                "internalType": "BN254.BaseField"
4259              },
4260              {
4261                "name": "y",
4262                "type": "uint256",
4263                "internalType": "BN254.BaseField"
4264              }
4265            ]
4266          },
4267          {
4268            "name": "split1",
4269            "type": "tuple",
4270            "internalType": "struct BN254.G1Point",
4271            "components": [
4272              {
4273                "name": "x",
4274                "type": "uint256",
4275                "internalType": "BN254.BaseField"
4276              },
4277              {
4278                "name": "y",
4279                "type": "uint256",
4280                "internalType": "BN254.BaseField"
4281              }
4282            ]
4283          },
4284          {
4285            "name": "split2",
4286            "type": "tuple",
4287            "internalType": "struct BN254.G1Point",
4288            "components": [
4289              {
4290                "name": "x",
4291                "type": "uint256",
4292                "internalType": "BN254.BaseField"
4293              },
4294              {
4295                "name": "y",
4296                "type": "uint256",
4297                "internalType": "BN254.BaseField"
4298              }
4299            ]
4300          },
4301          {
4302            "name": "split3",
4303            "type": "tuple",
4304            "internalType": "struct BN254.G1Point",
4305            "components": [
4306              {
4307                "name": "x",
4308                "type": "uint256",
4309                "internalType": "BN254.BaseField"
4310              },
4311              {
4312                "name": "y",
4313                "type": "uint256",
4314                "internalType": "BN254.BaseField"
4315              }
4316            ]
4317          },
4318          {
4319            "name": "split4",
4320            "type": "tuple",
4321            "internalType": "struct BN254.G1Point",
4322            "components": [
4323              {
4324                "name": "x",
4325                "type": "uint256",
4326                "internalType": "BN254.BaseField"
4327              },
4328              {
4329                "name": "y",
4330                "type": "uint256",
4331                "internalType": "BN254.BaseField"
4332              }
4333            ]
4334          },
4335          {
4336            "name": "zeta",
4337            "type": "tuple",
4338            "internalType": "struct BN254.G1Point",
4339            "components": [
4340              {
4341                "name": "x",
4342                "type": "uint256",
4343                "internalType": "BN254.BaseField"
4344              },
4345              {
4346                "name": "y",
4347                "type": "uint256",
4348                "internalType": "BN254.BaseField"
4349              }
4350            ]
4351          },
4352          {
4353            "name": "zetaOmega",
4354            "type": "tuple",
4355            "internalType": "struct BN254.G1Point",
4356            "components": [
4357              {
4358                "name": "x",
4359                "type": "uint256",
4360                "internalType": "BN254.BaseField"
4361              },
4362              {
4363                "name": "y",
4364                "type": "uint256",
4365                "internalType": "BN254.BaseField"
4366              }
4367            ]
4368          },
4369          {
4370            "name": "wireEval0",
4371            "type": "uint256",
4372            "internalType": "BN254.ScalarField"
4373          },
4374          {
4375            "name": "wireEval1",
4376            "type": "uint256",
4377            "internalType": "BN254.ScalarField"
4378          },
4379          {
4380            "name": "wireEval2",
4381            "type": "uint256",
4382            "internalType": "BN254.ScalarField"
4383          },
4384          {
4385            "name": "wireEval3",
4386            "type": "uint256",
4387            "internalType": "BN254.ScalarField"
4388          },
4389          {
4390            "name": "wireEval4",
4391            "type": "uint256",
4392            "internalType": "BN254.ScalarField"
4393          },
4394          {
4395            "name": "sigmaEval0",
4396            "type": "uint256",
4397            "internalType": "BN254.ScalarField"
4398          },
4399          {
4400            "name": "sigmaEval1",
4401            "type": "uint256",
4402            "internalType": "BN254.ScalarField"
4403          },
4404          {
4405            "name": "sigmaEval2",
4406            "type": "uint256",
4407            "internalType": "BN254.ScalarField"
4408          },
4409          {
4410            "name": "sigmaEval3",
4411            "type": "uint256",
4412            "internalType": "BN254.ScalarField"
4413          },
4414          {
4415            "name": "prodPermZetaOmegaEval",
4416            "type": "uint256",
4417            "internalType": "BN254.ScalarField"
4418          }
4419        ]
4420      }
4421    ],
4422    "outputs": [],
4423    "stateMutability": "pure"
4424  },
4425  {
4426    "type": "function",
4427    "name": "newFinalizedState",
4428    "inputs": [
4429      {
4430        "name": "",
4431        "type": "tuple",
4432        "internalType": "struct LightClient.LightClientState",
4433        "components": [
4434          {
4435            "name": "viewNum",
4436            "type": "uint64",
4437            "internalType": "uint64"
4438          },
4439          {
4440            "name": "blockHeight",
4441            "type": "uint64",
4442            "internalType": "uint64"
4443          },
4444          {
4445            "name": "blockCommRoot",
4446            "type": "uint256",
4447            "internalType": "BN254.ScalarField"
4448          }
4449        ]
4450      },
4451      {
4452        "name": "",
4453        "type": "tuple",
4454        "internalType": "struct LightClient.StakeTableState",
4455        "components": [
4456          {
4457            "name": "threshold",
4458            "type": "uint256",
4459            "internalType": "uint256"
4460          },
4461          {
4462            "name": "blsKeyComm",
4463            "type": "uint256",
4464            "internalType": "BN254.ScalarField"
4465          },
4466          {
4467            "name": "schnorrKeyComm",
4468            "type": "uint256",
4469            "internalType": "BN254.ScalarField"
4470          },
4471          {
4472            "name": "amountComm",
4473            "type": "uint256",
4474            "internalType": "BN254.ScalarField"
4475          }
4476        ]
4477      },
4478      {
4479        "name": "",
4480        "type": "tuple",
4481        "internalType": "struct IPlonkVerifier.PlonkProof",
4482        "components": [
4483          {
4484            "name": "wire0",
4485            "type": "tuple",
4486            "internalType": "struct BN254.G1Point",
4487            "components": [
4488              {
4489                "name": "x",
4490                "type": "uint256",
4491                "internalType": "BN254.BaseField"
4492              },
4493              {
4494                "name": "y",
4495                "type": "uint256",
4496                "internalType": "BN254.BaseField"
4497              }
4498            ]
4499          },
4500          {
4501            "name": "wire1",
4502            "type": "tuple",
4503            "internalType": "struct BN254.G1Point",
4504            "components": [
4505              {
4506                "name": "x",
4507                "type": "uint256",
4508                "internalType": "BN254.BaseField"
4509              },
4510              {
4511                "name": "y",
4512                "type": "uint256",
4513                "internalType": "BN254.BaseField"
4514              }
4515            ]
4516          },
4517          {
4518            "name": "wire2",
4519            "type": "tuple",
4520            "internalType": "struct BN254.G1Point",
4521            "components": [
4522              {
4523                "name": "x",
4524                "type": "uint256",
4525                "internalType": "BN254.BaseField"
4526              },
4527              {
4528                "name": "y",
4529                "type": "uint256",
4530                "internalType": "BN254.BaseField"
4531              }
4532            ]
4533          },
4534          {
4535            "name": "wire3",
4536            "type": "tuple",
4537            "internalType": "struct BN254.G1Point",
4538            "components": [
4539              {
4540                "name": "x",
4541                "type": "uint256",
4542                "internalType": "BN254.BaseField"
4543              },
4544              {
4545                "name": "y",
4546                "type": "uint256",
4547                "internalType": "BN254.BaseField"
4548              }
4549            ]
4550          },
4551          {
4552            "name": "wire4",
4553            "type": "tuple",
4554            "internalType": "struct BN254.G1Point",
4555            "components": [
4556              {
4557                "name": "x",
4558                "type": "uint256",
4559                "internalType": "BN254.BaseField"
4560              },
4561              {
4562                "name": "y",
4563                "type": "uint256",
4564                "internalType": "BN254.BaseField"
4565              }
4566            ]
4567          },
4568          {
4569            "name": "prodPerm",
4570            "type": "tuple",
4571            "internalType": "struct BN254.G1Point",
4572            "components": [
4573              {
4574                "name": "x",
4575                "type": "uint256",
4576                "internalType": "BN254.BaseField"
4577              },
4578              {
4579                "name": "y",
4580                "type": "uint256",
4581                "internalType": "BN254.BaseField"
4582              }
4583            ]
4584          },
4585          {
4586            "name": "split0",
4587            "type": "tuple",
4588            "internalType": "struct BN254.G1Point",
4589            "components": [
4590              {
4591                "name": "x",
4592                "type": "uint256",
4593                "internalType": "BN254.BaseField"
4594              },
4595              {
4596                "name": "y",
4597                "type": "uint256",
4598                "internalType": "BN254.BaseField"
4599              }
4600            ]
4601          },
4602          {
4603            "name": "split1",
4604            "type": "tuple",
4605            "internalType": "struct BN254.G1Point",
4606            "components": [
4607              {
4608                "name": "x",
4609                "type": "uint256",
4610                "internalType": "BN254.BaseField"
4611              },
4612              {
4613                "name": "y",
4614                "type": "uint256",
4615                "internalType": "BN254.BaseField"
4616              }
4617            ]
4618          },
4619          {
4620            "name": "split2",
4621            "type": "tuple",
4622            "internalType": "struct BN254.G1Point",
4623            "components": [
4624              {
4625                "name": "x",
4626                "type": "uint256",
4627                "internalType": "BN254.BaseField"
4628              },
4629              {
4630                "name": "y",
4631                "type": "uint256",
4632                "internalType": "BN254.BaseField"
4633              }
4634            ]
4635          },
4636          {
4637            "name": "split3",
4638            "type": "tuple",
4639            "internalType": "struct BN254.G1Point",
4640            "components": [
4641              {
4642                "name": "x",
4643                "type": "uint256",
4644                "internalType": "BN254.BaseField"
4645              },
4646              {
4647                "name": "y",
4648                "type": "uint256",
4649                "internalType": "BN254.BaseField"
4650              }
4651            ]
4652          },
4653          {
4654            "name": "split4",
4655            "type": "tuple",
4656            "internalType": "struct BN254.G1Point",
4657            "components": [
4658              {
4659                "name": "x",
4660                "type": "uint256",
4661                "internalType": "BN254.BaseField"
4662              },
4663              {
4664                "name": "y",
4665                "type": "uint256",
4666                "internalType": "BN254.BaseField"
4667              }
4668            ]
4669          },
4670          {
4671            "name": "zeta",
4672            "type": "tuple",
4673            "internalType": "struct BN254.G1Point",
4674            "components": [
4675              {
4676                "name": "x",
4677                "type": "uint256",
4678                "internalType": "BN254.BaseField"
4679              },
4680              {
4681                "name": "y",
4682                "type": "uint256",
4683                "internalType": "BN254.BaseField"
4684              }
4685            ]
4686          },
4687          {
4688            "name": "zetaOmega",
4689            "type": "tuple",
4690            "internalType": "struct BN254.G1Point",
4691            "components": [
4692              {
4693                "name": "x",
4694                "type": "uint256",
4695                "internalType": "BN254.BaseField"
4696              },
4697              {
4698                "name": "y",
4699                "type": "uint256",
4700                "internalType": "BN254.BaseField"
4701              }
4702            ]
4703          },
4704          {
4705            "name": "wireEval0",
4706            "type": "uint256",
4707            "internalType": "BN254.ScalarField"
4708          },
4709          {
4710            "name": "wireEval1",
4711            "type": "uint256",
4712            "internalType": "BN254.ScalarField"
4713          },
4714          {
4715            "name": "wireEval2",
4716            "type": "uint256",
4717            "internalType": "BN254.ScalarField"
4718          },
4719          {
4720            "name": "wireEval3",
4721            "type": "uint256",
4722            "internalType": "BN254.ScalarField"
4723          },
4724          {
4725            "name": "wireEval4",
4726            "type": "uint256",
4727            "internalType": "BN254.ScalarField"
4728          },
4729          {
4730            "name": "sigmaEval0",
4731            "type": "uint256",
4732            "internalType": "BN254.ScalarField"
4733          },
4734          {
4735            "name": "sigmaEval1",
4736            "type": "uint256",
4737            "internalType": "BN254.ScalarField"
4738          },
4739          {
4740            "name": "sigmaEval2",
4741            "type": "uint256",
4742            "internalType": "BN254.ScalarField"
4743          },
4744          {
4745            "name": "sigmaEval3",
4746            "type": "uint256",
4747            "internalType": "BN254.ScalarField"
4748          },
4749          {
4750            "name": "prodPermZetaOmegaEval",
4751            "type": "uint256",
4752            "internalType": "BN254.ScalarField"
4753          }
4754        ]
4755      }
4756    ],
4757    "outputs": [],
4758    "stateMutability": "pure"
4759  },
4760  {
4761    "type": "function",
4762    "name": "newFinalizedState",
4763    "inputs": [
4764      {
4765        "name": "newState",
4766        "type": "tuple",
4767        "internalType": "struct LightClient.LightClientState",
4768        "components": [
4769          {
4770            "name": "viewNum",
4771            "type": "uint64",
4772            "internalType": "uint64"
4773          },
4774          {
4775            "name": "blockHeight",
4776            "type": "uint64",
4777            "internalType": "uint64"
4778          },
4779          {
4780            "name": "blockCommRoot",
4781            "type": "uint256",
4782            "internalType": "BN254.ScalarField"
4783          }
4784        ]
4785      },
4786      {
4787        "name": "nextStakeTable",
4788        "type": "tuple",
4789        "internalType": "struct LightClient.StakeTableState",
4790        "components": [
4791          {
4792            "name": "threshold",
4793            "type": "uint256",
4794            "internalType": "uint256"
4795          },
4796          {
4797            "name": "blsKeyComm",
4798            "type": "uint256",
4799            "internalType": "BN254.ScalarField"
4800          },
4801          {
4802            "name": "schnorrKeyComm",
4803            "type": "uint256",
4804            "internalType": "BN254.ScalarField"
4805          },
4806          {
4807            "name": "amountComm",
4808            "type": "uint256",
4809            "internalType": "BN254.ScalarField"
4810          }
4811        ]
4812      },
4813      {
4814        "name": "newAuthRoot",
4815        "type": "uint256",
4816        "internalType": "uint256"
4817      },
4818      {
4819        "name": "proof",
4820        "type": "tuple",
4821        "internalType": "struct IPlonkVerifier.PlonkProof",
4822        "components": [
4823          {
4824            "name": "wire0",
4825            "type": "tuple",
4826            "internalType": "struct BN254.G1Point",
4827            "components": [
4828              {
4829                "name": "x",
4830                "type": "uint256",
4831                "internalType": "BN254.BaseField"
4832              },
4833              {
4834                "name": "y",
4835                "type": "uint256",
4836                "internalType": "BN254.BaseField"
4837              }
4838            ]
4839          },
4840          {
4841            "name": "wire1",
4842            "type": "tuple",
4843            "internalType": "struct BN254.G1Point",
4844            "components": [
4845              {
4846                "name": "x",
4847                "type": "uint256",
4848                "internalType": "BN254.BaseField"
4849              },
4850              {
4851                "name": "y",
4852                "type": "uint256",
4853                "internalType": "BN254.BaseField"
4854              }
4855            ]
4856          },
4857          {
4858            "name": "wire2",
4859            "type": "tuple",
4860            "internalType": "struct BN254.G1Point",
4861            "components": [
4862              {
4863                "name": "x",
4864                "type": "uint256",
4865                "internalType": "BN254.BaseField"
4866              },
4867              {
4868                "name": "y",
4869                "type": "uint256",
4870                "internalType": "BN254.BaseField"
4871              }
4872            ]
4873          },
4874          {
4875            "name": "wire3",
4876            "type": "tuple",
4877            "internalType": "struct BN254.G1Point",
4878            "components": [
4879              {
4880                "name": "x",
4881                "type": "uint256",
4882                "internalType": "BN254.BaseField"
4883              },
4884              {
4885                "name": "y",
4886                "type": "uint256",
4887                "internalType": "BN254.BaseField"
4888              }
4889            ]
4890          },
4891          {
4892            "name": "wire4",
4893            "type": "tuple",
4894            "internalType": "struct BN254.G1Point",
4895            "components": [
4896              {
4897                "name": "x",
4898                "type": "uint256",
4899                "internalType": "BN254.BaseField"
4900              },
4901              {
4902                "name": "y",
4903                "type": "uint256",
4904                "internalType": "BN254.BaseField"
4905              }
4906            ]
4907          },
4908          {
4909            "name": "prodPerm",
4910            "type": "tuple",
4911            "internalType": "struct BN254.G1Point",
4912            "components": [
4913              {
4914                "name": "x",
4915                "type": "uint256",
4916                "internalType": "BN254.BaseField"
4917              },
4918              {
4919                "name": "y",
4920                "type": "uint256",
4921                "internalType": "BN254.BaseField"
4922              }
4923            ]
4924          },
4925          {
4926            "name": "split0",
4927            "type": "tuple",
4928            "internalType": "struct BN254.G1Point",
4929            "components": [
4930              {
4931                "name": "x",
4932                "type": "uint256",
4933                "internalType": "BN254.BaseField"
4934              },
4935              {
4936                "name": "y",
4937                "type": "uint256",
4938                "internalType": "BN254.BaseField"
4939              }
4940            ]
4941          },
4942          {
4943            "name": "split1",
4944            "type": "tuple",
4945            "internalType": "struct BN254.G1Point",
4946            "components": [
4947              {
4948                "name": "x",
4949                "type": "uint256",
4950                "internalType": "BN254.BaseField"
4951              },
4952              {
4953                "name": "y",
4954                "type": "uint256",
4955                "internalType": "BN254.BaseField"
4956              }
4957            ]
4958          },
4959          {
4960            "name": "split2",
4961            "type": "tuple",
4962            "internalType": "struct BN254.G1Point",
4963            "components": [
4964              {
4965                "name": "x",
4966                "type": "uint256",
4967                "internalType": "BN254.BaseField"
4968              },
4969              {
4970                "name": "y",
4971                "type": "uint256",
4972                "internalType": "BN254.BaseField"
4973              }
4974            ]
4975          },
4976          {
4977            "name": "split3",
4978            "type": "tuple",
4979            "internalType": "struct BN254.G1Point",
4980            "components": [
4981              {
4982                "name": "x",
4983                "type": "uint256",
4984                "internalType": "BN254.BaseField"
4985              },
4986              {
4987                "name": "y",
4988                "type": "uint256",
4989                "internalType": "BN254.BaseField"
4990              }
4991            ]
4992          },
4993          {
4994            "name": "split4",
4995            "type": "tuple",
4996            "internalType": "struct BN254.G1Point",
4997            "components": [
4998              {
4999                "name": "x",
5000                "type": "uint256",
5001                "internalType": "BN254.BaseField"
5002              },
5003              {
5004                "name": "y",
5005                "type": "uint256",
5006                "internalType": "BN254.BaseField"
5007              }
5008            ]
5009          },
5010          {
5011            "name": "zeta",
5012            "type": "tuple",
5013            "internalType": "struct BN254.G1Point",
5014            "components": [
5015              {
5016                "name": "x",
5017                "type": "uint256",
5018                "internalType": "BN254.BaseField"
5019              },
5020              {
5021                "name": "y",
5022                "type": "uint256",
5023                "internalType": "BN254.BaseField"
5024              }
5025            ]
5026          },
5027          {
5028            "name": "zetaOmega",
5029            "type": "tuple",
5030            "internalType": "struct BN254.G1Point",
5031            "components": [
5032              {
5033                "name": "x",
5034                "type": "uint256",
5035                "internalType": "BN254.BaseField"
5036              },
5037              {
5038                "name": "y",
5039                "type": "uint256",
5040                "internalType": "BN254.BaseField"
5041              }
5042            ]
5043          },
5044          {
5045            "name": "wireEval0",
5046            "type": "uint256",
5047            "internalType": "BN254.ScalarField"
5048          },
5049          {
5050            "name": "wireEval1",
5051            "type": "uint256",
5052            "internalType": "BN254.ScalarField"
5053          },
5054          {
5055            "name": "wireEval2",
5056            "type": "uint256",
5057            "internalType": "BN254.ScalarField"
5058          },
5059          {
5060            "name": "wireEval3",
5061            "type": "uint256",
5062            "internalType": "BN254.ScalarField"
5063          },
5064          {
5065            "name": "wireEval4",
5066            "type": "uint256",
5067            "internalType": "BN254.ScalarField"
5068          },
5069          {
5070            "name": "sigmaEval0",
5071            "type": "uint256",
5072            "internalType": "BN254.ScalarField"
5073          },
5074          {
5075            "name": "sigmaEval1",
5076            "type": "uint256",
5077            "internalType": "BN254.ScalarField"
5078          },
5079          {
5080            "name": "sigmaEval2",
5081            "type": "uint256",
5082            "internalType": "BN254.ScalarField"
5083          },
5084          {
5085            "name": "sigmaEval3",
5086            "type": "uint256",
5087            "internalType": "BN254.ScalarField"
5088          },
5089          {
5090            "name": "prodPermZetaOmegaEval",
5091            "type": "uint256",
5092            "internalType": "BN254.ScalarField"
5093          }
5094        ]
5095      }
5096    ],
5097    "outputs": [],
5098    "stateMutability": "nonpayable"
5099  },
5100  {
5101    "type": "function",
5102    "name": "owner",
5103    "inputs": [],
5104    "outputs": [
5105      {
5106        "name": "",
5107        "type": "address",
5108        "internalType": "address"
5109      }
5110    ],
5111    "stateMutability": "view"
5112  },
5113  {
5114    "type": "function",
5115    "name": "permissionedProver",
5116    "inputs": [],
5117    "outputs": [
5118      {
5119        "name": "",
5120        "type": "address",
5121        "internalType": "address"
5122      }
5123    ],
5124    "stateMutability": "view"
5125  },
5126  {
5127    "type": "function",
5128    "name": "proxiableUUID",
5129    "inputs": [],
5130    "outputs": [
5131      {
5132        "name": "",
5133        "type": "bytes32",
5134        "internalType": "bytes32"
5135      }
5136    ],
5137    "stateMutability": "view"
5138  },
5139  {
5140    "type": "function",
5141    "name": "renounceOwnership",
5142    "inputs": [],
5143    "outputs": [],
5144    "stateMutability": "nonpayable"
5145  },
5146  {
5147    "type": "function",
5148    "name": "setBlocksPerEpoch",
5149    "inputs": [
5150      {
5151        "name": "newBlocksPerEpoch",
5152        "type": "uint64",
5153        "internalType": "uint64"
5154      }
5155    ],
5156    "outputs": [],
5157    "stateMutability": "nonpayable"
5158  },
5159  {
5160    "type": "function",
5161    "name": "setFinalizedState",
5162    "inputs": [
5163      {
5164        "name": "state",
5165        "type": "tuple",
5166        "internalType": "struct LightClient.LightClientState",
5167        "components": [
5168          {
5169            "name": "viewNum",
5170            "type": "uint64",
5171            "internalType": "uint64"
5172          },
5173          {
5174            "name": "blockHeight",
5175            "type": "uint64",
5176            "internalType": "uint64"
5177          },
5178          {
5179            "name": "blockCommRoot",
5180            "type": "uint256",
5181            "internalType": "BN254.ScalarField"
5182          }
5183        ]
5184      }
5185    ],
5186    "outputs": [],
5187    "stateMutability": "nonpayable"
5188  },
5189  {
5190    "type": "function",
5191    "name": "setHotShotDownSince",
5192    "inputs": [
5193      {
5194        "name": "l1Height",
5195        "type": "uint256",
5196        "internalType": "uint256"
5197      }
5198    ],
5199    "outputs": [],
5200    "stateMutability": "nonpayable"
5201  },
5202  {
5203    "type": "function",
5204    "name": "setHotShotUp",
5205    "inputs": [],
5206    "outputs": [],
5207    "stateMutability": "nonpayable"
5208  },
5209  {
5210    "type": "function",
5211    "name": "setPermissionedProver",
5212    "inputs": [
5213      {
5214        "name": "prover",
5215        "type": "address",
5216        "internalType": "address"
5217      }
5218    ],
5219    "outputs": [],
5220    "stateMutability": "nonpayable"
5221  },
5222  {
5223    "type": "function",
5224    "name": "setStateHistory",
5225    "inputs": [
5226      {
5227        "name": "_stateHistoryCommitments",
5228        "type": "tuple[]",
5229        "internalType": "struct LightClient.StateHistoryCommitment[]",
5230        "components": [
5231          {
5232            "name": "l1BlockHeight",
5233            "type": "uint64",
5234            "internalType": "uint64"
5235          },
5236          {
5237            "name": "l1BlockTimestamp",
5238            "type": "uint64",
5239            "internalType": "uint64"
5240          },
5241          {
5242            "name": "hotShotBlockHeight",
5243            "type": "uint64",
5244            "internalType": "uint64"
5245          },
5246          {
5247            "name": "hotShotBlockCommRoot",
5248            "type": "uint256",
5249            "internalType": "BN254.ScalarField"
5250          }
5251        ]
5252      }
5253    ],
5254    "outputs": [],
5255    "stateMutability": "nonpayable"
5256  },
5257  {
5258    "type": "function",
5259    "name": "setStateHistoryRetentionPeriod",
5260    "inputs": [
5261      {
5262        "name": "historySeconds",
5263        "type": "uint32",
5264        "internalType": "uint32"
5265      }
5266    ],
5267    "outputs": [],
5268    "stateMutability": "nonpayable"
5269  },
5270  {
5271    "type": "function",
5272    "name": "setVotingStakeTableState",
5273    "inputs": [
5274      {
5275        "name": "stake",
5276        "type": "tuple",
5277        "internalType": "struct LightClient.StakeTableState",
5278        "components": [
5279          {
5280            "name": "threshold",
5281            "type": "uint256",
5282            "internalType": "uint256"
5283          },
5284          {
5285            "name": "blsKeyComm",
5286            "type": "uint256",
5287            "internalType": "BN254.ScalarField"
5288          },
5289          {
5290            "name": "schnorrKeyComm",
5291            "type": "uint256",
5292            "internalType": "BN254.ScalarField"
5293          },
5294          {
5295            "name": "amountComm",
5296            "type": "uint256",
5297            "internalType": "BN254.ScalarField"
5298          }
5299        ]
5300      }
5301    ],
5302    "outputs": [],
5303    "stateMutability": "nonpayable"
5304  },
5305  {
5306    "type": "function",
5307    "name": "setstateHistoryRetentionPeriod",
5308    "inputs": [
5309      {
5310        "name": "historySeconds",
5311        "type": "uint32",
5312        "internalType": "uint32"
5313      }
5314    ],
5315    "outputs": [],
5316    "stateMutability": "nonpayable"
5317  },
5318  {
5319    "type": "function",
5320    "name": "stateHistoryCommitments",
5321    "inputs": [
5322      {
5323        "name": "",
5324        "type": "uint256",
5325        "internalType": "uint256"
5326      }
5327    ],
5328    "outputs": [
5329      {
5330        "name": "l1BlockHeight",
5331        "type": "uint64",
5332        "internalType": "uint64"
5333      },
5334      {
5335        "name": "l1BlockTimestamp",
5336        "type": "uint64",
5337        "internalType": "uint64"
5338      },
5339      {
5340        "name": "hotShotBlockHeight",
5341        "type": "uint64",
5342        "internalType": "uint64"
5343      },
5344      {
5345        "name": "hotShotBlockCommRoot",
5346        "type": "uint256",
5347        "internalType": "BN254.ScalarField"
5348      }
5349    ],
5350    "stateMutability": "view"
5351  },
5352  {
5353    "type": "function",
5354    "name": "stateHistoryFirstIndex",
5355    "inputs": [],
5356    "outputs": [
5357      {
5358        "name": "",
5359        "type": "uint64",
5360        "internalType": "uint64"
5361      }
5362    ],
5363    "stateMutability": "view"
5364  },
5365  {
5366    "type": "function",
5367    "name": "stateHistoryRetentionPeriod",
5368    "inputs": [],
5369    "outputs": [
5370      {
5371        "name": "",
5372        "type": "uint32",
5373        "internalType": "uint32"
5374      }
5375    ],
5376    "stateMutability": "view"
5377  },
5378  {
5379    "type": "function",
5380    "name": "transferOwnership",
5381    "inputs": [
5382      {
5383        "name": "newOwner",
5384        "type": "address",
5385        "internalType": "address"
5386      }
5387    ],
5388    "outputs": [],
5389    "stateMutability": "nonpayable"
5390  },
5391  {
5392    "type": "function",
5393    "name": "updateEpochStartBlock",
5394    "inputs": [
5395      {
5396        "name": "newEpochStartBlock",
5397        "type": "uint64",
5398        "internalType": "uint64"
5399      }
5400    ],
5401    "outputs": [],
5402    "stateMutability": "nonpayable"
5403  },
5404  {
5405    "type": "function",
5406    "name": "upgradeToAndCall",
5407    "inputs": [
5408      {
5409        "name": "newImplementation",
5410        "type": "address",
5411        "internalType": "address"
5412      },
5413      {
5414        "name": "data",
5415        "type": "bytes",
5416        "internalType": "bytes"
5417      }
5418    ],
5419    "outputs": [],
5420    "stateMutability": "payable"
5421  },
5422  {
5423    "type": "function",
5424    "name": "votingStakeTableState",
5425    "inputs": [],
5426    "outputs": [
5427      {
5428        "name": "threshold",
5429        "type": "uint256",
5430        "internalType": "uint256"
5431      },
5432      {
5433        "name": "blsKeyComm",
5434        "type": "uint256",
5435        "internalType": "BN254.ScalarField"
5436      },
5437      {
5438        "name": "schnorrKeyComm",
5439        "type": "uint256",
5440        "internalType": "BN254.ScalarField"
5441      },
5442      {
5443        "name": "amountComm",
5444        "type": "uint256",
5445        "internalType": "BN254.ScalarField"
5446      }
5447    ],
5448    "stateMutability": "view"
5449  },
5450  {
5451    "type": "event",
5452    "name": "Initialized",
5453    "inputs": [
5454      {
5455        "name": "version",
5456        "type": "uint64",
5457        "indexed": false,
5458        "internalType": "uint64"
5459      }
5460    ],
5461    "anonymous": false
5462  },
5463  {
5464    "type": "event",
5465    "name": "NewEpoch",
5466    "inputs": [
5467      {
5468        "name": "epoch",
5469        "type": "uint64",
5470        "indexed": false,
5471        "internalType": "uint64"
5472      }
5473    ],
5474    "anonymous": false
5475  },
5476  {
5477    "type": "event",
5478    "name": "NewState",
5479    "inputs": [
5480      {
5481        "name": "viewNum",
5482        "type": "uint64",
5483        "indexed": true,
5484        "internalType": "uint64"
5485      },
5486      {
5487        "name": "blockHeight",
5488        "type": "uint64",
5489        "indexed": true,
5490        "internalType": "uint64"
5491      },
5492      {
5493        "name": "blockCommRoot",
5494        "type": "uint256",
5495        "indexed": false,
5496        "internalType": "BN254.ScalarField"
5497      }
5498    ],
5499    "anonymous": false
5500  },
5501  {
5502    "type": "event",
5503    "name": "OwnershipTransferred",
5504    "inputs": [
5505      {
5506        "name": "previousOwner",
5507        "type": "address",
5508        "indexed": true,
5509        "internalType": "address"
5510      },
5511      {
5512        "name": "newOwner",
5513        "type": "address",
5514        "indexed": true,
5515        "internalType": "address"
5516      }
5517    ],
5518    "anonymous": false
5519  },
5520  {
5521    "type": "event",
5522    "name": "PermissionedProverNotRequired",
5523    "inputs": [],
5524    "anonymous": false
5525  },
5526  {
5527    "type": "event",
5528    "name": "PermissionedProverRequired",
5529    "inputs": [
5530      {
5531        "name": "permissionedProver",
5532        "type": "address",
5533        "indexed": false,
5534        "internalType": "address"
5535      }
5536    ],
5537    "anonymous": false
5538  },
5539  {
5540    "type": "event",
5541    "name": "Upgrade",
5542    "inputs": [
5543      {
5544        "name": "implementation",
5545        "type": "address",
5546        "indexed": false,
5547        "internalType": "address"
5548      }
5549    ],
5550    "anonymous": false
5551  },
5552  {
5553    "type": "event",
5554    "name": "Upgraded",
5555    "inputs": [
5556      {
5557        "name": "implementation",
5558        "type": "address",
5559        "indexed": true,
5560        "internalType": "address"
5561      }
5562    ],
5563    "anonymous": false
5564  },
5565  {
5566    "type": "error",
5567    "name": "AddressEmptyCode",
5568    "inputs": [
5569      {
5570        "name": "target",
5571        "type": "address",
5572        "internalType": "address"
5573      }
5574    ]
5575  },
5576  {
5577    "type": "error",
5578    "name": "DeprecatedApi",
5579    "inputs": []
5580  },
5581  {
5582    "type": "error",
5583    "name": "ERC1967InvalidImplementation",
5584    "inputs": [
5585      {
5586        "name": "implementation",
5587        "type": "address",
5588        "internalType": "address"
5589      }
5590    ]
5591  },
5592  {
5593    "type": "error",
5594    "name": "ERC1967NonPayable",
5595    "inputs": []
5596  },
5597  {
5598    "type": "error",
5599    "name": "FailedInnerCall",
5600    "inputs": []
5601  },
5602  {
5603    "type": "error",
5604    "name": "InsufficientSnapshotHistory",
5605    "inputs": []
5606  },
5607  {
5608    "type": "error",
5609    "name": "InvalidAddress",
5610    "inputs": []
5611  },
5612  {
5613    "type": "error",
5614    "name": "InvalidArgs",
5615    "inputs": []
5616  },
5617  {
5618    "type": "error",
5619    "name": "InvalidHotShotBlockForCommitmentCheck",
5620    "inputs": []
5621  },
5622  {
5623    "type": "error",
5624    "name": "InvalidInitialization",
5625    "inputs": []
5626  },
5627  {
5628    "type": "error",
5629    "name": "InvalidMaxStateHistory",
5630    "inputs": []
5631  },
5632  {
5633    "type": "error",
5634    "name": "InvalidProof",
5635    "inputs": []
5636  },
5637  {
5638    "type": "error",
5639    "name": "InvalidScalar",
5640    "inputs": []
5641  },
5642  {
5643    "type": "error",
5644    "name": "MissingEpochRootUpdate",
5645    "inputs": []
5646  },
5647  {
5648    "type": "error",
5649    "name": "NoChangeRequired",
5650    "inputs": []
5651  },
5652  {
5653    "type": "error",
5654    "name": "NotInitializing",
5655    "inputs": []
5656  },
5657  {
5658    "type": "error",
5659    "name": "OutdatedState",
5660    "inputs": []
5661  },
5662  {
5663    "type": "error",
5664    "name": "OwnableInvalidOwner",
5665    "inputs": [
5666      {
5667        "name": "owner",
5668        "type": "address",
5669        "internalType": "address"
5670      }
5671    ]
5672  },
5673  {
5674    "type": "error",
5675    "name": "OwnableUnauthorizedAccount",
5676    "inputs": [
5677      {
5678        "name": "account",
5679        "type": "address",
5680        "internalType": "address"
5681      }
5682    ]
5683  },
5684  {
5685    "type": "error",
5686    "name": "ProverNotPermissioned",
5687    "inputs": []
5688  },
5689  {
5690    "type": "error",
5691    "name": "UUPSUnauthorizedCallContext",
5692    "inputs": []
5693  },
5694  {
5695    "type": "error",
5696    "name": "UUPSUnsupportedProxiableUUID",
5697    "inputs": [
5698      {
5699        "name": "slot",
5700        "type": "bytes32",
5701        "internalType": "bytes32"
5702      }
5703    ]
5704  },
5705  {
5706    "type": "error",
5707    "name": "WrongStakeTableUsed",
5708    "inputs": []
5709  }
5710]
5711```*/
5712#[allow(
5713    non_camel_case_types,
5714    non_snake_case,
5715    clippy::pub_underscore_fields,
5716    clippy::style,
5717    clippy::empty_structs_with_brackets
5718)]
5719pub mod LightClientV3Mock {
5720    use super::*;
5721    use alloy::sol_types as alloy_sol_types;
5722    /// The creation / init bytecode of the contract.
5723    ///
5724    /// ```text
5725    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051613aa16100f95f395f8181611d7c01528181611da50152611f220152613aa15ff3fe608060405260043610610275575f3560e01c8063715018a61161014a578063aabd5db3116100be578063d24d933d11610078578063d24d933d146108ab578063e0303301146108da578063f0682054146108f9578063f2fde38b14610918578063f567616014610937578063f9e50d1914610956575f5ffd5b8063aabd5db3146107bb578063ad3cb1cc146107da578063b33bc49114610817578063b5adea3c14610836578063c23b9e9e14610855578063c8e5e4981461088d575f5ffd5b80638da5cb5b1161010f5780638da5cb5b146106b857806390c14390146106f457806396c1ca6114610713578063998328e8146107325780639baa3cc9146107475780639fdb54a714610766575f5ffd5b8063715018a61461061b578063757c37ad1461062f5780637667180814610649578063826e41fc1461065d5780638584d23f1461067c575f5ffd5b8063313df7b1116101ec578063426d3194116101a6578063426d319414610568578063433dba9f146105895780634f1ef286146105a857806352d1902d146105bb578063623a1338146105cf57806369cc6a0414610607575f5ffd5b8063313df7b114610481578063378ec23b146104b857806338e454b1146104d45780633c23b6db146104e85780633ed55b7b14610525578063416827441461054b575f5ffd5b8063167ac6181161023d578063167ac618146103855780632063d4f7146103a457806325297427146103c35780632d52aad6146103f25780632f79889d14610424578063300c89dd14610462575f5ffd5b8063013fa5fc1461027957806302b592f31461029a5780630625e19b146102f75780630d8e6e2c1461033957806312173c2c14610364575b5f5ffd5b348015610284575f5ffd5b50610298610293366004612ba8565b61096a565b005b3480156102a5575f5ffd5b506102b96102b4366004612bc1565b610a1d565b6040516102ee94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b348015610302575f5ffd5b50600b54600c54600d54600e546103199392919084565b6040805194855260208501939093529183015260608201526080016102ee565b348015610344575f5ffd5b5060408051600381525f60208201819052918101919091526060016102ee565b34801561036f575f5ffd5b50610378610a66565b6040516102ee9190612bd8565b348015610390575f5ffd5b5061029861039f366004612def565b611096565b3480156103af575f5ffd5b506102986103be3660046130d3565b61110d565b3480156103ce575f5ffd5b506103e26103dd366004612def565b611126565b60405190151581526020016102ee565b3480156103fd575f5ffd5b5061029861040c366004612bc1565b6010805460ff60401b1916600160401b179055601155565b34801561042f575f5ffd5b5060085461044a90600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016102ee565b34801561046d575f5ffd5b506103e261047c366004612def565b611188565b34801561048c575f5ffd5b506008546104a0906001600160a01b031681565b6040516001600160a01b0390911681526020016102ee565b3480156104c3575f5ffd5b50435b6040519081526020016102ee565b3480156104df575f5ffd5b5061029861121d565b3480156104f3575f5ffd5b50610298610502366004612def565b600a805467ffffffffffffffff19166001600160401b0392909216919091179055565b348015610530575f5ffd5b50600a5461044a90600160401b90046001600160401b031681565b348015610556575f5ffd5b506010546001600160401b031661044a565b348015610573575f5ffd5b505f546001546002546003546103199392919084565b348015610594575f5ffd5b506102986105a336600461311a565b61130c565b6102986105b6366004613133565b611320565b3480156105c6575f5ffd5b506104c661133f565b3480156105da575f5ffd5b506102986105e9366004613219565b8051600b556020810151600c556040810151600d5560600151600e55565b348015610612575f5ffd5b5061029861135a565b348015610626575f5ffd5b506102986113c8565b34801561063a575f5ffd5b506102986103be366004613233565b348015610654575f5ffd5b5061044a6113d9565b348015610668575f5ffd5b506008546001600160a01b031615156103e2565b348015610687575f5ffd5b5061069b610696366004612bc1565b611403565b604080519283526001600160401b039091166020830152016102ee565b3480156106c3575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166104a0565b3480156106ff575f5ffd5b5061044a61070e366004613277565b61152e565b34801561071e575f5ffd5b5061029861072d36600461311a565b61159d565b34801561073d575f5ffd5b506104c6600f5481565b348015610752575f5ffd5b5061029861076136600461329f565b611626565b348015610771575f5ffd5b50600654600754610795916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016102ee565b3480156107c6575f5ffd5b506102986107d53660046132f4565b611735565b3480156107e5575f5ffd5b5061080a604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102ee9190613338565b348015610822575f5ffd5b50610298610831366004613277565b611a5a565b348015610841575f5ffd5b5061029861085036600461336d565b611bab565b348015610860575f5ffd5b5060085461087890600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016102ee565b348015610898575f5ffd5b506102986010805460ff60401b19169055565b3480156108b6575f5ffd5b50600454600554610795916001600160401b0380821692600160401b909204169083565b3480156108e5575f5ffd5b506103e26108f4366004613387565b611bf2565b348015610904575f5ffd5b50600a5461044a906001600160401b031681565b348015610923575f5ffd5b50610298610932366004612ba8565b611c2c565b348015610942575f5ffd5b506102986109513660046133a7565b611c6b565b348015610961575f5ffd5b506009546104c6565b610972611d16565b6001600160a01b0381166109995760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036109c85760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610a2c575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b610a6e6128c8565b620100008152600560208201527f018f7ccd26652f2ad0a0d891bf29c5ef9f7b2a4e5a8295ee0acde69b1669acb56040820151527f0c3b19cb30f3edf93eb2b9e0b11ce099c5745bc3eda3226c7f5d5f39a97bfcaa6020604083015101527f141e3d68aad50bf0843f645d61f5e8fe3608d312e457d1bf712ce20c2ce906a96060820151527f2b44c03676d0a3cd12257e589b78f059a525aac5d6bfab0d6189d4b40ae511226020606083015101527f18609f79b8297b3f9951e7139945aa60e33e914dea6f27bda920b0e0c90935f36080820151527f11a6315abb98f76cce5b4fa5d87b8a2064d2d04c20f83314d2dd2fdb68141e3d6020608083015101527f2fa93348689ea07bb760d7c3100d3148afc342c050eba7f39455e478a5730d0560a0820151527f0b7c92113ecabfa54988d3a81e13237196c9975dd3dea0a325c49bcf901f8b4a602060a083015101527f2ae11000a5bd0a79adf8e3a5a449ea5c58dfa7d6a2fa24b9c976ecfca706584060c0820151527f0c4677befdd8c7d2474f2f7d19f2d0e2747a7e05469cc08eee2b7b81ad4872e2602060c083015101527f04065da2ee5858e53035e3fab84444a8663a8ead5d299b0b0460b9bd6b9c34cb60e0820151527f0dd33bf9f503c9d0b486ec825bd8ddfbc93a96f4e09978bea94db7caa33e32f0602060e083015101527f0d53ecf3464c3b43f674a4c9ae5dacd9e2a6cf69ccd06bdb38cdef07acd0b9b8610100820151527f0c0a5358e274a877cd87e017a90e3e2c4630637c14400d16141610817543cc6c602061010083015101527f053d21494294a22b3e3c567c9f618615af41c257043b87470788d7c30e915b32610120820151527f04cfeb1d7ff9e07794e47e486fcfe6b0e143c74a49ce915ebdf6ae68df6e06b8602061012083015101527f113f2826bf7221de175ca046f82f51112a9eb1486b06747f4d13940bc26f4bb8610140820151527f05cfaa7aa08b080dcbc31caddd501fe5ef8c118d8ed7d500708ec689b3ac7f2b602061014083015101527f0a9d147b2c3c63d298198af385558871a9b69c192291a4ee69def6d82dd7c31e610160820151527f016d5ae3fc3c6dc5283ff63e2ffe92d0931cc77258cccf3d1c9aed601ed2e8ba602061016083015101527f123d9f2908cd4f038bb281805ad8e922444469b02f4b83e6c051c0e1caad152c610180820151527f08e647cc02b9df4ceb5b154550d2b29a7b67370f67a37274206bb12c5c451dc2602061018083015101527f1859105e4ad21829c12c4a5b50d5a2a5d988fd73eb4424465638e199ab367b826101a0820151527f0abbccc29007b3c64dad550f76c99ea330b102dd7fb57a542a9add84845d51c360206101a083015101527f263a7ebacbf181a281a3494d75e822165d3f50e9ac14e74a822ad91503ec78a96101c0820151527f1f0968f3165c00c63964e71ef0c42396a146190a97ff2f436ae89288cb9d344660206101c083015101527f2f7cd5cc72420dd90cf820746b89e616dff8b21e9aadb9a4a06f41ece2039a5e6101e0820151527f15a34038506ec14fc8c26ad2551619bace01483f085e208d2302ad4c2111cb3760206101e083015101527f172d2aa0fb172d331b0f3671ae68be93ecfbda63a722176be8841e839031b61e610200820151527f13b29e31f3730117e54309a33f472f538f688bb94ccc3085da13a561dc8865e9602061020083015101527f0bf4050e8f045922cae613d4a626aeaeee7dc24a2b7bb473aee45e5c94e7ede3610220820151527f15aa6d9399cd9b8ab3883839d300e76f9e4e2baad7d39e0aa2e382f235d22263602061022083015101527f09dd102380546061aa42f087f8ac5525a6747b8db1e3c4fe033fdbe3d80d6e9a610240820151527f2edfb5b603bbb2d376ffe876bd219319d34d8813d09b70fb37da3cc2b77ebacb602061024083015101527f044bef6f37b3b1db2da99a5262d054163fc465d24e53925d07e5d4b5fe946746610260820151527f10453728e61b7fdf863adffb97c4a65b9c116087c10f01563fc31393ee69ea3f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b61109e611d16565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b038581168202928317948590556110e49491909104811692811691161761152e565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806111465750600a546001600160401b0316155b1561115257505f919050565b600a546001600160401b03166111698360056134b3565b61117391906134e6565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806111a85750600a546001600160401b0316155b156111b457505f919050565b600a546111ca906001600160401b0316836134e6565b6001600160401b031615806112175750600a546111f2906005906001600160401b0316613513565b600a546001600160401b039182169161120c9116846134e6565b6001600160401b0316115b92915050565b5f516020613a755f395f51905f52805460039190600160401b900460ff1680611253575080546001600160401b03808416911610155b156112715760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b9081178355600a546112ab929181048216911661152e565b6010805467ffffffffffffffff19166001600160401b03928316179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050565b611314611d16565b61131d8161159d565b50565b611328611d71565b61133182611e15565b61133b8282611e56565b5050565b5f611348611f17565b505f516020613a555f395f51905f5290565b611362611d16565b6008546001600160a01b0316156113ad57600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b6113d0611d16565b6113c65f611f60565b600654600a545f916113fe916001600160401b03600160401b9092048216911661152e565b905090565b600980545f91829190611417600183613532565b8154811061142757611427613545565b5f918252602090912060029091020154600160801b90046001600160401b0316841061146657604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b8181101561152757846009828154811061149657611496613545565b5f918252602090912060029091020154600160801b90046001600160401b0316111561151f57600981815481106114cf576114cf613545565b905f5260205f20906002020160010154600982815481106114f2576114f2613545565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b60010161147a565b5050915091565b5f816001600160401b03165f0361154657505f611217565b826001600160401b03165f0361155e57506001611217565b61156882846134e6565b6001600160401b03165f03611588576115818284613559565b9050611217565b6115928284613559565b6115819060016134b3565b6115a5611d16565b610e108163ffffffff1610806115c457506301e133808163ffffffff16115b806115e2575060085463ffffffff600160a01b909104811690821611155b15611600576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b5f516020613a755f395f51905f528054600160401b810460ff1615906001600160401b03165f811580156116575750825b90505f826001600160401b031660011480156116725750303b155b905081158015611680575080155b1561169e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156116c857845460ff60401b1916600160401b1785555b6116d186611fd0565b6116d9611fe1565b6116e4898989611fe9565b831561172a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6008546001600160a01b03161515801561175a57506008546001600160a01b03163314155b15611778576040516301474c8f60e71b815260040160405180910390fd5b60065484516001600160401b0391821691161115806117b1575060065460208501516001600160401b03600160401b9092048216911611155b156117cf5760405163051c46ef60e01b815260040160405180910390fd5b6117dc8460400151612115565b6117e98360200151612115565b6117f68360400151612115565b6118038360600151612115565b5f61180c6113d9565b6020860151600a549192505f9161182c91906001600160401b031661152e565b6010549091506001600160401b0390811690821610611870576118528660200151611188565b156118705760405163080ae8d960e01b815260040160405180910390fd5b6010546001600160401b03908116908216111561191c5760026118938383613513565b6001600160401b0316106118ba5760405163080ae8d960e01b815260040160405180910390fd5b6118c58260016134b3565b6001600160401b0316816001600160401b03161480156118fe57506006546118fc90600160401b90046001600160401b0316611126565b155b1561191c5760405163080ae8d960e01b815260040160405180910390fd5b61192886868686612156565b85516006805460208901516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040870151600755600f85905560105481169082161080159061198557506119858660200151611126565b156119ef578451600b556020850151600c556040850151600d556060850151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b6119d38260016134b3565b6040516001600160401b03909116815260200160405180910390a15b6119fa434288612380565b85602001516001600160401b0316865f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae68860400151604051611a4a91815260200190565b60405180910390a3505050505050565b5f516020613a755f395f51905f52805460029190600160401b900460ff1680611a90575080546001600160401b03808416911610155b15611aae5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b178255600590851611611af6576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b031990921690871617179055611b3f838561152e565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b80516006805460208401516001600160401b03908116600160401b026001600160801b0319909216931692909217919091179055604081015160075561131d434283612380565b6010545f90600160401b900460ff16611c1457611c0f8383612569565b611c25565b8160115484611c239190613532565b115b9392505050565b611c34611d16565b6001600160a01b038116611c6257604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61131d81611f60565b611c7660095f612b2d565b5f5b815181101561133b576009828281518110611c9557611c95613545565b6020908102919091018101518254600181810185555f94855293839020825160029092020180549383015160408401516001600160401b03908116600160801b0267ffffffffffffffff60801b19928216600160401b026001600160801b031990971691909416179490941793909316178255606001519082015501611c78565b33611d487f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146113c65760405163118cdaa760e01b8152336004820152602401611c59565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611df757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611deb5f516020613a555f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156113c65760405163703e46dd60e11b815260040160405180910390fd5b611e1d611d16565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610a12565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611eb0575060408051601f3d908101601f19168201909252611ead91810190613586565b60015b611ed857604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611c59565b5f516020613a555f395f51905f528114611f0857604051632a87526960e21b815260048101829052602401611c59565b611f1283836126c1565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113c65760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611fd8612716565b61131d8161274c565b6113c6612716565b82516001600160401b031615158061200d575060208301516001600160401b031615155b8061201a57506020820151155b8061202757506040820151155b8061203457506060820151155b8061203e57508151155b806120505750610e108163ffffffff16105b8061206457506301e133808163ffffffff16115b15612082576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181108061133b5760405163016c173360e21b815260040160405180910390fd5b5f61215f610a66565b9050612169612b4b565b600c548152600d54602080830191909152600e546040830152600b54606080840191909152600a549188015190916001600160401b03600160401b90910481169116108015906121c157506121c18760200151611126565b1561220a576040805187516020808301919091528801518183015290870151606080830191909152870151608082015260a0016040516020818303038152906040529050612245565b60408051600b546020820152600c5491810191909152600d546060820152600e54608082015260a00160405160208183030381529060405290505b6040805188516001600160401b039081166020808401919091528a015116818301529088015160608201525f9060800160408051601f198184030181529082905261229691849089906020016135b4565b60408051601f19818403018152919052805160209091012090506122da7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001826135d6565b60808401526040516354e8bd6760e01b815273ffffffffffffffffffffffffffffffffffffffff906354e8bd679061231a90879087908a906004016137cb565b602060405180830381865af4158015612335573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061235991906139eb565b612376576040516309bde33960e01b815260040160405180910390fd5b5050505050505050565b600954158015906123f5575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b03169081106123c0576123c0613545565b5f9182526020909120600290910201546123ea90600160401b90046001600160401b031684613513565b6001600160401b0316115b1561248857600854600980549091600160c01b90046001600160401b031690811061242257612422613545565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861246283613a0a565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b6009545f904384118061257a575080155b806125c45750600854600980549091600160c01b90046001600160401b03169081106125a8576125a8613545565b5f9182526020909120600290910201546001600160401b031684105b156125e25760405163b0b4387760e01b815260040160405180910390fd5b5f80806125f0600185613532565b90505b8161268c57600854600160c01b90046001600160401b0316811061268c57866009828154811061262557612625613545565b5f9182526020909120600290910201546001600160401b03161161267a57600191506009818154811061265a5761265a613545565b5f9182526020909120600290910201546001600160401b0316925061268c565b8061268481613a34565b9150506125f3565b816126aa5760405163b0b4387760e01b815260040160405180910390fd5b856126b58489613532565b11979650505050505050565b6126ca82612754565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561270e57611f1282826127b7565b61133b612829565b5f516020613a755f395f51905f5254600160401b900460ff166113c657604051631afcd79f60e31b815260040160405180910390fd5b611c34612716565b806001600160a01b03163b5f0361278957604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611c59565b5f516020613a555f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516127d39190613a49565b5f60405180830381855af49150503d805f811461280b576040519150601f19603f3d011682016040523d82523d5f602084013e612810565b606091505b5091509150612820858383612848565b95945050505050565b34156113c65760405163b398979f60e01b815260040160405180910390fd5b60608261285857611c0f8261289f565b815115801561286f57506001600160a01b0384163b155b1561289857604051639996b31560e01b81526001600160a01b0385166004820152602401611c59565b5092915050565b8051156128af5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f81526020016128fb60405180604001604052805f81526020015f81525090565b815260200161291b60405180604001604052805f81526020015f81525090565b815260200161293b60405180604001604052805f81526020015f81525090565b815260200161295b60405180604001604052805f81526020015f81525090565b815260200161297b60405180604001604052805f81526020015f81525090565b815260200161299b60405180604001604052805f81526020015f81525090565b81526020016129bb60405180604001604052805f81526020015f81525090565b81526020016129db60405180604001604052805f81526020015f81525090565b81526020016129fb60405180604001604052805f81526020015f81525090565b8152602001612a1b60405180604001604052805f81526020015f81525090565b8152602001612a3b60405180604001604052805f81526020015f81525090565b8152602001612a5b60405180604001604052805f81526020015f81525090565b8152602001612a7b60405180604001604052805f81526020015f81525090565b8152602001612a9b60405180604001604052805f81526020015f81525090565b8152602001612abb60405180604001604052805f81526020015f81525090565b8152602001612adb60405180604001604052805f81526020015f81525090565b8152602001612afb60405180604001604052805f81526020015f81525090565b8152602001612b1b60405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b5080545f8255600202905f5260205f209081019061131d9190612b69565b6040518060a001604052806005906020820280368337509192915050565b5b80821115612b8e5780546001600160c01b03191681555f6001820155600201612b6a565b5090565b80356001600160a01b0381168114611183575f5ffd5b5f60208284031215612bb8575f5ffd5b611c2582612b92565b5f60208284031215612bd1575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612c0a604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b0381168114611183575f5ffd5b5f60208284031215612dff575f5ffd5b611c2582612dd9565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612e3f57612e3f612e08565b60405290565b604051608081016001600160401b0381118282101715612e3f57612e3f612e08565b604051601f8201601f191681016001600160401b0381118282101715612e8f57612e8f612e08565b604052919050565b5f60608284031215612ea7575f5ffd5b604051606081016001600160401b0381118282101715612ec957612ec9612e08565b604052905080612ed883612dd9565b8152612ee660208401612dd9565b6020820152604092830135920191909152919050565b5f60408284031215612f0c575f5ffd5b604080519081016001600160401b0381118282101715612f2e57612f2e612e08565b604052823581526020928301359281019290925250919050565b5f6104808284031215612f59575f5ffd5b612f61612e1c565b9050612f6d8383612efc565b8152612f7c8360408401612efc565b6020820152612f8e8360808401612efc565b6040820152612fa08360c08401612efc565b6060820152612fb3836101008401612efc565b6080820152612fc6836101408401612efc565b60a0820152612fd9836101808401612efc565b60c0820152612fec836101c08401612efc565b60e0820152612fff836102008401612efc565b610100820152613013836102408401612efc565b610120820152613027836102808401612efc565b61014082015261303b836102c08401612efc565b61016082015261304f836103008401612efc565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e083850312156130e5575f5ffd5b6130ef8484612e97565b91506130fe8460608501612f48565b90509250929050565b803563ffffffff81168114611183575f5ffd5b5f6020828403121561312a575f5ffd5b611c2582613107565b5f5f60408385031215613144575f5ffd5b61314d83612b92565b915060208301356001600160401b03811115613167575f5ffd5b8301601f81018513613177575f5ffd5b80356001600160401b0381111561319057613190612e08565b6131a3601f8201601f1916602001612e67565b8181528660208385010111156131b7575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f608082840312156131e6575f5ffd5b6131ee612e45565b8235815260208084013590820152604080840135908201526060928301359281019290925250919050565b5f60808284031215613229575f5ffd5b611c2583836131d6565b5f5f5f6105608486031215613246575f5ffd5b6132508585612e97565b925061325f85606086016131d6565b915061326e8560e08601612f48565b90509250925092565b5f5f60408385031215613288575f5ffd5b61329183612dd9565b91506130fe60208401612dd9565b5f5f5f5f61012085870312156132b3575f5ffd5b6132bd8686612e97565b93506132cc86606087016131d6565b92506132da60e08601613107565b91506132e96101008601612b92565b905092959194509250565b5f5f5f5f6105808587031215613308575f5ffd5b6133128686612e97565b935061332186606087016131d6565b925060e085013591506132e9866101008701612f48565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6060828403121561337d575f5ffd5b611c258383612e97565b5f5f60408385031215613398575f5ffd5b50508035926020909101359150565b5f602082840312156133b7575f5ffd5b81356001600160401b038111156133cc575f5ffd5b8201601f810184136133dc575f5ffd5b80356001600160401b038111156133f5576133f5612e08565b61340460208260051b01612e67565b8082825260208201915060208360071b850101925086831115613425575f5ffd5b6020840193505b828410156134955760808488031215613443575f5ffd5b61344b612e45565b61345485612dd9565b815261346260208601612dd9565b602082015261347360408601612dd9565b604082015260608581013590820152825260809093019260209091019061342c565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b0381811683821601908111156112175761121761349f565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b038316806134fe576134fe6134d2565b806001600160401b0384160691505092915050565b6001600160401b0382811682821603908111156112175761121761349f565b818103818111156112175761121761349f565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b03831680613571576135716134d2565b806001600160401b0384160491505092915050565b5f60208284031215613596575f5ffd5b5051919050565b5f81518060208401855e5f93019283525090919050565b5f6135c86135c2838761359d565b8561359d565b928352505060200192915050565b5f826135e4576135e46134d2565b500690565b805f5b600581101561360b5781518452602093840193909101906001016135ec565b50505050565b61362682825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a2082019050845182526020850151602083015260408501516137fd604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e08301526139d56105008301856135e9565b6139e36105a0830184613611565b949350505050565b5f602082840312156139fb575f5ffd5b81518015158114611c25575f5ffd5b5f6001600160401b0382166001600160401b038103613a2b57613a2b61349f565b60010192915050565b5f81613a4257613a4261349f565b505f190190565b5f611c25828461359d56fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c634300081c000a
5726    /// ```
5727    #[rustfmt::skip]
5728    #[allow(clippy::all)]
5729    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
5730        b"`\xA0`@R0`\x80R4\x80\x15a\0\x13W__\xFD[Pa\0\x1Ca\0!V[a\0\xD3V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80Th\x01\0\0\0\0\0\0\0\0\x90\x04`\xFF\x16\x15a\0qW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80T`\x01`\x01`@\x1B\x03\x90\x81\x16\x14a\0\xD0W\x80T`\x01`\x01`@\x1B\x03\x19\x16`\x01`\x01`@\x1B\x03\x90\x81\x17\x82U`@Q\x90\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PV[`\x80Qa:\xA1a\0\xF9_9_\x81\x81a\x1D|\x01R\x81\x81a\x1D\xA5\x01Ra\x1F\"\x01Ra:\xA1_\xF3\xFE`\x80`@R`\x046\x10a\x02uW_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01JW\x80c\xAA\xBD]\xB3\x11a\0\xBEW\x80c\xD2M\x93=\x11a\0xW\x80c\xD2M\x93=\x14a\x08\xABW\x80c\xE003\x01\x14a\x08\xDAW\x80c\xF0h T\x14a\x08\xF9W\x80c\xF2\xFD\xE3\x8B\x14a\t\x18W\x80c\xF5ga`\x14a\t7W\x80c\xF9\xE5\r\x19\x14a\tVW__\xFD[\x80c\xAA\xBD]\xB3\x14a\x07\xBBW\x80c\xAD<\xB1\xCC\x14a\x07\xDAW\x80c\xB3;\xC4\x91\x14a\x08\x17W\x80c\xB5\xAD\xEA<\x14a\x086W\x80c\xC2;\x9E\x9E\x14a\x08UW\x80c\xC8\xE5\xE4\x98\x14a\x08\x8DW__\xFD[\x80c\x8D\xA5\xCB[\x11a\x01\x0FW\x80c\x8D\xA5\xCB[\x14a\x06\xB8W\x80c\x90\xC1C\x90\x14a\x06\xF4W\x80c\x96\xC1\xCAa\x14a\x07\x13W\x80c\x99\x83(\xE8\x14a\x072W\x80c\x9B\xAA<\xC9\x14a\x07GW\x80c\x9F\xDBT\xA7\x14a\x07fW__\xFD[\x80cqP\x18\xA6\x14a\x06\x1BW\x80cu|7\xAD\x14a\x06/W\x80cvg\x18\x08\x14a\x06IW\x80c\x82nA\xFC\x14a\x06]W\x80c\x85\x84\xD2?\x14a\x06|W__\xFD[\x80c1=\xF7\xB1\x11a\x01\xECW\x80cBm1\x94\x11a\x01\xA6W\x80cBm1\x94\x14a\x05hW\x80cC=\xBA\x9F\x14a\x05\x89W\x80cO\x1E\xF2\x86\x14a\x05\xA8W\x80cR\xD1\x90-\x14a\x05\xBBW\x80cb:\x138\x14a\x05\xCFW\x80ci\xCCj\x04\x14a\x06\x07W__\xFD[\x80c1=\xF7\xB1\x14a\x04\x81W\x80c7\x8E\xC2;\x14a\x04\xB8W\x80c8\xE4T\xB1\x14a\x04\xD4W\x80c<#\xB6\xDB\x14a\x04\xE8W\x80c>\xD5[{\x14a\x05%W\x80cAh'D\x14a\x05KW__\xFD[\x80c\x16z\xC6\x18\x11a\x02=W\x80c\x16z\xC6\x18\x14a\x03\x85W\x80c c\xD4\xF7\x14a\x03\xA4W\x80c%)t'\x14a\x03\xC3W\x80c-R\xAA\xD6\x14a\x03\xF2W\x80c/y\x88\x9D\x14a\x04$W\x80c0\x0C\x89\xDD\x14a\x04bW__\xFD[\x80c\x01?\xA5\xFC\x14a\x02yW\x80c\x02\xB5\x92\xF3\x14a\x02\x9AW\x80c\x06%\xE1\x9B\x14a\x02\xF7W\x80c\r\x8En,\x14a\x039W\x80c\x12\x17<,\x14a\x03dW[__\xFD[4\x80\x15a\x02\x84W__\xFD[Pa\x02\x98a\x02\x936`\x04a+\xA8V[a\tjV[\0[4\x80\x15a\x02\xA5W__\xFD[Pa\x02\xB9a\x02\xB46`\x04a+\xC1V[a\n\x1DV[`@Qa\x02\xEE\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x03\x02W__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x03\x19\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\xEEV[4\x80\x15a\x03DW__\xFD[P`@\x80Q`\x03\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\xEEV[4\x80\x15a\x03oW__\xFD[Pa\x03xa\nfV[`@Qa\x02\xEE\x91\x90a+\xD8V[4\x80\x15a\x03\x90W__\xFD[Pa\x02\x98a\x03\x9F6`\x04a-\xEFV[a\x10\x96V[4\x80\x15a\x03\xAFW__\xFD[Pa\x02\x98a\x03\xBE6`\x04a0\xD3V[a\x11\rV[4\x80\x15a\x03\xCEW__\xFD[Pa\x03\xE2a\x03\xDD6`\x04a-\xEFV[a\x11&V[`@Q\x90\x15\x15\x81R` \x01a\x02\xEEV[4\x80\x15a\x03\xFDW__\xFD[Pa\x02\x98a\x04\x0C6`\x04a+\xC1V[`\x10\x80T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x90U`\x11UV[4\x80\x15a\x04/W__\xFD[P`\x08Ta\x04J\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xEEV[4\x80\x15a\x04mW__\xFD[Pa\x03\xE2a\x04|6`\x04a-\xEFV[a\x11\x88V[4\x80\x15a\x04\x8CW__\xFD[P`\x08Ta\x04\xA0\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xEEV[4\x80\x15a\x04\xC3W__\xFD[PC[`@Q\x90\x81R` \x01a\x02\xEEV[4\x80\x15a\x04\xDFW__\xFD[Pa\x02\x98a\x12\x1DV[4\x80\x15a\x04\xF3W__\xFD[Pa\x02\x98a\x05\x026`\x04a-\xEFV[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[4\x80\x15a\x050W__\xFD[P`\nTa\x04J\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x05VW__\xFD[P`\x10T`\x01`\x01`@\x1B\x03\x16a\x04JV[4\x80\x15a\x05sW__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\x19\x93\x92\x91\x90\x84V[4\x80\x15a\x05\x94W__\xFD[Pa\x02\x98a\x05\xA36`\x04a1\x1AV[a\x13\x0CV[a\x02\x98a\x05\xB66`\x04a13V[a\x13 V[4\x80\x15a\x05\xC6W__\xFD[Pa\x04\xC6a\x13?V[4\x80\x15a\x05\xDAW__\xFD[Pa\x02\x98a\x05\xE96`\x04a2\x19V[\x80Q`\x0BU` \x81\x01Q`\x0CU`@\x81\x01Q`\rU``\x01Q`\x0EUV[4\x80\x15a\x06\x12W__\xFD[Pa\x02\x98a\x13ZV[4\x80\x15a\x06&W__\xFD[Pa\x02\x98a\x13\xC8V[4\x80\x15a\x06:W__\xFD[Pa\x02\x98a\x03\xBE6`\x04a23V[4\x80\x15a\x06TW__\xFD[Pa\x04Ja\x13\xD9V[4\x80\x15a\x06hW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03\xE2V[4\x80\x15a\x06\x87W__\xFD[Pa\x06\x9Ba\x06\x966`\x04a+\xC1V[a\x14\x03V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\xEEV[4\x80\x15a\x06\xC3W__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16a\x04\xA0V[4\x80\x15a\x06\xFFW__\xFD[Pa\x04Ja\x07\x0E6`\x04a2wV[a\x15.V[4\x80\x15a\x07\x1EW__\xFD[Pa\x02\x98a\x07-6`\x04a1\x1AV[a\x15\x9DV[4\x80\x15a\x07=W__\xFD[Pa\x04\xC6`\x0FT\x81V[4\x80\x15a\x07RW__\xFD[Pa\x02\x98a\x07a6`\x04a2\x9FV[a\x16&V[4\x80\x15a\x07qW__\xFD[P`\x06T`\x07Ta\x07\x95\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x02\xEEV[4\x80\x15a\x07\xC6W__\xFD[Pa\x02\x98a\x07\xD56`\x04a2\xF4V[a\x175V[4\x80\x15a\x07\xE5W__\xFD[Pa\x08\n`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\xEE\x91\x90a38V[4\x80\x15a\x08\"W__\xFD[Pa\x02\x98a\x0816`\x04a2wV[a\x1AZV[4\x80\x15a\x08AW__\xFD[Pa\x02\x98a\x08P6`\x04a3mV[a\x1B\xABV[4\x80\x15a\x08`W__\xFD[P`\x08Ta\x08x\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\xEEV[4\x80\x15a\x08\x98W__\xFD[Pa\x02\x98`\x10\x80T`\xFF`@\x1B\x19\x16\x90UV[4\x80\x15a\x08\xB6W__\xFD[P`\x04T`\x05Ta\x07\x95\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x08\xE5W__\xFD[Pa\x03\xE2a\x08\xF46`\x04a3\x87V[a\x1B\xF2V[4\x80\x15a\t\x04W__\xFD[P`\nTa\x04J\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\t#W__\xFD[Pa\x02\x98a\t26`\x04a+\xA8V[a\x1C,V[4\x80\x15a\tBW__\xFD[Pa\x02\x98a\tQ6`\x04a3\xA7V[a\x1CkV[4\x80\x15a\taW__\xFD[P`\tTa\x04\xC6V[a\tra\x1D\x16V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t\x99W`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\t\xC8W`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x80\x17\xBB\x88\x7F\xDF\x8F\xCAC\x14\xA9\xD4\x0Fns\xB3\xB8\x10\x02\xD6~\\\xFA\x85\xD8\x81s\xAFj\xA4`r\x90` \x01[`@Q\x80\x91\x03\x90\xA1PV[`\t\x81\x81T\x81\x10a\n,W_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\nna(\xC8V[b\x01\0\0\x81R`\x05` \x82\x01R\x7F\x01\x8F|\xCD&e/*\xD0\xA0\xD8\x91\xBF)\xC5\xEF\x9F{*NZ\x82\x95\xEE\n\xCD\xE6\x9B\x16i\xAC\xB5`@\x82\x01QR\x7F\x0C;\x19\xCB0\xF3\xED\xF9>\xB2\xB9\xE0\xB1\x1C\xE0\x99\xC5t[\xC3\xED\xA3\"l\x7F]_9\xA9{\xFC\xAA` `@\x83\x01Q\x01R\x7F\x14\x1E=h\xAA\xD5\x0B\xF0\x84?d]a\xF5\xE8\xFE6\x08\xD3\x12\xE4W\xD1\xBFq,\xE2\x0C,\xE9\x06\xA9``\x82\x01QR\x7F+D\xC06v\xD0\xA3\xCD\x12%~X\x9Bx\xF0Y\xA5%\xAA\xC5\xD6\xBF\xAB\ra\x89\xD4\xB4\n\xE5\x11\"` ``\x83\x01Q\x01R\x7F\x18`\x9Fy\xB8){?\x99Q\xE7\x13\x99E\xAA`\xE3>\x91M\xEAo'\xBD\xA9 \xB0\xE0\xC9\t5\xF3`\x80\x82\x01QR\x7F\x11\xA61Z\xBB\x98\xF7l\xCE[O\xA5\xD8{\x8A d\xD2\xD0L \xF83\x14\xD2\xDD/\xDBh\x14\x1E=` `\x80\x83\x01Q\x01R\x7F/\xA93Hh\x9E\xA0{\xB7`\xD7\xC3\x10\r1H\xAF\xC3B\xC0P\xEB\xA7\xF3\x94U\xE4x\xA5s\r\x05`\xA0\x82\x01QR\x7F\x0B|\x92\x11>\xCA\xBF\xA5I\x88\xD3\xA8\x1E\x13#q\x96\xC9\x97]\xD3\xDE\xA0\xA3%\xC4\x9B\xCF\x90\x1F\x8BJ` `\xA0\x83\x01Q\x01R\x7F*\xE1\x10\0\xA5\xBD\ny\xAD\xF8\xE3\xA5\xA4I\xEA\\X\xDF\xA7\xD6\xA2\xFA$\xB9\xC9v\xEC\xFC\xA7\x06X@`\xC0\x82\x01QR\x7F\x0CFw\xBE\xFD\xD8\xC7\xD2GO/}\x19\xF2\xD0\xE2tz~\x05F\x9C\xC0\x8E\xEE+{\x81\xADHr\xE2` `\xC0\x83\x01Q\x01R\x7F\x04\x06]\xA2\xEEXX\xE505\xE3\xFA\xB8DD\xA8f:\x8E\xAD])\x9B\x0B\x04`\xB9\xBDk\x9C4\xCB`\xE0\x82\x01QR\x7F\r\xD3;\xF9\xF5\x03\xC9\xD0\xB4\x86\xEC\x82[\xD8\xDD\xFB\xC9:\x96\xF4\xE0\x99x\xBE\xA9M\xB7\xCA\xA3>2\xF0` `\xE0\x83\x01Q\x01R\x7F\rS\xEC\xF3FL;C\xF6t\xA4\xC9\xAE]\xAC\xD9\xE2\xA6\xCFi\xCC\xD0k\xDB8\xCD\xEF\x07\xAC\xD0\xB9\xB8a\x01\0\x82\x01QR\x7F\x0C\nSX\xE2t\xA8w\xCD\x87\xE0\x17\xA9\x0E>,F0c|\x14@\r\x16\x14\x16\x10\x81uC\xCCl` a\x01\0\x83\x01Q\x01R\x7F\x05=!IB\x94\xA2+><V|\x9Fa\x86\x15\xAFA\xC2W\x04;\x87G\x07\x88\xD7\xC3\x0E\x91[2a\x01 \x82\x01QR\x7F\x04\xCF\xEB\x1D\x7F\xF9\xE0w\x94\xE4~Ho\xCF\xE6\xB0\xE1C\xC7JI\xCE\x91^\xBD\xF6\xAEh\xDFn\x06\xB8` a\x01 \x83\x01Q\x01R\x7F\x11?(&\xBFr!\xDE\x17\\\xA0F\xF8/Q\x11*\x9E\xB1Hk\x06t\x7FM\x13\x94\x0B\xC2oK\xB8a\x01@\x82\x01QR\x7F\x05\xCF\xAAz\xA0\x8B\x08\r\xCB\xC3\x1C\xAD\xDDP\x1F\xE5\xEF\x8C\x11\x8D\x8E\xD7\xD5\0p\x8E\xC6\x89\xB3\xAC\x7F+` a\x01@\x83\x01Q\x01R\x7F\n\x9D\x14{,<c\xD2\x98\x19\x8A\xF3\x85U\x88q\xA9\xB6\x9C\x19\"\x91\xA4\xEEi\xDE\xF6\xD8-\xD7\xC3\x1Ea\x01`\x82\x01QR\x7F\x01mZ\xE3\xFC<m\xC5(?\xF6>/\xFE\x92\xD0\x93\x1C\xC7rX\xCC\xCF=\x1C\x9A\xED`\x1E\xD2\xE8\xBA` a\x01`\x83\x01Q\x01R\x7F\x12=\x9F)\x08\xCDO\x03\x8B\xB2\x81\x80Z\xD8\xE9\"DDi\xB0/K\x83\xE6\xC0Q\xC0\xE1\xCA\xAD\x15,a\x01\x80\x82\x01QR\x7F\x08\xE6G\xCC\x02\xB9\xDFL\xEB[\x15EP\xD2\xB2\x9A{g7\x0Fg\xA3rt k\xB1,\\E\x1D\xC2` a\x01\x80\x83\x01Q\x01R\x7F\x18Y\x10^J\xD2\x18)\xC1,J[P\xD5\xA2\xA5\xD9\x88\xFDs\xEBD$FV8\xE1\x99\xAB6{\x82a\x01\xA0\x82\x01QR\x7F\n\xBB\xCC\xC2\x90\x07\xB3\xC6M\xADU\x0Fv\xC9\x9E\xA30\xB1\x02\xDD\x7F\xB5zT*\x9A\xDD\x84\x84]Q\xC3` a\x01\xA0\x83\x01Q\x01R\x7F&:~\xBA\xCB\xF1\x81\xA2\x81\xA3IMu\xE8\"\x16]?P\xE9\xAC\x14\xE7J\x82*\xD9\x15\x03\xECx\xA9a\x01\xC0\x82\x01QR\x7F\x1F\th\xF3\x16\\\0\xC69d\xE7\x1E\xF0\xC4#\x96\xA1F\x19\n\x97\xFF/Cj\xE8\x92\x88\xCB\x9D4F` a\x01\xC0\x83\x01Q\x01R\x7F/|\xD5\xCCrB\r\xD9\x0C\xF8 tk\x89\xE6\x16\xDF\xF8\xB2\x1E\x9A\xAD\xB9\xA4\xA0oA\xEC\xE2\x03\x9A^a\x01\xE0\x82\x01QR\x7F\x15\xA3@8Pn\xC1O\xC8\xC2j\xD2U\x16\x19\xBA\xCE\x01H?\x08^ \x8D#\x02\xADL!\x11\xCB7` a\x01\xE0\x83\x01Q\x01R\x7F\x17-*\xA0\xFB\x17-3\x1B\x0F6q\xAEh\xBE\x93\xEC\xFB\xDAc\xA7\"\x17k\xE8\x84\x1E\x83\x901\xB6\x1Ea\x02\0\x82\x01QR\x7F\x13\xB2\x9E1\xF3s\x01\x17\xE5C\t\xA3?G/S\x8Fh\x8B\xB9L\xCC0\x85\xDA\x13\xA5a\xDC\x88e\xE9` a\x02\0\x83\x01Q\x01R\x7F\x0B\xF4\x05\x0E\x8F\x04Y\"\xCA\xE6\x13\xD4\xA6&\xAE\xAE\xEE}\xC2J+{\xB4s\xAE\xE4^\\\x94\xE7\xED\xE3a\x02 \x82\x01QR\x7F\x15\xAAm\x93\x99\xCD\x9B\x8A\xB3\x8889\xD3\0\xE7o\x9EN+\xAA\xD7\xD3\x9E\n\xA2\xE3\x82\xF25\xD2\"c` a\x02 \x83\x01Q\x01R\x7F\t\xDD\x10#\x80T`a\xAAB\xF0\x87\xF8\xACU%\xA6t{\x8D\xB1\xE3\xC4\xFE\x03?\xDB\xE3\xD8\rn\x9Aa\x02@\x82\x01QR\x7F.\xDF\xB5\xB6\x03\xBB\xB2\xD3v\xFF\xE8v\xBD!\x93\x19\xD3M\x88\x13\xD0\x9Bp\xFB7\xDA<\xC2\xB7~\xBA\xCB` a\x02@\x83\x01Q\x01R\x7F\x04K\xEFo7\xB3\xB1\xDB-\xA9\x9ARb\xD0T\x16?\xC4e\xD2NS\x92]\x07\xE5\xD4\xB5\xFE\x94gFa\x02`\x82\x01QR\x7F\x10E7(\xE6\x1B\x7F\xDF\x86:\xDF\xFB\x97\xC4\xA6[\x9C\x11`\x87\xC1\x0F\x01V?\xC3\x13\x93\xEEi\xEA?` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[a\x10\x9Ea\x1D\x16V[`\n\x80To\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\x19\x81\x16`\x01`@\x1B`\x01`\x01`@\x1B\x03\x85\x81\x16\x82\x02\x92\x83\x17\x94\x85\x90Ua\x10\xE4\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\x15.V[`\n`\x10a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPPV[`@QcN@\\\x8D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\x11FWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\x11RWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\x11i\x83`\x05a4\xB3V[a\x11s\x91\x90a4\xE6V[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\x11\xA8WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\x11\xB4WP_\x91\x90PV[`\nTa\x11\xCA\x90`\x01`\x01`@\x1B\x03\x16\x83a4\xE6V[`\x01`\x01`@\x1B\x03\x16\x15\x80a\x12\x17WP`\nTa\x11\xF2\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a5\x13V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\x12\x0C\x91\x16\x84a4\xE6V[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[_Q` a:u_9_Q\x90_R\x80T`\x03\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x12SWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x12qW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x90\x91\x17`\x01`@\x1B\x90\x81\x17\x83U`\nTa\x12\xAB\x92\x91\x81\x04\x82\x16\x91\x16a\x15.V[`\x10\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x92\x83\x16\x17\x90U\x81T`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPV[a\x13\x14a\x1D\x16V[a\x13\x1D\x81a\x15\x9DV[PV[a\x13(a\x1DqV[a\x131\x82a\x1E\x15V[a\x13;\x82\x82a\x1EVV[PPV[_a\x13Ha\x1F\x17V[P_Q` a:U_9_Q\x90_R\x90V[a\x13ba\x1D\x16V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x13\xADW`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`@Q\x7F\x9A_W\xDE\x85m\xD6h\xC5M\xD9^\\U\xDF\x93C!q\xCB\xCAI\xA8wmV \xEAY\xC0$P\x90_\x90\xA1V[`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\x13\xD0a\x1D\x16V[a\x13\xC6_a\x1F`V[`\x06T`\nT_\x91a\x13\xFE\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\x15.V[\x90P\x90V[`\t\x80T_\x91\x82\x91\x90a\x14\x17`\x01\x83a52V[\x81T\x81\x10a\x14'Wa\x14'a5EV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x14fW`@Qc\x18V\xA4\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16[\x81\x81\x10\x15a\x15'W\x84`\t\x82\x81T\x81\x10a\x14\x96Wa\x14\x96a5EV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x15\x1FW`\t\x81\x81T\x81\x10a\x14\xCFWa\x14\xCFa5EV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x14\xF2Wa\x14\xF2a5EV[\x90_R` _ \x90`\x02\x02\x01_\x01`\x10\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`@\x1B\x03\x16\x93P\x93PPP\x91P\x91V[`\x01\x01a\x14zV[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x15FWP_a\x12\x17V[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x15^WP`\x01a\x12\x17V[a\x15h\x82\x84a4\xE6V[`\x01`\x01`@\x1B\x03\x16_\x03a\x15\x88Wa\x15\x81\x82\x84a5YV[\x90Pa\x12\x17V[a\x15\x92\x82\x84a5YV[a\x15\x81\x90`\x01a4\xB3V[a\x15\xA5a\x1D\x16V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x15\xC4WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x15\xE2WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x16\0W`@Qc\x07\xA5\x07w`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[_Q` a:u_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x16WWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x16rWP0;\x15[\x90P\x81\x15\x80\x15a\x16\x80WP\x80\x15[\x15a\x16\x9EW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x16\xC8W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x16\xD1\x86a\x1F\xD0V[a\x16\xD9a\x1F\xE1V[a\x16\xE4\x89\x89\x89a\x1F\xE9V[\x83\x15a\x17*W\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x17ZWP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x17xW`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x84Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x17\xB1WP`\x06T` \x85\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x17\xCFW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x17\xDC\x84`@\x01Qa!\x15V[a\x17\xE9\x83` \x01Qa!\x15V[a\x17\xF6\x83`@\x01Qa!\x15V[a\x18\x03\x83``\x01Qa!\x15V[_a\x18\x0Ca\x13\xD9V[` \x86\x01Q`\nT\x91\x92P_\x91a\x18,\x91\x90`\x01`\x01`@\x1B\x03\x16a\x15.V[`\x10T\x90\x91P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x10a\x18pWa\x18R\x86` \x01Qa\x11\x88V[\x15a\x18pW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x10T`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x11\x15a\x19\x1CW`\x02a\x18\x93\x83\x83a5\x13V[`\x01`\x01`@\x1B\x03\x16\x10a\x18\xBAW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x18\xC5\x82`\x01a4\xB3V[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x18\xFEWP`\x06Ta\x18\xFC\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\x11&V[\x15[\x15a\x19\x1CW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x19(\x86\x86\x86\x86a!VV[\x85Q`\x06\x80T` \x89\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x81\x16\x93\x90\x93\x17\x17\x90U`@\x87\x01Q`\x07U`\x0F\x85\x90U`\x10T\x81\x16\x90\x82\x16\x10\x80\x15\x90a\x19\x85WPa\x19\x85\x86` \x01Qa\x11&V[\x15a\x19\xEFW\x84Q`\x0BU` \x85\x01Q`\x0CU`@\x85\x01Q`\rU``\x85\x01Q`\x0EU\x7F1\xEA\xBD\x90\x99\xFD\xB2]\xAC\xDD\xD2\x06\xAB\xFF\x871\x1EU4A\xFC\x9D\x0F\xCD\xEF \x10b\xD7\xE7\x07\x1Ba\x19\xD3\x82`\x01a4\xB3V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x19\xFACB\x88a#\x80V[\x85` \x01Q`\x01`\x01`@\x1B\x03\x16\x86_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x88`@\x01Q`@Qa\x1AJ\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPPV[_Q` a:u_9_Q\x90_R\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x1A\x90WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x1A\xAEW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x90\x91\x17`\x01`@\x1B\x17\x82U`\x05\x90\x85\x16\x11a\x1A\xF6W`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_T`\x0BU`\x01T`\x0CU`\x02T`\rU`\x03T`\x0EU`\n\x80T`\x01`\x01`@\x1B\x03\x85\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x90\x87\x16\x17\x17\x90Ua\x1B?\x83\x85a\x15.V[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x16`\x01`\x80\x1B`\x01`\x01`@\x1B\x03\x93\x84\x16\x02\x17\x90U\x81T`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPV[\x80Q`\x06\x80T` \x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x81\x01Q`\x07Ua\x13\x1DCB\x83a#\x80V[`\x10T_\x90`\x01`@\x1B\x90\x04`\xFF\x16a\x1C\x14Wa\x1C\x0F\x83\x83a%iV[a\x1C%V[\x81`\x11T\x84a\x1C#\x91\x90a52V[\x11[\x93\x92PPPV[a\x1C4a\x1D\x16V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1CbW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x13\x1D\x81a\x1F`V[a\x1Cv`\t_a+-V[_[\x81Q\x81\x10\x15a\x13;W`\t\x82\x82\x81Q\x81\x10a\x1C\x95Wa\x1C\x95a5EV[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q\x82T`\x01\x81\x81\x01\x85U_\x94\x85R\x93\x83\x90 \x82Q`\x02\x90\x92\x02\x01\x80T\x93\x83\x01Q`@\x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x92\x82\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x97\x16\x91\x90\x94\x16\x17\x94\x90\x94\x17\x93\x90\x93\x16\x17\x82U``\x01Q\x90\x82\x01U\x01a\x1CxV[3a\x1DH\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x13\xC6W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x1CYV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\x1D\xF7WP\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\x1D\xEB_Q` a:U_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x13\xC6W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1E\x1Da\x1D\x16V[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x81R\x7F\xF7\x87!\"n\xFE\x9A\x1B\xB6x\x18\x9A\x16\xD1UI(\xB9\xF2\x19.,\xB9>\xED\xA8;y\xFA@\0}\x90` \x01a\n\x12V[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x1E\xB0WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1E\xAD\x91\x81\x01\x90a5\x86V[`\x01[a\x1E\xD8W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x1CYV[_Q` a:U_9_Q\x90_R\x81\x14a\x1F\x08W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x1CYV[a\x1F\x12\x83\x83a&\xC1V[PPPV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x13\xC6W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[a\x1F\xD8a'\x16V[a\x13\x1D\x81a'LV[a\x13\xC6a'\x16V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a \rWP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a \x1AWP` \x82\x01Q\x15[\x80a 'WP`@\x82\x01Q\x15[\x80a 4WP``\x82\x01Q\x15[\x80a >WP\x81Q\x15[\x80a PWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a dWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a \x82W`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\x13;W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a!_a\nfV[\x90Pa!ia+KV[`\x0CT\x81R`\rT` \x80\x83\x01\x91\x90\x91R`\x0ET`@\x83\x01R`\x0BT``\x80\x84\x01\x91\x90\x91R`\nT\x91\x88\x01Q\x90\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x91\x16\x10\x80\x15\x90a!\xC1WPa!\xC1\x87` \x01Qa\x11&V[\x15a\"\nW`@\x80Q\x87Q` \x80\x83\x01\x91\x90\x91R\x88\x01Q\x81\x83\x01R\x90\x87\x01Q``\x80\x83\x01\x91\x90\x91R\x87\x01Q`\x80\x82\x01R`\xA0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\"EV[`@\x80Q`\x0BT` \x82\x01R`\x0CT\x91\x81\x01\x91\x90\x91R`\rT``\x82\x01R`\x0ET`\x80\x82\x01R`\xA0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P[`@\x80Q\x88Q`\x01`\x01`@\x1B\x03\x90\x81\x16` \x80\x84\x01\x91\x90\x91R\x8A\x01Q\x16\x81\x83\x01R\x90\x88\x01Q``\x82\x01R_\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\"\x96\x91\x84\x90\x89\x90` \x01a5\xB4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x90Pa\"\xDA\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x82a5\xD6V[`\x80\x84\x01R`@QcT\xE8\xBDg`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90cT\xE8\xBDg\x90a#\x1A\x90\x87\x90\x87\x90\x8A\x90`\x04\x01a7\xCBV[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a#5W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a#Y\x91\x90a9\xEBV[a#vW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPPV[`\tT\x15\x80\x15\x90a#\xF5WP`\x08T`\t\x80T`\x01`\xA0\x1B\x83\x04c\xFF\xFF\xFF\xFF\x16\x92`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a#\xC0Wa#\xC0a5EV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta#\xEA\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a5\x13V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a$\x88W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a$\"Wa$\"a5EV[_\x91\x82R` \x82 `\x02\x90\x91\x02\x01\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U`\x01\x01U`\x08\x80T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90`\x18a$b\x83a:\nV[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPP[`@\x80Q`\x80\x81\x01\x82R`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x80\x85\x01\x91\x82R\x83\x01Q\x85\x16\x84\x83\x01\x90\x81R\x92\x90\x91\x01Q``\x84\x01\x90\x81R`\t\x80T`\x01\x81\x01\x82U_\x91\x90\x91R\x93Q`\x02\x90\x94\x02\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xAF\x81\x01\x80T\x93Q\x94Q\x87\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x88\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x96\x90\x97\x16\x95\x90\x95\x17\x92\x90\x92\x17\x92\x90\x92\x16\x93\x90\x93\x17\x90\x91UQ\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xB0\x90\x91\x01UV[`\tT_\x90C\x84\x11\x80a%zWP\x80\x15[\x80a%\xC4WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a%\xA8Wa%\xA8a5EV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a%\xE2W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a%\xF0`\x01\x85a52V[\x90P[\x81a&\x8CW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a&\x8CW\x86`\t\x82\x81T\x81\x10a&%Wa&%a5EV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a&zW`\x01\x91P`\t\x81\x81T\x81\x10a&ZWa&Za5EV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa&\x8CV[\x80a&\x84\x81a:4V[\x91PPa%\xF3V[\x81a&\xAAW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a&\xB5\x84\x89a52V[\x11\x97\x96PPPPPPPV[a&\xCA\x82a'TV[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a'\x0EWa\x1F\x12\x82\x82a'\xB7V[a\x13;a()V[_Q` a:u_9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a\x13\xC6W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1C4a'\x16V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a'\x89W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x1CYV[_Q` a:U_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa'\xD3\x91\x90a:IV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a(\x0BW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a(\x10V[``\x91P[P\x91P\x91Pa( \x85\x83\x83a(HV[\x95\x94PPPPPV[4\x15a\x13\xC6W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a(XWa\x1C\x0F\x82a(\x9FV[\x81Q\x15\x80\x15a(oWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a(\x98W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x1CYV[P\x92\x91PPV[\x80Q\x15a(\xAFW\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x80a\x02\xC0\x01`@R\x80_\x81R` \x01_\x81R` \x01a(\xFB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\x1B`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a);`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)[`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a){`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\x9B`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\xBB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\xDB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\xFB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\x1B`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*;`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*[`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*{`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\x9B`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\xBB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\xDB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\xFB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a+\x1B`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[P\x80T_\x82U`\x02\x02\x90_R` _ \x90\x81\x01\x90a\x13\x1D\x91\x90a+iV[`@Q\x80`\xA0\x01`@R\x80`\x05\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15a+\x8EW\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U_`\x01\x82\x01U`\x02\x01a+jV[P\x90V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x83W__\xFD[_` \x82\x84\x03\x12\x15a+\xB8W__\xFD[a\x1C%\x82a+\x92V[_` \x82\x84\x03\x12\x15a+\xD1W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa,\n`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x83\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x83\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x83\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x83\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x83\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x83\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x83\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x83\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x83\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x83\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x83\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x83\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x83\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x83\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x83\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x83\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x83\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x83\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x90\x92\x01Qa\x04\xE0\x90\x91\x01R\x90V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x11\x83W__\xFD[_` \x82\x84\x03\x12\x15a-\xFFW__\xFD[a\x1C%\x82a-\xD9V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.?Wa.?a.\x08V[`@R\x90V[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.?Wa.?a.\x08V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.\x8FWa.\x8Fa.\x08V[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a.\xA7W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.\xC9Wa.\xC9a.\x08V[`@R\x90P\x80a.\xD8\x83a-\xD9V[\x81Ra.\xE6` \x84\x01a-\xD9V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a/\x0CW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/.Wa/.a.\x08V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a/YW__\xFD[a/aa.\x1CV[\x90Pa/m\x83\x83a.\xFCV[\x81Ra/|\x83`@\x84\x01a.\xFCV[` \x82\x01Ra/\x8E\x83`\x80\x84\x01a.\xFCV[`@\x82\x01Ra/\xA0\x83`\xC0\x84\x01a.\xFCV[``\x82\x01Ra/\xB3\x83a\x01\0\x84\x01a.\xFCV[`\x80\x82\x01Ra/\xC6\x83a\x01@\x84\x01a.\xFCV[`\xA0\x82\x01Ra/\xD9\x83a\x01\x80\x84\x01a.\xFCV[`\xC0\x82\x01Ra/\xEC\x83a\x01\xC0\x84\x01a.\xFCV[`\xE0\x82\x01Ra/\xFF\x83a\x02\0\x84\x01a.\xFCV[a\x01\0\x82\x01Ra0\x13\x83a\x02@\x84\x01a.\xFCV[a\x01 \x82\x01Ra0'\x83a\x02\x80\x84\x01a.\xFCV[a\x01@\x82\x01Ra0;\x83a\x02\xC0\x84\x01a.\xFCV[a\x01`\x82\x01Ra0O\x83a\x03\0\x84\x01a.\xFCV[a\x01\x80\x82\x01Ra\x03@\x82\x015a\x01\xA0\x82\x01Ra\x03`\x82\x015a\x01\xC0\x82\x01Ra\x03\x80\x82\x015a\x01\xE0\x82\x01Ra\x03\xA0\x82\x015a\x02\0\x82\x01Ra\x03\xC0\x82\x015a\x02 \x82\x01Ra\x03\xE0\x82\x015a\x02@\x82\x01Ra\x04\0\x82\x015a\x02`\x82\x01Ra\x04 \x82\x015a\x02\x80\x82\x01Ra\x04@\x82\x015a\x02\xA0\x82\x01Ra\x04`\x90\x91\x015a\x02\xC0\x82\x01R\x91\x90PV[__a\x04\xE0\x83\x85\x03\x12\x15a0\xE5W__\xFD[a0\xEF\x84\x84a.\x97V[\x91Pa0\xFE\x84``\x85\x01a/HV[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\x83W__\xFD[_` \x82\x84\x03\x12\x15a1*W__\xFD[a\x1C%\x82a1\x07V[__`@\x83\x85\x03\x12\x15a1DW__\xFD[a1M\x83a+\x92V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1gW__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a1wW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x90Wa1\x90a.\x08V[a1\xA3`\x1F\x82\x01`\x1F\x19\x16` \x01a.gV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a1\xB7W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a1\xE6W__\xFD[a1\xEEa.EV[\x825\x81R` \x80\x84\x015\x90\x82\x01R`@\x80\x84\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_`\x80\x82\x84\x03\x12\x15a2)W__\xFD[a\x1C%\x83\x83a1\xD6V[___a\x05`\x84\x86\x03\x12\x15a2FW__\xFD[a2P\x85\x85a.\x97V[\x92Pa2_\x85``\x86\x01a1\xD6V[\x91Pa2n\x85`\xE0\x86\x01a/HV[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a2\x88W__\xFD[a2\x91\x83a-\xD9V[\x91Pa0\xFE` \x84\x01a-\xD9V[____a\x01 \x85\x87\x03\x12\x15a2\xB3W__\xFD[a2\xBD\x86\x86a.\x97V[\x93Pa2\xCC\x86``\x87\x01a1\xD6V[\x92Pa2\xDA`\xE0\x86\x01a1\x07V[\x91Pa2\xE9a\x01\0\x86\x01a+\x92V[\x90P\x92\x95\x91\x94P\x92PV[____a\x05\x80\x85\x87\x03\x12\x15a3\x08W__\xFD[a3\x12\x86\x86a.\x97V[\x93Pa3!\x86``\x87\x01a1\xD6V[\x92P`\xE0\x85\x015\x91Pa2\xE9\x86a\x01\0\x87\x01a/HV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[_``\x82\x84\x03\x12\x15a3}W__\xFD[a\x1C%\x83\x83a.\x97V[__`@\x83\x85\x03\x12\x15a3\x98W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a3\xB7W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a3\xCCW__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a3\xDCW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a3\xF5Wa3\xF5a.\x08V[a4\x04` \x82`\x05\x1B\x01a.gV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x07\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a4%W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a4\x95W`\x80\x84\x88\x03\x12\x15a4CW__\xFD[a4Ka.EV[a4T\x85a-\xD9V[\x81Ra4b` \x86\x01a-\xD9V[` \x82\x01Ra4s`@\x86\x01a-\xD9V[`@\x82\x01R``\x85\x81\x015\x90\x82\x01R\x82R`\x80\x90\x93\x01\x92` \x90\x91\x01\x90a4,V[\x96\x95PPPPPPV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x12\x17Wa\x12\x17a4\x9FV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a4\xFEWa4\xFEa4\xD2V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x06\x91PP\x92\x91PPV[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x12\x17Wa\x12\x17a4\x9FV[\x81\x81\x03\x81\x81\x11\x15a\x12\x17Wa\x12\x17a4\x9FV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a5qWa5qa4\xD2V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_` \x82\x84\x03\x12\x15a5\x96W__\xFD[PQ\x91\x90PV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a5\xC8a5\xC2\x83\x87a5\x9DV[\x85a5\x9DV[\x92\x83RPP` \x01\x92\x91PPV[_\x82a5\xE4Wa5\xE4a4\xD2V[P\x06\x90V[\x80_[`\x05\x81\x10\x15a6\x0BW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a5\xECV[PPPPV[a6&\x82\x82Q\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[` \x81\x81\x01Q\x80Q`@\x85\x01R\x90\x81\x01Q``\x84\x01RP`@\x81\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP``\x81\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\x80\x81\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xA0\x81\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xC0\x81\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RP`\xE0\x81\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01\0\x81\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01 \x81\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01@\x81\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01`\x81\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\x80\x81\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xA0\x81\x01Qa\x03@\x83\x01Ra\x01\xC0\x81\x01Qa\x03`\x83\x01Ra\x01\xE0\x81\x01Qa\x03\x80\x83\x01Ra\x02\0\x81\x01Qa\x03\xA0\x83\x01Ra\x02 \x81\x01Qa\x03\xC0\x83\x01Ra\x02@\x81\x01Qa\x03\xE0\x83\x01Ra\x02`\x81\x01Qa\x04\0\x83\x01Ra\x02\x80\x81\x01Qa\x04 \x83\x01Ra\x02\xA0\x81\x01Qa\x04@\x83\x01Ra\x02\xC0\x01Qa\x04`\x90\x91\x01RV[_a\n \x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa7\xFD`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x85\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x85\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x85\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x85\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x85\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x85\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x85\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x85\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x85\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x85\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x85\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x85\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x85\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x85\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x85\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x85\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x85\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x85\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x85\x01Qa\x04\xE0\x83\x01Ra9\xD5a\x05\0\x83\x01\x85a5\xE9V[a9\xE3a\x05\xA0\x83\x01\x84a6\x11V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a9\xFBW__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1C%W__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a:+Wa:+a4\x9FV[`\x01\x01\x92\x91PPV[_\x81a:BWa:Ba4\x9FV[P_\x19\x01\x90V[_a\x1C%\x82\x84a5\x9DV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\xA1dsolcC\0\x08\x1C\0\n",
5731    );
5732    /// The runtime bytecode of the contract, as deployed on the network.
5733    ///
5734    /// ```text
5735    ///0x608060405260043610610275575f3560e01c8063715018a61161014a578063aabd5db3116100be578063d24d933d11610078578063d24d933d146108ab578063e0303301146108da578063f0682054146108f9578063f2fde38b14610918578063f567616014610937578063f9e50d1914610956575f5ffd5b8063aabd5db3146107bb578063ad3cb1cc146107da578063b33bc49114610817578063b5adea3c14610836578063c23b9e9e14610855578063c8e5e4981461088d575f5ffd5b80638da5cb5b1161010f5780638da5cb5b146106b857806390c14390146106f457806396c1ca6114610713578063998328e8146107325780639baa3cc9146107475780639fdb54a714610766575f5ffd5b8063715018a61461061b578063757c37ad1461062f5780637667180814610649578063826e41fc1461065d5780638584d23f1461067c575f5ffd5b8063313df7b1116101ec578063426d3194116101a6578063426d319414610568578063433dba9f146105895780634f1ef286146105a857806352d1902d146105bb578063623a1338146105cf57806369cc6a0414610607575f5ffd5b8063313df7b114610481578063378ec23b146104b857806338e454b1146104d45780633c23b6db146104e85780633ed55b7b14610525578063416827441461054b575f5ffd5b8063167ac6181161023d578063167ac618146103855780632063d4f7146103a457806325297427146103c35780632d52aad6146103f25780632f79889d14610424578063300c89dd14610462575f5ffd5b8063013fa5fc1461027957806302b592f31461029a5780630625e19b146102f75780630d8e6e2c1461033957806312173c2c14610364575b5f5ffd5b348015610284575f5ffd5b50610298610293366004612ba8565b61096a565b005b3480156102a5575f5ffd5b506102b96102b4366004612bc1565b610a1d565b6040516102ee94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b348015610302575f5ffd5b50600b54600c54600d54600e546103199392919084565b6040805194855260208501939093529183015260608201526080016102ee565b348015610344575f5ffd5b5060408051600381525f60208201819052918101919091526060016102ee565b34801561036f575f5ffd5b50610378610a66565b6040516102ee9190612bd8565b348015610390575f5ffd5b5061029861039f366004612def565b611096565b3480156103af575f5ffd5b506102986103be3660046130d3565b61110d565b3480156103ce575f5ffd5b506103e26103dd366004612def565b611126565b60405190151581526020016102ee565b3480156103fd575f5ffd5b5061029861040c366004612bc1565b6010805460ff60401b1916600160401b179055601155565b34801561042f575f5ffd5b5060085461044a90600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016102ee565b34801561046d575f5ffd5b506103e261047c366004612def565b611188565b34801561048c575f5ffd5b506008546104a0906001600160a01b031681565b6040516001600160a01b0390911681526020016102ee565b3480156104c3575f5ffd5b50435b6040519081526020016102ee565b3480156104df575f5ffd5b5061029861121d565b3480156104f3575f5ffd5b50610298610502366004612def565b600a805467ffffffffffffffff19166001600160401b0392909216919091179055565b348015610530575f5ffd5b50600a5461044a90600160401b90046001600160401b031681565b348015610556575f5ffd5b506010546001600160401b031661044a565b348015610573575f5ffd5b505f546001546002546003546103199392919084565b348015610594575f5ffd5b506102986105a336600461311a565b61130c565b6102986105b6366004613133565b611320565b3480156105c6575f5ffd5b506104c661133f565b3480156105da575f5ffd5b506102986105e9366004613219565b8051600b556020810151600c556040810151600d5560600151600e55565b348015610612575f5ffd5b5061029861135a565b348015610626575f5ffd5b506102986113c8565b34801561063a575f5ffd5b506102986103be366004613233565b348015610654575f5ffd5b5061044a6113d9565b348015610668575f5ffd5b506008546001600160a01b031615156103e2565b348015610687575f5ffd5b5061069b610696366004612bc1565b611403565b604080519283526001600160401b039091166020830152016102ee565b3480156106c3575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166104a0565b3480156106ff575f5ffd5b5061044a61070e366004613277565b61152e565b34801561071e575f5ffd5b5061029861072d36600461311a565b61159d565b34801561073d575f5ffd5b506104c6600f5481565b348015610752575f5ffd5b5061029861076136600461329f565b611626565b348015610771575f5ffd5b50600654600754610795916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016102ee565b3480156107c6575f5ffd5b506102986107d53660046132f4565b611735565b3480156107e5575f5ffd5b5061080a604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102ee9190613338565b348015610822575f5ffd5b50610298610831366004613277565b611a5a565b348015610841575f5ffd5b5061029861085036600461336d565b611bab565b348015610860575f5ffd5b5060085461087890600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016102ee565b348015610898575f5ffd5b506102986010805460ff60401b19169055565b3480156108b6575f5ffd5b50600454600554610795916001600160401b0380821692600160401b909204169083565b3480156108e5575f5ffd5b506103e26108f4366004613387565b611bf2565b348015610904575f5ffd5b50600a5461044a906001600160401b031681565b348015610923575f5ffd5b50610298610932366004612ba8565b611c2c565b348015610942575f5ffd5b506102986109513660046133a7565b611c6b565b348015610961575f5ffd5b506009546104c6565b610972611d16565b6001600160a01b0381166109995760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036109c85760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610a2c575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b610a6e6128c8565b620100008152600560208201527f018f7ccd26652f2ad0a0d891bf29c5ef9f7b2a4e5a8295ee0acde69b1669acb56040820151527f0c3b19cb30f3edf93eb2b9e0b11ce099c5745bc3eda3226c7f5d5f39a97bfcaa6020604083015101527f141e3d68aad50bf0843f645d61f5e8fe3608d312e457d1bf712ce20c2ce906a96060820151527f2b44c03676d0a3cd12257e589b78f059a525aac5d6bfab0d6189d4b40ae511226020606083015101527f18609f79b8297b3f9951e7139945aa60e33e914dea6f27bda920b0e0c90935f36080820151527f11a6315abb98f76cce5b4fa5d87b8a2064d2d04c20f83314d2dd2fdb68141e3d6020608083015101527f2fa93348689ea07bb760d7c3100d3148afc342c050eba7f39455e478a5730d0560a0820151527f0b7c92113ecabfa54988d3a81e13237196c9975dd3dea0a325c49bcf901f8b4a602060a083015101527f2ae11000a5bd0a79adf8e3a5a449ea5c58dfa7d6a2fa24b9c976ecfca706584060c0820151527f0c4677befdd8c7d2474f2f7d19f2d0e2747a7e05469cc08eee2b7b81ad4872e2602060c083015101527f04065da2ee5858e53035e3fab84444a8663a8ead5d299b0b0460b9bd6b9c34cb60e0820151527f0dd33bf9f503c9d0b486ec825bd8ddfbc93a96f4e09978bea94db7caa33e32f0602060e083015101527f0d53ecf3464c3b43f674a4c9ae5dacd9e2a6cf69ccd06bdb38cdef07acd0b9b8610100820151527f0c0a5358e274a877cd87e017a90e3e2c4630637c14400d16141610817543cc6c602061010083015101527f053d21494294a22b3e3c567c9f618615af41c257043b87470788d7c30e915b32610120820151527f04cfeb1d7ff9e07794e47e486fcfe6b0e143c74a49ce915ebdf6ae68df6e06b8602061012083015101527f113f2826bf7221de175ca046f82f51112a9eb1486b06747f4d13940bc26f4bb8610140820151527f05cfaa7aa08b080dcbc31caddd501fe5ef8c118d8ed7d500708ec689b3ac7f2b602061014083015101527f0a9d147b2c3c63d298198af385558871a9b69c192291a4ee69def6d82dd7c31e610160820151527f016d5ae3fc3c6dc5283ff63e2ffe92d0931cc77258cccf3d1c9aed601ed2e8ba602061016083015101527f123d9f2908cd4f038bb281805ad8e922444469b02f4b83e6c051c0e1caad152c610180820151527f08e647cc02b9df4ceb5b154550d2b29a7b67370f67a37274206bb12c5c451dc2602061018083015101527f1859105e4ad21829c12c4a5b50d5a2a5d988fd73eb4424465638e199ab367b826101a0820151527f0abbccc29007b3c64dad550f76c99ea330b102dd7fb57a542a9add84845d51c360206101a083015101527f263a7ebacbf181a281a3494d75e822165d3f50e9ac14e74a822ad91503ec78a96101c0820151527f1f0968f3165c00c63964e71ef0c42396a146190a97ff2f436ae89288cb9d344660206101c083015101527f2f7cd5cc72420dd90cf820746b89e616dff8b21e9aadb9a4a06f41ece2039a5e6101e0820151527f15a34038506ec14fc8c26ad2551619bace01483f085e208d2302ad4c2111cb3760206101e083015101527f172d2aa0fb172d331b0f3671ae68be93ecfbda63a722176be8841e839031b61e610200820151527f13b29e31f3730117e54309a33f472f538f688bb94ccc3085da13a561dc8865e9602061020083015101527f0bf4050e8f045922cae613d4a626aeaeee7dc24a2b7bb473aee45e5c94e7ede3610220820151527f15aa6d9399cd9b8ab3883839d300e76f9e4e2baad7d39e0aa2e382f235d22263602061022083015101527f09dd102380546061aa42f087f8ac5525a6747b8db1e3c4fe033fdbe3d80d6e9a610240820151527f2edfb5b603bbb2d376ffe876bd219319d34d8813d09b70fb37da3cc2b77ebacb602061024083015101527f044bef6f37b3b1db2da99a5262d054163fc465d24e53925d07e5d4b5fe946746610260820151527f10453728e61b7fdf863adffb97c4a65b9c116087c10f01563fc31393ee69ea3f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b61109e611d16565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b038581168202928317948590556110e49491909104811692811691161761152e565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806111465750600a546001600160401b0316155b1561115257505f919050565b600a546001600160401b03166111698360056134b3565b61117391906134e6565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806111a85750600a546001600160401b0316155b156111b457505f919050565b600a546111ca906001600160401b0316836134e6565b6001600160401b031615806112175750600a546111f2906005906001600160401b0316613513565b600a546001600160401b039182169161120c9116846134e6565b6001600160401b0316115b92915050565b5f516020613a755f395f51905f52805460039190600160401b900460ff1680611253575080546001600160401b03808416911610155b156112715760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b9081178355600a546112ab929181048216911661152e565b6010805467ffffffffffffffff19166001600160401b03928316179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050565b611314611d16565b61131d8161159d565b50565b611328611d71565b61133182611e15565b61133b8282611e56565b5050565b5f611348611f17565b505f516020613a555f395f51905f5290565b611362611d16565b6008546001600160a01b0316156113ad57600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b6113d0611d16565b6113c65f611f60565b600654600a545f916113fe916001600160401b03600160401b9092048216911661152e565b905090565b600980545f91829190611417600183613532565b8154811061142757611427613545565b5f918252602090912060029091020154600160801b90046001600160401b0316841061146657604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b8181101561152757846009828154811061149657611496613545565b5f918252602090912060029091020154600160801b90046001600160401b0316111561151f57600981815481106114cf576114cf613545565b905f5260205f20906002020160010154600982815481106114f2576114f2613545565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b60010161147a565b5050915091565b5f816001600160401b03165f0361154657505f611217565b826001600160401b03165f0361155e57506001611217565b61156882846134e6565b6001600160401b03165f03611588576115818284613559565b9050611217565b6115928284613559565b6115819060016134b3565b6115a5611d16565b610e108163ffffffff1610806115c457506301e133808163ffffffff16115b806115e2575060085463ffffffff600160a01b909104811690821611155b15611600576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b5f516020613a755f395f51905f528054600160401b810460ff1615906001600160401b03165f811580156116575750825b90505f826001600160401b031660011480156116725750303b155b905081158015611680575080155b1561169e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156116c857845460ff60401b1916600160401b1785555b6116d186611fd0565b6116d9611fe1565b6116e4898989611fe9565b831561172a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6008546001600160a01b03161515801561175a57506008546001600160a01b03163314155b15611778576040516301474c8f60e71b815260040160405180910390fd5b60065484516001600160401b0391821691161115806117b1575060065460208501516001600160401b03600160401b9092048216911611155b156117cf5760405163051c46ef60e01b815260040160405180910390fd5b6117dc8460400151612115565b6117e98360200151612115565b6117f68360400151612115565b6118038360600151612115565b5f61180c6113d9565b6020860151600a549192505f9161182c91906001600160401b031661152e565b6010549091506001600160401b0390811690821610611870576118528660200151611188565b156118705760405163080ae8d960e01b815260040160405180910390fd5b6010546001600160401b03908116908216111561191c5760026118938383613513565b6001600160401b0316106118ba5760405163080ae8d960e01b815260040160405180910390fd5b6118c58260016134b3565b6001600160401b0316816001600160401b03161480156118fe57506006546118fc90600160401b90046001600160401b0316611126565b155b1561191c5760405163080ae8d960e01b815260040160405180910390fd5b61192886868686612156565b85516006805460208901516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040870151600755600f85905560105481169082161080159061198557506119858660200151611126565b156119ef578451600b556020850151600c556040850151600d556060850151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b6119d38260016134b3565b6040516001600160401b03909116815260200160405180910390a15b6119fa434288612380565b85602001516001600160401b0316865f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae68860400151604051611a4a91815260200190565b60405180910390a3505050505050565b5f516020613a755f395f51905f52805460029190600160401b900460ff1680611a90575080546001600160401b03808416911610155b15611aae5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b178255600590851611611af6576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b031990921690871617179055611b3f838561152e565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b80516006805460208401516001600160401b03908116600160401b026001600160801b0319909216931692909217919091179055604081015160075561131d434283612380565b6010545f90600160401b900460ff16611c1457611c0f8383612569565b611c25565b8160115484611c239190613532565b115b9392505050565b611c34611d16565b6001600160a01b038116611c6257604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61131d81611f60565b611c7660095f612b2d565b5f5b815181101561133b576009828281518110611c9557611c95613545565b6020908102919091018101518254600181810185555f94855293839020825160029092020180549383015160408401516001600160401b03908116600160801b0267ffffffffffffffff60801b19928216600160401b026001600160801b031990971691909416179490941793909316178255606001519082015501611c78565b33611d487f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146113c65760405163118cdaa760e01b8152336004820152602401611c59565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611df757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611deb5f516020613a555f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156113c65760405163703e46dd60e11b815260040160405180910390fd5b611e1d611d16565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610a12565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611eb0575060408051601f3d908101601f19168201909252611ead91810190613586565b60015b611ed857604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611c59565b5f516020613a555f395f51905f528114611f0857604051632a87526960e21b815260048101829052602401611c59565b611f1283836126c1565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113c65760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611fd8612716565b61131d8161274c565b6113c6612716565b82516001600160401b031615158061200d575060208301516001600160401b031615155b8061201a57506020820151155b8061202757506040820151155b8061203457506060820151155b8061203e57508151155b806120505750610e108163ffffffff16105b8061206457506301e133808163ffffffff16115b15612082576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181108061133b5760405163016c173360e21b815260040160405180910390fd5b5f61215f610a66565b9050612169612b4b565b600c548152600d54602080830191909152600e546040830152600b54606080840191909152600a549188015190916001600160401b03600160401b90910481169116108015906121c157506121c18760200151611126565b1561220a576040805187516020808301919091528801518183015290870151606080830191909152870151608082015260a0016040516020818303038152906040529050612245565b60408051600b546020820152600c5491810191909152600d546060820152600e54608082015260a00160405160208183030381529060405290505b6040805188516001600160401b039081166020808401919091528a015116818301529088015160608201525f9060800160408051601f198184030181529082905261229691849089906020016135b4565b60408051601f19818403018152919052805160209091012090506122da7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001826135d6565b60808401526040516354e8bd6760e01b815273ffffffffffffffffffffffffffffffffffffffff906354e8bd679061231a90879087908a906004016137cb565b602060405180830381865af4158015612335573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061235991906139eb565b612376576040516309bde33960e01b815260040160405180910390fd5b5050505050505050565b600954158015906123f5575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b03169081106123c0576123c0613545565b5f9182526020909120600290910201546123ea90600160401b90046001600160401b031684613513565b6001600160401b0316115b1561248857600854600980549091600160c01b90046001600160401b031690811061242257612422613545565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861246283613a0a565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b6009545f904384118061257a575080155b806125c45750600854600980549091600160c01b90046001600160401b03169081106125a8576125a8613545565b5f9182526020909120600290910201546001600160401b031684105b156125e25760405163b0b4387760e01b815260040160405180910390fd5b5f80806125f0600185613532565b90505b8161268c57600854600160c01b90046001600160401b0316811061268c57866009828154811061262557612625613545565b5f9182526020909120600290910201546001600160401b03161161267a57600191506009818154811061265a5761265a613545565b5f9182526020909120600290910201546001600160401b0316925061268c565b8061268481613a34565b9150506125f3565b816126aa5760405163b0b4387760e01b815260040160405180910390fd5b856126b58489613532565b11979650505050505050565b6126ca82612754565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561270e57611f1282826127b7565b61133b612829565b5f516020613a755f395f51905f5254600160401b900460ff166113c657604051631afcd79f60e31b815260040160405180910390fd5b611c34612716565b806001600160a01b03163b5f0361278957604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611c59565b5f516020613a555f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516127d39190613a49565b5f60405180830381855af49150503d805f811461280b576040519150601f19603f3d011682016040523d82523d5f602084013e612810565b606091505b5091509150612820858383612848565b95945050505050565b34156113c65760405163b398979f60e01b815260040160405180910390fd5b60608261285857611c0f8261289f565b815115801561286f57506001600160a01b0384163b155b1561289857604051639996b31560e01b81526001600160a01b0385166004820152602401611c59565b5092915050565b8051156128af5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f81526020016128fb60405180604001604052805f81526020015f81525090565b815260200161291b60405180604001604052805f81526020015f81525090565b815260200161293b60405180604001604052805f81526020015f81525090565b815260200161295b60405180604001604052805f81526020015f81525090565b815260200161297b60405180604001604052805f81526020015f81525090565b815260200161299b60405180604001604052805f81526020015f81525090565b81526020016129bb60405180604001604052805f81526020015f81525090565b81526020016129db60405180604001604052805f81526020015f81525090565b81526020016129fb60405180604001604052805f81526020015f81525090565b8152602001612a1b60405180604001604052805f81526020015f81525090565b8152602001612a3b60405180604001604052805f81526020015f81525090565b8152602001612a5b60405180604001604052805f81526020015f81525090565b8152602001612a7b60405180604001604052805f81526020015f81525090565b8152602001612a9b60405180604001604052805f81526020015f81525090565b8152602001612abb60405180604001604052805f81526020015f81525090565b8152602001612adb60405180604001604052805f81526020015f81525090565b8152602001612afb60405180604001604052805f81526020015f81525090565b8152602001612b1b60405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b5080545f8255600202905f5260205f209081019061131d9190612b69565b6040518060a001604052806005906020820280368337509192915050565b5b80821115612b8e5780546001600160c01b03191681555f6001820155600201612b6a565b5090565b80356001600160a01b0381168114611183575f5ffd5b5f60208284031215612bb8575f5ffd5b611c2582612b92565b5f60208284031215612bd1575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612c0a604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b0381168114611183575f5ffd5b5f60208284031215612dff575f5ffd5b611c2582612dd9565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612e3f57612e3f612e08565b60405290565b604051608081016001600160401b0381118282101715612e3f57612e3f612e08565b604051601f8201601f191681016001600160401b0381118282101715612e8f57612e8f612e08565b604052919050565b5f60608284031215612ea7575f5ffd5b604051606081016001600160401b0381118282101715612ec957612ec9612e08565b604052905080612ed883612dd9565b8152612ee660208401612dd9565b6020820152604092830135920191909152919050565b5f60408284031215612f0c575f5ffd5b604080519081016001600160401b0381118282101715612f2e57612f2e612e08565b604052823581526020928301359281019290925250919050565b5f6104808284031215612f59575f5ffd5b612f61612e1c565b9050612f6d8383612efc565b8152612f7c8360408401612efc565b6020820152612f8e8360808401612efc565b6040820152612fa08360c08401612efc565b6060820152612fb3836101008401612efc565b6080820152612fc6836101408401612efc565b60a0820152612fd9836101808401612efc565b60c0820152612fec836101c08401612efc565b60e0820152612fff836102008401612efc565b610100820152613013836102408401612efc565b610120820152613027836102808401612efc565b61014082015261303b836102c08401612efc565b61016082015261304f836103008401612efc565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e083850312156130e5575f5ffd5b6130ef8484612e97565b91506130fe8460608501612f48565b90509250929050565b803563ffffffff81168114611183575f5ffd5b5f6020828403121561312a575f5ffd5b611c2582613107565b5f5f60408385031215613144575f5ffd5b61314d83612b92565b915060208301356001600160401b03811115613167575f5ffd5b8301601f81018513613177575f5ffd5b80356001600160401b0381111561319057613190612e08565b6131a3601f8201601f1916602001612e67565b8181528660208385010111156131b7575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f608082840312156131e6575f5ffd5b6131ee612e45565b8235815260208084013590820152604080840135908201526060928301359281019290925250919050565b5f60808284031215613229575f5ffd5b611c2583836131d6565b5f5f5f6105608486031215613246575f5ffd5b6132508585612e97565b925061325f85606086016131d6565b915061326e8560e08601612f48565b90509250925092565b5f5f60408385031215613288575f5ffd5b61329183612dd9565b91506130fe60208401612dd9565b5f5f5f5f61012085870312156132b3575f5ffd5b6132bd8686612e97565b93506132cc86606087016131d6565b92506132da60e08601613107565b91506132e96101008601612b92565b905092959194509250565b5f5f5f5f6105808587031215613308575f5ffd5b6133128686612e97565b935061332186606087016131d6565b925060e085013591506132e9866101008701612f48565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6060828403121561337d575f5ffd5b611c258383612e97565b5f5f60408385031215613398575f5ffd5b50508035926020909101359150565b5f602082840312156133b7575f5ffd5b81356001600160401b038111156133cc575f5ffd5b8201601f810184136133dc575f5ffd5b80356001600160401b038111156133f5576133f5612e08565b61340460208260051b01612e67565b8082825260208201915060208360071b850101925086831115613425575f5ffd5b6020840193505b828410156134955760808488031215613443575f5ffd5b61344b612e45565b61345485612dd9565b815261346260208601612dd9565b602082015261347360408601612dd9565b604082015260608581013590820152825260809093019260209091019061342c565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b0381811683821601908111156112175761121761349f565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b038316806134fe576134fe6134d2565b806001600160401b0384160691505092915050565b6001600160401b0382811682821603908111156112175761121761349f565b818103818111156112175761121761349f565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b03831680613571576135716134d2565b806001600160401b0384160491505092915050565b5f60208284031215613596575f5ffd5b5051919050565b5f81518060208401855e5f93019283525090919050565b5f6135c86135c2838761359d565b8561359d565b928352505060200192915050565b5f826135e4576135e46134d2565b500690565b805f5b600581101561360b5781518452602093840193909101906001016135ec565b50505050565b61362682825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a2082019050845182526020850151602083015260408501516137fd604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e08301526139d56105008301856135e9565b6139e36105a0830184613611565b949350505050565b5f602082840312156139fb575f5ffd5b81518015158114611c25575f5ffd5b5f6001600160401b0382166001600160401b038103613a2b57613a2b61349f565b60010192915050565b5f81613a4257613a4261349f565b505f190190565b5f611c25828461359d56fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c634300081c000a
5736    /// ```
5737    #[rustfmt::skip]
5738    #[allow(clippy::all)]
5739    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
5740        b"`\x80`@R`\x046\x10a\x02uW_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01JW\x80c\xAA\xBD]\xB3\x11a\0\xBEW\x80c\xD2M\x93=\x11a\0xW\x80c\xD2M\x93=\x14a\x08\xABW\x80c\xE003\x01\x14a\x08\xDAW\x80c\xF0h T\x14a\x08\xF9W\x80c\xF2\xFD\xE3\x8B\x14a\t\x18W\x80c\xF5ga`\x14a\t7W\x80c\xF9\xE5\r\x19\x14a\tVW__\xFD[\x80c\xAA\xBD]\xB3\x14a\x07\xBBW\x80c\xAD<\xB1\xCC\x14a\x07\xDAW\x80c\xB3;\xC4\x91\x14a\x08\x17W\x80c\xB5\xAD\xEA<\x14a\x086W\x80c\xC2;\x9E\x9E\x14a\x08UW\x80c\xC8\xE5\xE4\x98\x14a\x08\x8DW__\xFD[\x80c\x8D\xA5\xCB[\x11a\x01\x0FW\x80c\x8D\xA5\xCB[\x14a\x06\xB8W\x80c\x90\xC1C\x90\x14a\x06\xF4W\x80c\x96\xC1\xCAa\x14a\x07\x13W\x80c\x99\x83(\xE8\x14a\x072W\x80c\x9B\xAA<\xC9\x14a\x07GW\x80c\x9F\xDBT\xA7\x14a\x07fW__\xFD[\x80cqP\x18\xA6\x14a\x06\x1BW\x80cu|7\xAD\x14a\x06/W\x80cvg\x18\x08\x14a\x06IW\x80c\x82nA\xFC\x14a\x06]W\x80c\x85\x84\xD2?\x14a\x06|W__\xFD[\x80c1=\xF7\xB1\x11a\x01\xECW\x80cBm1\x94\x11a\x01\xA6W\x80cBm1\x94\x14a\x05hW\x80cC=\xBA\x9F\x14a\x05\x89W\x80cO\x1E\xF2\x86\x14a\x05\xA8W\x80cR\xD1\x90-\x14a\x05\xBBW\x80cb:\x138\x14a\x05\xCFW\x80ci\xCCj\x04\x14a\x06\x07W__\xFD[\x80c1=\xF7\xB1\x14a\x04\x81W\x80c7\x8E\xC2;\x14a\x04\xB8W\x80c8\xE4T\xB1\x14a\x04\xD4W\x80c<#\xB6\xDB\x14a\x04\xE8W\x80c>\xD5[{\x14a\x05%W\x80cAh'D\x14a\x05KW__\xFD[\x80c\x16z\xC6\x18\x11a\x02=W\x80c\x16z\xC6\x18\x14a\x03\x85W\x80c c\xD4\xF7\x14a\x03\xA4W\x80c%)t'\x14a\x03\xC3W\x80c-R\xAA\xD6\x14a\x03\xF2W\x80c/y\x88\x9D\x14a\x04$W\x80c0\x0C\x89\xDD\x14a\x04bW__\xFD[\x80c\x01?\xA5\xFC\x14a\x02yW\x80c\x02\xB5\x92\xF3\x14a\x02\x9AW\x80c\x06%\xE1\x9B\x14a\x02\xF7W\x80c\r\x8En,\x14a\x039W\x80c\x12\x17<,\x14a\x03dW[__\xFD[4\x80\x15a\x02\x84W__\xFD[Pa\x02\x98a\x02\x936`\x04a+\xA8V[a\tjV[\0[4\x80\x15a\x02\xA5W__\xFD[Pa\x02\xB9a\x02\xB46`\x04a+\xC1V[a\n\x1DV[`@Qa\x02\xEE\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x03\x02W__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x03\x19\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\xEEV[4\x80\x15a\x03DW__\xFD[P`@\x80Q`\x03\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\xEEV[4\x80\x15a\x03oW__\xFD[Pa\x03xa\nfV[`@Qa\x02\xEE\x91\x90a+\xD8V[4\x80\x15a\x03\x90W__\xFD[Pa\x02\x98a\x03\x9F6`\x04a-\xEFV[a\x10\x96V[4\x80\x15a\x03\xAFW__\xFD[Pa\x02\x98a\x03\xBE6`\x04a0\xD3V[a\x11\rV[4\x80\x15a\x03\xCEW__\xFD[Pa\x03\xE2a\x03\xDD6`\x04a-\xEFV[a\x11&V[`@Q\x90\x15\x15\x81R` \x01a\x02\xEEV[4\x80\x15a\x03\xFDW__\xFD[Pa\x02\x98a\x04\x0C6`\x04a+\xC1V[`\x10\x80T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x90U`\x11UV[4\x80\x15a\x04/W__\xFD[P`\x08Ta\x04J\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xEEV[4\x80\x15a\x04mW__\xFD[Pa\x03\xE2a\x04|6`\x04a-\xEFV[a\x11\x88V[4\x80\x15a\x04\x8CW__\xFD[P`\x08Ta\x04\xA0\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xEEV[4\x80\x15a\x04\xC3W__\xFD[PC[`@Q\x90\x81R` \x01a\x02\xEEV[4\x80\x15a\x04\xDFW__\xFD[Pa\x02\x98a\x12\x1DV[4\x80\x15a\x04\xF3W__\xFD[Pa\x02\x98a\x05\x026`\x04a-\xEFV[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[4\x80\x15a\x050W__\xFD[P`\nTa\x04J\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x05VW__\xFD[P`\x10T`\x01`\x01`@\x1B\x03\x16a\x04JV[4\x80\x15a\x05sW__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\x19\x93\x92\x91\x90\x84V[4\x80\x15a\x05\x94W__\xFD[Pa\x02\x98a\x05\xA36`\x04a1\x1AV[a\x13\x0CV[a\x02\x98a\x05\xB66`\x04a13V[a\x13 V[4\x80\x15a\x05\xC6W__\xFD[Pa\x04\xC6a\x13?V[4\x80\x15a\x05\xDAW__\xFD[Pa\x02\x98a\x05\xE96`\x04a2\x19V[\x80Q`\x0BU` \x81\x01Q`\x0CU`@\x81\x01Q`\rU``\x01Q`\x0EUV[4\x80\x15a\x06\x12W__\xFD[Pa\x02\x98a\x13ZV[4\x80\x15a\x06&W__\xFD[Pa\x02\x98a\x13\xC8V[4\x80\x15a\x06:W__\xFD[Pa\x02\x98a\x03\xBE6`\x04a23V[4\x80\x15a\x06TW__\xFD[Pa\x04Ja\x13\xD9V[4\x80\x15a\x06hW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03\xE2V[4\x80\x15a\x06\x87W__\xFD[Pa\x06\x9Ba\x06\x966`\x04a+\xC1V[a\x14\x03V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\xEEV[4\x80\x15a\x06\xC3W__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16a\x04\xA0V[4\x80\x15a\x06\xFFW__\xFD[Pa\x04Ja\x07\x0E6`\x04a2wV[a\x15.V[4\x80\x15a\x07\x1EW__\xFD[Pa\x02\x98a\x07-6`\x04a1\x1AV[a\x15\x9DV[4\x80\x15a\x07=W__\xFD[Pa\x04\xC6`\x0FT\x81V[4\x80\x15a\x07RW__\xFD[Pa\x02\x98a\x07a6`\x04a2\x9FV[a\x16&V[4\x80\x15a\x07qW__\xFD[P`\x06T`\x07Ta\x07\x95\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x02\xEEV[4\x80\x15a\x07\xC6W__\xFD[Pa\x02\x98a\x07\xD56`\x04a2\xF4V[a\x175V[4\x80\x15a\x07\xE5W__\xFD[Pa\x08\n`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\xEE\x91\x90a38V[4\x80\x15a\x08\"W__\xFD[Pa\x02\x98a\x0816`\x04a2wV[a\x1AZV[4\x80\x15a\x08AW__\xFD[Pa\x02\x98a\x08P6`\x04a3mV[a\x1B\xABV[4\x80\x15a\x08`W__\xFD[P`\x08Ta\x08x\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\xEEV[4\x80\x15a\x08\x98W__\xFD[Pa\x02\x98`\x10\x80T`\xFF`@\x1B\x19\x16\x90UV[4\x80\x15a\x08\xB6W__\xFD[P`\x04T`\x05Ta\x07\x95\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x08\xE5W__\xFD[Pa\x03\xE2a\x08\xF46`\x04a3\x87V[a\x1B\xF2V[4\x80\x15a\t\x04W__\xFD[P`\nTa\x04J\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\t#W__\xFD[Pa\x02\x98a\t26`\x04a+\xA8V[a\x1C,V[4\x80\x15a\tBW__\xFD[Pa\x02\x98a\tQ6`\x04a3\xA7V[a\x1CkV[4\x80\x15a\taW__\xFD[P`\tTa\x04\xC6V[a\tra\x1D\x16V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t\x99W`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\t\xC8W`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x80\x17\xBB\x88\x7F\xDF\x8F\xCAC\x14\xA9\xD4\x0Fns\xB3\xB8\x10\x02\xD6~\\\xFA\x85\xD8\x81s\xAFj\xA4`r\x90` \x01[`@Q\x80\x91\x03\x90\xA1PV[`\t\x81\x81T\x81\x10a\n,W_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\nna(\xC8V[b\x01\0\0\x81R`\x05` \x82\x01R\x7F\x01\x8F|\xCD&e/*\xD0\xA0\xD8\x91\xBF)\xC5\xEF\x9F{*NZ\x82\x95\xEE\n\xCD\xE6\x9B\x16i\xAC\xB5`@\x82\x01QR\x7F\x0C;\x19\xCB0\xF3\xED\xF9>\xB2\xB9\xE0\xB1\x1C\xE0\x99\xC5t[\xC3\xED\xA3\"l\x7F]_9\xA9{\xFC\xAA` `@\x83\x01Q\x01R\x7F\x14\x1E=h\xAA\xD5\x0B\xF0\x84?d]a\xF5\xE8\xFE6\x08\xD3\x12\xE4W\xD1\xBFq,\xE2\x0C,\xE9\x06\xA9``\x82\x01QR\x7F+D\xC06v\xD0\xA3\xCD\x12%~X\x9Bx\xF0Y\xA5%\xAA\xC5\xD6\xBF\xAB\ra\x89\xD4\xB4\n\xE5\x11\"` ``\x83\x01Q\x01R\x7F\x18`\x9Fy\xB8){?\x99Q\xE7\x13\x99E\xAA`\xE3>\x91M\xEAo'\xBD\xA9 \xB0\xE0\xC9\t5\xF3`\x80\x82\x01QR\x7F\x11\xA61Z\xBB\x98\xF7l\xCE[O\xA5\xD8{\x8A d\xD2\xD0L \xF83\x14\xD2\xDD/\xDBh\x14\x1E=` `\x80\x83\x01Q\x01R\x7F/\xA93Hh\x9E\xA0{\xB7`\xD7\xC3\x10\r1H\xAF\xC3B\xC0P\xEB\xA7\xF3\x94U\xE4x\xA5s\r\x05`\xA0\x82\x01QR\x7F\x0B|\x92\x11>\xCA\xBF\xA5I\x88\xD3\xA8\x1E\x13#q\x96\xC9\x97]\xD3\xDE\xA0\xA3%\xC4\x9B\xCF\x90\x1F\x8BJ` `\xA0\x83\x01Q\x01R\x7F*\xE1\x10\0\xA5\xBD\ny\xAD\xF8\xE3\xA5\xA4I\xEA\\X\xDF\xA7\xD6\xA2\xFA$\xB9\xC9v\xEC\xFC\xA7\x06X@`\xC0\x82\x01QR\x7F\x0CFw\xBE\xFD\xD8\xC7\xD2GO/}\x19\xF2\xD0\xE2tz~\x05F\x9C\xC0\x8E\xEE+{\x81\xADHr\xE2` `\xC0\x83\x01Q\x01R\x7F\x04\x06]\xA2\xEEXX\xE505\xE3\xFA\xB8DD\xA8f:\x8E\xAD])\x9B\x0B\x04`\xB9\xBDk\x9C4\xCB`\xE0\x82\x01QR\x7F\r\xD3;\xF9\xF5\x03\xC9\xD0\xB4\x86\xEC\x82[\xD8\xDD\xFB\xC9:\x96\xF4\xE0\x99x\xBE\xA9M\xB7\xCA\xA3>2\xF0` `\xE0\x83\x01Q\x01R\x7F\rS\xEC\xF3FL;C\xF6t\xA4\xC9\xAE]\xAC\xD9\xE2\xA6\xCFi\xCC\xD0k\xDB8\xCD\xEF\x07\xAC\xD0\xB9\xB8a\x01\0\x82\x01QR\x7F\x0C\nSX\xE2t\xA8w\xCD\x87\xE0\x17\xA9\x0E>,F0c|\x14@\r\x16\x14\x16\x10\x81uC\xCCl` a\x01\0\x83\x01Q\x01R\x7F\x05=!IB\x94\xA2+><V|\x9Fa\x86\x15\xAFA\xC2W\x04;\x87G\x07\x88\xD7\xC3\x0E\x91[2a\x01 \x82\x01QR\x7F\x04\xCF\xEB\x1D\x7F\xF9\xE0w\x94\xE4~Ho\xCF\xE6\xB0\xE1C\xC7JI\xCE\x91^\xBD\xF6\xAEh\xDFn\x06\xB8` a\x01 \x83\x01Q\x01R\x7F\x11?(&\xBFr!\xDE\x17\\\xA0F\xF8/Q\x11*\x9E\xB1Hk\x06t\x7FM\x13\x94\x0B\xC2oK\xB8a\x01@\x82\x01QR\x7F\x05\xCF\xAAz\xA0\x8B\x08\r\xCB\xC3\x1C\xAD\xDDP\x1F\xE5\xEF\x8C\x11\x8D\x8E\xD7\xD5\0p\x8E\xC6\x89\xB3\xAC\x7F+` a\x01@\x83\x01Q\x01R\x7F\n\x9D\x14{,<c\xD2\x98\x19\x8A\xF3\x85U\x88q\xA9\xB6\x9C\x19\"\x91\xA4\xEEi\xDE\xF6\xD8-\xD7\xC3\x1Ea\x01`\x82\x01QR\x7F\x01mZ\xE3\xFC<m\xC5(?\xF6>/\xFE\x92\xD0\x93\x1C\xC7rX\xCC\xCF=\x1C\x9A\xED`\x1E\xD2\xE8\xBA` a\x01`\x83\x01Q\x01R\x7F\x12=\x9F)\x08\xCDO\x03\x8B\xB2\x81\x80Z\xD8\xE9\"DDi\xB0/K\x83\xE6\xC0Q\xC0\xE1\xCA\xAD\x15,a\x01\x80\x82\x01QR\x7F\x08\xE6G\xCC\x02\xB9\xDFL\xEB[\x15EP\xD2\xB2\x9A{g7\x0Fg\xA3rt k\xB1,\\E\x1D\xC2` a\x01\x80\x83\x01Q\x01R\x7F\x18Y\x10^J\xD2\x18)\xC1,J[P\xD5\xA2\xA5\xD9\x88\xFDs\xEBD$FV8\xE1\x99\xAB6{\x82a\x01\xA0\x82\x01QR\x7F\n\xBB\xCC\xC2\x90\x07\xB3\xC6M\xADU\x0Fv\xC9\x9E\xA30\xB1\x02\xDD\x7F\xB5zT*\x9A\xDD\x84\x84]Q\xC3` a\x01\xA0\x83\x01Q\x01R\x7F&:~\xBA\xCB\xF1\x81\xA2\x81\xA3IMu\xE8\"\x16]?P\xE9\xAC\x14\xE7J\x82*\xD9\x15\x03\xECx\xA9a\x01\xC0\x82\x01QR\x7F\x1F\th\xF3\x16\\\0\xC69d\xE7\x1E\xF0\xC4#\x96\xA1F\x19\n\x97\xFF/Cj\xE8\x92\x88\xCB\x9D4F` a\x01\xC0\x83\x01Q\x01R\x7F/|\xD5\xCCrB\r\xD9\x0C\xF8 tk\x89\xE6\x16\xDF\xF8\xB2\x1E\x9A\xAD\xB9\xA4\xA0oA\xEC\xE2\x03\x9A^a\x01\xE0\x82\x01QR\x7F\x15\xA3@8Pn\xC1O\xC8\xC2j\xD2U\x16\x19\xBA\xCE\x01H?\x08^ \x8D#\x02\xADL!\x11\xCB7` a\x01\xE0\x83\x01Q\x01R\x7F\x17-*\xA0\xFB\x17-3\x1B\x0F6q\xAEh\xBE\x93\xEC\xFB\xDAc\xA7\"\x17k\xE8\x84\x1E\x83\x901\xB6\x1Ea\x02\0\x82\x01QR\x7F\x13\xB2\x9E1\xF3s\x01\x17\xE5C\t\xA3?G/S\x8Fh\x8B\xB9L\xCC0\x85\xDA\x13\xA5a\xDC\x88e\xE9` a\x02\0\x83\x01Q\x01R\x7F\x0B\xF4\x05\x0E\x8F\x04Y\"\xCA\xE6\x13\xD4\xA6&\xAE\xAE\xEE}\xC2J+{\xB4s\xAE\xE4^\\\x94\xE7\xED\xE3a\x02 \x82\x01QR\x7F\x15\xAAm\x93\x99\xCD\x9B\x8A\xB3\x8889\xD3\0\xE7o\x9EN+\xAA\xD7\xD3\x9E\n\xA2\xE3\x82\xF25\xD2\"c` a\x02 \x83\x01Q\x01R\x7F\t\xDD\x10#\x80T`a\xAAB\xF0\x87\xF8\xACU%\xA6t{\x8D\xB1\xE3\xC4\xFE\x03?\xDB\xE3\xD8\rn\x9Aa\x02@\x82\x01QR\x7F.\xDF\xB5\xB6\x03\xBB\xB2\xD3v\xFF\xE8v\xBD!\x93\x19\xD3M\x88\x13\xD0\x9Bp\xFB7\xDA<\xC2\xB7~\xBA\xCB` a\x02@\x83\x01Q\x01R\x7F\x04K\xEFo7\xB3\xB1\xDB-\xA9\x9ARb\xD0T\x16?\xC4e\xD2NS\x92]\x07\xE5\xD4\xB5\xFE\x94gFa\x02`\x82\x01QR\x7F\x10E7(\xE6\x1B\x7F\xDF\x86:\xDF\xFB\x97\xC4\xA6[\x9C\x11`\x87\xC1\x0F\x01V?\xC3\x13\x93\xEEi\xEA?` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[a\x10\x9Ea\x1D\x16V[`\n\x80To\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\x19\x81\x16`\x01`@\x1B`\x01`\x01`@\x1B\x03\x85\x81\x16\x82\x02\x92\x83\x17\x94\x85\x90Ua\x10\xE4\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\x15.V[`\n`\x10a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPPV[`@QcN@\\\x8D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\x11FWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\x11RWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\x11i\x83`\x05a4\xB3V[a\x11s\x91\x90a4\xE6V[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\x11\xA8WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\x11\xB4WP_\x91\x90PV[`\nTa\x11\xCA\x90`\x01`\x01`@\x1B\x03\x16\x83a4\xE6V[`\x01`\x01`@\x1B\x03\x16\x15\x80a\x12\x17WP`\nTa\x11\xF2\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a5\x13V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\x12\x0C\x91\x16\x84a4\xE6V[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[_Q` a:u_9_Q\x90_R\x80T`\x03\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x12SWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x12qW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x90\x91\x17`\x01`@\x1B\x90\x81\x17\x83U`\nTa\x12\xAB\x92\x91\x81\x04\x82\x16\x91\x16a\x15.V[`\x10\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x92\x83\x16\x17\x90U\x81T`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPV[a\x13\x14a\x1D\x16V[a\x13\x1D\x81a\x15\x9DV[PV[a\x13(a\x1DqV[a\x131\x82a\x1E\x15V[a\x13;\x82\x82a\x1EVV[PPV[_a\x13Ha\x1F\x17V[P_Q` a:U_9_Q\x90_R\x90V[a\x13ba\x1D\x16V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x13\xADW`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`@Q\x7F\x9A_W\xDE\x85m\xD6h\xC5M\xD9^\\U\xDF\x93C!q\xCB\xCAI\xA8wmV \xEAY\xC0$P\x90_\x90\xA1V[`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\x13\xD0a\x1D\x16V[a\x13\xC6_a\x1F`V[`\x06T`\nT_\x91a\x13\xFE\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\x15.V[\x90P\x90V[`\t\x80T_\x91\x82\x91\x90a\x14\x17`\x01\x83a52V[\x81T\x81\x10a\x14'Wa\x14'a5EV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x14fW`@Qc\x18V\xA4\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16[\x81\x81\x10\x15a\x15'W\x84`\t\x82\x81T\x81\x10a\x14\x96Wa\x14\x96a5EV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x15\x1FW`\t\x81\x81T\x81\x10a\x14\xCFWa\x14\xCFa5EV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x14\xF2Wa\x14\xF2a5EV[\x90_R` _ \x90`\x02\x02\x01_\x01`\x10\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`@\x1B\x03\x16\x93P\x93PPP\x91P\x91V[`\x01\x01a\x14zV[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x15FWP_a\x12\x17V[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x15^WP`\x01a\x12\x17V[a\x15h\x82\x84a4\xE6V[`\x01`\x01`@\x1B\x03\x16_\x03a\x15\x88Wa\x15\x81\x82\x84a5YV[\x90Pa\x12\x17V[a\x15\x92\x82\x84a5YV[a\x15\x81\x90`\x01a4\xB3V[a\x15\xA5a\x1D\x16V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x15\xC4WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x15\xE2WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x16\0W`@Qc\x07\xA5\x07w`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[_Q` a:u_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x16WWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x16rWP0;\x15[\x90P\x81\x15\x80\x15a\x16\x80WP\x80\x15[\x15a\x16\x9EW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x16\xC8W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x16\xD1\x86a\x1F\xD0V[a\x16\xD9a\x1F\xE1V[a\x16\xE4\x89\x89\x89a\x1F\xE9V[\x83\x15a\x17*W\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x17ZWP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x17xW`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x84Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x17\xB1WP`\x06T` \x85\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x17\xCFW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x17\xDC\x84`@\x01Qa!\x15V[a\x17\xE9\x83` \x01Qa!\x15V[a\x17\xF6\x83`@\x01Qa!\x15V[a\x18\x03\x83``\x01Qa!\x15V[_a\x18\x0Ca\x13\xD9V[` \x86\x01Q`\nT\x91\x92P_\x91a\x18,\x91\x90`\x01`\x01`@\x1B\x03\x16a\x15.V[`\x10T\x90\x91P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x10a\x18pWa\x18R\x86` \x01Qa\x11\x88V[\x15a\x18pW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x10T`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x11\x15a\x19\x1CW`\x02a\x18\x93\x83\x83a5\x13V[`\x01`\x01`@\x1B\x03\x16\x10a\x18\xBAW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x18\xC5\x82`\x01a4\xB3V[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x18\xFEWP`\x06Ta\x18\xFC\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\x11&V[\x15[\x15a\x19\x1CW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x19(\x86\x86\x86\x86a!VV[\x85Q`\x06\x80T` \x89\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x81\x16\x93\x90\x93\x17\x17\x90U`@\x87\x01Q`\x07U`\x0F\x85\x90U`\x10T\x81\x16\x90\x82\x16\x10\x80\x15\x90a\x19\x85WPa\x19\x85\x86` \x01Qa\x11&V[\x15a\x19\xEFW\x84Q`\x0BU` \x85\x01Q`\x0CU`@\x85\x01Q`\rU``\x85\x01Q`\x0EU\x7F1\xEA\xBD\x90\x99\xFD\xB2]\xAC\xDD\xD2\x06\xAB\xFF\x871\x1EU4A\xFC\x9D\x0F\xCD\xEF \x10b\xD7\xE7\x07\x1Ba\x19\xD3\x82`\x01a4\xB3V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x19\xFACB\x88a#\x80V[\x85` \x01Q`\x01`\x01`@\x1B\x03\x16\x86_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x88`@\x01Q`@Qa\x1AJ\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPPV[_Q` a:u_9_Q\x90_R\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x1A\x90WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x1A\xAEW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x90\x91\x17`\x01`@\x1B\x17\x82U`\x05\x90\x85\x16\x11a\x1A\xF6W`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_T`\x0BU`\x01T`\x0CU`\x02T`\rU`\x03T`\x0EU`\n\x80T`\x01`\x01`@\x1B\x03\x85\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x90\x87\x16\x17\x17\x90Ua\x1B?\x83\x85a\x15.V[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x16`\x01`\x80\x1B`\x01`\x01`@\x1B\x03\x93\x84\x16\x02\x17\x90U\x81T`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPV[\x80Q`\x06\x80T` \x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x81\x01Q`\x07Ua\x13\x1DCB\x83a#\x80V[`\x10T_\x90`\x01`@\x1B\x90\x04`\xFF\x16a\x1C\x14Wa\x1C\x0F\x83\x83a%iV[a\x1C%V[\x81`\x11T\x84a\x1C#\x91\x90a52V[\x11[\x93\x92PPPV[a\x1C4a\x1D\x16V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1CbW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x13\x1D\x81a\x1F`V[a\x1Cv`\t_a+-V[_[\x81Q\x81\x10\x15a\x13;W`\t\x82\x82\x81Q\x81\x10a\x1C\x95Wa\x1C\x95a5EV[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q\x82T`\x01\x81\x81\x01\x85U_\x94\x85R\x93\x83\x90 \x82Q`\x02\x90\x92\x02\x01\x80T\x93\x83\x01Q`@\x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x92\x82\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x97\x16\x91\x90\x94\x16\x17\x94\x90\x94\x17\x93\x90\x93\x16\x17\x82U``\x01Q\x90\x82\x01U\x01a\x1CxV[3a\x1DH\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x13\xC6W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x1CYV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\x1D\xF7WP\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\x1D\xEB_Q` a:U_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x13\xC6W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1E\x1Da\x1D\x16V[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x81R\x7F\xF7\x87!\"n\xFE\x9A\x1B\xB6x\x18\x9A\x16\xD1UI(\xB9\xF2\x19.,\xB9>\xED\xA8;y\xFA@\0}\x90` \x01a\n\x12V[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x1E\xB0WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1E\xAD\x91\x81\x01\x90a5\x86V[`\x01[a\x1E\xD8W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x1CYV[_Q` a:U_9_Q\x90_R\x81\x14a\x1F\x08W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x1CYV[a\x1F\x12\x83\x83a&\xC1V[PPPV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x13\xC6W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[a\x1F\xD8a'\x16V[a\x13\x1D\x81a'LV[a\x13\xC6a'\x16V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a \rWP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a \x1AWP` \x82\x01Q\x15[\x80a 'WP`@\x82\x01Q\x15[\x80a 4WP``\x82\x01Q\x15[\x80a >WP\x81Q\x15[\x80a PWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a dWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a \x82W`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\x13;W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a!_a\nfV[\x90Pa!ia+KV[`\x0CT\x81R`\rT` \x80\x83\x01\x91\x90\x91R`\x0ET`@\x83\x01R`\x0BT``\x80\x84\x01\x91\x90\x91R`\nT\x91\x88\x01Q\x90\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x91\x16\x10\x80\x15\x90a!\xC1WPa!\xC1\x87` \x01Qa\x11&V[\x15a\"\nW`@\x80Q\x87Q` \x80\x83\x01\x91\x90\x91R\x88\x01Q\x81\x83\x01R\x90\x87\x01Q``\x80\x83\x01\x91\x90\x91R\x87\x01Q`\x80\x82\x01R`\xA0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\"EV[`@\x80Q`\x0BT` \x82\x01R`\x0CT\x91\x81\x01\x91\x90\x91R`\rT``\x82\x01R`\x0ET`\x80\x82\x01R`\xA0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P[`@\x80Q\x88Q`\x01`\x01`@\x1B\x03\x90\x81\x16` \x80\x84\x01\x91\x90\x91R\x8A\x01Q\x16\x81\x83\x01R\x90\x88\x01Q``\x82\x01R_\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\"\x96\x91\x84\x90\x89\x90` \x01a5\xB4V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x90Pa\"\xDA\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x82a5\xD6V[`\x80\x84\x01R`@QcT\xE8\xBDg`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90cT\xE8\xBDg\x90a#\x1A\x90\x87\x90\x87\x90\x8A\x90`\x04\x01a7\xCBV[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a#5W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a#Y\x91\x90a9\xEBV[a#vW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPPV[`\tT\x15\x80\x15\x90a#\xF5WP`\x08T`\t\x80T`\x01`\xA0\x1B\x83\x04c\xFF\xFF\xFF\xFF\x16\x92`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a#\xC0Wa#\xC0a5EV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta#\xEA\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a5\x13V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a$\x88W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a$\"Wa$\"a5EV[_\x91\x82R` \x82 `\x02\x90\x91\x02\x01\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U`\x01\x01U`\x08\x80T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90`\x18a$b\x83a:\nV[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPP[`@\x80Q`\x80\x81\x01\x82R`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x80\x85\x01\x91\x82R\x83\x01Q\x85\x16\x84\x83\x01\x90\x81R\x92\x90\x91\x01Q``\x84\x01\x90\x81R`\t\x80T`\x01\x81\x01\x82U_\x91\x90\x91R\x93Q`\x02\x90\x94\x02\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xAF\x81\x01\x80T\x93Q\x94Q\x87\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x88\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x96\x90\x97\x16\x95\x90\x95\x17\x92\x90\x92\x17\x92\x90\x92\x16\x93\x90\x93\x17\x90\x91UQ\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xB0\x90\x91\x01UV[`\tT_\x90C\x84\x11\x80a%zWP\x80\x15[\x80a%\xC4WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a%\xA8Wa%\xA8a5EV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a%\xE2W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a%\xF0`\x01\x85a52V[\x90P[\x81a&\x8CW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a&\x8CW\x86`\t\x82\x81T\x81\x10a&%Wa&%a5EV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a&zW`\x01\x91P`\t\x81\x81T\x81\x10a&ZWa&Za5EV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa&\x8CV[\x80a&\x84\x81a:4V[\x91PPa%\xF3V[\x81a&\xAAW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a&\xB5\x84\x89a52V[\x11\x97\x96PPPPPPPV[a&\xCA\x82a'TV[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a'\x0EWa\x1F\x12\x82\x82a'\xB7V[a\x13;a()V[_Q` a:u_9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a\x13\xC6W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1C4a'\x16V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a'\x89W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x1CYV[_Q` a:U_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa'\xD3\x91\x90a:IV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a(\x0BW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a(\x10V[``\x91P[P\x91P\x91Pa( \x85\x83\x83a(HV[\x95\x94PPPPPV[4\x15a\x13\xC6W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a(XWa\x1C\x0F\x82a(\x9FV[\x81Q\x15\x80\x15a(oWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a(\x98W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x1CYV[P\x92\x91PPV[\x80Q\x15a(\xAFW\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x80a\x02\xC0\x01`@R\x80_\x81R` \x01_\x81R` \x01a(\xFB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\x1B`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a);`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)[`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a){`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\x9B`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\xBB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\xDB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\xFB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\x1B`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*;`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*[`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*{`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\x9B`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\xBB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\xDB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\xFB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a+\x1B`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[P\x80T_\x82U`\x02\x02\x90_R` _ \x90\x81\x01\x90a\x13\x1D\x91\x90a+iV[`@Q\x80`\xA0\x01`@R\x80`\x05\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15a+\x8EW\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U_`\x01\x82\x01U`\x02\x01a+jV[P\x90V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x83W__\xFD[_` \x82\x84\x03\x12\x15a+\xB8W__\xFD[a\x1C%\x82a+\x92V[_` \x82\x84\x03\x12\x15a+\xD1W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa,\n`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x83\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x83\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x83\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x83\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x83\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x83\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x83\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x83\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x83\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x83\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x83\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x83\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x83\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x83\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x83\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x83\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x83\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x83\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x90\x92\x01Qa\x04\xE0\x90\x91\x01R\x90V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x11\x83W__\xFD[_` \x82\x84\x03\x12\x15a-\xFFW__\xFD[a\x1C%\x82a-\xD9V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.?Wa.?a.\x08V[`@R\x90V[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.?Wa.?a.\x08V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.\x8FWa.\x8Fa.\x08V[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a.\xA7W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.\xC9Wa.\xC9a.\x08V[`@R\x90P\x80a.\xD8\x83a-\xD9V[\x81Ra.\xE6` \x84\x01a-\xD9V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a/\x0CW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/.Wa/.a.\x08V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a/YW__\xFD[a/aa.\x1CV[\x90Pa/m\x83\x83a.\xFCV[\x81Ra/|\x83`@\x84\x01a.\xFCV[` \x82\x01Ra/\x8E\x83`\x80\x84\x01a.\xFCV[`@\x82\x01Ra/\xA0\x83`\xC0\x84\x01a.\xFCV[``\x82\x01Ra/\xB3\x83a\x01\0\x84\x01a.\xFCV[`\x80\x82\x01Ra/\xC6\x83a\x01@\x84\x01a.\xFCV[`\xA0\x82\x01Ra/\xD9\x83a\x01\x80\x84\x01a.\xFCV[`\xC0\x82\x01Ra/\xEC\x83a\x01\xC0\x84\x01a.\xFCV[`\xE0\x82\x01Ra/\xFF\x83a\x02\0\x84\x01a.\xFCV[a\x01\0\x82\x01Ra0\x13\x83a\x02@\x84\x01a.\xFCV[a\x01 \x82\x01Ra0'\x83a\x02\x80\x84\x01a.\xFCV[a\x01@\x82\x01Ra0;\x83a\x02\xC0\x84\x01a.\xFCV[a\x01`\x82\x01Ra0O\x83a\x03\0\x84\x01a.\xFCV[a\x01\x80\x82\x01Ra\x03@\x82\x015a\x01\xA0\x82\x01Ra\x03`\x82\x015a\x01\xC0\x82\x01Ra\x03\x80\x82\x015a\x01\xE0\x82\x01Ra\x03\xA0\x82\x015a\x02\0\x82\x01Ra\x03\xC0\x82\x015a\x02 \x82\x01Ra\x03\xE0\x82\x015a\x02@\x82\x01Ra\x04\0\x82\x015a\x02`\x82\x01Ra\x04 \x82\x015a\x02\x80\x82\x01Ra\x04@\x82\x015a\x02\xA0\x82\x01Ra\x04`\x90\x91\x015a\x02\xC0\x82\x01R\x91\x90PV[__a\x04\xE0\x83\x85\x03\x12\x15a0\xE5W__\xFD[a0\xEF\x84\x84a.\x97V[\x91Pa0\xFE\x84``\x85\x01a/HV[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\x83W__\xFD[_` \x82\x84\x03\x12\x15a1*W__\xFD[a\x1C%\x82a1\x07V[__`@\x83\x85\x03\x12\x15a1DW__\xFD[a1M\x83a+\x92V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1gW__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a1wW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x90Wa1\x90a.\x08V[a1\xA3`\x1F\x82\x01`\x1F\x19\x16` \x01a.gV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a1\xB7W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a1\xE6W__\xFD[a1\xEEa.EV[\x825\x81R` \x80\x84\x015\x90\x82\x01R`@\x80\x84\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_`\x80\x82\x84\x03\x12\x15a2)W__\xFD[a\x1C%\x83\x83a1\xD6V[___a\x05`\x84\x86\x03\x12\x15a2FW__\xFD[a2P\x85\x85a.\x97V[\x92Pa2_\x85``\x86\x01a1\xD6V[\x91Pa2n\x85`\xE0\x86\x01a/HV[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a2\x88W__\xFD[a2\x91\x83a-\xD9V[\x91Pa0\xFE` \x84\x01a-\xD9V[____a\x01 \x85\x87\x03\x12\x15a2\xB3W__\xFD[a2\xBD\x86\x86a.\x97V[\x93Pa2\xCC\x86``\x87\x01a1\xD6V[\x92Pa2\xDA`\xE0\x86\x01a1\x07V[\x91Pa2\xE9a\x01\0\x86\x01a+\x92V[\x90P\x92\x95\x91\x94P\x92PV[____a\x05\x80\x85\x87\x03\x12\x15a3\x08W__\xFD[a3\x12\x86\x86a.\x97V[\x93Pa3!\x86``\x87\x01a1\xD6V[\x92P`\xE0\x85\x015\x91Pa2\xE9\x86a\x01\0\x87\x01a/HV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[_``\x82\x84\x03\x12\x15a3}W__\xFD[a\x1C%\x83\x83a.\x97V[__`@\x83\x85\x03\x12\x15a3\x98W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a3\xB7W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a3\xCCW__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a3\xDCW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a3\xF5Wa3\xF5a.\x08V[a4\x04` \x82`\x05\x1B\x01a.gV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x07\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a4%W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a4\x95W`\x80\x84\x88\x03\x12\x15a4CW__\xFD[a4Ka.EV[a4T\x85a-\xD9V[\x81Ra4b` \x86\x01a-\xD9V[` \x82\x01Ra4s`@\x86\x01a-\xD9V[`@\x82\x01R``\x85\x81\x015\x90\x82\x01R\x82R`\x80\x90\x93\x01\x92` \x90\x91\x01\x90a4,V[\x96\x95PPPPPPV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x12\x17Wa\x12\x17a4\x9FV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a4\xFEWa4\xFEa4\xD2V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x06\x91PP\x92\x91PPV[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x12\x17Wa\x12\x17a4\x9FV[\x81\x81\x03\x81\x81\x11\x15a\x12\x17Wa\x12\x17a4\x9FV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a5qWa5qa4\xD2V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_` \x82\x84\x03\x12\x15a5\x96W__\xFD[PQ\x91\x90PV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a5\xC8a5\xC2\x83\x87a5\x9DV[\x85a5\x9DV[\x92\x83RPP` \x01\x92\x91PPV[_\x82a5\xE4Wa5\xE4a4\xD2V[P\x06\x90V[\x80_[`\x05\x81\x10\x15a6\x0BW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a5\xECV[PPPPV[a6&\x82\x82Q\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[` \x81\x81\x01Q\x80Q`@\x85\x01R\x90\x81\x01Q``\x84\x01RP`@\x81\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP``\x81\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\x80\x81\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xA0\x81\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xC0\x81\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RP`\xE0\x81\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01\0\x81\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01 \x81\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01@\x81\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01`\x81\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\x80\x81\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xA0\x81\x01Qa\x03@\x83\x01Ra\x01\xC0\x81\x01Qa\x03`\x83\x01Ra\x01\xE0\x81\x01Qa\x03\x80\x83\x01Ra\x02\0\x81\x01Qa\x03\xA0\x83\x01Ra\x02 \x81\x01Qa\x03\xC0\x83\x01Ra\x02@\x81\x01Qa\x03\xE0\x83\x01Ra\x02`\x81\x01Qa\x04\0\x83\x01Ra\x02\x80\x81\x01Qa\x04 \x83\x01Ra\x02\xA0\x81\x01Qa\x04@\x83\x01Ra\x02\xC0\x01Qa\x04`\x90\x91\x01RV[_a\n \x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa7\xFD`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x85\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x85\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x85\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x85\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x85\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x85\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x85\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x85\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x85\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x85\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x85\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x85\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x85\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x85\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x85\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x85\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x85\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x85\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x85\x01Qa\x04\xE0\x83\x01Ra9\xD5a\x05\0\x83\x01\x85a5\xE9V[a9\xE3a\x05\xA0\x83\x01\x84a6\x11V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a9\xFBW__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1C%W__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a:+Wa:+a4\x9FV[`\x01\x01\x92\x91PPV[_\x81a:BWa:Ba4\x9FV[P_\x19\x01\x90V[_a\x1C%\x82\x84a5\x9DV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\xA1dsolcC\0\x08\x1C\0\n",
5741    );
5742    #[derive(serde::Serialize, serde::Deserialize)]
5743    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5744    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
5745```solidity
5746error AddressEmptyCode(address target);
5747```*/
5748    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5749    #[derive(Clone)]
5750    pub struct AddressEmptyCode {
5751        #[allow(missing_docs)]
5752        pub target: alloy::sol_types::private::Address,
5753    }
5754    #[allow(
5755        non_camel_case_types,
5756        non_snake_case,
5757        clippy::pub_underscore_fields,
5758        clippy::style
5759    )]
5760    const _: () = {
5761        use alloy::sol_types as alloy_sol_types;
5762        #[doc(hidden)]
5763        #[allow(dead_code)]
5764        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5765        #[doc(hidden)]
5766        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5767        #[cfg(test)]
5768        #[allow(dead_code, unreachable_patterns)]
5769        fn _type_assertion(
5770            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5771        ) {
5772            match _t {
5773                alloy_sol_types::private::AssertTypeEq::<
5774                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5775                >(_) => {}
5776            }
5777        }
5778        #[automatically_derived]
5779        #[doc(hidden)]
5780        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
5781            fn from(value: AddressEmptyCode) -> Self {
5782                (value.target,)
5783            }
5784        }
5785        #[automatically_derived]
5786        #[doc(hidden)]
5787        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
5788            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5789                Self { target: tuple.0 }
5790            }
5791        }
5792        #[automatically_derived]
5793        impl alloy_sol_types::SolError for AddressEmptyCode {
5794            type Parameters<'a> = UnderlyingSolTuple<'a>;
5795            type Token<'a> = <Self::Parameters<
5796                'a,
5797            > as alloy_sol_types::SolType>::Token<'a>;
5798            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
5799            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
5800            #[inline]
5801            fn new<'a>(
5802                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5803            ) -> Self {
5804                tuple.into()
5805            }
5806            #[inline]
5807            fn tokenize(&self) -> Self::Token<'_> {
5808                (
5809                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5810                        &self.target,
5811                    ),
5812                )
5813            }
5814            #[inline]
5815            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5816                <Self::Parameters<
5817                    '_,
5818                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5819                    .map(Self::new)
5820            }
5821        }
5822    };
5823    #[derive(serde::Serialize, serde::Deserialize)]
5824    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5825    /**Custom error with signature `DeprecatedApi()` and selector `0x4e405c8d`.
5826```solidity
5827error DeprecatedApi();
5828```*/
5829    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5830    #[derive(Clone)]
5831    pub struct DeprecatedApi;
5832    #[allow(
5833        non_camel_case_types,
5834        non_snake_case,
5835        clippy::pub_underscore_fields,
5836        clippy::style
5837    )]
5838    const _: () = {
5839        use alloy::sol_types as alloy_sol_types;
5840        #[doc(hidden)]
5841        #[allow(dead_code)]
5842        type UnderlyingSolTuple<'a> = ();
5843        #[doc(hidden)]
5844        type UnderlyingRustTuple<'a> = ();
5845        #[cfg(test)]
5846        #[allow(dead_code, unreachable_patterns)]
5847        fn _type_assertion(
5848            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5849        ) {
5850            match _t {
5851                alloy_sol_types::private::AssertTypeEq::<
5852                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5853                >(_) => {}
5854            }
5855        }
5856        #[automatically_derived]
5857        #[doc(hidden)]
5858        impl ::core::convert::From<DeprecatedApi> for UnderlyingRustTuple<'_> {
5859            fn from(value: DeprecatedApi) -> Self {
5860                ()
5861            }
5862        }
5863        #[automatically_derived]
5864        #[doc(hidden)]
5865        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DeprecatedApi {
5866            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5867                Self
5868            }
5869        }
5870        #[automatically_derived]
5871        impl alloy_sol_types::SolError for DeprecatedApi {
5872            type Parameters<'a> = UnderlyingSolTuple<'a>;
5873            type Token<'a> = <Self::Parameters<
5874                'a,
5875            > as alloy_sol_types::SolType>::Token<'a>;
5876            const SIGNATURE: &'static str = "DeprecatedApi()";
5877            const SELECTOR: [u8; 4] = [78u8, 64u8, 92u8, 141u8];
5878            #[inline]
5879            fn new<'a>(
5880                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5881            ) -> Self {
5882                tuple.into()
5883            }
5884            #[inline]
5885            fn tokenize(&self) -> Self::Token<'_> {
5886                ()
5887            }
5888            #[inline]
5889            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5890                <Self::Parameters<
5891                    '_,
5892                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5893                    .map(Self::new)
5894            }
5895        }
5896    };
5897    #[derive(serde::Serialize, serde::Deserialize)]
5898    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5899    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
5900```solidity
5901error ERC1967InvalidImplementation(address implementation);
5902```*/
5903    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5904    #[derive(Clone)]
5905    pub struct ERC1967InvalidImplementation {
5906        #[allow(missing_docs)]
5907        pub implementation: alloy::sol_types::private::Address,
5908    }
5909    #[allow(
5910        non_camel_case_types,
5911        non_snake_case,
5912        clippy::pub_underscore_fields,
5913        clippy::style
5914    )]
5915    const _: () = {
5916        use alloy::sol_types as alloy_sol_types;
5917        #[doc(hidden)]
5918        #[allow(dead_code)]
5919        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5920        #[doc(hidden)]
5921        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5922        #[cfg(test)]
5923        #[allow(dead_code, unreachable_patterns)]
5924        fn _type_assertion(
5925            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5926        ) {
5927            match _t {
5928                alloy_sol_types::private::AssertTypeEq::<
5929                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5930                >(_) => {}
5931            }
5932        }
5933        #[automatically_derived]
5934        #[doc(hidden)]
5935        impl ::core::convert::From<ERC1967InvalidImplementation>
5936        for UnderlyingRustTuple<'_> {
5937            fn from(value: ERC1967InvalidImplementation) -> Self {
5938                (value.implementation,)
5939            }
5940        }
5941        #[automatically_derived]
5942        #[doc(hidden)]
5943        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5944        for ERC1967InvalidImplementation {
5945            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5946                Self { implementation: tuple.0 }
5947            }
5948        }
5949        #[automatically_derived]
5950        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
5951            type Parameters<'a> = UnderlyingSolTuple<'a>;
5952            type Token<'a> = <Self::Parameters<
5953                'a,
5954            > as alloy_sol_types::SolType>::Token<'a>;
5955            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
5956            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
5957            #[inline]
5958            fn new<'a>(
5959                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5960            ) -> Self {
5961                tuple.into()
5962            }
5963            #[inline]
5964            fn tokenize(&self) -> Self::Token<'_> {
5965                (
5966                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5967                        &self.implementation,
5968                    ),
5969                )
5970            }
5971            #[inline]
5972            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5973                <Self::Parameters<
5974                    '_,
5975                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5976                    .map(Self::new)
5977            }
5978        }
5979    };
5980    #[derive(serde::Serialize, serde::Deserialize)]
5981    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5982    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
5983```solidity
5984error ERC1967NonPayable();
5985```*/
5986    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5987    #[derive(Clone)]
5988    pub struct ERC1967NonPayable;
5989    #[allow(
5990        non_camel_case_types,
5991        non_snake_case,
5992        clippy::pub_underscore_fields,
5993        clippy::style
5994    )]
5995    const _: () = {
5996        use alloy::sol_types as alloy_sol_types;
5997        #[doc(hidden)]
5998        #[allow(dead_code)]
5999        type UnderlyingSolTuple<'a> = ();
6000        #[doc(hidden)]
6001        type UnderlyingRustTuple<'a> = ();
6002        #[cfg(test)]
6003        #[allow(dead_code, unreachable_patterns)]
6004        fn _type_assertion(
6005            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6006        ) {
6007            match _t {
6008                alloy_sol_types::private::AssertTypeEq::<
6009                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6010                >(_) => {}
6011            }
6012        }
6013        #[automatically_derived]
6014        #[doc(hidden)]
6015        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
6016            fn from(value: ERC1967NonPayable) -> Self {
6017                ()
6018            }
6019        }
6020        #[automatically_derived]
6021        #[doc(hidden)]
6022        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
6023            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6024                Self
6025            }
6026        }
6027        #[automatically_derived]
6028        impl alloy_sol_types::SolError for ERC1967NonPayable {
6029            type Parameters<'a> = UnderlyingSolTuple<'a>;
6030            type Token<'a> = <Self::Parameters<
6031                'a,
6032            > as alloy_sol_types::SolType>::Token<'a>;
6033            const SIGNATURE: &'static str = "ERC1967NonPayable()";
6034            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
6035            #[inline]
6036            fn new<'a>(
6037                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6038            ) -> Self {
6039                tuple.into()
6040            }
6041            #[inline]
6042            fn tokenize(&self) -> Self::Token<'_> {
6043                ()
6044            }
6045            #[inline]
6046            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6047                <Self::Parameters<
6048                    '_,
6049                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6050                    .map(Self::new)
6051            }
6052        }
6053    };
6054    #[derive(serde::Serialize, serde::Deserialize)]
6055    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6056    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
6057```solidity
6058error FailedInnerCall();
6059```*/
6060    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6061    #[derive(Clone)]
6062    pub struct FailedInnerCall;
6063    #[allow(
6064        non_camel_case_types,
6065        non_snake_case,
6066        clippy::pub_underscore_fields,
6067        clippy::style
6068    )]
6069    const _: () = {
6070        use alloy::sol_types as alloy_sol_types;
6071        #[doc(hidden)]
6072        #[allow(dead_code)]
6073        type UnderlyingSolTuple<'a> = ();
6074        #[doc(hidden)]
6075        type UnderlyingRustTuple<'a> = ();
6076        #[cfg(test)]
6077        #[allow(dead_code, unreachable_patterns)]
6078        fn _type_assertion(
6079            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6080        ) {
6081            match _t {
6082                alloy_sol_types::private::AssertTypeEq::<
6083                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6084                >(_) => {}
6085            }
6086        }
6087        #[automatically_derived]
6088        #[doc(hidden)]
6089        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
6090            fn from(value: FailedInnerCall) -> Self {
6091                ()
6092            }
6093        }
6094        #[automatically_derived]
6095        #[doc(hidden)]
6096        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
6097            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6098                Self
6099            }
6100        }
6101        #[automatically_derived]
6102        impl alloy_sol_types::SolError for FailedInnerCall {
6103            type Parameters<'a> = UnderlyingSolTuple<'a>;
6104            type Token<'a> = <Self::Parameters<
6105                'a,
6106            > as alloy_sol_types::SolType>::Token<'a>;
6107            const SIGNATURE: &'static str = "FailedInnerCall()";
6108            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
6109            #[inline]
6110            fn new<'a>(
6111                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6112            ) -> Self {
6113                tuple.into()
6114            }
6115            #[inline]
6116            fn tokenize(&self) -> Self::Token<'_> {
6117                ()
6118            }
6119            #[inline]
6120            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6121                <Self::Parameters<
6122                    '_,
6123                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6124                    .map(Self::new)
6125            }
6126        }
6127    };
6128    #[derive(serde::Serialize, serde::Deserialize)]
6129    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6130    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
6131```solidity
6132error InsufficientSnapshotHistory();
6133```*/
6134    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6135    #[derive(Clone)]
6136    pub struct InsufficientSnapshotHistory;
6137    #[allow(
6138        non_camel_case_types,
6139        non_snake_case,
6140        clippy::pub_underscore_fields,
6141        clippy::style
6142    )]
6143    const _: () = {
6144        use alloy::sol_types as alloy_sol_types;
6145        #[doc(hidden)]
6146        #[allow(dead_code)]
6147        type UnderlyingSolTuple<'a> = ();
6148        #[doc(hidden)]
6149        type UnderlyingRustTuple<'a> = ();
6150        #[cfg(test)]
6151        #[allow(dead_code, unreachable_patterns)]
6152        fn _type_assertion(
6153            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6154        ) {
6155            match _t {
6156                alloy_sol_types::private::AssertTypeEq::<
6157                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6158                >(_) => {}
6159            }
6160        }
6161        #[automatically_derived]
6162        #[doc(hidden)]
6163        impl ::core::convert::From<InsufficientSnapshotHistory>
6164        for UnderlyingRustTuple<'_> {
6165            fn from(value: InsufficientSnapshotHistory) -> Self {
6166                ()
6167            }
6168        }
6169        #[automatically_derived]
6170        #[doc(hidden)]
6171        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6172        for InsufficientSnapshotHistory {
6173            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6174                Self
6175            }
6176        }
6177        #[automatically_derived]
6178        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
6179            type Parameters<'a> = UnderlyingSolTuple<'a>;
6180            type Token<'a> = <Self::Parameters<
6181                'a,
6182            > as alloy_sol_types::SolType>::Token<'a>;
6183            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
6184            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
6185            #[inline]
6186            fn new<'a>(
6187                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6188            ) -> Self {
6189                tuple.into()
6190            }
6191            #[inline]
6192            fn tokenize(&self) -> Self::Token<'_> {
6193                ()
6194            }
6195            #[inline]
6196            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6197                <Self::Parameters<
6198                    '_,
6199                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6200                    .map(Self::new)
6201            }
6202        }
6203    };
6204    #[derive(serde::Serialize, serde::Deserialize)]
6205    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6206    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
6207```solidity
6208error InvalidAddress();
6209```*/
6210    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6211    #[derive(Clone)]
6212    pub struct InvalidAddress;
6213    #[allow(
6214        non_camel_case_types,
6215        non_snake_case,
6216        clippy::pub_underscore_fields,
6217        clippy::style
6218    )]
6219    const _: () = {
6220        use alloy::sol_types as alloy_sol_types;
6221        #[doc(hidden)]
6222        #[allow(dead_code)]
6223        type UnderlyingSolTuple<'a> = ();
6224        #[doc(hidden)]
6225        type UnderlyingRustTuple<'a> = ();
6226        #[cfg(test)]
6227        #[allow(dead_code, unreachable_patterns)]
6228        fn _type_assertion(
6229            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6230        ) {
6231            match _t {
6232                alloy_sol_types::private::AssertTypeEq::<
6233                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6234                >(_) => {}
6235            }
6236        }
6237        #[automatically_derived]
6238        #[doc(hidden)]
6239        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
6240            fn from(value: InvalidAddress) -> Self {
6241                ()
6242            }
6243        }
6244        #[automatically_derived]
6245        #[doc(hidden)]
6246        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
6247            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6248                Self
6249            }
6250        }
6251        #[automatically_derived]
6252        impl alloy_sol_types::SolError for InvalidAddress {
6253            type Parameters<'a> = UnderlyingSolTuple<'a>;
6254            type Token<'a> = <Self::Parameters<
6255                'a,
6256            > as alloy_sol_types::SolType>::Token<'a>;
6257            const SIGNATURE: &'static str = "InvalidAddress()";
6258            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
6259            #[inline]
6260            fn new<'a>(
6261                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6262            ) -> Self {
6263                tuple.into()
6264            }
6265            #[inline]
6266            fn tokenize(&self) -> Self::Token<'_> {
6267                ()
6268            }
6269            #[inline]
6270            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6271                <Self::Parameters<
6272                    '_,
6273                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6274                    .map(Self::new)
6275            }
6276        }
6277    };
6278    #[derive(serde::Serialize, serde::Deserialize)]
6279    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6280    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
6281```solidity
6282error InvalidArgs();
6283```*/
6284    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6285    #[derive(Clone)]
6286    pub struct InvalidArgs;
6287    #[allow(
6288        non_camel_case_types,
6289        non_snake_case,
6290        clippy::pub_underscore_fields,
6291        clippy::style
6292    )]
6293    const _: () = {
6294        use alloy::sol_types as alloy_sol_types;
6295        #[doc(hidden)]
6296        #[allow(dead_code)]
6297        type UnderlyingSolTuple<'a> = ();
6298        #[doc(hidden)]
6299        type UnderlyingRustTuple<'a> = ();
6300        #[cfg(test)]
6301        #[allow(dead_code, unreachable_patterns)]
6302        fn _type_assertion(
6303            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6304        ) {
6305            match _t {
6306                alloy_sol_types::private::AssertTypeEq::<
6307                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6308                >(_) => {}
6309            }
6310        }
6311        #[automatically_derived]
6312        #[doc(hidden)]
6313        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
6314            fn from(value: InvalidArgs) -> Self {
6315                ()
6316            }
6317        }
6318        #[automatically_derived]
6319        #[doc(hidden)]
6320        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
6321            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6322                Self
6323            }
6324        }
6325        #[automatically_derived]
6326        impl alloy_sol_types::SolError for InvalidArgs {
6327            type Parameters<'a> = UnderlyingSolTuple<'a>;
6328            type Token<'a> = <Self::Parameters<
6329                'a,
6330            > as alloy_sol_types::SolType>::Token<'a>;
6331            const SIGNATURE: &'static str = "InvalidArgs()";
6332            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
6333            #[inline]
6334            fn new<'a>(
6335                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6336            ) -> Self {
6337                tuple.into()
6338            }
6339            #[inline]
6340            fn tokenize(&self) -> Self::Token<'_> {
6341                ()
6342            }
6343            #[inline]
6344            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6345                <Self::Parameters<
6346                    '_,
6347                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6348                    .map(Self::new)
6349            }
6350        }
6351    };
6352    #[derive(serde::Serialize, serde::Deserialize)]
6353    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6354    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
6355```solidity
6356error InvalidHotShotBlockForCommitmentCheck();
6357```*/
6358    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6359    #[derive(Clone)]
6360    pub struct InvalidHotShotBlockForCommitmentCheck;
6361    #[allow(
6362        non_camel_case_types,
6363        non_snake_case,
6364        clippy::pub_underscore_fields,
6365        clippy::style
6366    )]
6367    const _: () = {
6368        use alloy::sol_types as alloy_sol_types;
6369        #[doc(hidden)]
6370        #[allow(dead_code)]
6371        type UnderlyingSolTuple<'a> = ();
6372        #[doc(hidden)]
6373        type UnderlyingRustTuple<'a> = ();
6374        #[cfg(test)]
6375        #[allow(dead_code, unreachable_patterns)]
6376        fn _type_assertion(
6377            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6378        ) {
6379            match _t {
6380                alloy_sol_types::private::AssertTypeEq::<
6381                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6382                >(_) => {}
6383            }
6384        }
6385        #[automatically_derived]
6386        #[doc(hidden)]
6387        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck>
6388        for UnderlyingRustTuple<'_> {
6389            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
6390                ()
6391            }
6392        }
6393        #[automatically_derived]
6394        #[doc(hidden)]
6395        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6396        for InvalidHotShotBlockForCommitmentCheck {
6397            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6398                Self
6399            }
6400        }
6401        #[automatically_derived]
6402        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
6403            type Parameters<'a> = UnderlyingSolTuple<'a>;
6404            type Token<'a> = <Self::Parameters<
6405                'a,
6406            > as alloy_sol_types::SolType>::Token<'a>;
6407            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
6408            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
6409            #[inline]
6410            fn new<'a>(
6411                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6412            ) -> Self {
6413                tuple.into()
6414            }
6415            #[inline]
6416            fn tokenize(&self) -> Self::Token<'_> {
6417                ()
6418            }
6419            #[inline]
6420            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6421                <Self::Parameters<
6422                    '_,
6423                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6424                    .map(Self::new)
6425            }
6426        }
6427    };
6428    #[derive(serde::Serialize, serde::Deserialize)]
6429    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6430    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
6431```solidity
6432error InvalidInitialization();
6433```*/
6434    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6435    #[derive(Clone)]
6436    pub struct InvalidInitialization;
6437    #[allow(
6438        non_camel_case_types,
6439        non_snake_case,
6440        clippy::pub_underscore_fields,
6441        clippy::style
6442    )]
6443    const _: () = {
6444        use alloy::sol_types as alloy_sol_types;
6445        #[doc(hidden)]
6446        #[allow(dead_code)]
6447        type UnderlyingSolTuple<'a> = ();
6448        #[doc(hidden)]
6449        type UnderlyingRustTuple<'a> = ();
6450        #[cfg(test)]
6451        #[allow(dead_code, unreachable_patterns)]
6452        fn _type_assertion(
6453            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6454        ) {
6455            match _t {
6456                alloy_sol_types::private::AssertTypeEq::<
6457                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6458                >(_) => {}
6459            }
6460        }
6461        #[automatically_derived]
6462        #[doc(hidden)]
6463        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
6464            fn from(value: InvalidInitialization) -> Self {
6465                ()
6466            }
6467        }
6468        #[automatically_derived]
6469        #[doc(hidden)]
6470        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
6471            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6472                Self
6473            }
6474        }
6475        #[automatically_derived]
6476        impl alloy_sol_types::SolError for InvalidInitialization {
6477            type Parameters<'a> = UnderlyingSolTuple<'a>;
6478            type Token<'a> = <Self::Parameters<
6479                'a,
6480            > as alloy_sol_types::SolType>::Token<'a>;
6481            const SIGNATURE: &'static str = "InvalidInitialization()";
6482            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
6483            #[inline]
6484            fn new<'a>(
6485                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6486            ) -> Self {
6487                tuple.into()
6488            }
6489            #[inline]
6490            fn tokenize(&self) -> Self::Token<'_> {
6491                ()
6492            }
6493            #[inline]
6494            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6495                <Self::Parameters<
6496                    '_,
6497                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6498                    .map(Self::new)
6499            }
6500        }
6501    };
6502    #[derive(serde::Serialize, serde::Deserialize)]
6503    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6504    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
6505```solidity
6506error InvalidMaxStateHistory();
6507```*/
6508    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6509    #[derive(Clone)]
6510    pub struct InvalidMaxStateHistory;
6511    #[allow(
6512        non_camel_case_types,
6513        non_snake_case,
6514        clippy::pub_underscore_fields,
6515        clippy::style
6516    )]
6517    const _: () = {
6518        use alloy::sol_types as alloy_sol_types;
6519        #[doc(hidden)]
6520        #[allow(dead_code)]
6521        type UnderlyingSolTuple<'a> = ();
6522        #[doc(hidden)]
6523        type UnderlyingRustTuple<'a> = ();
6524        #[cfg(test)]
6525        #[allow(dead_code, unreachable_patterns)]
6526        fn _type_assertion(
6527            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6528        ) {
6529            match _t {
6530                alloy_sol_types::private::AssertTypeEq::<
6531                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6532                >(_) => {}
6533            }
6534        }
6535        #[automatically_derived]
6536        #[doc(hidden)]
6537        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
6538            fn from(value: InvalidMaxStateHistory) -> Self {
6539                ()
6540            }
6541        }
6542        #[automatically_derived]
6543        #[doc(hidden)]
6544        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
6545            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6546                Self
6547            }
6548        }
6549        #[automatically_derived]
6550        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
6551            type Parameters<'a> = UnderlyingSolTuple<'a>;
6552            type Token<'a> = <Self::Parameters<
6553                'a,
6554            > as alloy_sol_types::SolType>::Token<'a>;
6555            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
6556            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
6557            #[inline]
6558            fn new<'a>(
6559                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6560            ) -> Self {
6561                tuple.into()
6562            }
6563            #[inline]
6564            fn tokenize(&self) -> Self::Token<'_> {
6565                ()
6566            }
6567            #[inline]
6568            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6569                <Self::Parameters<
6570                    '_,
6571                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6572                    .map(Self::new)
6573            }
6574        }
6575    };
6576    #[derive(serde::Serialize, serde::Deserialize)]
6577    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6578    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
6579```solidity
6580error InvalidProof();
6581```*/
6582    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6583    #[derive(Clone)]
6584    pub struct InvalidProof;
6585    #[allow(
6586        non_camel_case_types,
6587        non_snake_case,
6588        clippy::pub_underscore_fields,
6589        clippy::style
6590    )]
6591    const _: () = {
6592        use alloy::sol_types as alloy_sol_types;
6593        #[doc(hidden)]
6594        #[allow(dead_code)]
6595        type UnderlyingSolTuple<'a> = ();
6596        #[doc(hidden)]
6597        type UnderlyingRustTuple<'a> = ();
6598        #[cfg(test)]
6599        #[allow(dead_code, unreachable_patterns)]
6600        fn _type_assertion(
6601            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6602        ) {
6603            match _t {
6604                alloy_sol_types::private::AssertTypeEq::<
6605                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6606                >(_) => {}
6607            }
6608        }
6609        #[automatically_derived]
6610        #[doc(hidden)]
6611        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
6612            fn from(value: InvalidProof) -> Self {
6613                ()
6614            }
6615        }
6616        #[automatically_derived]
6617        #[doc(hidden)]
6618        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
6619            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6620                Self
6621            }
6622        }
6623        #[automatically_derived]
6624        impl alloy_sol_types::SolError for InvalidProof {
6625            type Parameters<'a> = UnderlyingSolTuple<'a>;
6626            type Token<'a> = <Self::Parameters<
6627                'a,
6628            > as alloy_sol_types::SolType>::Token<'a>;
6629            const SIGNATURE: &'static str = "InvalidProof()";
6630            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
6631            #[inline]
6632            fn new<'a>(
6633                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6634            ) -> Self {
6635                tuple.into()
6636            }
6637            #[inline]
6638            fn tokenize(&self) -> Self::Token<'_> {
6639                ()
6640            }
6641            #[inline]
6642            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6643                <Self::Parameters<
6644                    '_,
6645                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6646                    .map(Self::new)
6647            }
6648        }
6649    };
6650    #[derive(serde::Serialize, serde::Deserialize)]
6651    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6652    /**Custom error with signature `InvalidScalar()` and selector `0x05b05ccc`.
6653```solidity
6654error InvalidScalar();
6655```*/
6656    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6657    #[derive(Clone)]
6658    pub struct InvalidScalar;
6659    #[allow(
6660        non_camel_case_types,
6661        non_snake_case,
6662        clippy::pub_underscore_fields,
6663        clippy::style
6664    )]
6665    const _: () = {
6666        use alloy::sol_types as alloy_sol_types;
6667        #[doc(hidden)]
6668        #[allow(dead_code)]
6669        type UnderlyingSolTuple<'a> = ();
6670        #[doc(hidden)]
6671        type UnderlyingRustTuple<'a> = ();
6672        #[cfg(test)]
6673        #[allow(dead_code, unreachable_patterns)]
6674        fn _type_assertion(
6675            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6676        ) {
6677            match _t {
6678                alloy_sol_types::private::AssertTypeEq::<
6679                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6680                >(_) => {}
6681            }
6682        }
6683        #[automatically_derived]
6684        #[doc(hidden)]
6685        impl ::core::convert::From<InvalidScalar> for UnderlyingRustTuple<'_> {
6686            fn from(value: InvalidScalar) -> Self {
6687                ()
6688            }
6689        }
6690        #[automatically_derived]
6691        #[doc(hidden)]
6692        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidScalar {
6693            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6694                Self
6695            }
6696        }
6697        #[automatically_derived]
6698        impl alloy_sol_types::SolError for InvalidScalar {
6699            type Parameters<'a> = UnderlyingSolTuple<'a>;
6700            type Token<'a> = <Self::Parameters<
6701                'a,
6702            > as alloy_sol_types::SolType>::Token<'a>;
6703            const SIGNATURE: &'static str = "InvalidScalar()";
6704            const SELECTOR: [u8; 4] = [5u8, 176u8, 92u8, 204u8];
6705            #[inline]
6706            fn new<'a>(
6707                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6708            ) -> Self {
6709                tuple.into()
6710            }
6711            #[inline]
6712            fn tokenize(&self) -> Self::Token<'_> {
6713                ()
6714            }
6715            #[inline]
6716            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6717                <Self::Parameters<
6718                    '_,
6719                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6720                    .map(Self::new)
6721            }
6722        }
6723    };
6724    #[derive(serde::Serialize, serde::Deserialize)]
6725    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6726    /**Custom error with signature `MissingEpochRootUpdate()` and selector `0x080ae8d9`.
6727```solidity
6728error MissingEpochRootUpdate();
6729```*/
6730    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6731    #[derive(Clone)]
6732    pub struct MissingEpochRootUpdate;
6733    #[allow(
6734        non_camel_case_types,
6735        non_snake_case,
6736        clippy::pub_underscore_fields,
6737        clippy::style
6738    )]
6739    const _: () = {
6740        use alloy::sol_types as alloy_sol_types;
6741        #[doc(hidden)]
6742        #[allow(dead_code)]
6743        type UnderlyingSolTuple<'a> = ();
6744        #[doc(hidden)]
6745        type UnderlyingRustTuple<'a> = ();
6746        #[cfg(test)]
6747        #[allow(dead_code, unreachable_patterns)]
6748        fn _type_assertion(
6749            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6750        ) {
6751            match _t {
6752                alloy_sol_types::private::AssertTypeEq::<
6753                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6754                >(_) => {}
6755            }
6756        }
6757        #[automatically_derived]
6758        #[doc(hidden)]
6759        impl ::core::convert::From<MissingEpochRootUpdate> for UnderlyingRustTuple<'_> {
6760            fn from(value: MissingEpochRootUpdate) -> Self {
6761                ()
6762            }
6763        }
6764        #[automatically_derived]
6765        #[doc(hidden)]
6766        impl ::core::convert::From<UnderlyingRustTuple<'_>> for MissingEpochRootUpdate {
6767            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6768                Self
6769            }
6770        }
6771        #[automatically_derived]
6772        impl alloy_sol_types::SolError for MissingEpochRootUpdate {
6773            type Parameters<'a> = UnderlyingSolTuple<'a>;
6774            type Token<'a> = <Self::Parameters<
6775                'a,
6776            > as alloy_sol_types::SolType>::Token<'a>;
6777            const SIGNATURE: &'static str = "MissingEpochRootUpdate()";
6778            const SELECTOR: [u8; 4] = [8u8, 10u8, 232u8, 217u8];
6779            #[inline]
6780            fn new<'a>(
6781                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6782            ) -> Self {
6783                tuple.into()
6784            }
6785            #[inline]
6786            fn tokenize(&self) -> Self::Token<'_> {
6787                ()
6788            }
6789            #[inline]
6790            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6791                <Self::Parameters<
6792                    '_,
6793                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6794                    .map(Self::new)
6795            }
6796        }
6797    };
6798    #[derive(serde::Serialize, serde::Deserialize)]
6799    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6800    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
6801```solidity
6802error NoChangeRequired();
6803```*/
6804    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6805    #[derive(Clone)]
6806    pub struct NoChangeRequired;
6807    #[allow(
6808        non_camel_case_types,
6809        non_snake_case,
6810        clippy::pub_underscore_fields,
6811        clippy::style
6812    )]
6813    const _: () = {
6814        use alloy::sol_types as alloy_sol_types;
6815        #[doc(hidden)]
6816        #[allow(dead_code)]
6817        type UnderlyingSolTuple<'a> = ();
6818        #[doc(hidden)]
6819        type UnderlyingRustTuple<'a> = ();
6820        #[cfg(test)]
6821        #[allow(dead_code, unreachable_patterns)]
6822        fn _type_assertion(
6823            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6824        ) {
6825            match _t {
6826                alloy_sol_types::private::AssertTypeEq::<
6827                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6828                >(_) => {}
6829            }
6830        }
6831        #[automatically_derived]
6832        #[doc(hidden)]
6833        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
6834            fn from(value: NoChangeRequired) -> Self {
6835                ()
6836            }
6837        }
6838        #[automatically_derived]
6839        #[doc(hidden)]
6840        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
6841            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6842                Self
6843            }
6844        }
6845        #[automatically_derived]
6846        impl alloy_sol_types::SolError for NoChangeRequired {
6847            type Parameters<'a> = UnderlyingSolTuple<'a>;
6848            type Token<'a> = <Self::Parameters<
6849                'a,
6850            > as alloy_sol_types::SolType>::Token<'a>;
6851            const SIGNATURE: &'static str = "NoChangeRequired()";
6852            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
6853            #[inline]
6854            fn new<'a>(
6855                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6856            ) -> Self {
6857                tuple.into()
6858            }
6859            #[inline]
6860            fn tokenize(&self) -> Self::Token<'_> {
6861                ()
6862            }
6863            #[inline]
6864            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6865                <Self::Parameters<
6866                    '_,
6867                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6868                    .map(Self::new)
6869            }
6870        }
6871    };
6872    #[derive(serde::Serialize, serde::Deserialize)]
6873    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6874    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
6875```solidity
6876error NotInitializing();
6877```*/
6878    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6879    #[derive(Clone)]
6880    pub struct NotInitializing;
6881    #[allow(
6882        non_camel_case_types,
6883        non_snake_case,
6884        clippy::pub_underscore_fields,
6885        clippy::style
6886    )]
6887    const _: () = {
6888        use alloy::sol_types as alloy_sol_types;
6889        #[doc(hidden)]
6890        #[allow(dead_code)]
6891        type UnderlyingSolTuple<'a> = ();
6892        #[doc(hidden)]
6893        type UnderlyingRustTuple<'a> = ();
6894        #[cfg(test)]
6895        #[allow(dead_code, unreachable_patterns)]
6896        fn _type_assertion(
6897            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6898        ) {
6899            match _t {
6900                alloy_sol_types::private::AssertTypeEq::<
6901                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6902                >(_) => {}
6903            }
6904        }
6905        #[automatically_derived]
6906        #[doc(hidden)]
6907        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
6908            fn from(value: NotInitializing) -> Self {
6909                ()
6910            }
6911        }
6912        #[automatically_derived]
6913        #[doc(hidden)]
6914        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
6915            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6916                Self
6917            }
6918        }
6919        #[automatically_derived]
6920        impl alloy_sol_types::SolError for NotInitializing {
6921            type Parameters<'a> = UnderlyingSolTuple<'a>;
6922            type Token<'a> = <Self::Parameters<
6923                'a,
6924            > as alloy_sol_types::SolType>::Token<'a>;
6925            const SIGNATURE: &'static str = "NotInitializing()";
6926            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
6927            #[inline]
6928            fn new<'a>(
6929                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6930            ) -> Self {
6931                tuple.into()
6932            }
6933            #[inline]
6934            fn tokenize(&self) -> Self::Token<'_> {
6935                ()
6936            }
6937            #[inline]
6938            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6939                <Self::Parameters<
6940                    '_,
6941                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6942                    .map(Self::new)
6943            }
6944        }
6945    };
6946    #[derive(serde::Serialize, serde::Deserialize)]
6947    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6948    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
6949```solidity
6950error OutdatedState();
6951```*/
6952    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6953    #[derive(Clone)]
6954    pub struct OutdatedState;
6955    #[allow(
6956        non_camel_case_types,
6957        non_snake_case,
6958        clippy::pub_underscore_fields,
6959        clippy::style
6960    )]
6961    const _: () = {
6962        use alloy::sol_types as alloy_sol_types;
6963        #[doc(hidden)]
6964        #[allow(dead_code)]
6965        type UnderlyingSolTuple<'a> = ();
6966        #[doc(hidden)]
6967        type UnderlyingRustTuple<'a> = ();
6968        #[cfg(test)]
6969        #[allow(dead_code, unreachable_patterns)]
6970        fn _type_assertion(
6971            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6972        ) {
6973            match _t {
6974                alloy_sol_types::private::AssertTypeEq::<
6975                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6976                >(_) => {}
6977            }
6978        }
6979        #[automatically_derived]
6980        #[doc(hidden)]
6981        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
6982            fn from(value: OutdatedState) -> Self {
6983                ()
6984            }
6985        }
6986        #[automatically_derived]
6987        #[doc(hidden)]
6988        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
6989            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6990                Self
6991            }
6992        }
6993        #[automatically_derived]
6994        impl alloy_sol_types::SolError for OutdatedState {
6995            type Parameters<'a> = UnderlyingSolTuple<'a>;
6996            type Token<'a> = <Self::Parameters<
6997                'a,
6998            > as alloy_sol_types::SolType>::Token<'a>;
6999            const SIGNATURE: &'static str = "OutdatedState()";
7000            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
7001            #[inline]
7002            fn new<'a>(
7003                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7004            ) -> Self {
7005                tuple.into()
7006            }
7007            #[inline]
7008            fn tokenize(&self) -> Self::Token<'_> {
7009                ()
7010            }
7011            #[inline]
7012            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7013                <Self::Parameters<
7014                    '_,
7015                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7016                    .map(Self::new)
7017            }
7018        }
7019    };
7020    #[derive(serde::Serialize, serde::Deserialize)]
7021    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7022    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
7023```solidity
7024error OwnableInvalidOwner(address owner);
7025```*/
7026    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7027    #[derive(Clone)]
7028    pub struct OwnableInvalidOwner {
7029        #[allow(missing_docs)]
7030        pub owner: alloy::sol_types::private::Address,
7031    }
7032    #[allow(
7033        non_camel_case_types,
7034        non_snake_case,
7035        clippy::pub_underscore_fields,
7036        clippy::style
7037    )]
7038    const _: () = {
7039        use alloy::sol_types as alloy_sol_types;
7040        #[doc(hidden)]
7041        #[allow(dead_code)]
7042        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7043        #[doc(hidden)]
7044        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7045        #[cfg(test)]
7046        #[allow(dead_code, unreachable_patterns)]
7047        fn _type_assertion(
7048            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7049        ) {
7050            match _t {
7051                alloy_sol_types::private::AssertTypeEq::<
7052                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7053                >(_) => {}
7054            }
7055        }
7056        #[automatically_derived]
7057        #[doc(hidden)]
7058        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
7059            fn from(value: OwnableInvalidOwner) -> Self {
7060                (value.owner,)
7061            }
7062        }
7063        #[automatically_derived]
7064        #[doc(hidden)]
7065        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
7066            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7067                Self { owner: tuple.0 }
7068            }
7069        }
7070        #[automatically_derived]
7071        impl alloy_sol_types::SolError for OwnableInvalidOwner {
7072            type Parameters<'a> = UnderlyingSolTuple<'a>;
7073            type Token<'a> = <Self::Parameters<
7074                'a,
7075            > as alloy_sol_types::SolType>::Token<'a>;
7076            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
7077            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
7078            #[inline]
7079            fn new<'a>(
7080                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7081            ) -> Self {
7082                tuple.into()
7083            }
7084            #[inline]
7085            fn tokenize(&self) -> Self::Token<'_> {
7086                (
7087                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7088                        &self.owner,
7089                    ),
7090                )
7091            }
7092            #[inline]
7093            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7094                <Self::Parameters<
7095                    '_,
7096                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7097                    .map(Self::new)
7098            }
7099        }
7100    };
7101    #[derive(serde::Serialize, serde::Deserialize)]
7102    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7103    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
7104```solidity
7105error OwnableUnauthorizedAccount(address account);
7106```*/
7107    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7108    #[derive(Clone)]
7109    pub struct OwnableUnauthorizedAccount {
7110        #[allow(missing_docs)]
7111        pub account: alloy::sol_types::private::Address,
7112    }
7113    #[allow(
7114        non_camel_case_types,
7115        non_snake_case,
7116        clippy::pub_underscore_fields,
7117        clippy::style
7118    )]
7119    const _: () = {
7120        use alloy::sol_types as alloy_sol_types;
7121        #[doc(hidden)]
7122        #[allow(dead_code)]
7123        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7124        #[doc(hidden)]
7125        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7126        #[cfg(test)]
7127        #[allow(dead_code, unreachable_patterns)]
7128        fn _type_assertion(
7129            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7130        ) {
7131            match _t {
7132                alloy_sol_types::private::AssertTypeEq::<
7133                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7134                >(_) => {}
7135            }
7136        }
7137        #[automatically_derived]
7138        #[doc(hidden)]
7139        impl ::core::convert::From<OwnableUnauthorizedAccount>
7140        for UnderlyingRustTuple<'_> {
7141            fn from(value: OwnableUnauthorizedAccount) -> Self {
7142                (value.account,)
7143            }
7144        }
7145        #[automatically_derived]
7146        #[doc(hidden)]
7147        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7148        for OwnableUnauthorizedAccount {
7149            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7150                Self { account: tuple.0 }
7151            }
7152        }
7153        #[automatically_derived]
7154        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
7155            type Parameters<'a> = UnderlyingSolTuple<'a>;
7156            type Token<'a> = <Self::Parameters<
7157                'a,
7158            > as alloy_sol_types::SolType>::Token<'a>;
7159            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
7160            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
7161            #[inline]
7162            fn new<'a>(
7163                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7164            ) -> Self {
7165                tuple.into()
7166            }
7167            #[inline]
7168            fn tokenize(&self) -> Self::Token<'_> {
7169                (
7170                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7171                        &self.account,
7172                    ),
7173                )
7174            }
7175            #[inline]
7176            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7177                <Self::Parameters<
7178                    '_,
7179                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7180                    .map(Self::new)
7181            }
7182        }
7183    };
7184    #[derive(serde::Serialize, serde::Deserialize)]
7185    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7186    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
7187```solidity
7188error ProverNotPermissioned();
7189```*/
7190    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7191    #[derive(Clone)]
7192    pub struct ProverNotPermissioned;
7193    #[allow(
7194        non_camel_case_types,
7195        non_snake_case,
7196        clippy::pub_underscore_fields,
7197        clippy::style
7198    )]
7199    const _: () = {
7200        use alloy::sol_types as alloy_sol_types;
7201        #[doc(hidden)]
7202        #[allow(dead_code)]
7203        type UnderlyingSolTuple<'a> = ();
7204        #[doc(hidden)]
7205        type UnderlyingRustTuple<'a> = ();
7206        #[cfg(test)]
7207        #[allow(dead_code, unreachable_patterns)]
7208        fn _type_assertion(
7209            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7210        ) {
7211            match _t {
7212                alloy_sol_types::private::AssertTypeEq::<
7213                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7214                >(_) => {}
7215            }
7216        }
7217        #[automatically_derived]
7218        #[doc(hidden)]
7219        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
7220            fn from(value: ProverNotPermissioned) -> Self {
7221                ()
7222            }
7223        }
7224        #[automatically_derived]
7225        #[doc(hidden)]
7226        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
7227            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7228                Self
7229            }
7230        }
7231        #[automatically_derived]
7232        impl alloy_sol_types::SolError for ProverNotPermissioned {
7233            type Parameters<'a> = UnderlyingSolTuple<'a>;
7234            type Token<'a> = <Self::Parameters<
7235                'a,
7236            > as alloy_sol_types::SolType>::Token<'a>;
7237            const SIGNATURE: &'static str = "ProverNotPermissioned()";
7238            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
7239            #[inline]
7240            fn new<'a>(
7241                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7242            ) -> Self {
7243                tuple.into()
7244            }
7245            #[inline]
7246            fn tokenize(&self) -> Self::Token<'_> {
7247                ()
7248            }
7249            #[inline]
7250            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7251                <Self::Parameters<
7252                    '_,
7253                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7254                    .map(Self::new)
7255            }
7256        }
7257    };
7258    #[derive(serde::Serialize, serde::Deserialize)]
7259    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7260    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
7261```solidity
7262error UUPSUnauthorizedCallContext();
7263```*/
7264    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7265    #[derive(Clone)]
7266    pub struct UUPSUnauthorizedCallContext;
7267    #[allow(
7268        non_camel_case_types,
7269        non_snake_case,
7270        clippy::pub_underscore_fields,
7271        clippy::style
7272    )]
7273    const _: () = {
7274        use alloy::sol_types as alloy_sol_types;
7275        #[doc(hidden)]
7276        #[allow(dead_code)]
7277        type UnderlyingSolTuple<'a> = ();
7278        #[doc(hidden)]
7279        type UnderlyingRustTuple<'a> = ();
7280        #[cfg(test)]
7281        #[allow(dead_code, unreachable_patterns)]
7282        fn _type_assertion(
7283            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7284        ) {
7285            match _t {
7286                alloy_sol_types::private::AssertTypeEq::<
7287                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7288                >(_) => {}
7289            }
7290        }
7291        #[automatically_derived]
7292        #[doc(hidden)]
7293        impl ::core::convert::From<UUPSUnauthorizedCallContext>
7294        for UnderlyingRustTuple<'_> {
7295            fn from(value: UUPSUnauthorizedCallContext) -> Self {
7296                ()
7297            }
7298        }
7299        #[automatically_derived]
7300        #[doc(hidden)]
7301        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7302        for UUPSUnauthorizedCallContext {
7303            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7304                Self
7305            }
7306        }
7307        #[automatically_derived]
7308        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
7309            type Parameters<'a> = UnderlyingSolTuple<'a>;
7310            type Token<'a> = <Self::Parameters<
7311                'a,
7312            > as alloy_sol_types::SolType>::Token<'a>;
7313            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
7314            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
7315            #[inline]
7316            fn new<'a>(
7317                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7318            ) -> Self {
7319                tuple.into()
7320            }
7321            #[inline]
7322            fn tokenize(&self) -> Self::Token<'_> {
7323                ()
7324            }
7325            #[inline]
7326            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7327                <Self::Parameters<
7328                    '_,
7329                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7330                    .map(Self::new)
7331            }
7332        }
7333    };
7334    #[derive(serde::Serialize, serde::Deserialize)]
7335    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7336    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
7337```solidity
7338error UUPSUnsupportedProxiableUUID(bytes32 slot);
7339```*/
7340    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7341    #[derive(Clone)]
7342    pub struct UUPSUnsupportedProxiableUUID {
7343        #[allow(missing_docs)]
7344        pub slot: alloy::sol_types::private::FixedBytes<32>,
7345    }
7346    #[allow(
7347        non_camel_case_types,
7348        non_snake_case,
7349        clippy::pub_underscore_fields,
7350        clippy::style
7351    )]
7352    const _: () = {
7353        use alloy::sol_types as alloy_sol_types;
7354        #[doc(hidden)]
7355        #[allow(dead_code)]
7356        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7357        #[doc(hidden)]
7358        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
7359        #[cfg(test)]
7360        #[allow(dead_code, unreachable_patterns)]
7361        fn _type_assertion(
7362            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7363        ) {
7364            match _t {
7365                alloy_sol_types::private::AssertTypeEq::<
7366                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7367                >(_) => {}
7368            }
7369        }
7370        #[automatically_derived]
7371        #[doc(hidden)]
7372        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
7373        for UnderlyingRustTuple<'_> {
7374            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
7375                (value.slot,)
7376            }
7377        }
7378        #[automatically_derived]
7379        #[doc(hidden)]
7380        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7381        for UUPSUnsupportedProxiableUUID {
7382            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7383                Self { slot: tuple.0 }
7384            }
7385        }
7386        #[automatically_derived]
7387        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
7388            type Parameters<'a> = UnderlyingSolTuple<'a>;
7389            type Token<'a> = <Self::Parameters<
7390                'a,
7391            > as alloy_sol_types::SolType>::Token<'a>;
7392            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
7393            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
7394            #[inline]
7395            fn new<'a>(
7396                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7397            ) -> Self {
7398                tuple.into()
7399            }
7400            #[inline]
7401            fn tokenize(&self) -> Self::Token<'_> {
7402                (
7403                    <alloy::sol_types::sol_data::FixedBytes<
7404                        32,
7405                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
7406                )
7407            }
7408            #[inline]
7409            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7410                <Self::Parameters<
7411                    '_,
7412                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7413                    .map(Self::new)
7414            }
7415        }
7416    };
7417    #[derive(serde::Serialize, serde::Deserialize)]
7418    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7419    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
7420```solidity
7421error WrongStakeTableUsed();
7422```*/
7423    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7424    #[derive(Clone)]
7425    pub struct WrongStakeTableUsed;
7426    #[allow(
7427        non_camel_case_types,
7428        non_snake_case,
7429        clippy::pub_underscore_fields,
7430        clippy::style
7431    )]
7432    const _: () = {
7433        use alloy::sol_types as alloy_sol_types;
7434        #[doc(hidden)]
7435        #[allow(dead_code)]
7436        type UnderlyingSolTuple<'a> = ();
7437        #[doc(hidden)]
7438        type UnderlyingRustTuple<'a> = ();
7439        #[cfg(test)]
7440        #[allow(dead_code, unreachable_patterns)]
7441        fn _type_assertion(
7442            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7443        ) {
7444            match _t {
7445                alloy_sol_types::private::AssertTypeEq::<
7446                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7447                >(_) => {}
7448            }
7449        }
7450        #[automatically_derived]
7451        #[doc(hidden)]
7452        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
7453            fn from(value: WrongStakeTableUsed) -> Self {
7454                ()
7455            }
7456        }
7457        #[automatically_derived]
7458        #[doc(hidden)]
7459        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
7460            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7461                Self
7462            }
7463        }
7464        #[automatically_derived]
7465        impl alloy_sol_types::SolError for WrongStakeTableUsed {
7466            type Parameters<'a> = UnderlyingSolTuple<'a>;
7467            type Token<'a> = <Self::Parameters<
7468                'a,
7469            > as alloy_sol_types::SolType>::Token<'a>;
7470            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
7471            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
7472            #[inline]
7473            fn new<'a>(
7474                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7475            ) -> Self {
7476                tuple.into()
7477            }
7478            #[inline]
7479            fn tokenize(&self) -> Self::Token<'_> {
7480                ()
7481            }
7482            #[inline]
7483            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7484                <Self::Parameters<
7485                    '_,
7486                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7487                    .map(Self::new)
7488            }
7489        }
7490    };
7491    #[derive(serde::Serialize, serde::Deserialize)]
7492    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7493    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
7494```solidity
7495event Initialized(uint64 version);
7496```*/
7497    #[allow(
7498        non_camel_case_types,
7499        non_snake_case,
7500        clippy::pub_underscore_fields,
7501        clippy::style
7502    )]
7503    #[derive(Clone)]
7504    pub struct Initialized {
7505        #[allow(missing_docs)]
7506        pub version: u64,
7507    }
7508    #[allow(
7509        non_camel_case_types,
7510        non_snake_case,
7511        clippy::pub_underscore_fields,
7512        clippy::style
7513    )]
7514    const _: () = {
7515        use alloy::sol_types as alloy_sol_types;
7516        #[automatically_derived]
7517        impl alloy_sol_types::SolEvent for Initialized {
7518            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7519            type DataToken<'a> = <Self::DataTuple<
7520                'a,
7521            > as alloy_sol_types::SolType>::Token<'a>;
7522            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7523            const SIGNATURE: &'static str = "Initialized(uint64)";
7524            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7525                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
7526                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
7527                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
7528            ]);
7529            const ANONYMOUS: bool = false;
7530            #[allow(unused_variables)]
7531            #[inline]
7532            fn new(
7533                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7534                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7535            ) -> Self {
7536                Self { version: data.0 }
7537            }
7538            #[inline]
7539            fn check_signature(
7540                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7541            ) -> alloy_sol_types::Result<()> {
7542                if topics.0 != Self::SIGNATURE_HASH {
7543                    return Err(
7544                        alloy_sol_types::Error::invalid_event_signature_hash(
7545                            Self::SIGNATURE,
7546                            topics.0,
7547                            Self::SIGNATURE_HASH,
7548                        ),
7549                    );
7550                }
7551                Ok(())
7552            }
7553            #[inline]
7554            fn tokenize_body(&self) -> Self::DataToken<'_> {
7555                (
7556                    <alloy::sol_types::sol_data::Uint<
7557                        64,
7558                    > as alloy_sol_types::SolType>::tokenize(&self.version),
7559                )
7560            }
7561            #[inline]
7562            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7563                (Self::SIGNATURE_HASH.into(),)
7564            }
7565            #[inline]
7566            fn encode_topics_raw(
7567                &self,
7568                out: &mut [alloy_sol_types::abi::token::WordToken],
7569            ) -> alloy_sol_types::Result<()> {
7570                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7571                    return Err(alloy_sol_types::Error::Overrun);
7572                }
7573                out[0usize] = alloy_sol_types::abi::token::WordToken(
7574                    Self::SIGNATURE_HASH,
7575                );
7576                Ok(())
7577            }
7578        }
7579        #[automatically_derived]
7580        impl alloy_sol_types::private::IntoLogData for Initialized {
7581            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7582                From::from(self)
7583            }
7584            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7585                From::from(&self)
7586            }
7587        }
7588        #[automatically_derived]
7589        impl From<&Initialized> for alloy_sol_types::private::LogData {
7590            #[inline]
7591            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
7592                alloy_sol_types::SolEvent::encode_log_data(this)
7593            }
7594        }
7595    };
7596    #[derive(serde::Serialize, serde::Deserialize)]
7597    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7598    /**Event with signature `NewEpoch(uint64)` and selector `0x31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b`.
7599```solidity
7600event NewEpoch(uint64 epoch);
7601```*/
7602    #[allow(
7603        non_camel_case_types,
7604        non_snake_case,
7605        clippy::pub_underscore_fields,
7606        clippy::style
7607    )]
7608    #[derive(Clone)]
7609    pub struct NewEpoch {
7610        #[allow(missing_docs)]
7611        pub epoch: u64,
7612    }
7613    #[allow(
7614        non_camel_case_types,
7615        non_snake_case,
7616        clippy::pub_underscore_fields,
7617        clippy::style
7618    )]
7619    const _: () = {
7620        use alloy::sol_types as alloy_sol_types;
7621        #[automatically_derived]
7622        impl alloy_sol_types::SolEvent for NewEpoch {
7623            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7624            type DataToken<'a> = <Self::DataTuple<
7625                'a,
7626            > as alloy_sol_types::SolType>::Token<'a>;
7627            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7628            const SIGNATURE: &'static str = "NewEpoch(uint64)";
7629            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7630                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
7631                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
7632                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
7633            ]);
7634            const ANONYMOUS: bool = false;
7635            #[allow(unused_variables)]
7636            #[inline]
7637            fn new(
7638                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7639                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7640            ) -> Self {
7641                Self { epoch: data.0 }
7642            }
7643            #[inline]
7644            fn check_signature(
7645                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7646            ) -> alloy_sol_types::Result<()> {
7647                if topics.0 != Self::SIGNATURE_HASH {
7648                    return Err(
7649                        alloy_sol_types::Error::invalid_event_signature_hash(
7650                            Self::SIGNATURE,
7651                            topics.0,
7652                            Self::SIGNATURE_HASH,
7653                        ),
7654                    );
7655                }
7656                Ok(())
7657            }
7658            #[inline]
7659            fn tokenize_body(&self) -> Self::DataToken<'_> {
7660                (
7661                    <alloy::sol_types::sol_data::Uint<
7662                        64,
7663                    > as alloy_sol_types::SolType>::tokenize(&self.epoch),
7664                )
7665            }
7666            #[inline]
7667            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7668                (Self::SIGNATURE_HASH.into(),)
7669            }
7670            #[inline]
7671            fn encode_topics_raw(
7672                &self,
7673                out: &mut [alloy_sol_types::abi::token::WordToken],
7674            ) -> alloy_sol_types::Result<()> {
7675                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7676                    return Err(alloy_sol_types::Error::Overrun);
7677                }
7678                out[0usize] = alloy_sol_types::abi::token::WordToken(
7679                    Self::SIGNATURE_HASH,
7680                );
7681                Ok(())
7682            }
7683        }
7684        #[automatically_derived]
7685        impl alloy_sol_types::private::IntoLogData for NewEpoch {
7686            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7687                From::from(self)
7688            }
7689            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7690                From::from(&self)
7691            }
7692        }
7693        #[automatically_derived]
7694        impl From<&NewEpoch> for alloy_sol_types::private::LogData {
7695            #[inline]
7696            fn from(this: &NewEpoch) -> alloy_sol_types::private::LogData {
7697                alloy_sol_types::SolEvent::encode_log_data(this)
7698            }
7699        }
7700    };
7701    #[derive(serde::Serialize, serde::Deserialize)]
7702    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7703    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
7704```solidity
7705event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
7706```*/
7707    #[allow(
7708        non_camel_case_types,
7709        non_snake_case,
7710        clippy::pub_underscore_fields,
7711        clippy::style
7712    )]
7713    #[derive(Clone)]
7714    pub struct NewState {
7715        #[allow(missing_docs)]
7716        pub viewNum: u64,
7717        #[allow(missing_docs)]
7718        pub blockHeight: u64,
7719        #[allow(missing_docs)]
7720        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7721    }
7722    #[allow(
7723        non_camel_case_types,
7724        non_snake_case,
7725        clippy::pub_underscore_fields,
7726        clippy::style
7727    )]
7728    const _: () = {
7729        use alloy::sol_types as alloy_sol_types;
7730        #[automatically_derived]
7731        impl alloy_sol_types::SolEvent for NewState {
7732            type DataTuple<'a> = (BN254::ScalarField,);
7733            type DataToken<'a> = <Self::DataTuple<
7734                'a,
7735            > as alloy_sol_types::SolType>::Token<'a>;
7736            type TopicList = (
7737                alloy_sol_types::sol_data::FixedBytes<32>,
7738                alloy::sol_types::sol_data::Uint<64>,
7739                alloy::sol_types::sol_data::Uint<64>,
7740            );
7741            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
7742            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7743                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
7744                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
7745                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
7746            ]);
7747            const ANONYMOUS: bool = false;
7748            #[allow(unused_variables)]
7749            #[inline]
7750            fn new(
7751                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7752                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7753            ) -> Self {
7754                Self {
7755                    viewNum: topics.1,
7756                    blockHeight: topics.2,
7757                    blockCommRoot: data.0,
7758                }
7759            }
7760            #[inline]
7761            fn check_signature(
7762                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7763            ) -> alloy_sol_types::Result<()> {
7764                if topics.0 != Self::SIGNATURE_HASH {
7765                    return Err(
7766                        alloy_sol_types::Error::invalid_event_signature_hash(
7767                            Self::SIGNATURE,
7768                            topics.0,
7769                            Self::SIGNATURE_HASH,
7770                        ),
7771                    );
7772                }
7773                Ok(())
7774            }
7775            #[inline]
7776            fn tokenize_body(&self) -> Self::DataToken<'_> {
7777                (
7778                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7779                        &self.blockCommRoot,
7780                    ),
7781                )
7782            }
7783            #[inline]
7784            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7785                (
7786                    Self::SIGNATURE_HASH.into(),
7787                    self.viewNum.clone(),
7788                    self.blockHeight.clone(),
7789                )
7790            }
7791            #[inline]
7792            fn encode_topics_raw(
7793                &self,
7794                out: &mut [alloy_sol_types::abi::token::WordToken],
7795            ) -> alloy_sol_types::Result<()> {
7796                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7797                    return Err(alloy_sol_types::Error::Overrun);
7798                }
7799                out[0usize] = alloy_sol_types::abi::token::WordToken(
7800                    Self::SIGNATURE_HASH,
7801                );
7802                out[1usize] = <alloy::sol_types::sol_data::Uint<
7803                    64,
7804                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
7805                out[2usize] = <alloy::sol_types::sol_data::Uint<
7806                    64,
7807                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
7808                Ok(())
7809            }
7810        }
7811        #[automatically_derived]
7812        impl alloy_sol_types::private::IntoLogData for NewState {
7813            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7814                From::from(self)
7815            }
7816            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7817                From::from(&self)
7818            }
7819        }
7820        #[automatically_derived]
7821        impl From<&NewState> for alloy_sol_types::private::LogData {
7822            #[inline]
7823            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
7824                alloy_sol_types::SolEvent::encode_log_data(this)
7825            }
7826        }
7827    };
7828    #[derive(serde::Serialize, serde::Deserialize)]
7829    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7830    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
7831```solidity
7832event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
7833```*/
7834    #[allow(
7835        non_camel_case_types,
7836        non_snake_case,
7837        clippy::pub_underscore_fields,
7838        clippy::style
7839    )]
7840    #[derive(Clone)]
7841    pub struct OwnershipTransferred {
7842        #[allow(missing_docs)]
7843        pub previousOwner: alloy::sol_types::private::Address,
7844        #[allow(missing_docs)]
7845        pub newOwner: alloy::sol_types::private::Address,
7846    }
7847    #[allow(
7848        non_camel_case_types,
7849        non_snake_case,
7850        clippy::pub_underscore_fields,
7851        clippy::style
7852    )]
7853    const _: () = {
7854        use alloy::sol_types as alloy_sol_types;
7855        #[automatically_derived]
7856        impl alloy_sol_types::SolEvent for OwnershipTransferred {
7857            type DataTuple<'a> = ();
7858            type DataToken<'a> = <Self::DataTuple<
7859                'a,
7860            > as alloy_sol_types::SolType>::Token<'a>;
7861            type TopicList = (
7862                alloy_sol_types::sol_data::FixedBytes<32>,
7863                alloy::sol_types::sol_data::Address,
7864                alloy::sol_types::sol_data::Address,
7865            );
7866            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
7867            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7868                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
7869                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
7870                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
7871            ]);
7872            const ANONYMOUS: bool = false;
7873            #[allow(unused_variables)]
7874            #[inline]
7875            fn new(
7876                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7877                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7878            ) -> Self {
7879                Self {
7880                    previousOwner: topics.1,
7881                    newOwner: topics.2,
7882                }
7883            }
7884            #[inline]
7885            fn check_signature(
7886                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7887            ) -> alloy_sol_types::Result<()> {
7888                if topics.0 != Self::SIGNATURE_HASH {
7889                    return Err(
7890                        alloy_sol_types::Error::invalid_event_signature_hash(
7891                            Self::SIGNATURE,
7892                            topics.0,
7893                            Self::SIGNATURE_HASH,
7894                        ),
7895                    );
7896                }
7897                Ok(())
7898            }
7899            #[inline]
7900            fn tokenize_body(&self) -> Self::DataToken<'_> {
7901                ()
7902            }
7903            #[inline]
7904            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7905                (
7906                    Self::SIGNATURE_HASH.into(),
7907                    self.previousOwner.clone(),
7908                    self.newOwner.clone(),
7909                )
7910            }
7911            #[inline]
7912            fn encode_topics_raw(
7913                &self,
7914                out: &mut [alloy_sol_types::abi::token::WordToken],
7915            ) -> alloy_sol_types::Result<()> {
7916                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7917                    return Err(alloy_sol_types::Error::Overrun);
7918                }
7919                out[0usize] = alloy_sol_types::abi::token::WordToken(
7920                    Self::SIGNATURE_HASH,
7921                );
7922                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7923                    &self.previousOwner,
7924                );
7925                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7926                    &self.newOwner,
7927                );
7928                Ok(())
7929            }
7930        }
7931        #[automatically_derived]
7932        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
7933            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7934                From::from(self)
7935            }
7936            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7937                From::from(&self)
7938            }
7939        }
7940        #[automatically_derived]
7941        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
7942            #[inline]
7943            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
7944                alloy_sol_types::SolEvent::encode_log_data(this)
7945            }
7946        }
7947    };
7948    #[derive(serde::Serialize, serde::Deserialize)]
7949    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7950    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
7951```solidity
7952event PermissionedProverNotRequired();
7953```*/
7954    #[allow(
7955        non_camel_case_types,
7956        non_snake_case,
7957        clippy::pub_underscore_fields,
7958        clippy::style
7959    )]
7960    #[derive(Clone)]
7961    pub struct PermissionedProverNotRequired;
7962    #[allow(
7963        non_camel_case_types,
7964        non_snake_case,
7965        clippy::pub_underscore_fields,
7966        clippy::style
7967    )]
7968    const _: () = {
7969        use alloy::sol_types as alloy_sol_types;
7970        #[automatically_derived]
7971        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
7972            type DataTuple<'a> = ();
7973            type DataToken<'a> = <Self::DataTuple<
7974                'a,
7975            > as alloy_sol_types::SolType>::Token<'a>;
7976            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7977            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
7978            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7979                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
7980                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
7981                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
7982            ]);
7983            const ANONYMOUS: bool = false;
7984            #[allow(unused_variables)]
7985            #[inline]
7986            fn new(
7987                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7988                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7989            ) -> Self {
7990                Self {}
7991            }
7992            #[inline]
7993            fn check_signature(
7994                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7995            ) -> alloy_sol_types::Result<()> {
7996                if topics.0 != Self::SIGNATURE_HASH {
7997                    return Err(
7998                        alloy_sol_types::Error::invalid_event_signature_hash(
7999                            Self::SIGNATURE,
8000                            topics.0,
8001                            Self::SIGNATURE_HASH,
8002                        ),
8003                    );
8004                }
8005                Ok(())
8006            }
8007            #[inline]
8008            fn tokenize_body(&self) -> Self::DataToken<'_> {
8009                ()
8010            }
8011            #[inline]
8012            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8013                (Self::SIGNATURE_HASH.into(),)
8014            }
8015            #[inline]
8016            fn encode_topics_raw(
8017                &self,
8018                out: &mut [alloy_sol_types::abi::token::WordToken],
8019            ) -> alloy_sol_types::Result<()> {
8020                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8021                    return Err(alloy_sol_types::Error::Overrun);
8022                }
8023                out[0usize] = alloy_sol_types::abi::token::WordToken(
8024                    Self::SIGNATURE_HASH,
8025                );
8026                Ok(())
8027            }
8028        }
8029        #[automatically_derived]
8030        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
8031            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8032                From::from(self)
8033            }
8034            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8035                From::from(&self)
8036            }
8037        }
8038        #[automatically_derived]
8039        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
8040            #[inline]
8041            fn from(
8042                this: &PermissionedProverNotRequired,
8043            ) -> alloy_sol_types::private::LogData {
8044                alloy_sol_types::SolEvent::encode_log_data(this)
8045            }
8046        }
8047    };
8048    #[derive(serde::Serialize, serde::Deserialize)]
8049    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8050    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
8051```solidity
8052event PermissionedProverRequired(address permissionedProver);
8053```*/
8054    #[allow(
8055        non_camel_case_types,
8056        non_snake_case,
8057        clippy::pub_underscore_fields,
8058        clippy::style
8059    )]
8060    #[derive(Clone)]
8061    pub struct PermissionedProverRequired {
8062        #[allow(missing_docs)]
8063        pub permissionedProver: alloy::sol_types::private::Address,
8064    }
8065    #[allow(
8066        non_camel_case_types,
8067        non_snake_case,
8068        clippy::pub_underscore_fields,
8069        clippy::style
8070    )]
8071    const _: () = {
8072        use alloy::sol_types as alloy_sol_types;
8073        #[automatically_derived]
8074        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
8075            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
8076            type DataToken<'a> = <Self::DataTuple<
8077                'a,
8078            > as alloy_sol_types::SolType>::Token<'a>;
8079            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
8080            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
8081            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8082                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
8083                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
8084                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
8085            ]);
8086            const ANONYMOUS: bool = false;
8087            #[allow(unused_variables)]
8088            #[inline]
8089            fn new(
8090                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8091                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8092            ) -> Self {
8093                Self { permissionedProver: data.0 }
8094            }
8095            #[inline]
8096            fn check_signature(
8097                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8098            ) -> alloy_sol_types::Result<()> {
8099                if topics.0 != Self::SIGNATURE_HASH {
8100                    return Err(
8101                        alloy_sol_types::Error::invalid_event_signature_hash(
8102                            Self::SIGNATURE,
8103                            topics.0,
8104                            Self::SIGNATURE_HASH,
8105                        ),
8106                    );
8107                }
8108                Ok(())
8109            }
8110            #[inline]
8111            fn tokenize_body(&self) -> Self::DataToken<'_> {
8112                (
8113                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8114                        &self.permissionedProver,
8115                    ),
8116                )
8117            }
8118            #[inline]
8119            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8120                (Self::SIGNATURE_HASH.into(),)
8121            }
8122            #[inline]
8123            fn encode_topics_raw(
8124                &self,
8125                out: &mut [alloy_sol_types::abi::token::WordToken],
8126            ) -> alloy_sol_types::Result<()> {
8127                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8128                    return Err(alloy_sol_types::Error::Overrun);
8129                }
8130                out[0usize] = alloy_sol_types::abi::token::WordToken(
8131                    Self::SIGNATURE_HASH,
8132                );
8133                Ok(())
8134            }
8135        }
8136        #[automatically_derived]
8137        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
8138            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8139                From::from(self)
8140            }
8141            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8142                From::from(&self)
8143            }
8144        }
8145        #[automatically_derived]
8146        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
8147            #[inline]
8148            fn from(
8149                this: &PermissionedProverRequired,
8150            ) -> alloy_sol_types::private::LogData {
8151                alloy_sol_types::SolEvent::encode_log_data(this)
8152            }
8153        }
8154    };
8155    #[derive(serde::Serialize, serde::Deserialize)]
8156    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8157    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
8158```solidity
8159event Upgrade(address implementation);
8160```*/
8161    #[allow(
8162        non_camel_case_types,
8163        non_snake_case,
8164        clippy::pub_underscore_fields,
8165        clippy::style
8166    )]
8167    #[derive(Clone)]
8168    pub struct Upgrade {
8169        #[allow(missing_docs)]
8170        pub implementation: alloy::sol_types::private::Address,
8171    }
8172    #[allow(
8173        non_camel_case_types,
8174        non_snake_case,
8175        clippy::pub_underscore_fields,
8176        clippy::style
8177    )]
8178    const _: () = {
8179        use alloy::sol_types as alloy_sol_types;
8180        #[automatically_derived]
8181        impl alloy_sol_types::SolEvent for Upgrade {
8182            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
8183            type DataToken<'a> = <Self::DataTuple<
8184                'a,
8185            > as alloy_sol_types::SolType>::Token<'a>;
8186            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
8187            const SIGNATURE: &'static str = "Upgrade(address)";
8188            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8189                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
8190                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
8191                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
8192            ]);
8193            const ANONYMOUS: bool = false;
8194            #[allow(unused_variables)]
8195            #[inline]
8196            fn new(
8197                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8198                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8199            ) -> Self {
8200                Self { implementation: data.0 }
8201            }
8202            #[inline]
8203            fn check_signature(
8204                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8205            ) -> alloy_sol_types::Result<()> {
8206                if topics.0 != Self::SIGNATURE_HASH {
8207                    return Err(
8208                        alloy_sol_types::Error::invalid_event_signature_hash(
8209                            Self::SIGNATURE,
8210                            topics.0,
8211                            Self::SIGNATURE_HASH,
8212                        ),
8213                    );
8214                }
8215                Ok(())
8216            }
8217            #[inline]
8218            fn tokenize_body(&self) -> Self::DataToken<'_> {
8219                (
8220                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8221                        &self.implementation,
8222                    ),
8223                )
8224            }
8225            #[inline]
8226            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8227                (Self::SIGNATURE_HASH.into(),)
8228            }
8229            #[inline]
8230            fn encode_topics_raw(
8231                &self,
8232                out: &mut [alloy_sol_types::abi::token::WordToken],
8233            ) -> alloy_sol_types::Result<()> {
8234                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8235                    return Err(alloy_sol_types::Error::Overrun);
8236                }
8237                out[0usize] = alloy_sol_types::abi::token::WordToken(
8238                    Self::SIGNATURE_HASH,
8239                );
8240                Ok(())
8241            }
8242        }
8243        #[automatically_derived]
8244        impl alloy_sol_types::private::IntoLogData for Upgrade {
8245            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8246                From::from(self)
8247            }
8248            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8249                From::from(&self)
8250            }
8251        }
8252        #[automatically_derived]
8253        impl From<&Upgrade> for alloy_sol_types::private::LogData {
8254            #[inline]
8255            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
8256                alloy_sol_types::SolEvent::encode_log_data(this)
8257            }
8258        }
8259    };
8260    #[derive(serde::Serialize, serde::Deserialize)]
8261    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8262    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
8263```solidity
8264event Upgraded(address indexed implementation);
8265```*/
8266    #[allow(
8267        non_camel_case_types,
8268        non_snake_case,
8269        clippy::pub_underscore_fields,
8270        clippy::style
8271    )]
8272    #[derive(Clone)]
8273    pub struct Upgraded {
8274        #[allow(missing_docs)]
8275        pub implementation: alloy::sol_types::private::Address,
8276    }
8277    #[allow(
8278        non_camel_case_types,
8279        non_snake_case,
8280        clippy::pub_underscore_fields,
8281        clippy::style
8282    )]
8283    const _: () = {
8284        use alloy::sol_types as alloy_sol_types;
8285        #[automatically_derived]
8286        impl alloy_sol_types::SolEvent for Upgraded {
8287            type DataTuple<'a> = ();
8288            type DataToken<'a> = <Self::DataTuple<
8289                'a,
8290            > as alloy_sol_types::SolType>::Token<'a>;
8291            type TopicList = (
8292                alloy_sol_types::sol_data::FixedBytes<32>,
8293                alloy::sol_types::sol_data::Address,
8294            );
8295            const SIGNATURE: &'static str = "Upgraded(address)";
8296            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8297                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
8298                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
8299                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
8300            ]);
8301            const ANONYMOUS: bool = false;
8302            #[allow(unused_variables)]
8303            #[inline]
8304            fn new(
8305                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8306                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8307            ) -> Self {
8308                Self { implementation: topics.1 }
8309            }
8310            #[inline]
8311            fn check_signature(
8312                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8313            ) -> alloy_sol_types::Result<()> {
8314                if topics.0 != Self::SIGNATURE_HASH {
8315                    return Err(
8316                        alloy_sol_types::Error::invalid_event_signature_hash(
8317                            Self::SIGNATURE,
8318                            topics.0,
8319                            Self::SIGNATURE_HASH,
8320                        ),
8321                    );
8322                }
8323                Ok(())
8324            }
8325            #[inline]
8326            fn tokenize_body(&self) -> Self::DataToken<'_> {
8327                ()
8328            }
8329            #[inline]
8330            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8331                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
8332            }
8333            #[inline]
8334            fn encode_topics_raw(
8335                &self,
8336                out: &mut [alloy_sol_types::abi::token::WordToken],
8337            ) -> alloy_sol_types::Result<()> {
8338                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8339                    return Err(alloy_sol_types::Error::Overrun);
8340                }
8341                out[0usize] = alloy_sol_types::abi::token::WordToken(
8342                    Self::SIGNATURE_HASH,
8343                );
8344                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8345                    &self.implementation,
8346                );
8347                Ok(())
8348            }
8349        }
8350        #[automatically_derived]
8351        impl alloy_sol_types::private::IntoLogData for Upgraded {
8352            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8353                From::from(self)
8354            }
8355            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8356                From::from(&self)
8357            }
8358        }
8359        #[automatically_derived]
8360        impl From<&Upgraded> for alloy_sol_types::private::LogData {
8361            #[inline]
8362            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
8363                alloy_sol_types::SolEvent::encode_log_data(this)
8364            }
8365        }
8366    };
8367    #[derive(serde::Serialize, serde::Deserialize)]
8368    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8369    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
8370```solidity
8371function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
8372```*/
8373    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8374    #[derive(Clone)]
8375    pub struct UPGRADE_INTERFACE_VERSIONCall;
8376    #[derive(serde::Serialize, serde::Deserialize)]
8377    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8378    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
8379    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8380    #[derive(Clone)]
8381    pub struct UPGRADE_INTERFACE_VERSIONReturn {
8382        #[allow(missing_docs)]
8383        pub _0: alloy::sol_types::private::String,
8384    }
8385    #[allow(
8386        non_camel_case_types,
8387        non_snake_case,
8388        clippy::pub_underscore_fields,
8389        clippy::style
8390    )]
8391    const _: () = {
8392        use alloy::sol_types as alloy_sol_types;
8393        {
8394            #[doc(hidden)]
8395            #[allow(dead_code)]
8396            type UnderlyingSolTuple<'a> = ();
8397            #[doc(hidden)]
8398            type UnderlyingRustTuple<'a> = ();
8399            #[cfg(test)]
8400            #[allow(dead_code, unreachable_patterns)]
8401            fn _type_assertion(
8402                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8403            ) {
8404                match _t {
8405                    alloy_sol_types::private::AssertTypeEq::<
8406                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8407                    >(_) => {}
8408                }
8409            }
8410            #[automatically_derived]
8411            #[doc(hidden)]
8412            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
8413            for UnderlyingRustTuple<'_> {
8414                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
8415                    ()
8416                }
8417            }
8418            #[automatically_derived]
8419            #[doc(hidden)]
8420            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8421            for UPGRADE_INTERFACE_VERSIONCall {
8422                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8423                    Self
8424                }
8425            }
8426        }
8427        {
8428            #[doc(hidden)]
8429            #[allow(dead_code)]
8430            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
8431            #[doc(hidden)]
8432            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
8433            #[cfg(test)]
8434            #[allow(dead_code, unreachable_patterns)]
8435            fn _type_assertion(
8436                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8437            ) {
8438                match _t {
8439                    alloy_sol_types::private::AssertTypeEq::<
8440                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8441                    >(_) => {}
8442                }
8443            }
8444            #[automatically_derived]
8445            #[doc(hidden)]
8446            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
8447            for UnderlyingRustTuple<'_> {
8448                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
8449                    (value._0,)
8450                }
8451            }
8452            #[automatically_derived]
8453            #[doc(hidden)]
8454            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8455            for UPGRADE_INTERFACE_VERSIONReturn {
8456                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8457                    Self { _0: tuple.0 }
8458                }
8459            }
8460        }
8461        #[automatically_derived]
8462        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
8463            type Parameters<'a> = ();
8464            type Token<'a> = <Self::Parameters<
8465                'a,
8466            > as alloy_sol_types::SolType>::Token<'a>;
8467            type Return = alloy::sol_types::private::String;
8468            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
8469            type ReturnToken<'a> = <Self::ReturnTuple<
8470                'a,
8471            > as alloy_sol_types::SolType>::Token<'a>;
8472            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
8473            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
8474            #[inline]
8475            fn new<'a>(
8476                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8477            ) -> Self {
8478                tuple.into()
8479            }
8480            #[inline]
8481            fn tokenize(&self) -> Self::Token<'_> {
8482                ()
8483            }
8484            #[inline]
8485            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8486                (
8487                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
8488                        ret,
8489                    ),
8490                )
8491            }
8492            #[inline]
8493            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8494                <Self::ReturnTuple<
8495                    '_,
8496                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8497                    .map(|r| {
8498                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
8499                        r._0
8500                    })
8501            }
8502            #[inline]
8503            fn abi_decode_returns_validate(
8504                data: &[u8],
8505            ) -> alloy_sol_types::Result<Self::Return> {
8506                <Self::ReturnTuple<
8507                    '_,
8508                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8509                    .map(|r| {
8510                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
8511                        r._0
8512                    })
8513            }
8514        }
8515    };
8516    #[derive(serde::Serialize, serde::Deserialize)]
8517    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8518    /**Function with signature `_getVk()` and selector `0x12173c2c`.
8519```solidity
8520function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
8521```*/
8522    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8523    #[derive(Clone)]
8524    pub struct _getVkCall;
8525    #[derive(serde::Serialize, serde::Deserialize)]
8526    #[derive()]
8527    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
8528    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8529    #[derive(Clone)]
8530    pub struct _getVkReturn {
8531        #[allow(missing_docs)]
8532        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
8533    }
8534    #[allow(
8535        non_camel_case_types,
8536        non_snake_case,
8537        clippy::pub_underscore_fields,
8538        clippy::style
8539    )]
8540    const _: () = {
8541        use alloy::sol_types as alloy_sol_types;
8542        {
8543            #[doc(hidden)]
8544            #[allow(dead_code)]
8545            type UnderlyingSolTuple<'a> = ();
8546            #[doc(hidden)]
8547            type UnderlyingRustTuple<'a> = ();
8548            #[cfg(test)]
8549            #[allow(dead_code, unreachable_patterns)]
8550            fn _type_assertion(
8551                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8552            ) {
8553                match _t {
8554                    alloy_sol_types::private::AssertTypeEq::<
8555                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8556                    >(_) => {}
8557                }
8558            }
8559            #[automatically_derived]
8560            #[doc(hidden)]
8561            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
8562                fn from(value: _getVkCall) -> Self {
8563                    ()
8564                }
8565            }
8566            #[automatically_derived]
8567            #[doc(hidden)]
8568            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
8569                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8570                    Self
8571                }
8572            }
8573        }
8574        {
8575            #[doc(hidden)]
8576            #[allow(dead_code)]
8577            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
8578            #[doc(hidden)]
8579            type UnderlyingRustTuple<'a> = (
8580                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
8581            );
8582            #[cfg(test)]
8583            #[allow(dead_code, unreachable_patterns)]
8584            fn _type_assertion(
8585                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8586            ) {
8587                match _t {
8588                    alloy_sol_types::private::AssertTypeEq::<
8589                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8590                    >(_) => {}
8591                }
8592            }
8593            #[automatically_derived]
8594            #[doc(hidden)]
8595            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
8596                fn from(value: _getVkReturn) -> Self {
8597                    (value.vk,)
8598                }
8599            }
8600            #[automatically_derived]
8601            #[doc(hidden)]
8602            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
8603                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8604                    Self { vk: tuple.0 }
8605                }
8606            }
8607        }
8608        #[automatically_derived]
8609        impl alloy_sol_types::SolCall for _getVkCall {
8610            type Parameters<'a> = ();
8611            type Token<'a> = <Self::Parameters<
8612                'a,
8613            > as alloy_sol_types::SolType>::Token<'a>;
8614            type Return = <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType;
8615            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
8616            type ReturnToken<'a> = <Self::ReturnTuple<
8617                'a,
8618            > as alloy_sol_types::SolType>::Token<'a>;
8619            const SIGNATURE: &'static str = "_getVk()";
8620            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
8621            #[inline]
8622            fn new<'a>(
8623                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8624            ) -> Self {
8625                tuple.into()
8626            }
8627            #[inline]
8628            fn tokenize(&self) -> Self::Token<'_> {
8629                ()
8630            }
8631            #[inline]
8632            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8633                (
8634                    <IPlonkVerifier::VerifyingKey as alloy_sol_types::SolType>::tokenize(
8635                        ret,
8636                    ),
8637                )
8638            }
8639            #[inline]
8640            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8641                <Self::ReturnTuple<
8642                    '_,
8643                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8644                    .map(|r| {
8645                        let r: _getVkReturn = r.into();
8646                        r.vk
8647                    })
8648            }
8649            #[inline]
8650            fn abi_decode_returns_validate(
8651                data: &[u8],
8652            ) -> alloy_sol_types::Result<Self::Return> {
8653                <Self::ReturnTuple<
8654                    '_,
8655                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8656                    .map(|r| {
8657                        let r: _getVkReturn = r.into();
8658                        r.vk
8659                    })
8660            }
8661        }
8662    };
8663    #[derive(serde::Serialize, serde::Deserialize)]
8664    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8665    /**Function with signature `authRoot()` and selector `0x998328e8`.
8666```solidity
8667function authRoot() external view returns (uint256);
8668```*/
8669    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8670    #[derive(Clone)]
8671    pub struct authRootCall;
8672    #[derive(serde::Serialize, serde::Deserialize)]
8673    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8674    ///Container type for the return parameters of the [`authRoot()`](authRootCall) function.
8675    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8676    #[derive(Clone)]
8677    pub struct authRootReturn {
8678        #[allow(missing_docs)]
8679        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8680    }
8681    #[allow(
8682        non_camel_case_types,
8683        non_snake_case,
8684        clippy::pub_underscore_fields,
8685        clippy::style
8686    )]
8687    const _: () = {
8688        use alloy::sol_types as alloy_sol_types;
8689        {
8690            #[doc(hidden)]
8691            #[allow(dead_code)]
8692            type UnderlyingSolTuple<'a> = ();
8693            #[doc(hidden)]
8694            type UnderlyingRustTuple<'a> = ();
8695            #[cfg(test)]
8696            #[allow(dead_code, unreachable_patterns)]
8697            fn _type_assertion(
8698                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8699            ) {
8700                match _t {
8701                    alloy_sol_types::private::AssertTypeEq::<
8702                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8703                    >(_) => {}
8704                }
8705            }
8706            #[automatically_derived]
8707            #[doc(hidden)]
8708            impl ::core::convert::From<authRootCall> for UnderlyingRustTuple<'_> {
8709                fn from(value: authRootCall) -> Self {
8710                    ()
8711                }
8712            }
8713            #[automatically_derived]
8714            #[doc(hidden)]
8715            impl ::core::convert::From<UnderlyingRustTuple<'_>> for authRootCall {
8716                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8717                    Self
8718                }
8719            }
8720        }
8721        {
8722            #[doc(hidden)]
8723            #[allow(dead_code)]
8724            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8725            #[doc(hidden)]
8726            type UnderlyingRustTuple<'a> = (
8727                alloy::sol_types::private::primitives::aliases::U256,
8728            );
8729            #[cfg(test)]
8730            #[allow(dead_code, unreachable_patterns)]
8731            fn _type_assertion(
8732                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8733            ) {
8734                match _t {
8735                    alloy_sol_types::private::AssertTypeEq::<
8736                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8737                    >(_) => {}
8738                }
8739            }
8740            #[automatically_derived]
8741            #[doc(hidden)]
8742            impl ::core::convert::From<authRootReturn> for UnderlyingRustTuple<'_> {
8743                fn from(value: authRootReturn) -> Self {
8744                    (value._0,)
8745                }
8746            }
8747            #[automatically_derived]
8748            #[doc(hidden)]
8749            impl ::core::convert::From<UnderlyingRustTuple<'_>> for authRootReturn {
8750                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8751                    Self { _0: tuple.0 }
8752                }
8753            }
8754        }
8755        #[automatically_derived]
8756        impl alloy_sol_types::SolCall for authRootCall {
8757            type Parameters<'a> = ();
8758            type Token<'a> = <Self::Parameters<
8759                'a,
8760            > as alloy_sol_types::SolType>::Token<'a>;
8761            type Return = alloy::sol_types::private::primitives::aliases::U256;
8762            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8763            type ReturnToken<'a> = <Self::ReturnTuple<
8764                'a,
8765            > as alloy_sol_types::SolType>::Token<'a>;
8766            const SIGNATURE: &'static str = "authRoot()";
8767            const SELECTOR: [u8; 4] = [153u8, 131u8, 40u8, 232u8];
8768            #[inline]
8769            fn new<'a>(
8770                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8771            ) -> Self {
8772                tuple.into()
8773            }
8774            #[inline]
8775            fn tokenize(&self) -> Self::Token<'_> {
8776                ()
8777            }
8778            #[inline]
8779            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8780                (
8781                    <alloy::sol_types::sol_data::Uint<
8782                        256,
8783                    > as alloy_sol_types::SolType>::tokenize(ret),
8784                )
8785            }
8786            #[inline]
8787            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8788                <Self::ReturnTuple<
8789                    '_,
8790                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8791                    .map(|r| {
8792                        let r: authRootReturn = r.into();
8793                        r._0
8794                    })
8795            }
8796            #[inline]
8797            fn abi_decode_returns_validate(
8798                data: &[u8],
8799            ) -> alloy_sol_types::Result<Self::Return> {
8800                <Self::ReturnTuple<
8801                    '_,
8802                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8803                    .map(|r| {
8804                        let r: authRootReturn = r.into();
8805                        r._0
8806                    })
8807            }
8808        }
8809    };
8810    #[derive(serde::Serialize, serde::Deserialize)]
8811    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8812    /**Function with signature `blocksPerEpoch()` and selector `0xf0682054`.
8813```solidity
8814function blocksPerEpoch() external view returns (uint64);
8815```*/
8816    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8817    #[derive(Clone)]
8818    pub struct blocksPerEpochCall;
8819    #[derive(serde::Serialize, serde::Deserialize)]
8820    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8821    ///Container type for the return parameters of the [`blocksPerEpoch()`](blocksPerEpochCall) function.
8822    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8823    #[derive(Clone)]
8824    pub struct blocksPerEpochReturn {
8825        #[allow(missing_docs)]
8826        pub _0: u64,
8827    }
8828    #[allow(
8829        non_camel_case_types,
8830        non_snake_case,
8831        clippy::pub_underscore_fields,
8832        clippy::style
8833    )]
8834    const _: () = {
8835        use alloy::sol_types as alloy_sol_types;
8836        {
8837            #[doc(hidden)]
8838            #[allow(dead_code)]
8839            type UnderlyingSolTuple<'a> = ();
8840            #[doc(hidden)]
8841            type UnderlyingRustTuple<'a> = ();
8842            #[cfg(test)]
8843            #[allow(dead_code, unreachable_patterns)]
8844            fn _type_assertion(
8845                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8846            ) {
8847                match _t {
8848                    alloy_sol_types::private::AssertTypeEq::<
8849                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8850                    >(_) => {}
8851                }
8852            }
8853            #[automatically_derived]
8854            #[doc(hidden)]
8855            impl ::core::convert::From<blocksPerEpochCall> for UnderlyingRustTuple<'_> {
8856                fn from(value: blocksPerEpochCall) -> Self {
8857                    ()
8858                }
8859            }
8860            #[automatically_derived]
8861            #[doc(hidden)]
8862            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blocksPerEpochCall {
8863                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8864                    Self
8865                }
8866            }
8867        }
8868        {
8869            #[doc(hidden)]
8870            #[allow(dead_code)]
8871            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8872            #[doc(hidden)]
8873            type UnderlyingRustTuple<'a> = (u64,);
8874            #[cfg(test)]
8875            #[allow(dead_code, unreachable_patterns)]
8876            fn _type_assertion(
8877                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8878            ) {
8879                match _t {
8880                    alloy_sol_types::private::AssertTypeEq::<
8881                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8882                    >(_) => {}
8883                }
8884            }
8885            #[automatically_derived]
8886            #[doc(hidden)]
8887            impl ::core::convert::From<blocksPerEpochReturn>
8888            for UnderlyingRustTuple<'_> {
8889                fn from(value: blocksPerEpochReturn) -> Self {
8890                    (value._0,)
8891                }
8892            }
8893            #[automatically_derived]
8894            #[doc(hidden)]
8895            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8896            for blocksPerEpochReturn {
8897                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8898                    Self { _0: tuple.0 }
8899                }
8900            }
8901        }
8902        #[automatically_derived]
8903        impl alloy_sol_types::SolCall for blocksPerEpochCall {
8904            type Parameters<'a> = ();
8905            type Token<'a> = <Self::Parameters<
8906                'a,
8907            > as alloy_sol_types::SolType>::Token<'a>;
8908            type Return = u64;
8909            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8910            type ReturnToken<'a> = <Self::ReturnTuple<
8911                'a,
8912            > as alloy_sol_types::SolType>::Token<'a>;
8913            const SIGNATURE: &'static str = "blocksPerEpoch()";
8914            const SELECTOR: [u8; 4] = [240u8, 104u8, 32u8, 84u8];
8915            #[inline]
8916            fn new<'a>(
8917                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8918            ) -> Self {
8919                tuple.into()
8920            }
8921            #[inline]
8922            fn tokenize(&self) -> Self::Token<'_> {
8923                ()
8924            }
8925            #[inline]
8926            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8927                (
8928                    <alloy::sol_types::sol_data::Uint<
8929                        64,
8930                    > as alloy_sol_types::SolType>::tokenize(ret),
8931                )
8932            }
8933            #[inline]
8934            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8935                <Self::ReturnTuple<
8936                    '_,
8937                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8938                    .map(|r| {
8939                        let r: blocksPerEpochReturn = r.into();
8940                        r._0
8941                    })
8942            }
8943            #[inline]
8944            fn abi_decode_returns_validate(
8945                data: &[u8],
8946            ) -> alloy_sol_types::Result<Self::Return> {
8947                <Self::ReturnTuple<
8948                    '_,
8949                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8950                    .map(|r| {
8951                        let r: blocksPerEpochReturn = r.into();
8952                        r._0
8953                    })
8954            }
8955        }
8956    };
8957    #[derive(serde::Serialize, serde::Deserialize)]
8958    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8959    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
8960```solidity
8961function currentBlockNumber() external view returns (uint256);
8962```*/
8963    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8964    #[derive(Clone)]
8965    pub struct currentBlockNumberCall;
8966    #[derive(serde::Serialize, serde::Deserialize)]
8967    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8968    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
8969    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8970    #[derive(Clone)]
8971    pub struct currentBlockNumberReturn {
8972        #[allow(missing_docs)]
8973        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8974    }
8975    #[allow(
8976        non_camel_case_types,
8977        non_snake_case,
8978        clippy::pub_underscore_fields,
8979        clippy::style
8980    )]
8981    const _: () = {
8982        use alloy::sol_types as alloy_sol_types;
8983        {
8984            #[doc(hidden)]
8985            #[allow(dead_code)]
8986            type UnderlyingSolTuple<'a> = ();
8987            #[doc(hidden)]
8988            type UnderlyingRustTuple<'a> = ();
8989            #[cfg(test)]
8990            #[allow(dead_code, unreachable_patterns)]
8991            fn _type_assertion(
8992                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8993            ) {
8994                match _t {
8995                    alloy_sol_types::private::AssertTypeEq::<
8996                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8997                    >(_) => {}
8998                }
8999            }
9000            #[automatically_derived]
9001            #[doc(hidden)]
9002            impl ::core::convert::From<currentBlockNumberCall>
9003            for UnderlyingRustTuple<'_> {
9004                fn from(value: currentBlockNumberCall) -> Self {
9005                    ()
9006                }
9007            }
9008            #[automatically_derived]
9009            #[doc(hidden)]
9010            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9011            for currentBlockNumberCall {
9012                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9013                    Self
9014                }
9015            }
9016        }
9017        {
9018            #[doc(hidden)]
9019            #[allow(dead_code)]
9020            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9021            #[doc(hidden)]
9022            type UnderlyingRustTuple<'a> = (
9023                alloy::sol_types::private::primitives::aliases::U256,
9024            );
9025            #[cfg(test)]
9026            #[allow(dead_code, unreachable_patterns)]
9027            fn _type_assertion(
9028                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9029            ) {
9030                match _t {
9031                    alloy_sol_types::private::AssertTypeEq::<
9032                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9033                    >(_) => {}
9034                }
9035            }
9036            #[automatically_derived]
9037            #[doc(hidden)]
9038            impl ::core::convert::From<currentBlockNumberReturn>
9039            for UnderlyingRustTuple<'_> {
9040                fn from(value: currentBlockNumberReturn) -> Self {
9041                    (value._0,)
9042                }
9043            }
9044            #[automatically_derived]
9045            #[doc(hidden)]
9046            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9047            for currentBlockNumberReturn {
9048                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9049                    Self { _0: tuple.0 }
9050                }
9051            }
9052        }
9053        #[automatically_derived]
9054        impl alloy_sol_types::SolCall for currentBlockNumberCall {
9055            type Parameters<'a> = ();
9056            type Token<'a> = <Self::Parameters<
9057                'a,
9058            > as alloy_sol_types::SolType>::Token<'a>;
9059            type Return = alloy::sol_types::private::primitives::aliases::U256;
9060            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9061            type ReturnToken<'a> = <Self::ReturnTuple<
9062                'a,
9063            > as alloy_sol_types::SolType>::Token<'a>;
9064            const SIGNATURE: &'static str = "currentBlockNumber()";
9065            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
9066            #[inline]
9067            fn new<'a>(
9068                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9069            ) -> Self {
9070                tuple.into()
9071            }
9072            #[inline]
9073            fn tokenize(&self) -> Self::Token<'_> {
9074                ()
9075            }
9076            #[inline]
9077            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9078                (
9079                    <alloy::sol_types::sol_data::Uint<
9080                        256,
9081                    > as alloy_sol_types::SolType>::tokenize(ret),
9082                )
9083            }
9084            #[inline]
9085            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9086                <Self::ReturnTuple<
9087                    '_,
9088                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9089                    .map(|r| {
9090                        let r: currentBlockNumberReturn = r.into();
9091                        r._0
9092                    })
9093            }
9094            #[inline]
9095            fn abi_decode_returns_validate(
9096                data: &[u8],
9097            ) -> alloy_sol_types::Result<Self::Return> {
9098                <Self::ReturnTuple<
9099                    '_,
9100                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9101                    .map(|r| {
9102                        let r: currentBlockNumberReturn = r.into();
9103                        r._0
9104                    })
9105            }
9106        }
9107    };
9108    #[derive(serde::Serialize, serde::Deserialize)]
9109    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9110    /**Function with signature `currentEpoch()` and selector `0x76671808`.
9111```solidity
9112function currentEpoch() external view returns (uint64);
9113```*/
9114    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9115    #[derive(Clone)]
9116    pub struct currentEpochCall;
9117    #[derive(serde::Serialize, serde::Deserialize)]
9118    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9119    ///Container type for the return parameters of the [`currentEpoch()`](currentEpochCall) function.
9120    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9121    #[derive(Clone)]
9122    pub struct currentEpochReturn {
9123        #[allow(missing_docs)]
9124        pub _0: u64,
9125    }
9126    #[allow(
9127        non_camel_case_types,
9128        non_snake_case,
9129        clippy::pub_underscore_fields,
9130        clippy::style
9131    )]
9132    const _: () = {
9133        use alloy::sol_types as alloy_sol_types;
9134        {
9135            #[doc(hidden)]
9136            #[allow(dead_code)]
9137            type UnderlyingSolTuple<'a> = ();
9138            #[doc(hidden)]
9139            type UnderlyingRustTuple<'a> = ();
9140            #[cfg(test)]
9141            #[allow(dead_code, unreachable_patterns)]
9142            fn _type_assertion(
9143                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9144            ) {
9145                match _t {
9146                    alloy_sol_types::private::AssertTypeEq::<
9147                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9148                    >(_) => {}
9149                }
9150            }
9151            #[automatically_derived]
9152            #[doc(hidden)]
9153            impl ::core::convert::From<currentEpochCall> for UnderlyingRustTuple<'_> {
9154                fn from(value: currentEpochCall) -> Self {
9155                    ()
9156                }
9157            }
9158            #[automatically_derived]
9159            #[doc(hidden)]
9160            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochCall {
9161                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9162                    Self
9163                }
9164            }
9165        }
9166        {
9167            #[doc(hidden)]
9168            #[allow(dead_code)]
9169            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9170            #[doc(hidden)]
9171            type UnderlyingRustTuple<'a> = (u64,);
9172            #[cfg(test)]
9173            #[allow(dead_code, unreachable_patterns)]
9174            fn _type_assertion(
9175                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9176            ) {
9177                match _t {
9178                    alloy_sol_types::private::AssertTypeEq::<
9179                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9180                    >(_) => {}
9181                }
9182            }
9183            #[automatically_derived]
9184            #[doc(hidden)]
9185            impl ::core::convert::From<currentEpochReturn> for UnderlyingRustTuple<'_> {
9186                fn from(value: currentEpochReturn) -> Self {
9187                    (value._0,)
9188                }
9189            }
9190            #[automatically_derived]
9191            #[doc(hidden)]
9192            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochReturn {
9193                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9194                    Self { _0: tuple.0 }
9195                }
9196            }
9197        }
9198        #[automatically_derived]
9199        impl alloy_sol_types::SolCall for currentEpochCall {
9200            type Parameters<'a> = ();
9201            type Token<'a> = <Self::Parameters<
9202                'a,
9203            > as alloy_sol_types::SolType>::Token<'a>;
9204            type Return = u64;
9205            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9206            type ReturnToken<'a> = <Self::ReturnTuple<
9207                'a,
9208            > as alloy_sol_types::SolType>::Token<'a>;
9209            const SIGNATURE: &'static str = "currentEpoch()";
9210            const SELECTOR: [u8; 4] = [118u8, 103u8, 24u8, 8u8];
9211            #[inline]
9212            fn new<'a>(
9213                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9214            ) -> Self {
9215                tuple.into()
9216            }
9217            #[inline]
9218            fn tokenize(&self) -> Self::Token<'_> {
9219                ()
9220            }
9221            #[inline]
9222            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9223                (
9224                    <alloy::sol_types::sol_data::Uint<
9225                        64,
9226                    > as alloy_sol_types::SolType>::tokenize(ret),
9227                )
9228            }
9229            #[inline]
9230            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9231                <Self::ReturnTuple<
9232                    '_,
9233                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9234                    .map(|r| {
9235                        let r: currentEpochReturn = r.into();
9236                        r._0
9237                    })
9238            }
9239            #[inline]
9240            fn abi_decode_returns_validate(
9241                data: &[u8],
9242            ) -> alloy_sol_types::Result<Self::Return> {
9243                <Self::ReturnTuple<
9244                    '_,
9245                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9246                    .map(|r| {
9247                        let r: currentEpochReturn = r.into();
9248                        r._0
9249                    })
9250            }
9251        }
9252    };
9253    #[derive(serde::Serialize, serde::Deserialize)]
9254    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9255    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
9256```solidity
9257function disablePermissionedProverMode() external;
9258```*/
9259    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9260    #[derive(Clone)]
9261    pub struct disablePermissionedProverModeCall;
9262    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
9263    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9264    #[derive(Clone)]
9265    pub struct disablePermissionedProverModeReturn {}
9266    #[allow(
9267        non_camel_case_types,
9268        non_snake_case,
9269        clippy::pub_underscore_fields,
9270        clippy::style
9271    )]
9272    const _: () = {
9273        use alloy::sol_types as alloy_sol_types;
9274        {
9275            #[doc(hidden)]
9276            #[allow(dead_code)]
9277            type UnderlyingSolTuple<'a> = ();
9278            #[doc(hidden)]
9279            type UnderlyingRustTuple<'a> = ();
9280            #[cfg(test)]
9281            #[allow(dead_code, unreachable_patterns)]
9282            fn _type_assertion(
9283                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9284            ) {
9285                match _t {
9286                    alloy_sol_types::private::AssertTypeEq::<
9287                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9288                    >(_) => {}
9289                }
9290            }
9291            #[automatically_derived]
9292            #[doc(hidden)]
9293            impl ::core::convert::From<disablePermissionedProverModeCall>
9294            for UnderlyingRustTuple<'_> {
9295                fn from(value: disablePermissionedProverModeCall) -> Self {
9296                    ()
9297                }
9298            }
9299            #[automatically_derived]
9300            #[doc(hidden)]
9301            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9302            for disablePermissionedProverModeCall {
9303                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9304                    Self
9305                }
9306            }
9307        }
9308        {
9309            #[doc(hidden)]
9310            #[allow(dead_code)]
9311            type UnderlyingSolTuple<'a> = ();
9312            #[doc(hidden)]
9313            type UnderlyingRustTuple<'a> = ();
9314            #[cfg(test)]
9315            #[allow(dead_code, unreachable_patterns)]
9316            fn _type_assertion(
9317                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9318            ) {
9319                match _t {
9320                    alloy_sol_types::private::AssertTypeEq::<
9321                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9322                    >(_) => {}
9323                }
9324            }
9325            #[automatically_derived]
9326            #[doc(hidden)]
9327            impl ::core::convert::From<disablePermissionedProverModeReturn>
9328            for UnderlyingRustTuple<'_> {
9329                fn from(value: disablePermissionedProverModeReturn) -> Self {
9330                    ()
9331                }
9332            }
9333            #[automatically_derived]
9334            #[doc(hidden)]
9335            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9336            for disablePermissionedProverModeReturn {
9337                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9338                    Self {}
9339                }
9340            }
9341        }
9342        impl disablePermissionedProverModeReturn {
9343            fn _tokenize(
9344                &self,
9345            ) -> <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::ReturnToken<
9346                '_,
9347            > {
9348                ()
9349            }
9350        }
9351        #[automatically_derived]
9352        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
9353            type Parameters<'a> = ();
9354            type Token<'a> = <Self::Parameters<
9355                'a,
9356            > as alloy_sol_types::SolType>::Token<'a>;
9357            type Return = disablePermissionedProverModeReturn;
9358            type ReturnTuple<'a> = ();
9359            type ReturnToken<'a> = <Self::ReturnTuple<
9360                'a,
9361            > as alloy_sol_types::SolType>::Token<'a>;
9362            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
9363            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
9364            #[inline]
9365            fn new<'a>(
9366                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9367            ) -> Self {
9368                tuple.into()
9369            }
9370            #[inline]
9371            fn tokenize(&self) -> Self::Token<'_> {
9372                ()
9373            }
9374            #[inline]
9375            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9376                disablePermissionedProverModeReturn::_tokenize(ret)
9377            }
9378            #[inline]
9379            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9380                <Self::ReturnTuple<
9381                    '_,
9382                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9383                    .map(Into::into)
9384            }
9385            #[inline]
9386            fn abi_decode_returns_validate(
9387                data: &[u8],
9388            ) -> alloy_sol_types::Result<Self::Return> {
9389                <Self::ReturnTuple<
9390                    '_,
9391                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9392                    .map(Into::into)
9393            }
9394        }
9395    };
9396    #[derive(serde::Serialize, serde::Deserialize)]
9397    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9398    /**Function with signature `epochFromBlockNumber(uint64,uint64)` and selector `0x90c14390`.
9399```solidity
9400function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
9401```*/
9402    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9403    #[derive(Clone)]
9404    pub struct epochFromBlockNumberCall {
9405        #[allow(missing_docs)]
9406        pub _blockNum: u64,
9407        #[allow(missing_docs)]
9408        pub _blocksPerEpoch: u64,
9409    }
9410    #[derive(serde::Serialize, serde::Deserialize)]
9411    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9412    ///Container type for the return parameters of the [`epochFromBlockNumber(uint64,uint64)`](epochFromBlockNumberCall) function.
9413    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9414    #[derive(Clone)]
9415    pub struct epochFromBlockNumberReturn {
9416        #[allow(missing_docs)]
9417        pub _0: u64,
9418    }
9419    #[allow(
9420        non_camel_case_types,
9421        non_snake_case,
9422        clippy::pub_underscore_fields,
9423        clippy::style
9424    )]
9425    const _: () = {
9426        use alloy::sol_types as alloy_sol_types;
9427        {
9428            #[doc(hidden)]
9429            #[allow(dead_code)]
9430            type UnderlyingSolTuple<'a> = (
9431                alloy::sol_types::sol_data::Uint<64>,
9432                alloy::sol_types::sol_data::Uint<64>,
9433            );
9434            #[doc(hidden)]
9435            type UnderlyingRustTuple<'a> = (u64, u64);
9436            #[cfg(test)]
9437            #[allow(dead_code, unreachable_patterns)]
9438            fn _type_assertion(
9439                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9440            ) {
9441                match _t {
9442                    alloy_sol_types::private::AssertTypeEq::<
9443                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9444                    >(_) => {}
9445                }
9446            }
9447            #[automatically_derived]
9448            #[doc(hidden)]
9449            impl ::core::convert::From<epochFromBlockNumberCall>
9450            for UnderlyingRustTuple<'_> {
9451                fn from(value: epochFromBlockNumberCall) -> Self {
9452                    (value._blockNum, value._blocksPerEpoch)
9453                }
9454            }
9455            #[automatically_derived]
9456            #[doc(hidden)]
9457            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9458            for epochFromBlockNumberCall {
9459                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9460                    Self {
9461                        _blockNum: tuple.0,
9462                        _blocksPerEpoch: tuple.1,
9463                    }
9464                }
9465            }
9466        }
9467        {
9468            #[doc(hidden)]
9469            #[allow(dead_code)]
9470            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9471            #[doc(hidden)]
9472            type UnderlyingRustTuple<'a> = (u64,);
9473            #[cfg(test)]
9474            #[allow(dead_code, unreachable_patterns)]
9475            fn _type_assertion(
9476                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9477            ) {
9478                match _t {
9479                    alloy_sol_types::private::AssertTypeEq::<
9480                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9481                    >(_) => {}
9482                }
9483            }
9484            #[automatically_derived]
9485            #[doc(hidden)]
9486            impl ::core::convert::From<epochFromBlockNumberReturn>
9487            for UnderlyingRustTuple<'_> {
9488                fn from(value: epochFromBlockNumberReturn) -> Self {
9489                    (value._0,)
9490                }
9491            }
9492            #[automatically_derived]
9493            #[doc(hidden)]
9494            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9495            for epochFromBlockNumberReturn {
9496                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9497                    Self { _0: tuple.0 }
9498                }
9499            }
9500        }
9501        #[automatically_derived]
9502        impl alloy_sol_types::SolCall for epochFromBlockNumberCall {
9503            type Parameters<'a> = (
9504                alloy::sol_types::sol_data::Uint<64>,
9505                alloy::sol_types::sol_data::Uint<64>,
9506            );
9507            type Token<'a> = <Self::Parameters<
9508                'a,
9509            > as alloy_sol_types::SolType>::Token<'a>;
9510            type Return = u64;
9511            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9512            type ReturnToken<'a> = <Self::ReturnTuple<
9513                'a,
9514            > as alloy_sol_types::SolType>::Token<'a>;
9515            const SIGNATURE: &'static str = "epochFromBlockNumber(uint64,uint64)";
9516            const SELECTOR: [u8; 4] = [144u8, 193u8, 67u8, 144u8];
9517            #[inline]
9518            fn new<'a>(
9519                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9520            ) -> Self {
9521                tuple.into()
9522            }
9523            #[inline]
9524            fn tokenize(&self) -> Self::Token<'_> {
9525                (
9526                    <alloy::sol_types::sol_data::Uint<
9527                        64,
9528                    > as alloy_sol_types::SolType>::tokenize(&self._blockNum),
9529                    <alloy::sol_types::sol_data::Uint<
9530                        64,
9531                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
9532                )
9533            }
9534            #[inline]
9535            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9536                (
9537                    <alloy::sol_types::sol_data::Uint<
9538                        64,
9539                    > as alloy_sol_types::SolType>::tokenize(ret),
9540                )
9541            }
9542            #[inline]
9543            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9544                <Self::ReturnTuple<
9545                    '_,
9546                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9547                    .map(|r| {
9548                        let r: epochFromBlockNumberReturn = r.into();
9549                        r._0
9550                    })
9551            }
9552            #[inline]
9553            fn abi_decode_returns_validate(
9554                data: &[u8],
9555            ) -> alloy_sol_types::Result<Self::Return> {
9556                <Self::ReturnTuple<
9557                    '_,
9558                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9559                    .map(|r| {
9560                        let r: epochFromBlockNumberReturn = r.into();
9561                        r._0
9562                    })
9563            }
9564        }
9565    };
9566    #[derive(serde::Serialize, serde::Deserialize)]
9567    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9568    /**Function with signature `epochStartBlock()` and selector `0x3ed55b7b`.
9569```solidity
9570function epochStartBlock() external view returns (uint64);
9571```*/
9572    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9573    #[derive(Clone)]
9574    pub struct epochStartBlockCall;
9575    #[derive(serde::Serialize, serde::Deserialize)]
9576    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9577    ///Container type for the return parameters of the [`epochStartBlock()`](epochStartBlockCall) function.
9578    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9579    #[derive(Clone)]
9580    pub struct epochStartBlockReturn {
9581        #[allow(missing_docs)]
9582        pub _0: u64,
9583    }
9584    #[allow(
9585        non_camel_case_types,
9586        non_snake_case,
9587        clippy::pub_underscore_fields,
9588        clippy::style
9589    )]
9590    const _: () = {
9591        use alloy::sol_types as alloy_sol_types;
9592        {
9593            #[doc(hidden)]
9594            #[allow(dead_code)]
9595            type UnderlyingSolTuple<'a> = ();
9596            #[doc(hidden)]
9597            type UnderlyingRustTuple<'a> = ();
9598            #[cfg(test)]
9599            #[allow(dead_code, unreachable_patterns)]
9600            fn _type_assertion(
9601                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9602            ) {
9603                match _t {
9604                    alloy_sol_types::private::AssertTypeEq::<
9605                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9606                    >(_) => {}
9607                }
9608            }
9609            #[automatically_derived]
9610            #[doc(hidden)]
9611            impl ::core::convert::From<epochStartBlockCall> for UnderlyingRustTuple<'_> {
9612                fn from(value: epochStartBlockCall) -> Self {
9613                    ()
9614                }
9615            }
9616            #[automatically_derived]
9617            #[doc(hidden)]
9618            impl ::core::convert::From<UnderlyingRustTuple<'_>> for epochStartBlockCall {
9619                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9620                    Self
9621                }
9622            }
9623        }
9624        {
9625            #[doc(hidden)]
9626            #[allow(dead_code)]
9627            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9628            #[doc(hidden)]
9629            type UnderlyingRustTuple<'a> = (u64,);
9630            #[cfg(test)]
9631            #[allow(dead_code, unreachable_patterns)]
9632            fn _type_assertion(
9633                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9634            ) {
9635                match _t {
9636                    alloy_sol_types::private::AssertTypeEq::<
9637                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9638                    >(_) => {}
9639                }
9640            }
9641            #[automatically_derived]
9642            #[doc(hidden)]
9643            impl ::core::convert::From<epochStartBlockReturn>
9644            for UnderlyingRustTuple<'_> {
9645                fn from(value: epochStartBlockReturn) -> Self {
9646                    (value._0,)
9647                }
9648            }
9649            #[automatically_derived]
9650            #[doc(hidden)]
9651            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9652            for epochStartBlockReturn {
9653                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9654                    Self { _0: tuple.0 }
9655                }
9656            }
9657        }
9658        #[automatically_derived]
9659        impl alloy_sol_types::SolCall for epochStartBlockCall {
9660            type Parameters<'a> = ();
9661            type Token<'a> = <Self::Parameters<
9662                'a,
9663            > as alloy_sol_types::SolType>::Token<'a>;
9664            type Return = u64;
9665            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9666            type ReturnToken<'a> = <Self::ReturnTuple<
9667                'a,
9668            > as alloy_sol_types::SolType>::Token<'a>;
9669            const SIGNATURE: &'static str = "epochStartBlock()";
9670            const SELECTOR: [u8; 4] = [62u8, 213u8, 91u8, 123u8];
9671            #[inline]
9672            fn new<'a>(
9673                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9674            ) -> Self {
9675                tuple.into()
9676            }
9677            #[inline]
9678            fn tokenize(&self) -> Self::Token<'_> {
9679                ()
9680            }
9681            #[inline]
9682            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9683                (
9684                    <alloy::sol_types::sol_data::Uint<
9685                        64,
9686                    > as alloy_sol_types::SolType>::tokenize(ret),
9687                )
9688            }
9689            #[inline]
9690            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9691                <Self::ReturnTuple<
9692                    '_,
9693                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9694                    .map(|r| {
9695                        let r: epochStartBlockReturn = r.into();
9696                        r._0
9697                    })
9698            }
9699            #[inline]
9700            fn abi_decode_returns_validate(
9701                data: &[u8],
9702            ) -> alloy_sol_types::Result<Self::Return> {
9703                <Self::ReturnTuple<
9704                    '_,
9705                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9706                    .map(|r| {
9707                        let r: epochStartBlockReturn = r.into();
9708                        r._0
9709                    })
9710            }
9711        }
9712    };
9713    #[derive(serde::Serialize, serde::Deserialize)]
9714    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9715    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
9716```solidity
9717function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
9718```*/
9719    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9720    #[derive(Clone)]
9721    pub struct finalizedStateCall;
9722    #[derive(serde::Serialize, serde::Deserialize)]
9723    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9724    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
9725    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9726    #[derive(Clone)]
9727    pub struct finalizedStateReturn {
9728        #[allow(missing_docs)]
9729        pub viewNum: u64,
9730        #[allow(missing_docs)]
9731        pub blockHeight: u64,
9732        #[allow(missing_docs)]
9733        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9734    }
9735    #[allow(
9736        non_camel_case_types,
9737        non_snake_case,
9738        clippy::pub_underscore_fields,
9739        clippy::style
9740    )]
9741    const _: () = {
9742        use alloy::sol_types as alloy_sol_types;
9743        {
9744            #[doc(hidden)]
9745            #[allow(dead_code)]
9746            type UnderlyingSolTuple<'a> = ();
9747            #[doc(hidden)]
9748            type UnderlyingRustTuple<'a> = ();
9749            #[cfg(test)]
9750            #[allow(dead_code, unreachable_patterns)]
9751            fn _type_assertion(
9752                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9753            ) {
9754                match _t {
9755                    alloy_sol_types::private::AssertTypeEq::<
9756                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9757                    >(_) => {}
9758                }
9759            }
9760            #[automatically_derived]
9761            #[doc(hidden)]
9762            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
9763                fn from(value: finalizedStateCall) -> Self {
9764                    ()
9765                }
9766            }
9767            #[automatically_derived]
9768            #[doc(hidden)]
9769            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
9770                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9771                    Self
9772                }
9773            }
9774        }
9775        {
9776            #[doc(hidden)]
9777            #[allow(dead_code)]
9778            type UnderlyingSolTuple<'a> = (
9779                alloy::sol_types::sol_data::Uint<64>,
9780                alloy::sol_types::sol_data::Uint<64>,
9781                BN254::ScalarField,
9782            );
9783            #[doc(hidden)]
9784            type UnderlyingRustTuple<'a> = (
9785                u64,
9786                u64,
9787                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9788            );
9789            #[cfg(test)]
9790            #[allow(dead_code, unreachable_patterns)]
9791            fn _type_assertion(
9792                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9793            ) {
9794                match _t {
9795                    alloy_sol_types::private::AssertTypeEq::<
9796                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9797                    >(_) => {}
9798                }
9799            }
9800            #[automatically_derived]
9801            #[doc(hidden)]
9802            impl ::core::convert::From<finalizedStateReturn>
9803            for UnderlyingRustTuple<'_> {
9804                fn from(value: finalizedStateReturn) -> Self {
9805                    (value.viewNum, value.blockHeight, value.blockCommRoot)
9806                }
9807            }
9808            #[automatically_derived]
9809            #[doc(hidden)]
9810            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9811            for finalizedStateReturn {
9812                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9813                    Self {
9814                        viewNum: tuple.0,
9815                        blockHeight: tuple.1,
9816                        blockCommRoot: tuple.2,
9817                    }
9818                }
9819            }
9820        }
9821        impl finalizedStateReturn {
9822            fn _tokenize(
9823                &self,
9824            ) -> <finalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9825                (
9826                    <alloy::sol_types::sol_data::Uint<
9827                        64,
9828                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
9829                    <alloy::sol_types::sol_data::Uint<
9830                        64,
9831                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
9832                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9833                        &self.blockCommRoot,
9834                    ),
9835                )
9836            }
9837        }
9838        #[automatically_derived]
9839        impl alloy_sol_types::SolCall for finalizedStateCall {
9840            type Parameters<'a> = ();
9841            type Token<'a> = <Self::Parameters<
9842                'a,
9843            > as alloy_sol_types::SolType>::Token<'a>;
9844            type Return = finalizedStateReturn;
9845            type ReturnTuple<'a> = (
9846                alloy::sol_types::sol_data::Uint<64>,
9847                alloy::sol_types::sol_data::Uint<64>,
9848                BN254::ScalarField,
9849            );
9850            type ReturnToken<'a> = <Self::ReturnTuple<
9851                'a,
9852            > as alloy_sol_types::SolType>::Token<'a>;
9853            const SIGNATURE: &'static str = "finalizedState()";
9854            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
9855            #[inline]
9856            fn new<'a>(
9857                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9858            ) -> Self {
9859                tuple.into()
9860            }
9861            #[inline]
9862            fn tokenize(&self) -> Self::Token<'_> {
9863                ()
9864            }
9865            #[inline]
9866            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9867                finalizedStateReturn::_tokenize(ret)
9868            }
9869            #[inline]
9870            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9871                <Self::ReturnTuple<
9872                    '_,
9873                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9874                    .map(Into::into)
9875            }
9876            #[inline]
9877            fn abi_decode_returns_validate(
9878                data: &[u8],
9879            ) -> alloy_sol_types::Result<Self::Return> {
9880                <Self::ReturnTuple<
9881                    '_,
9882                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9883                    .map(Into::into)
9884            }
9885        }
9886    };
9887    #[derive(serde::Serialize, serde::Deserialize)]
9888    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9889    /**Function with signature `firstEpoch()` and selector `0x41682744`.
9890```solidity
9891function firstEpoch() external view returns (uint64);
9892```*/
9893    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9894    #[derive(Clone)]
9895    pub struct firstEpochCall;
9896    #[derive(serde::Serialize, serde::Deserialize)]
9897    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9898    ///Container type for the return parameters of the [`firstEpoch()`](firstEpochCall) function.
9899    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9900    #[derive(Clone)]
9901    pub struct firstEpochReturn {
9902        #[allow(missing_docs)]
9903        pub _0: u64,
9904    }
9905    #[allow(
9906        non_camel_case_types,
9907        non_snake_case,
9908        clippy::pub_underscore_fields,
9909        clippy::style
9910    )]
9911    const _: () = {
9912        use alloy::sol_types as alloy_sol_types;
9913        {
9914            #[doc(hidden)]
9915            #[allow(dead_code)]
9916            type UnderlyingSolTuple<'a> = ();
9917            #[doc(hidden)]
9918            type UnderlyingRustTuple<'a> = ();
9919            #[cfg(test)]
9920            #[allow(dead_code, unreachable_patterns)]
9921            fn _type_assertion(
9922                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9923            ) {
9924                match _t {
9925                    alloy_sol_types::private::AssertTypeEq::<
9926                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9927                    >(_) => {}
9928                }
9929            }
9930            #[automatically_derived]
9931            #[doc(hidden)]
9932            impl ::core::convert::From<firstEpochCall> for UnderlyingRustTuple<'_> {
9933                fn from(value: firstEpochCall) -> Self {
9934                    ()
9935                }
9936            }
9937            #[automatically_derived]
9938            #[doc(hidden)]
9939            impl ::core::convert::From<UnderlyingRustTuple<'_>> for firstEpochCall {
9940                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9941                    Self
9942                }
9943            }
9944        }
9945        {
9946            #[doc(hidden)]
9947            #[allow(dead_code)]
9948            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9949            #[doc(hidden)]
9950            type UnderlyingRustTuple<'a> = (u64,);
9951            #[cfg(test)]
9952            #[allow(dead_code, unreachable_patterns)]
9953            fn _type_assertion(
9954                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9955            ) {
9956                match _t {
9957                    alloy_sol_types::private::AssertTypeEq::<
9958                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9959                    >(_) => {}
9960                }
9961            }
9962            #[automatically_derived]
9963            #[doc(hidden)]
9964            impl ::core::convert::From<firstEpochReturn> for UnderlyingRustTuple<'_> {
9965                fn from(value: firstEpochReturn) -> Self {
9966                    (value._0,)
9967                }
9968            }
9969            #[automatically_derived]
9970            #[doc(hidden)]
9971            impl ::core::convert::From<UnderlyingRustTuple<'_>> for firstEpochReturn {
9972                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9973                    Self { _0: tuple.0 }
9974                }
9975            }
9976        }
9977        #[automatically_derived]
9978        impl alloy_sol_types::SolCall for firstEpochCall {
9979            type Parameters<'a> = ();
9980            type Token<'a> = <Self::Parameters<
9981                'a,
9982            > as alloy_sol_types::SolType>::Token<'a>;
9983            type Return = u64;
9984            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9985            type ReturnToken<'a> = <Self::ReturnTuple<
9986                'a,
9987            > as alloy_sol_types::SolType>::Token<'a>;
9988            const SIGNATURE: &'static str = "firstEpoch()";
9989            const SELECTOR: [u8; 4] = [65u8, 104u8, 39u8, 68u8];
9990            #[inline]
9991            fn new<'a>(
9992                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9993            ) -> Self {
9994                tuple.into()
9995            }
9996            #[inline]
9997            fn tokenize(&self) -> Self::Token<'_> {
9998                ()
9999            }
10000            #[inline]
10001            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10002                (
10003                    <alloy::sol_types::sol_data::Uint<
10004                        64,
10005                    > as alloy_sol_types::SolType>::tokenize(ret),
10006                )
10007            }
10008            #[inline]
10009            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10010                <Self::ReturnTuple<
10011                    '_,
10012                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10013                    .map(|r| {
10014                        let r: firstEpochReturn = r.into();
10015                        r._0
10016                    })
10017            }
10018            #[inline]
10019            fn abi_decode_returns_validate(
10020                data: &[u8],
10021            ) -> alloy_sol_types::Result<Self::Return> {
10022                <Self::ReturnTuple<
10023                    '_,
10024                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10025                    .map(|r| {
10026                        let r: firstEpochReturn = r.into();
10027                        r._0
10028                    })
10029            }
10030        }
10031    };
10032    #[derive(serde::Serialize, serde::Deserialize)]
10033    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10034    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
10035```solidity
10036function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
10037```*/
10038    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10039    #[derive(Clone)]
10040    pub struct genesisStakeTableStateCall;
10041    #[derive(serde::Serialize, serde::Deserialize)]
10042    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10043    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
10044    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10045    #[derive(Clone)]
10046    pub struct genesisStakeTableStateReturn {
10047        #[allow(missing_docs)]
10048        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
10049        #[allow(missing_docs)]
10050        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10051        #[allow(missing_docs)]
10052        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10053        #[allow(missing_docs)]
10054        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10055    }
10056    #[allow(
10057        non_camel_case_types,
10058        non_snake_case,
10059        clippy::pub_underscore_fields,
10060        clippy::style
10061    )]
10062    const _: () = {
10063        use alloy::sol_types as alloy_sol_types;
10064        {
10065            #[doc(hidden)]
10066            #[allow(dead_code)]
10067            type UnderlyingSolTuple<'a> = ();
10068            #[doc(hidden)]
10069            type UnderlyingRustTuple<'a> = ();
10070            #[cfg(test)]
10071            #[allow(dead_code, unreachable_patterns)]
10072            fn _type_assertion(
10073                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10074            ) {
10075                match _t {
10076                    alloy_sol_types::private::AssertTypeEq::<
10077                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10078                    >(_) => {}
10079                }
10080            }
10081            #[automatically_derived]
10082            #[doc(hidden)]
10083            impl ::core::convert::From<genesisStakeTableStateCall>
10084            for UnderlyingRustTuple<'_> {
10085                fn from(value: genesisStakeTableStateCall) -> Self {
10086                    ()
10087                }
10088            }
10089            #[automatically_derived]
10090            #[doc(hidden)]
10091            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10092            for genesisStakeTableStateCall {
10093                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10094                    Self
10095                }
10096            }
10097        }
10098        {
10099            #[doc(hidden)]
10100            #[allow(dead_code)]
10101            type UnderlyingSolTuple<'a> = (
10102                alloy::sol_types::sol_data::Uint<256>,
10103                BN254::ScalarField,
10104                BN254::ScalarField,
10105                BN254::ScalarField,
10106            );
10107            #[doc(hidden)]
10108            type UnderlyingRustTuple<'a> = (
10109                alloy::sol_types::private::primitives::aliases::U256,
10110                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10111                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10112                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10113            );
10114            #[cfg(test)]
10115            #[allow(dead_code, unreachable_patterns)]
10116            fn _type_assertion(
10117                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10118            ) {
10119                match _t {
10120                    alloy_sol_types::private::AssertTypeEq::<
10121                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10122                    >(_) => {}
10123                }
10124            }
10125            #[automatically_derived]
10126            #[doc(hidden)]
10127            impl ::core::convert::From<genesisStakeTableStateReturn>
10128            for UnderlyingRustTuple<'_> {
10129                fn from(value: genesisStakeTableStateReturn) -> Self {
10130                    (
10131                        value.threshold,
10132                        value.blsKeyComm,
10133                        value.schnorrKeyComm,
10134                        value.amountComm,
10135                    )
10136                }
10137            }
10138            #[automatically_derived]
10139            #[doc(hidden)]
10140            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10141            for genesisStakeTableStateReturn {
10142                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10143                    Self {
10144                        threshold: tuple.0,
10145                        blsKeyComm: tuple.1,
10146                        schnorrKeyComm: tuple.2,
10147                        amountComm: tuple.3,
10148                    }
10149                }
10150            }
10151        }
10152        impl genesisStakeTableStateReturn {
10153            fn _tokenize(
10154                &self,
10155            ) -> <genesisStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
10156                '_,
10157            > {
10158                (
10159                    <alloy::sol_types::sol_data::Uint<
10160                        256,
10161                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
10162                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
10163                        &self.blsKeyComm,
10164                    ),
10165                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
10166                        &self.schnorrKeyComm,
10167                    ),
10168                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
10169                        &self.amountComm,
10170                    ),
10171                )
10172            }
10173        }
10174        #[automatically_derived]
10175        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
10176            type Parameters<'a> = ();
10177            type Token<'a> = <Self::Parameters<
10178                'a,
10179            > as alloy_sol_types::SolType>::Token<'a>;
10180            type Return = genesisStakeTableStateReturn;
10181            type ReturnTuple<'a> = (
10182                alloy::sol_types::sol_data::Uint<256>,
10183                BN254::ScalarField,
10184                BN254::ScalarField,
10185                BN254::ScalarField,
10186            );
10187            type ReturnToken<'a> = <Self::ReturnTuple<
10188                'a,
10189            > as alloy_sol_types::SolType>::Token<'a>;
10190            const SIGNATURE: &'static str = "genesisStakeTableState()";
10191            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
10192            #[inline]
10193            fn new<'a>(
10194                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10195            ) -> Self {
10196                tuple.into()
10197            }
10198            #[inline]
10199            fn tokenize(&self) -> Self::Token<'_> {
10200                ()
10201            }
10202            #[inline]
10203            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10204                genesisStakeTableStateReturn::_tokenize(ret)
10205            }
10206            #[inline]
10207            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10208                <Self::ReturnTuple<
10209                    '_,
10210                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10211                    .map(Into::into)
10212            }
10213            #[inline]
10214            fn abi_decode_returns_validate(
10215                data: &[u8],
10216            ) -> alloy_sol_types::Result<Self::Return> {
10217                <Self::ReturnTuple<
10218                    '_,
10219                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10220                    .map(Into::into)
10221            }
10222        }
10223    };
10224    #[derive(serde::Serialize, serde::Deserialize)]
10225    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10226    /**Function with signature `genesisState()` and selector `0xd24d933d`.
10227```solidity
10228function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
10229```*/
10230    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10231    #[derive(Clone)]
10232    pub struct genesisStateCall;
10233    #[derive(serde::Serialize, serde::Deserialize)]
10234    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10235    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
10236    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10237    #[derive(Clone)]
10238    pub struct genesisStateReturn {
10239        #[allow(missing_docs)]
10240        pub viewNum: u64,
10241        #[allow(missing_docs)]
10242        pub blockHeight: u64,
10243        #[allow(missing_docs)]
10244        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10245    }
10246    #[allow(
10247        non_camel_case_types,
10248        non_snake_case,
10249        clippy::pub_underscore_fields,
10250        clippy::style
10251    )]
10252    const _: () = {
10253        use alloy::sol_types as alloy_sol_types;
10254        {
10255            #[doc(hidden)]
10256            #[allow(dead_code)]
10257            type UnderlyingSolTuple<'a> = ();
10258            #[doc(hidden)]
10259            type UnderlyingRustTuple<'a> = ();
10260            #[cfg(test)]
10261            #[allow(dead_code, unreachable_patterns)]
10262            fn _type_assertion(
10263                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10264            ) {
10265                match _t {
10266                    alloy_sol_types::private::AssertTypeEq::<
10267                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10268                    >(_) => {}
10269                }
10270            }
10271            #[automatically_derived]
10272            #[doc(hidden)]
10273            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
10274                fn from(value: genesisStateCall) -> Self {
10275                    ()
10276                }
10277            }
10278            #[automatically_derived]
10279            #[doc(hidden)]
10280            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
10281                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10282                    Self
10283                }
10284            }
10285        }
10286        {
10287            #[doc(hidden)]
10288            #[allow(dead_code)]
10289            type UnderlyingSolTuple<'a> = (
10290                alloy::sol_types::sol_data::Uint<64>,
10291                alloy::sol_types::sol_data::Uint<64>,
10292                BN254::ScalarField,
10293            );
10294            #[doc(hidden)]
10295            type UnderlyingRustTuple<'a> = (
10296                u64,
10297                u64,
10298                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10299            );
10300            #[cfg(test)]
10301            #[allow(dead_code, unreachable_patterns)]
10302            fn _type_assertion(
10303                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10304            ) {
10305                match _t {
10306                    alloy_sol_types::private::AssertTypeEq::<
10307                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10308                    >(_) => {}
10309                }
10310            }
10311            #[automatically_derived]
10312            #[doc(hidden)]
10313            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
10314                fn from(value: genesisStateReturn) -> Self {
10315                    (value.viewNum, value.blockHeight, value.blockCommRoot)
10316                }
10317            }
10318            #[automatically_derived]
10319            #[doc(hidden)]
10320            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
10321                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10322                    Self {
10323                        viewNum: tuple.0,
10324                        blockHeight: tuple.1,
10325                        blockCommRoot: tuple.2,
10326                    }
10327                }
10328            }
10329        }
10330        impl genesisStateReturn {
10331            fn _tokenize(
10332                &self,
10333            ) -> <genesisStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10334                (
10335                    <alloy::sol_types::sol_data::Uint<
10336                        64,
10337                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
10338                    <alloy::sol_types::sol_data::Uint<
10339                        64,
10340                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
10341                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
10342                        &self.blockCommRoot,
10343                    ),
10344                )
10345            }
10346        }
10347        #[automatically_derived]
10348        impl alloy_sol_types::SolCall for genesisStateCall {
10349            type Parameters<'a> = ();
10350            type Token<'a> = <Self::Parameters<
10351                'a,
10352            > as alloy_sol_types::SolType>::Token<'a>;
10353            type Return = genesisStateReturn;
10354            type ReturnTuple<'a> = (
10355                alloy::sol_types::sol_data::Uint<64>,
10356                alloy::sol_types::sol_data::Uint<64>,
10357                BN254::ScalarField,
10358            );
10359            type ReturnToken<'a> = <Self::ReturnTuple<
10360                'a,
10361            > as alloy_sol_types::SolType>::Token<'a>;
10362            const SIGNATURE: &'static str = "genesisState()";
10363            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
10364            #[inline]
10365            fn new<'a>(
10366                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10367            ) -> Self {
10368                tuple.into()
10369            }
10370            #[inline]
10371            fn tokenize(&self) -> Self::Token<'_> {
10372                ()
10373            }
10374            #[inline]
10375            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10376                genesisStateReturn::_tokenize(ret)
10377            }
10378            #[inline]
10379            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10380                <Self::ReturnTuple<
10381                    '_,
10382                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10383                    .map(Into::into)
10384            }
10385            #[inline]
10386            fn abi_decode_returns_validate(
10387                data: &[u8],
10388            ) -> alloy_sol_types::Result<Self::Return> {
10389                <Self::ReturnTuple<
10390                    '_,
10391                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10392                    .map(Into::into)
10393            }
10394        }
10395    };
10396    #[derive(serde::Serialize, serde::Deserialize)]
10397    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10398    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
10399```solidity
10400function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
10401```*/
10402    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10403    #[derive(Clone)]
10404    pub struct getHotShotCommitmentCall {
10405        #[allow(missing_docs)]
10406        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
10407    }
10408    #[derive(serde::Serialize, serde::Deserialize)]
10409    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10410    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
10411    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10412    #[derive(Clone)]
10413    pub struct getHotShotCommitmentReturn {
10414        #[allow(missing_docs)]
10415        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10416        #[allow(missing_docs)]
10417        pub hotshotBlockHeight: u64,
10418    }
10419    #[allow(
10420        non_camel_case_types,
10421        non_snake_case,
10422        clippy::pub_underscore_fields,
10423        clippy::style
10424    )]
10425    const _: () = {
10426        use alloy::sol_types as alloy_sol_types;
10427        {
10428            #[doc(hidden)]
10429            #[allow(dead_code)]
10430            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10431            #[doc(hidden)]
10432            type UnderlyingRustTuple<'a> = (
10433                alloy::sol_types::private::primitives::aliases::U256,
10434            );
10435            #[cfg(test)]
10436            #[allow(dead_code, unreachable_patterns)]
10437            fn _type_assertion(
10438                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10439            ) {
10440                match _t {
10441                    alloy_sol_types::private::AssertTypeEq::<
10442                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10443                    >(_) => {}
10444                }
10445            }
10446            #[automatically_derived]
10447            #[doc(hidden)]
10448            impl ::core::convert::From<getHotShotCommitmentCall>
10449            for UnderlyingRustTuple<'_> {
10450                fn from(value: getHotShotCommitmentCall) -> Self {
10451                    (value.hotShotBlockHeight,)
10452                }
10453            }
10454            #[automatically_derived]
10455            #[doc(hidden)]
10456            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10457            for getHotShotCommitmentCall {
10458                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10459                    Self {
10460                        hotShotBlockHeight: tuple.0,
10461                    }
10462                }
10463            }
10464        }
10465        {
10466            #[doc(hidden)]
10467            #[allow(dead_code)]
10468            type UnderlyingSolTuple<'a> = (
10469                BN254::ScalarField,
10470                alloy::sol_types::sol_data::Uint<64>,
10471            );
10472            #[doc(hidden)]
10473            type UnderlyingRustTuple<'a> = (
10474                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10475                u64,
10476            );
10477            #[cfg(test)]
10478            #[allow(dead_code, unreachable_patterns)]
10479            fn _type_assertion(
10480                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10481            ) {
10482                match _t {
10483                    alloy_sol_types::private::AssertTypeEq::<
10484                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10485                    >(_) => {}
10486                }
10487            }
10488            #[automatically_derived]
10489            #[doc(hidden)]
10490            impl ::core::convert::From<getHotShotCommitmentReturn>
10491            for UnderlyingRustTuple<'_> {
10492                fn from(value: getHotShotCommitmentReturn) -> Self {
10493                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
10494                }
10495            }
10496            #[automatically_derived]
10497            #[doc(hidden)]
10498            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10499            for getHotShotCommitmentReturn {
10500                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10501                    Self {
10502                        hotShotBlockCommRoot: tuple.0,
10503                        hotshotBlockHeight: tuple.1,
10504                    }
10505                }
10506            }
10507        }
10508        impl getHotShotCommitmentReturn {
10509            fn _tokenize(
10510                &self,
10511            ) -> <getHotShotCommitmentCall as alloy_sol_types::SolCall>::ReturnToken<
10512                '_,
10513            > {
10514                (
10515                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
10516                        &self.hotShotBlockCommRoot,
10517                    ),
10518                    <alloy::sol_types::sol_data::Uint<
10519                        64,
10520                    > as alloy_sol_types::SolType>::tokenize(&self.hotshotBlockHeight),
10521                )
10522            }
10523        }
10524        #[automatically_derived]
10525        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
10526            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10527            type Token<'a> = <Self::Parameters<
10528                'a,
10529            > as alloy_sol_types::SolType>::Token<'a>;
10530            type Return = getHotShotCommitmentReturn;
10531            type ReturnTuple<'a> = (
10532                BN254::ScalarField,
10533                alloy::sol_types::sol_data::Uint<64>,
10534            );
10535            type ReturnToken<'a> = <Self::ReturnTuple<
10536                'a,
10537            > as alloy_sol_types::SolType>::Token<'a>;
10538            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
10539            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
10540            #[inline]
10541            fn new<'a>(
10542                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10543            ) -> Self {
10544                tuple.into()
10545            }
10546            #[inline]
10547            fn tokenize(&self) -> Self::Token<'_> {
10548                (
10549                    <alloy::sol_types::sol_data::Uint<
10550                        256,
10551                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
10552                )
10553            }
10554            #[inline]
10555            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10556                getHotShotCommitmentReturn::_tokenize(ret)
10557            }
10558            #[inline]
10559            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10560                <Self::ReturnTuple<
10561                    '_,
10562                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10563                    .map(Into::into)
10564            }
10565            #[inline]
10566            fn abi_decode_returns_validate(
10567                data: &[u8],
10568            ) -> alloy_sol_types::Result<Self::Return> {
10569                <Self::ReturnTuple<
10570                    '_,
10571                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10572                    .map(Into::into)
10573            }
10574        }
10575    };
10576    #[derive(serde::Serialize, serde::Deserialize)]
10577    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10578    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
10579```solidity
10580function getStateHistoryCount() external view returns (uint256);
10581```*/
10582    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10583    #[derive(Clone)]
10584    pub struct getStateHistoryCountCall;
10585    #[derive(serde::Serialize, serde::Deserialize)]
10586    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10587    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
10588    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10589    #[derive(Clone)]
10590    pub struct getStateHistoryCountReturn {
10591        #[allow(missing_docs)]
10592        pub _0: alloy::sol_types::private::primitives::aliases::U256,
10593    }
10594    #[allow(
10595        non_camel_case_types,
10596        non_snake_case,
10597        clippy::pub_underscore_fields,
10598        clippy::style
10599    )]
10600    const _: () = {
10601        use alloy::sol_types as alloy_sol_types;
10602        {
10603            #[doc(hidden)]
10604            #[allow(dead_code)]
10605            type UnderlyingSolTuple<'a> = ();
10606            #[doc(hidden)]
10607            type UnderlyingRustTuple<'a> = ();
10608            #[cfg(test)]
10609            #[allow(dead_code, unreachable_patterns)]
10610            fn _type_assertion(
10611                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10612            ) {
10613                match _t {
10614                    alloy_sol_types::private::AssertTypeEq::<
10615                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10616                    >(_) => {}
10617                }
10618            }
10619            #[automatically_derived]
10620            #[doc(hidden)]
10621            impl ::core::convert::From<getStateHistoryCountCall>
10622            for UnderlyingRustTuple<'_> {
10623                fn from(value: getStateHistoryCountCall) -> Self {
10624                    ()
10625                }
10626            }
10627            #[automatically_derived]
10628            #[doc(hidden)]
10629            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10630            for getStateHistoryCountCall {
10631                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10632                    Self
10633                }
10634            }
10635        }
10636        {
10637            #[doc(hidden)]
10638            #[allow(dead_code)]
10639            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10640            #[doc(hidden)]
10641            type UnderlyingRustTuple<'a> = (
10642                alloy::sol_types::private::primitives::aliases::U256,
10643            );
10644            #[cfg(test)]
10645            #[allow(dead_code, unreachable_patterns)]
10646            fn _type_assertion(
10647                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10648            ) {
10649                match _t {
10650                    alloy_sol_types::private::AssertTypeEq::<
10651                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10652                    >(_) => {}
10653                }
10654            }
10655            #[automatically_derived]
10656            #[doc(hidden)]
10657            impl ::core::convert::From<getStateHistoryCountReturn>
10658            for UnderlyingRustTuple<'_> {
10659                fn from(value: getStateHistoryCountReturn) -> Self {
10660                    (value._0,)
10661                }
10662            }
10663            #[automatically_derived]
10664            #[doc(hidden)]
10665            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10666            for getStateHistoryCountReturn {
10667                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10668                    Self { _0: tuple.0 }
10669                }
10670            }
10671        }
10672        #[automatically_derived]
10673        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
10674            type Parameters<'a> = ();
10675            type Token<'a> = <Self::Parameters<
10676                'a,
10677            > as alloy_sol_types::SolType>::Token<'a>;
10678            type Return = alloy::sol_types::private::primitives::aliases::U256;
10679            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10680            type ReturnToken<'a> = <Self::ReturnTuple<
10681                'a,
10682            > as alloy_sol_types::SolType>::Token<'a>;
10683            const SIGNATURE: &'static str = "getStateHistoryCount()";
10684            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
10685            #[inline]
10686            fn new<'a>(
10687                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10688            ) -> Self {
10689                tuple.into()
10690            }
10691            #[inline]
10692            fn tokenize(&self) -> Self::Token<'_> {
10693                ()
10694            }
10695            #[inline]
10696            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10697                (
10698                    <alloy::sol_types::sol_data::Uint<
10699                        256,
10700                    > as alloy_sol_types::SolType>::tokenize(ret),
10701                )
10702            }
10703            #[inline]
10704            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10705                <Self::ReturnTuple<
10706                    '_,
10707                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10708                    .map(|r| {
10709                        let r: getStateHistoryCountReturn = r.into();
10710                        r._0
10711                    })
10712            }
10713            #[inline]
10714            fn abi_decode_returns_validate(
10715                data: &[u8],
10716            ) -> alloy_sol_types::Result<Self::Return> {
10717                <Self::ReturnTuple<
10718                    '_,
10719                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10720                    .map(|r| {
10721                        let r: getStateHistoryCountReturn = r.into();
10722                        r._0
10723                    })
10724            }
10725        }
10726    };
10727    #[derive(serde::Serialize, serde::Deserialize)]
10728    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10729    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
10730```solidity
10731function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
10732```*/
10733    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10734    #[derive(Clone)]
10735    pub struct getVersionCall;
10736    #[derive(serde::Serialize, serde::Deserialize)]
10737    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10738    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
10739    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10740    #[derive(Clone)]
10741    pub struct getVersionReturn {
10742        #[allow(missing_docs)]
10743        pub majorVersion: u8,
10744        #[allow(missing_docs)]
10745        pub minorVersion: u8,
10746        #[allow(missing_docs)]
10747        pub patchVersion: u8,
10748    }
10749    #[allow(
10750        non_camel_case_types,
10751        non_snake_case,
10752        clippy::pub_underscore_fields,
10753        clippy::style
10754    )]
10755    const _: () = {
10756        use alloy::sol_types as alloy_sol_types;
10757        {
10758            #[doc(hidden)]
10759            #[allow(dead_code)]
10760            type UnderlyingSolTuple<'a> = ();
10761            #[doc(hidden)]
10762            type UnderlyingRustTuple<'a> = ();
10763            #[cfg(test)]
10764            #[allow(dead_code, unreachable_patterns)]
10765            fn _type_assertion(
10766                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10767            ) {
10768                match _t {
10769                    alloy_sol_types::private::AssertTypeEq::<
10770                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10771                    >(_) => {}
10772                }
10773            }
10774            #[automatically_derived]
10775            #[doc(hidden)]
10776            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
10777                fn from(value: getVersionCall) -> Self {
10778                    ()
10779                }
10780            }
10781            #[automatically_derived]
10782            #[doc(hidden)]
10783            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
10784                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10785                    Self
10786                }
10787            }
10788        }
10789        {
10790            #[doc(hidden)]
10791            #[allow(dead_code)]
10792            type UnderlyingSolTuple<'a> = (
10793                alloy::sol_types::sol_data::Uint<8>,
10794                alloy::sol_types::sol_data::Uint<8>,
10795                alloy::sol_types::sol_data::Uint<8>,
10796            );
10797            #[doc(hidden)]
10798            type UnderlyingRustTuple<'a> = (u8, u8, u8);
10799            #[cfg(test)]
10800            #[allow(dead_code, unreachable_patterns)]
10801            fn _type_assertion(
10802                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10803            ) {
10804                match _t {
10805                    alloy_sol_types::private::AssertTypeEq::<
10806                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10807                    >(_) => {}
10808                }
10809            }
10810            #[automatically_derived]
10811            #[doc(hidden)]
10812            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
10813                fn from(value: getVersionReturn) -> Self {
10814                    (value.majorVersion, value.minorVersion, value.patchVersion)
10815                }
10816            }
10817            #[automatically_derived]
10818            #[doc(hidden)]
10819            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
10820                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10821                    Self {
10822                        majorVersion: tuple.0,
10823                        minorVersion: tuple.1,
10824                        patchVersion: tuple.2,
10825                    }
10826                }
10827            }
10828        }
10829        impl getVersionReturn {
10830            fn _tokenize(
10831                &self,
10832            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10833                (
10834                    <alloy::sol_types::sol_data::Uint<
10835                        8,
10836                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
10837                    <alloy::sol_types::sol_data::Uint<
10838                        8,
10839                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
10840                    <alloy::sol_types::sol_data::Uint<
10841                        8,
10842                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
10843                )
10844            }
10845        }
10846        #[automatically_derived]
10847        impl alloy_sol_types::SolCall for getVersionCall {
10848            type Parameters<'a> = ();
10849            type Token<'a> = <Self::Parameters<
10850                'a,
10851            > as alloy_sol_types::SolType>::Token<'a>;
10852            type Return = getVersionReturn;
10853            type ReturnTuple<'a> = (
10854                alloy::sol_types::sol_data::Uint<8>,
10855                alloy::sol_types::sol_data::Uint<8>,
10856                alloy::sol_types::sol_data::Uint<8>,
10857            );
10858            type ReturnToken<'a> = <Self::ReturnTuple<
10859                'a,
10860            > as alloy_sol_types::SolType>::Token<'a>;
10861            const SIGNATURE: &'static str = "getVersion()";
10862            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
10863            #[inline]
10864            fn new<'a>(
10865                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10866            ) -> Self {
10867                tuple.into()
10868            }
10869            #[inline]
10870            fn tokenize(&self) -> Self::Token<'_> {
10871                ()
10872            }
10873            #[inline]
10874            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10875                getVersionReturn::_tokenize(ret)
10876            }
10877            #[inline]
10878            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10879                <Self::ReturnTuple<
10880                    '_,
10881                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10882                    .map(Into::into)
10883            }
10884            #[inline]
10885            fn abi_decode_returns_validate(
10886                data: &[u8],
10887            ) -> alloy_sol_types::Result<Self::Return> {
10888                <Self::ReturnTuple<
10889                    '_,
10890                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10891                    .map(Into::into)
10892            }
10893        }
10894    };
10895    #[derive(serde::Serialize, serde::Deserialize)]
10896    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10897    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
10898```solidity
10899function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
10900```*/
10901    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10902    #[derive(Clone)]
10903    pub struct initializeCall {
10904        #[allow(missing_docs)]
10905        pub _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10906        #[allow(missing_docs)]
10907        pub _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10908        #[allow(missing_docs)]
10909        pub _stateHistoryRetentionPeriod: u32,
10910        #[allow(missing_docs)]
10911        pub owner: alloy::sol_types::private::Address,
10912    }
10913    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
10914    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10915    #[derive(Clone)]
10916    pub struct initializeReturn {}
10917    #[allow(
10918        non_camel_case_types,
10919        non_snake_case,
10920        clippy::pub_underscore_fields,
10921        clippy::style
10922    )]
10923    const _: () = {
10924        use alloy::sol_types as alloy_sol_types;
10925        {
10926            #[doc(hidden)]
10927            #[allow(dead_code)]
10928            type UnderlyingSolTuple<'a> = (
10929                LightClient::LightClientState,
10930                LightClient::StakeTableState,
10931                alloy::sol_types::sol_data::Uint<32>,
10932                alloy::sol_types::sol_data::Address,
10933            );
10934            #[doc(hidden)]
10935            type UnderlyingRustTuple<'a> = (
10936                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10937                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10938                u32,
10939                alloy::sol_types::private::Address,
10940            );
10941            #[cfg(test)]
10942            #[allow(dead_code, unreachable_patterns)]
10943            fn _type_assertion(
10944                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10945            ) {
10946                match _t {
10947                    alloy_sol_types::private::AssertTypeEq::<
10948                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10949                    >(_) => {}
10950                }
10951            }
10952            #[automatically_derived]
10953            #[doc(hidden)]
10954            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
10955                fn from(value: initializeCall) -> Self {
10956                    (
10957                        value._genesis,
10958                        value._genesisStakeTableState,
10959                        value._stateHistoryRetentionPeriod,
10960                        value.owner,
10961                    )
10962                }
10963            }
10964            #[automatically_derived]
10965            #[doc(hidden)]
10966            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
10967                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10968                    Self {
10969                        _genesis: tuple.0,
10970                        _genesisStakeTableState: tuple.1,
10971                        _stateHistoryRetentionPeriod: tuple.2,
10972                        owner: tuple.3,
10973                    }
10974                }
10975            }
10976        }
10977        {
10978            #[doc(hidden)]
10979            #[allow(dead_code)]
10980            type UnderlyingSolTuple<'a> = ();
10981            #[doc(hidden)]
10982            type UnderlyingRustTuple<'a> = ();
10983            #[cfg(test)]
10984            #[allow(dead_code, unreachable_patterns)]
10985            fn _type_assertion(
10986                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10987            ) {
10988                match _t {
10989                    alloy_sol_types::private::AssertTypeEq::<
10990                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10991                    >(_) => {}
10992                }
10993            }
10994            #[automatically_derived]
10995            #[doc(hidden)]
10996            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
10997                fn from(value: initializeReturn) -> Self {
10998                    ()
10999                }
11000            }
11001            #[automatically_derived]
11002            #[doc(hidden)]
11003            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
11004                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11005                    Self {}
11006                }
11007            }
11008        }
11009        impl initializeReturn {
11010            fn _tokenize(
11011                &self,
11012            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
11013                ()
11014            }
11015        }
11016        #[automatically_derived]
11017        impl alloy_sol_types::SolCall for initializeCall {
11018            type Parameters<'a> = (
11019                LightClient::LightClientState,
11020                LightClient::StakeTableState,
11021                alloy::sol_types::sol_data::Uint<32>,
11022                alloy::sol_types::sol_data::Address,
11023            );
11024            type Token<'a> = <Self::Parameters<
11025                'a,
11026            > as alloy_sol_types::SolType>::Token<'a>;
11027            type Return = initializeReturn;
11028            type ReturnTuple<'a> = ();
11029            type ReturnToken<'a> = <Self::ReturnTuple<
11030                'a,
11031            > as alloy_sol_types::SolType>::Token<'a>;
11032            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
11033            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
11034            #[inline]
11035            fn new<'a>(
11036                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11037            ) -> Self {
11038                tuple.into()
11039            }
11040            #[inline]
11041            fn tokenize(&self) -> Self::Token<'_> {
11042                (
11043                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
11044                        &self._genesis,
11045                    ),
11046                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
11047                        &self._genesisStakeTableState,
11048                    ),
11049                    <alloy::sol_types::sol_data::Uint<
11050                        32,
11051                    > as alloy_sol_types::SolType>::tokenize(
11052                        &self._stateHistoryRetentionPeriod,
11053                    ),
11054                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11055                        &self.owner,
11056                    ),
11057                )
11058            }
11059            #[inline]
11060            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11061                initializeReturn::_tokenize(ret)
11062            }
11063            #[inline]
11064            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11065                <Self::ReturnTuple<
11066                    '_,
11067                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11068                    .map(Into::into)
11069            }
11070            #[inline]
11071            fn abi_decode_returns_validate(
11072                data: &[u8],
11073            ) -> alloy_sol_types::Result<Self::Return> {
11074                <Self::ReturnTuple<
11075                    '_,
11076                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11077                    .map(Into::into)
11078            }
11079        }
11080    };
11081    #[derive(serde::Serialize, serde::Deserialize)]
11082    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11083    /**Function with signature `initializeV2(uint64,uint64)` and selector `0xb33bc491`.
11084```solidity
11085function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
11086```*/
11087    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11088    #[derive(Clone)]
11089    pub struct initializeV2Call {
11090        #[allow(missing_docs)]
11091        pub _blocksPerEpoch: u64,
11092        #[allow(missing_docs)]
11093        pub _epochStartBlock: u64,
11094    }
11095    ///Container type for the return parameters of the [`initializeV2(uint64,uint64)`](initializeV2Call) function.
11096    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11097    #[derive(Clone)]
11098    pub struct initializeV2Return {}
11099    #[allow(
11100        non_camel_case_types,
11101        non_snake_case,
11102        clippy::pub_underscore_fields,
11103        clippy::style
11104    )]
11105    const _: () = {
11106        use alloy::sol_types as alloy_sol_types;
11107        {
11108            #[doc(hidden)]
11109            #[allow(dead_code)]
11110            type UnderlyingSolTuple<'a> = (
11111                alloy::sol_types::sol_data::Uint<64>,
11112                alloy::sol_types::sol_data::Uint<64>,
11113            );
11114            #[doc(hidden)]
11115            type UnderlyingRustTuple<'a> = (u64, u64);
11116            #[cfg(test)]
11117            #[allow(dead_code, unreachable_patterns)]
11118            fn _type_assertion(
11119                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11120            ) {
11121                match _t {
11122                    alloy_sol_types::private::AssertTypeEq::<
11123                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11124                    >(_) => {}
11125                }
11126            }
11127            #[automatically_derived]
11128            #[doc(hidden)]
11129            impl ::core::convert::From<initializeV2Call> for UnderlyingRustTuple<'_> {
11130                fn from(value: initializeV2Call) -> Self {
11131                    (value._blocksPerEpoch, value._epochStartBlock)
11132                }
11133            }
11134            #[automatically_derived]
11135            #[doc(hidden)]
11136            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Call {
11137                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11138                    Self {
11139                        _blocksPerEpoch: tuple.0,
11140                        _epochStartBlock: tuple.1,
11141                    }
11142                }
11143            }
11144        }
11145        {
11146            #[doc(hidden)]
11147            #[allow(dead_code)]
11148            type UnderlyingSolTuple<'a> = ();
11149            #[doc(hidden)]
11150            type UnderlyingRustTuple<'a> = ();
11151            #[cfg(test)]
11152            #[allow(dead_code, unreachable_patterns)]
11153            fn _type_assertion(
11154                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11155            ) {
11156                match _t {
11157                    alloy_sol_types::private::AssertTypeEq::<
11158                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11159                    >(_) => {}
11160                }
11161            }
11162            #[automatically_derived]
11163            #[doc(hidden)]
11164            impl ::core::convert::From<initializeV2Return> for UnderlyingRustTuple<'_> {
11165                fn from(value: initializeV2Return) -> Self {
11166                    ()
11167                }
11168            }
11169            #[automatically_derived]
11170            #[doc(hidden)]
11171            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Return {
11172                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11173                    Self {}
11174                }
11175            }
11176        }
11177        impl initializeV2Return {
11178            fn _tokenize(
11179                &self,
11180            ) -> <initializeV2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
11181                ()
11182            }
11183        }
11184        #[automatically_derived]
11185        impl alloy_sol_types::SolCall for initializeV2Call {
11186            type Parameters<'a> = (
11187                alloy::sol_types::sol_data::Uint<64>,
11188                alloy::sol_types::sol_data::Uint<64>,
11189            );
11190            type Token<'a> = <Self::Parameters<
11191                'a,
11192            > as alloy_sol_types::SolType>::Token<'a>;
11193            type Return = initializeV2Return;
11194            type ReturnTuple<'a> = ();
11195            type ReturnToken<'a> = <Self::ReturnTuple<
11196                'a,
11197            > as alloy_sol_types::SolType>::Token<'a>;
11198            const SIGNATURE: &'static str = "initializeV2(uint64,uint64)";
11199            const SELECTOR: [u8; 4] = [179u8, 59u8, 196u8, 145u8];
11200            #[inline]
11201            fn new<'a>(
11202                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11203            ) -> Self {
11204                tuple.into()
11205            }
11206            #[inline]
11207            fn tokenize(&self) -> Self::Token<'_> {
11208                (
11209                    <alloy::sol_types::sol_data::Uint<
11210                        64,
11211                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
11212                    <alloy::sol_types::sol_data::Uint<
11213                        64,
11214                    > as alloy_sol_types::SolType>::tokenize(&self._epochStartBlock),
11215                )
11216            }
11217            #[inline]
11218            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11219                initializeV2Return::_tokenize(ret)
11220            }
11221            #[inline]
11222            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11223                <Self::ReturnTuple<
11224                    '_,
11225                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11226                    .map(Into::into)
11227            }
11228            #[inline]
11229            fn abi_decode_returns_validate(
11230                data: &[u8],
11231            ) -> alloy_sol_types::Result<Self::Return> {
11232                <Self::ReturnTuple<
11233                    '_,
11234                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11235                    .map(Into::into)
11236            }
11237        }
11238    };
11239    #[derive(serde::Serialize, serde::Deserialize)]
11240    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11241    /**Function with signature `initializeV3()` and selector `0x38e454b1`.
11242```solidity
11243function initializeV3() external;
11244```*/
11245    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11246    #[derive(Clone)]
11247    pub struct initializeV3Call;
11248    ///Container type for the return parameters of the [`initializeV3()`](initializeV3Call) function.
11249    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11250    #[derive(Clone)]
11251    pub struct initializeV3Return {}
11252    #[allow(
11253        non_camel_case_types,
11254        non_snake_case,
11255        clippy::pub_underscore_fields,
11256        clippy::style
11257    )]
11258    const _: () = {
11259        use alloy::sol_types as alloy_sol_types;
11260        {
11261            #[doc(hidden)]
11262            #[allow(dead_code)]
11263            type UnderlyingSolTuple<'a> = ();
11264            #[doc(hidden)]
11265            type UnderlyingRustTuple<'a> = ();
11266            #[cfg(test)]
11267            #[allow(dead_code, unreachable_patterns)]
11268            fn _type_assertion(
11269                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11270            ) {
11271                match _t {
11272                    alloy_sol_types::private::AssertTypeEq::<
11273                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11274                    >(_) => {}
11275                }
11276            }
11277            #[automatically_derived]
11278            #[doc(hidden)]
11279            impl ::core::convert::From<initializeV3Call> for UnderlyingRustTuple<'_> {
11280                fn from(value: initializeV3Call) -> Self {
11281                    ()
11282                }
11283            }
11284            #[automatically_derived]
11285            #[doc(hidden)]
11286            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV3Call {
11287                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11288                    Self
11289                }
11290            }
11291        }
11292        {
11293            #[doc(hidden)]
11294            #[allow(dead_code)]
11295            type UnderlyingSolTuple<'a> = ();
11296            #[doc(hidden)]
11297            type UnderlyingRustTuple<'a> = ();
11298            #[cfg(test)]
11299            #[allow(dead_code, unreachable_patterns)]
11300            fn _type_assertion(
11301                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11302            ) {
11303                match _t {
11304                    alloy_sol_types::private::AssertTypeEq::<
11305                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11306                    >(_) => {}
11307                }
11308            }
11309            #[automatically_derived]
11310            #[doc(hidden)]
11311            impl ::core::convert::From<initializeV3Return> for UnderlyingRustTuple<'_> {
11312                fn from(value: initializeV3Return) -> Self {
11313                    ()
11314                }
11315            }
11316            #[automatically_derived]
11317            #[doc(hidden)]
11318            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV3Return {
11319                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11320                    Self {}
11321                }
11322            }
11323        }
11324        impl initializeV3Return {
11325            fn _tokenize(
11326                &self,
11327            ) -> <initializeV3Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
11328                ()
11329            }
11330        }
11331        #[automatically_derived]
11332        impl alloy_sol_types::SolCall for initializeV3Call {
11333            type Parameters<'a> = ();
11334            type Token<'a> = <Self::Parameters<
11335                'a,
11336            > as alloy_sol_types::SolType>::Token<'a>;
11337            type Return = initializeV3Return;
11338            type ReturnTuple<'a> = ();
11339            type ReturnToken<'a> = <Self::ReturnTuple<
11340                'a,
11341            > as alloy_sol_types::SolType>::Token<'a>;
11342            const SIGNATURE: &'static str = "initializeV3()";
11343            const SELECTOR: [u8; 4] = [56u8, 228u8, 84u8, 177u8];
11344            #[inline]
11345            fn new<'a>(
11346                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11347            ) -> Self {
11348                tuple.into()
11349            }
11350            #[inline]
11351            fn tokenize(&self) -> Self::Token<'_> {
11352                ()
11353            }
11354            #[inline]
11355            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11356                initializeV3Return::_tokenize(ret)
11357            }
11358            #[inline]
11359            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11360                <Self::ReturnTuple<
11361                    '_,
11362                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11363                    .map(Into::into)
11364            }
11365            #[inline]
11366            fn abi_decode_returns_validate(
11367                data: &[u8],
11368            ) -> alloy_sol_types::Result<Self::Return> {
11369                <Self::ReturnTuple<
11370                    '_,
11371                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11372                    .map(Into::into)
11373            }
11374        }
11375    };
11376    #[derive(serde::Serialize, serde::Deserialize)]
11377    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11378    /**Function with signature `isEpochRoot(uint64)` and selector `0x25297427`.
11379```solidity
11380function isEpochRoot(uint64 blockHeight) external view returns (bool);
11381```*/
11382    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11383    #[derive(Clone)]
11384    pub struct isEpochRootCall {
11385        #[allow(missing_docs)]
11386        pub blockHeight: u64,
11387    }
11388    #[derive(serde::Serialize, serde::Deserialize)]
11389    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11390    ///Container type for the return parameters of the [`isEpochRoot(uint64)`](isEpochRootCall) function.
11391    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11392    #[derive(Clone)]
11393    pub struct isEpochRootReturn {
11394        #[allow(missing_docs)]
11395        pub _0: bool,
11396    }
11397    #[allow(
11398        non_camel_case_types,
11399        non_snake_case,
11400        clippy::pub_underscore_fields,
11401        clippy::style
11402    )]
11403    const _: () = {
11404        use alloy::sol_types as alloy_sol_types;
11405        {
11406            #[doc(hidden)]
11407            #[allow(dead_code)]
11408            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11409            #[doc(hidden)]
11410            type UnderlyingRustTuple<'a> = (u64,);
11411            #[cfg(test)]
11412            #[allow(dead_code, unreachable_patterns)]
11413            fn _type_assertion(
11414                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11415            ) {
11416                match _t {
11417                    alloy_sol_types::private::AssertTypeEq::<
11418                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11419                    >(_) => {}
11420                }
11421            }
11422            #[automatically_derived]
11423            #[doc(hidden)]
11424            impl ::core::convert::From<isEpochRootCall> for UnderlyingRustTuple<'_> {
11425                fn from(value: isEpochRootCall) -> Self {
11426                    (value.blockHeight,)
11427                }
11428            }
11429            #[automatically_derived]
11430            #[doc(hidden)]
11431            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootCall {
11432                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11433                    Self { blockHeight: tuple.0 }
11434                }
11435            }
11436        }
11437        {
11438            #[doc(hidden)]
11439            #[allow(dead_code)]
11440            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11441            #[doc(hidden)]
11442            type UnderlyingRustTuple<'a> = (bool,);
11443            #[cfg(test)]
11444            #[allow(dead_code, unreachable_patterns)]
11445            fn _type_assertion(
11446                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11447            ) {
11448                match _t {
11449                    alloy_sol_types::private::AssertTypeEq::<
11450                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11451                    >(_) => {}
11452                }
11453            }
11454            #[automatically_derived]
11455            #[doc(hidden)]
11456            impl ::core::convert::From<isEpochRootReturn> for UnderlyingRustTuple<'_> {
11457                fn from(value: isEpochRootReturn) -> Self {
11458                    (value._0,)
11459                }
11460            }
11461            #[automatically_derived]
11462            #[doc(hidden)]
11463            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootReturn {
11464                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11465                    Self { _0: tuple.0 }
11466                }
11467            }
11468        }
11469        #[automatically_derived]
11470        impl alloy_sol_types::SolCall for isEpochRootCall {
11471            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11472            type Token<'a> = <Self::Parameters<
11473                'a,
11474            > as alloy_sol_types::SolType>::Token<'a>;
11475            type Return = bool;
11476            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11477            type ReturnToken<'a> = <Self::ReturnTuple<
11478                'a,
11479            > as alloy_sol_types::SolType>::Token<'a>;
11480            const SIGNATURE: &'static str = "isEpochRoot(uint64)";
11481            const SELECTOR: [u8; 4] = [37u8, 41u8, 116u8, 39u8];
11482            #[inline]
11483            fn new<'a>(
11484                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11485            ) -> Self {
11486                tuple.into()
11487            }
11488            #[inline]
11489            fn tokenize(&self) -> Self::Token<'_> {
11490                (
11491                    <alloy::sol_types::sol_data::Uint<
11492                        64,
11493                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
11494                )
11495            }
11496            #[inline]
11497            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11498                (
11499                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11500                        ret,
11501                    ),
11502                )
11503            }
11504            #[inline]
11505            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11506                <Self::ReturnTuple<
11507                    '_,
11508                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11509                    .map(|r| {
11510                        let r: isEpochRootReturn = r.into();
11511                        r._0
11512                    })
11513            }
11514            #[inline]
11515            fn abi_decode_returns_validate(
11516                data: &[u8],
11517            ) -> alloy_sol_types::Result<Self::Return> {
11518                <Self::ReturnTuple<
11519                    '_,
11520                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11521                    .map(|r| {
11522                        let r: isEpochRootReturn = r.into();
11523                        r._0
11524                    })
11525            }
11526        }
11527    };
11528    #[derive(serde::Serialize, serde::Deserialize)]
11529    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11530    /**Function with signature `isGtEpochRoot(uint64)` and selector `0x300c89dd`.
11531```solidity
11532function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
11533```*/
11534    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11535    #[derive(Clone)]
11536    pub struct isGtEpochRootCall {
11537        #[allow(missing_docs)]
11538        pub blockHeight: u64,
11539    }
11540    #[derive(serde::Serialize, serde::Deserialize)]
11541    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11542    ///Container type for the return parameters of the [`isGtEpochRoot(uint64)`](isGtEpochRootCall) function.
11543    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11544    #[derive(Clone)]
11545    pub struct isGtEpochRootReturn {
11546        #[allow(missing_docs)]
11547        pub _0: bool,
11548    }
11549    #[allow(
11550        non_camel_case_types,
11551        non_snake_case,
11552        clippy::pub_underscore_fields,
11553        clippy::style
11554    )]
11555    const _: () = {
11556        use alloy::sol_types as alloy_sol_types;
11557        {
11558            #[doc(hidden)]
11559            #[allow(dead_code)]
11560            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11561            #[doc(hidden)]
11562            type UnderlyingRustTuple<'a> = (u64,);
11563            #[cfg(test)]
11564            #[allow(dead_code, unreachable_patterns)]
11565            fn _type_assertion(
11566                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11567            ) {
11568                match _t {
11569                    alloy_sol_types::private::AssertTypeEq::<
11570                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11571                    >(_) => {}
11572                }
11573            }
11574            #[automatically_derived]
11575            #[doc(hidden)]
11576            impl ::core::convert::From<isGtEpochRootCall> for UnderlyingRustTuple<'_> {
11577                fn from(value: isGtEpochRootCall) -> Self {
11578                    (value.blockHeight,)
11579                }
11580            }
11581            #[automatically_derived]
11582            #[doc(hidden)]
11583            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootCall {
11584                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11585                    Self { blockHeight: tuple.0 }
11586                }
11587            }
11588        }
11589        {
11590            #[doc(hidden)]
11591            #[allow(dead_code)]
11592            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11593            #[doc(hidden)]
11594            type UnderlyingRustTuple<'a> = (bool,);
11595            #[cfg(test)]
11596            #[allow(dead_code, unreachable_patterns)]
11597            fn _type_assertion(
11598                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11599            ) {
11600                match _t {
11601                    alloy_sol_types::private::AssertTypeEq::<
11602                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11603                    >(_) => {}
11604                }
11605            }
11606            #[automatically_derived]
11607            #[doc(hidden)]
11608            impl ::core::convert::From<isGtEpochRootReturn> for UnderlyingRustTuple<'_> {
11609                fn from(value: isGtEpochRootReturn) -> Self {
11610                    (value._0,)
11611                }
11612            }
11613            #[automatically_derived]
11614            #[doc(hidden)]
11615            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootReturn {
11616                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11617                    Self { _0: tuple.0 }
11618                }
11619            }
11620        }
11621        #[automatically_derived]
11622        impl alloy_sol_types::SolCall for isGtEpochRootCall {
11623            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11624            type Token<'a> = <Self::Parameters<
11625                'a,
11626            > as alloy_sol_types::SolType>::Token<'a>;
11627            type Return = bool;
11628            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11629            type ReturnToken<'a> = <Self::ReturnTuple<
11630                'a,
11631            > as alloy_sol_types::SolType>::Token<'a>;
11632            const SIGNATURE: &'static str = "isGtEpochRoot(uint64)";
11633            const SELECTOR: [u8; 4] = [48u8, 12u8, 137u8, 221u8];
11634            #[inline]
11635            fn new<'a>(
11636                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11637            ) -> Self {
11638                tuple.into()
11639            }
11640            #[inline]
11641            fn tokenize(&self) -> Self::Token<'_> {
11642                (
11643                    <alloy::sol_types::sol_data::Uint<
11644                        64,
11645                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
11646                )
11647            }
11648            #[inline]
11649            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11650                (
11651                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11652                        ret,
11653                    ),
11654                )
11655            }
11656            #[inline]
11657            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11658                <Self::ReturnTuple<
11659                    '_,
11660                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11661                    .map(|r| {
11662                        let r: isGtEpochRootReturn = r.into();
11663                        r._0
11664                    })
11665            }
11666            #[inline]
11667            fn abi_decode_returns_validate(
11668                data: &[u8],
11669            ) -> alloy_sol_types::Result<Self::Return> {
11670                <Self::ReturnTuple<
11671                    '_,
11672                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11673                    .map(|r| {
11674                        let r: isGtEpochRootReturn = r.into();
11675                        r._0
11676                    })
11677            }
11678        }
11679    };
11680    #[derive(serde::Serialize, serde::Deserialize)]
11681    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11682    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
11683```solidity
11684function isPermissionedProverEnabled() external view returns (bool);
11685```*/
11686    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11687    #[derive(Clone)]
11688    pub struct isPermissionedProverEnabledCall;
11689    #[derive(serde::Serialize, serde::Deserialize)]
11690    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11691    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
11692    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11693    #[derive(Clone)]
11694    pub struct isPermissionedProverEnabledReturn {
11695        #[allow(missing_docs)]
11696        pub _0: bool,
11697    }
11698    #[allow(
11699        non_camel_case_types,
11700        non_snake_case,
11701        clippy::pub_underscore_fields,
11702        clippy::style
11703    )]
11704    const _: () = {
11705        use alloy::sol_types as alloy_sol_types;
11706        {
11707            #[doc(hidden)]
11708            #[allow(dead_code)]
11709            type UnderlyingSolTuple<'a> = ();
11710            #[doc(hidden)]
11711            type UnderlyingRustTuple<'a> = ();
11712            #[cfg(test)]
11713            #[allow(dead_code, unreachable_patterns)]
11714            fn _type_assertion(
11715                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11716            ) {
11717                match _t {
11718                    alloy_sol_types::private::AssertTypeEq::<
11719                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11720                    >(_) => {}
11721                }
11722            }
11723            #[automatically_derived]
11724            #[doc(hidden)]
11725            impl ::core::convert::From<isPermissionedProverEnabledCall>
11726            for UnderlyingRustTuple<'_> {
11727                fn from(value: isPermissionedProverEnabledCall) -> Self {
11728                    ()
11729                }
11730            }
11731            #[automatically_derived]
11732            #[doc(hidden)]
11733            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11734            for isPermissionedProverEnabledCall {
11735                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11736                    Self
11737                }
11738            }
11739        }
11740        {
11741            #[doc(hidden)]
11742            #[allow(dead_code)]
11743            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11744            #[doc(hidden)]
11745            type UnderlyingRustTuple<'a> = (bool,);
11746            #[cfg(test)]
11747            #[allow(dead_code, unreachable_patterns)]
11748            fn _type_assertion(
11749                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11750            ) {
11751                match _t {
11752                    alloy_sol_types::private::AssertTypeEq::<
11753                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11754                    >(_) => {}
11755                }
11756            }
11757            #[automatically_derived]
11758            #[doc(hidden)]
11759            impl ::core::convert::From<isPermissionedProverEnabledReturn>
11760            for UnderlyingRustTuple<'_> {
11761                fn from(value: isPermissionedProverEnabledReturn) -> Self {
11762                    (value._0,)
11763                }
11764            }
11765            #[automatically_derived]
11766            #[doc(hidden)]
11767            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11768            for isPermissionedProverEnabledReturn {
11769                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11770                    Self { _0: tuple.0 }
11771                }
11772            }
11773        }
11774        #[automatically_derived]
11775        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
11776            type Parameters<'a> = ();
11777            type Token<'a> = <Self::Parameters<
11778                'a,
11779            > as alloy_sol_types::SolType>::Token<'a>;
11780            type Return = bool;
11781            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11782            type ReturnToken<'a> = <Self::ReturnTuple<
11783                'a,
11784            > as alloy_sol_types::SolType>::Token<'a>;
11785            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
11786            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
11787            #[inline]
11788            fn new<'a>(
11789                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11790            ) -> Self {
11791                tuple.into()
11792            }
11793            #[inline]
11794            fn tokenize(&self) -> Self::Token<'_> {
11795                ()
11796            }
11797            #[inline]
11798            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11799                (
11800                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11801                        ret,
11802                    ),
11803                )
11804            }
11805            #[inline]
11806            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11807                <Self::ReturnTuple<
11808                    '_,
11809                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11810                    .map(|r| {
11811                        let r: isPermissionedProverEnabledReturn = r.into();
11812                        r._0
11813                    })
11814            }
11815            #[inline]
11816            fn abi_decode_returns_validate(
11817                data: &[u8],
11818            ) -> alloy_sol_types::Result<Self::Return> {
11819                <Self::ReturnTuple<
11820                    '_,
11821                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11822                    .map(|r| {
11823                        let r: isPermissionedProverEnabledReturn = r.into();
11824                        r._0
11825                    })
11826            }
11827        }
11828    };
11829    #[derive(serde::Serialize, serde::Deserialize)]
11830    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11831    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
11832```solidity
11833function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 threshold) external view returns (bool);
11834```*/
11835    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11836    #[derive(Clone)]
11837    pub struct lagOverEscapeHatchThresholdCall {
11838        #[allow(missing_docs)]
11839        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
11840        #[allow(missing_docs)]
11841        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
11842    }
11843    #[derive(serde::Serialize, serde::Deserialize)]
11844    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11845    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
11846    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11847    #[derive(Clone)]
11848    pub struct lagOverEscapeHatchThresholdReturn {
11849        #[allow(missing_docs)]
11850        pub _0: bool,
11851    }
11852    #[allow(
11853        non_camel_case_types,
11854        non_snake_case,
11855        clippy::pub_underscore_fields,
11856        clippy::style
11857    )]
11858    const _: () = {
11859        use alloy::sol_types as alloy_sol_types;
11860        {
11861            #[doc(hidden)]
11862            #[allow(dead_code)]
11863            type UnderlyingSolTuple<'a> = (
11864                alloy::sol_types::sol_data::Uint<256>,
11865                alloy::sol_types::sol_data::Uint<256>,
11866            );
11867            #[doc(hidden)]
11868            type UnderlyingRustTuple<'a> = (
11869                alloy::sol_types::private::primitives::aliases::U256,
11870                alloy::sol_types::private::primitives::aliases::U256,
11871            );
11872            #[cfg(test)]
11873            #[allow(dead_code, unreachable_patterns)]
11874            fn _type_assertion(
11875                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11876            ) {
11877                match _t {
11878                    alloy_sol_types::private::AssertTypeEq::<
11879                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11880                    >(_) => {}
11881                }
11882            }
11883            #[automatically_derived]
11884            #[doc(hidden)]
11885            impl ::core::convert::From<lagOverEscapeHatchThresholdCall>
11886            for UnderlyingRustTuple<'_> {
11887                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
11888                    (value.blockNumber, value.threshold)
11889                }
11890            }
11891            #[automatically_derived]
11892            #[doc(hidden)]
11893            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11894            for lagOverEscapeHatchThresholdCall {
11895                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11896                    Self {
11897                        blockNumber: tuple.0,
11898                        threshold: tuple.1,
11899                    }
11900                }
11901            }
11902        }
11903        {
11904            #[doc(hidden)]
11905            #[allow(dead_code)]
11906            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11907            #[doc(hidden)]
11908            type UnderlyingRustTuple<'a> = (bool,);
11909            #[cfg(test)]
11910            #[allow(dead_code, unreachable_patterns)]
11911            fn _type_assertion(
11912                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11913            ) {
11914                match _t {
11915                    alloy_sol_types::private::AssertTypeEq::<
11916                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11917                    >(_) => {}
11918                }
11919            }
11920            #[automatically_derived]
11921            #[doc(hidden)]
11922            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn>
11923            for UnderlyingRustTuple<'_> {
11924                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
11925                    (value._0,)
11926                }
11927            }
11928            #[automatically_derived]
11929            #[doc(hidden)]
11930            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11931            for lagOverEscapeHatchThresholdReturn {
11932                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11933                    Self { _0: tuple.0 }
11934                }
11935            }
11936        }
11937        #[automatically_derived]
11938        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
11939            type Parameters<'a> = (
11940                alloy::sol_types::sol_data::Uint<256>,
11941                alloy::sol_types::sol_data::Uint<256>,
11942            );
11943            type Token<'a> = <Self::Parameters<
11944                'a,
11945            > as alloy_sol_types::SolType>::Token<'a>;
11946            type Return = bool;
11947            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11948            type ReturnToken<'a> = <Self::ReturnTuple<
11949                'a,
11950            > as alloy_sol_types::SolType>::Token<'a>;
11951            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
11952            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
11953            #[inline]
11954            fn new<'a>(
11955                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11956            ) -> Self {
11957                tuple.into()
11958            }
11959            #[inline]
11960            fn tokenize(&self) -> Self::Token<'_> {
11961                (
11962                    <alloy::sol_types::sol_data::Uint<
11963                        256,
11964                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
11965                    <alloy::sol_types::sol_data::Uint<
11966                        256,
11967                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
11968                )
11969            }
11970            #[inline]
11971            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11972                (
11973                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11974                        ret,
11975                    ),
11976                )
11977            }
11978            #[inline]
11979            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11980                <Self::ReturnTuple<
11981                    '_,
11982                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11983                    .map(|r| {
11984                        let r: lagOverEscapeHatchThresholdReturn = r.into();
11985                        r._0
11986                    })
11987            }
11988            #[inline]
11989            fn abi_decode_returns_validate(
11990                data: &[u8],
11991            ) -> alloy_sol_types::Result<Self::Return> {
11992                <Self::ReturnTuple<
11993                    '_,
11994                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11995                    .map(|r| {
11996                        let r: lagOverEscapeHatchThresholdReturn = r.into();
11997                        r._0
11998                    })
11999            }
12000        }
12001    };
12002    #[derive(serde::Serialize, serde::Deserialize)]
12003    #[derive()]
12004    /**Function with signature `newFinalizedState((uint64,uint64,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))` and selector `0x2063d4f7`.
12005```solidity
12006function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
12007```*/
12008    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12009    #[derive(Clone)]
12010    pub struct newFinalizedState_0Call {
12011        #[allow(missing_docs)]
12012        pub _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12013        #[allow(missing_docs)]
12014        pub _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
12015    }
12016    ///Container type for the return parameters of the [`newFinalizedState((uint64,uint64,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))`](newFinalizedState_0Call) function.
12017    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12018    #[derive(Clone)]
12019    pub struct newFinalizedState_0Return {}
12020    #[allow(
12021        non_camel_case_types,
12022        non_snake_case,
12023        clippy::pub_underscore_fields,
12024        clippy::style
12025    )]
12026    const _: () = {
12027        use alloy::sol_types as alloy_sol_types;
12028        {
12029            #[doc(hidden)]
12030            #[allow(dead_code)]
12031            type UnderlyingSolTuple<'a> = (
12032                LightClient::LightClientState,
12033                IPlonkVerifier::PlonkProof,
12034            );
12035            #[doc(hidden)]
12036            type UnderlyingRustTuple<'a> = (
12037                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12038                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
12039            );
12040            #[cfg(test)]
12041            #[allow(dead_code, unreachable_patterns)]
12042            fn _type_assertion(
12043                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12044            ) {
12045                match _t {
12046                    alloy_sol_types::private::AssertTypeEq::<
12047                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12048                    >(_) => {}
12049                }
12050            }
12051            #[automatically_derived]
12052            #[doc(hidden)]
12053            impl ::core::convert::From<newFinalizedState_0Call>
12054            for UnderlyingRustTuple<'_> {
12055                fn from(value: newFinalizedState_0Call) -> Self {
12056                    (value._0, value._1)
12057                }
12058            }
12059            #[automatically_derived]
12060            #[doc(hidden)]
12061            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12062            for newFinalizedState_0Call {
12063                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12064                    Self { _0: tuple.0, _1: tuple.1 }
12065                }
12066            }
12067        }
12068        {
12069            #[doc(hidden)]
12070            #[allow(dead_code)]
12071            type UnderlyingSolTuple<'a> = ();
12072            #[doc(hidden)]
12073            type UnderlyingRustTuple<'a> = ();
12074            #[cfg(test)]
12075            #[allow(dead_code, unreachable_patterns)]
12076            fn _type_assertion(
12077                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12078            ) {
12079                match _t {
12080                    alloy_sol_types::private::AssertTypeEq::<
12081                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12082                    >(_) => {}
12083                }
12084            }
12085            #[automatically_derived]
12086            #[doc(hidden)]
12087            impl ::core::convert::From<newFinalizedState_0Return>
12088            for UnderlyingRustTuple<'_> {
12089                fn from(value: newFinalizedState_0Return) -> Self {
12090                    ()
12091                }
12092            }
12093            #[automatically_derived]
12094            #[doc(hidden)]
12095            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12096            for newFinalizedState_0Return {
12097                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12098                    Self {}
12099                }
12100            }
12101        }
12102        impl newFinalizedState_0Return {
12103            fn _tokenize(
12104                &self,
12105            ) -> <newFinalizedState_0Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
12106                ()
12107            }
12108        }
12109        #[automatically_derived]
12110        impl alloy_sol_types::SolCall for newFinalizedState_0Call {
12111            type Parameters<'a> = (
12112                LightClient::LightClientState,
12113                IPlonkVerifier::PlonkProof,
12114            );
12115            type Token<'a> = <Self::Parameters<
12116                'a,
12117            > as alloy_sol_types::SolType>::Token<'a>;
12118            type Return = newFinalizedState_0Return;
12119            type ReturnTuple<'a> = ();
12120            type ReturnToken<'a> = <Self::ReturnTuple<
12121                'a,
12122            > as alloy_sol_types::SolType>::Token<'a>;
12123            const SIGNATURE: &'static str = "newFinalizedState((uint64,uint64,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))";
12124            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
12125            #[inline]
12126            fn new<'a>(
12127                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12128            ) -> Self {
12129                tuple.into()
12130            }
12131            #[inline]
12132            fn tokenize(&self) -> Self::Token<'_> {
12133                (
12134                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
12135                        &self._0,
12136                    ),
12137                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
12138                        &self._1,
12139                    ),
12140                )
12141            }
12142            #[inline]
12143            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12144                newFinalizedState_0Return::_tokenize(ret)
12145            }
12146            #[inline]
12147            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12148                <Self::ReturnTuple<
12149                    '_,
12150                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12151                    .map(Into::into)
12152            }
12153            #[inline]
12154            fn abi_decode_returns_validate(
12155                data: &[u8],
12156            ) -> alloy_sol_types::Result<Self::Return> {
12157                <Self::ReturnTuple<
12158                    '_,
12159                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12160                    .map(Into::into)
12161            }
12162        }
12163    };
12164    #[derive(serde::Serialize, serde::Deserialize)]
12165    #[derive()]
12166    /**Function with signature `newFinalizedState((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))` and selector `0x757c37ad`.
12167```solidity
12168function newFinalizedState(LightClient.LightClientState memory, LightClient.StakeTableState memory, IPlonkVerifier.PlonkProof memory) external pure;
12169```*/
12170    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12171    #[derive(Clone)]
12172    pub struct newFinalizedState_1Call {
12173        #[allow(missing_docs)]
12174        pub _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12175        #[allow(missing_docs)]
12176        pub _1: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
12177        #[allow(missing_docs)]
12178        pub _2: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
12179    }
12180    ///Container type for the return parameters of the [`newFinalizedState((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))`](newFinalizedState_1Call) function.
12181    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12182    #[derive(Clone)]
12183    pub struct newFinalizedState_1Return {}
12184    #[allow(
12185        non_camel_case_types,
12186        non_snake_case,
12187        clippy::pub_underscore_fields,
12188        clippy::style
12189    )]
12190    const _: () = {
12191        use alloy::sol_types as alloy_sol_types;
12192        {
12193            #[doc(hidden)]
12194            #[allow(dead_code)]
12195            type UnderlyingSolTuple<'a> = (
12196                LightClient::LightClientState,
12197                LightClient::StakeTableState,
12198                IPlonkVerifier::PlonkProof,
12199            );
12200            #[doc(hidden)]
12201            type UnderlyingRustTuple<'a> = (
12202                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12203                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
12204                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
12205            );
12206            #[cfg(test)]
12207            #[allow(dead_code, unreachable_patterns)]
12208            fn _type_assertion(
12209                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12210            ) {
12211                match _t {
12212                    alloy_sol_types::private::AssertTypeEq::<
12213                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12214                    >(_) => {}
12215                }
12216            }
12217            #[automatically_derived]
12218            #[doc(hidden)]
12219            impl ::core::convert::From<newFinalizedState_1Call>
12220            for UnderlyingRustTuple<'_> {
12221                fn from(value: newFinalizedState_1Call) -> Self {
12222                    (value._0, value._1, value._2)
12223                }
12224            }
12225            #[automatically_derived]
12226            #[doc(hidden)]
12227            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12228            for newFinalizedState_1Call {
12229                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12230                    Self {
12231                        _0: tuple.0,
12232                        _1: tuple.1,
12233                        _2: tuple.2,
12234                    }
12235                }
12236            }
12237        }
12238        {
12239            #[doc(hidden)]
12240            #[allow(dead_code)]
12241            type UnderlyingSolTuple<'a> = ();
12242            #[doc(hidden)]
12243            type UnderlyingRustTuple<'a> = ();
12244            #[cfg(test)]
12245            #[allow(dead_code, unreachable_patterns)]
12246            fn _type_assertion(
12247                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12248            ) {
12249                match _t {
12250                    alloy_sol_types::private::AssertTypeEq::<
12251                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12252                    >(_) => {}
12253                }
12254            }
12255            #[automatically_derived]
12256            #[doc(hidden)]
12257            impl ::core::convert::From<newFinalizedState_1Return>
12258            for UnderlyingRustTuple<'_> {
12259                fn from(value: newFinalizedState_1Return) -> Self {
12260                    ()
12261                }
12262            }
12263            #[automatically_derived]
12264            #[doc(hidden)]
12265            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12266            for newFinalizedState_1Return {
12267                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12268                    Self {}
12269                }
12270            }
12271        }
12272        impl newFinalizedState_1Return {
12273            fn _tokenize(
12274                &self,
12275            ) -> <newFinalizedState_1Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
12276                ()
12277            }
12278        }
12279        #[automatically_derived]
12280        impl alloy_sol_types::SolCall for newFinalizedState_1Call {
12281            type Parameters<'a> = (
12282                LightClient::LightClientState,
12283                LightClient::StakeTableState,
12284                IPlonkVerifier::PlonkProof,
12285            );
12286            type Token<'a> = <Self::Parameters<
12287                'a,
12288            > as alloy_sol_types::SolType>::Token<'a>;
12289            type Return = newFinalizedState_1Return;
12290            type ReturnTuple<'a> = ();
12291            type ReturnToken<'a> = <Self::ReturnTuple<
12292                'a,
12293            > as alloy_sol_types::SolType>::Token<'a>;
12294            const SIGNATURE: &'static str = "newFinalizedState((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))";
12295            const SELECTOR: [u8; 4] = [117u8, 124u8, 55u8, 173u8];
12296            #[inline]
12297            fn new<'a>(
12298                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12299            ) -> Self {
12300                tuple.into()
12301            }
12302            #[inline]
12303            fn tokenize(&self) -> Self::Token<'_> {
12304                (
12305                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
12306                        &self._0,
12307                    ),
12308                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
12309                        &self._1,
12310                    ),
12311                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
12312                        &self._2,
12313                    ),
12314                )
12315            }
12316            #[inline]
12317            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12318                newFinalizedState_1Return::_tokenize(ret)
12319            }
12320            #[inline]
12321            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12322                <Self::ReturnTuple<
12323                    '_,
12324                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12325                    .map(Into::into)
12326            }
12327            #[inline]
12328            fn abi_decode_returns_validate(
12329                data: &[u8],
12330            ) -> alloy_sol_types::Result<Self::Return> {
12331                <Self::ReturnTuple<
12332                    '_,
12333                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12334                    .map(Into::into)
12335            }
12336        }
12337    };
12338    #[derive(serde::Serialize, serde::Deserialize)]
12339    #[derive()]
12340    /**Function with signature `newFinalizedState((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint256,((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))` and selector `0xaabd5db3`.
12341```solidity
12342function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, uint256 newAuthRoot, IPlonkVerifier.PlonkProof memory proof) external;
12343```*/
12344    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12345    #[derive(Clone)]
12346    pub struct newFinalizedState_2Call {
12347        #[allow(missing_docs)]
12348        pub newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12349        #[allow(missing_docs)]
12350        pub nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
12351        #[allow(missing_docs)]
12352        pub newAuthRoot: alloy::sol_types::private::primitives::aliases::U256,
12353        #[allow(missing_docs)]
12354        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
12355    }
12356    ///Container type for the return parameters of the [`newFinalizedState((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint256,((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))`](newFinalizedState_2Call) function.
12357    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12358    #[derive(Clone)]
12359    pub struct newFinalizedState_2Return {}
12360    #[allow(
12361        non_camel_case_types,
12362        non_snake_case,
12363        clippy::pub_underscore_fields,
12364        clippy::style
12365    )]
12366    const _: () = {
12367        use alloy::sol_types as alloy_sol_types;
12368        {
12369            #[doc(hidden)]
12370            #[allow(dead_code)]
12371            type UnderlyingSolTuple<'a> = (
12372                LightClient::LightClientState,
12373                LightClient::StakeTableState,
12374                alloy::sol_types::sol_data::Uint<256>,
12375                IPlonkVerifier::PlonkProof,
12376            );
12377            #[doc(hidden)]
12378            type UnderlyingRustTuple<'a> = (
12379                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12380                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
12381                alloy::sol_types::private::primitives::aliases::U256,
12382                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
12383            );
12384            #[cfg(test)]
12385            #[allow(dead_code, unreachable_patterns)]
12386            fn _type_assertion(
12387                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12388            ) {
12389                match _t {
12390                    alloy_sol_types::private::AssertTypeEq::<
12391                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12392                    >(_) => {}
12393                }
12394            }
12395            #[automatically_derived]
12396            #[doc(hidden)]
12397            impl ::core::convert::From<newFinalizedState_2Call>
12398            for UnderlyingRustTuple<'_> {
12399                fn from(value: newFinalizedState_2Call) -> Self {
12400                    (
12401                        value.newState,
12402                        value.nextStakeTable,
12403                        value.newAuthRoot,
12404                        value.proof,
12405                    )
12406                }
12407            }
12408            #[automatically_derived]
12409            #[doc(hidden)]
12410            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12411            for newFinalizedState_2Call {
12412                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12413                    Self {
12414                        newState: tuple.0,
12415                        nextStakeTable: tuple.1,
12416                        newAuthRoot: tuple.2,
12417                        proof: tuple.3,
12418                    }
12419                }
12420            }
12421        }
12422        {
12423            #[doc(hidden)]
12424            #[allow(dead_code)]
12425            type UnderlyingSolTuple<'a> = ();
12426            #[doc(hidden)]
12427            type UnderlyingRustTuple<'a> = ();
12428            #[cfg(test)]
12429            #[allow(dead_code, unreachable_patterns)]
12430            fn _type_assertion(
12431                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12432            ) {
12433                match _t {
12434                    alloy_sol_types::private::AssertTypeEq::<
12435                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12436                    >(_) => {}
12437                }
12438            }
12439            #[automatically_derived]
12440            #[doc(hidden)]
12441            impl ::core::convert::From<newFinalizedState_2Return>
12442            for UnderlyingRustTuple<'_> {
12443                fn from(value: newFinalizedState_2Return) -> Self {
12444                    ()
12445                }
12446            }
12447            #[automatically_derived]
12448            #[doc(hidden)]
12449            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12450            for newFinalizedState_2Return {
12451                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12452                    Self {}
12453                }
12454            }
12455        }
12456        impl newFinalizedState_2Return {
12457            fn _tokenize(
12458                &self,
12459            ) -> <newFinalizedState_2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
12460                ()
12461            }
12462        }
12463        #[automatically_derived]
12464        impl alloy_sol_types::SolCall for newFinalizedState_2Call {
12465            type Parameters<'a> = (
12466                LightClient::LightClientState,
12467                LightClient::StakeTableState,
12468                alloy::sol_types::sol_data::Uint<256>,
12469                IPlonkVerifier::PlonkProof,
12470            );
12471            type Token<'a> = <Self::Parameters<
12472                'a,
12473            > as alloy_sol_types::SolType>::Token<'a>;
12474            type Return = newFinalizedState_2Return;
12475            type ReturnTuple<'a> = ();
12476            type ReturnToken<'a> = <Self::ReturnTuple<
12477                'a,
12478            > as alloy_sol_types::SolType>::Token<'a>;
12479            const SIGNATURE: &'static str = "newFinalizedState((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint256,((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))";
12480            const SELECTOR: [u8; 4] = [170u8, 189u8, 93u8, 179u8];
12481            #[inline]
12482            fn new<'a>(
12483                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12484            ) -> Self {
12485                tuple.into()
12486            }
12487            #[inline]
12488            fn tokenize(&self) -> Self::Token<'_> {
12489                (
12490                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
12491                        &self.newState,
12492                    ),
12493                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
12494                        &self.nextStakeTable,
12495                    ),
12496                    <alloy::sol_types::sol_data::Uint<
12497                        256,
12498                    > as alloy_sol_types::SolType>::tokenize(&self.newAuthRoot),
12499                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
12500                        &self.proof,
12501                    ),
12502                )
12503            }
12504            #[inline]
12505            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12506                newFinalizedState_2Return::_tokenize(ret)
12507            }
12508            #[inline]
12509            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12510                <Self::ReturnTuple<
12511                    '_,
12512                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12513                    .map(Into::into)
12514            }
12515            #[inline]
12516            fn abi_decode_returns_validate(
12517                data: &[u8],
12518            ) -> alloy_sol_types::Result<Self::Return> {
12519                <Self::ReturnTuple<
12520                    '_,
12521                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12522                    .map(Into::into)
12523            }
12524        }
12525    };
12526    #[derive(serde::Serialize, serde::Deserialize)]
12527    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12528    /**Function with signature `owner()` and selector `0x8da5cb5b`.
12529```solidity
12530function owner() external view returns (address);
12531```*/
12532    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12533    #[derive(Clone)]
12534    pub struct ownerCall;
12535    #[derive(serde::Serialize, serde::Deserialize)]
12536    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12537    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
12538    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12539    #[derive(Clone)]
12540    pub struct ownerReturn {
12541        #[allow(missing_docs)]
12542        pub _0: alloy::sol_types::private::Address,
12543    }
12544    #[allow(
12545        non_camel_case_types,
12546        non_snake_case,
12547        clippy::pub_underscore_fields,
12548        clippy::style
12549    )]
12550    const _: () = {
12551        use alloy::sol_types as alloy_sol_types;
12552        {
12553            #[doc(hidden)]
12554            #[allow(dead_code)]
12555            type UnderlyingSolTuple<'a> = ();
12556            #[doc(hidden)]
12557            type UnderlyingRustTuple<'a> = ();
12558            #[cfg(test)]
12559            #[allow(dead_code, unreachable_patterns)]
12560            fn _type_assertion(
12561                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12562            ) {
12563                match _t {
12564                    alloy_sol_types::private::AssertTypeEq::<
12565                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12566                    >(_) => {}
12567                }
12568            }
12569            #[automatically_derived]
12570            #[doc(hidden)]
12571            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
12572                fn from(value: ownerCall) -> Self {
12573                    ()
12574                }
12575            }
12576            #[automatically_derived]
12577            #[doc(hidden)]
12578            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
12579                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12580                    Self
12581                }
12582            }
12583        }
12584        {
12585            #[doc(hidden)]
12586            #[allow(dead_code)]
12587            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12588            #[doc(hidden)]
12589            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12590            #[cfg(test)]
12591            #[allow(dead_code, unreachable_patterns)]
12592            fn _type_assertion(
12593                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12594            ) {
12595                match _t {
12596                    alloy_sol_types::private::AssertTypeEq::<
12597                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12598                    >(_) => {}
12599                }
12600            }
12601            #[automatically_derived]
12602            #[doc(hidden)]
12603            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
12604                fn from(value: ownerReturn) -> Self {
12605                    (value._0,)
12606                }
12607            }
12608            #[automatically_derived]
12609            #[doc(hidden)]
12610            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
12611                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12612                    Self { _0: tuple.0 }
12613                }
12614            }
12615        }
12616        #[automatically_derived]
12617        impl alloy_sol_types::SolCall for ownerCall {
12618            type Parameters<'a> = ();
12619            type Token<'a> = <Self::Parameters<
12620                'a,
12621            > as alloy_sol_types::SolType>::Token<'a>;
12622            type Return = alloy::sol_types::private::Address;
12623            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
12624            type ReturnToken<'a> = <Self::ReturnTuple<
12625                'a,
12626            > as alloy_sol_types::SolType>::Token<'a>;
12627            const SIGNATURE: &'static str = "owner()";
12628            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
12629            #[inline]
12630            fn new<'a>(
12631                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12632            ) -> Self {
12633                tuple.into()
12634            }
12635            #[inline]
12636            fn tokenize(&self) -> Self::Token<'_> {
12637                ()
12638            }
12639            #[inline]
12640            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12641                (
12642                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12643                        ret,
12644                    ),
12645                )
12646            }
12647            #[inline]
12648            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12649                <Self::ReturnTuple<
12650                    '_,
12651                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12652                    .map(|r| {
12653                        let r: ownerReturn = r.into();
12654                        r._0
12655                    })
12656            }
12657            #[inline]
12658            fn abi_decode_returns_validate(
12659                data: &[u8],
12660            ) -> alloy_sol_types::Result<Self::Return> {
12661                <Self::ReturnTuple<
12662                    '_,
12663                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12664                    .map(|r| {
12665                        let r: ownerReturn = r.into();
12666                        r._0
12667                    })
12668            }
12669        }
12670    };
12671    #[derive(serde::Serialize, serde::Deserialize)]
12672    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12673    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
12674```solidity
12675function permissionedProver() external view returns (address);
12676```*/
12677    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12678    #[derive(Clone)]
12679    pub struct permissionedProverCall;
12680    #[derive(serde::Serialize, serde::Deserialize)]
12681    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12682    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
12683    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12684    #[derive(Clone)]
12685    pub struct permissionedProverReturn {
12686        #[allow(missing_docs)]
12687        pub _0: alloy::sol_types::private::Address,
12688    }
12689    #[allow(
12690        non_camel_case_types,
12691        non_snake_case,
12692        clippy::pub_underscore_fields,
12693        clippy::style
12694    )]
12695    const _: () = {
12696        use alloy::sol_types as alloy_sol_types;
12697        {
12698            #[doc(hidden)]
12699            #[allow(dead_code)]
12700            type UnderlyingSolTuple<'a> = ();
12701            #[doc(hidden)]
12702            type UnderlyingRustTuple<'a> = ();
12703            #[cfg(test)]
12704            #[allow(dead_code, unreachable_patterns)]
12705            fn _type_assertion(
12706                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12707            ) {
12708                match _t {
12709                    alloy_sol_types::private::AssertTypeEq::<
12710                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12711                    >(_) => {}
12712                }
12713            }
12714            #[automatically_derived]
12715            #[doc(hidden)]
12716            impl ::core::convert::From<permissionedProverCall>
12717            for UnderlyingRustTuple<'_> {
12718                fn from(value: permissionedProverCall) -> Self {
12719                    ()
12720                }
12721            }
12722            #[automatically_derived]
12723            #[doc(hidden)]
12724            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12725            for permissionedProverCall {
12726                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12727                    Self
12728                }
12729            }
12730        }
12731        {
12732            #[doc(hidden)]
12733            #[allow(dead_code)]
12734            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12735            #[doc(hidden)]
12736            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12737            #[cfg(test)]
12738            #[allow(dead_code, unreachable_patterns)]
12739            fn _type_assertion(
12740                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12741            ) {
12742                match _t {
12743                    alloy_sol_types::private::AssertTypeEq::<
12744                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12745                    >(_) => {}
12746                }
12747            }
12748            #[automatically_derived]
12749            #[doc(hidden)]
12750            impl ::core::convert::From<permissionedProverReturn>
12751            for UnderlyingRustTuple<'_> {
12752                fn from(value: permissionedProverReturn) -> Self {
12753                    (value._0,)
12754                }
12755            }
12756            #[automatically_derived]
12757            #[doc(hidden)]
12758            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12759            for permissionedProverReturn {
12760                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12761                    Self { _0: tuple.0 }
12762                }
12763            }
12764        }
12765        #[automatically_derived]
12766        impl alloy_sol_types::SolCall for permissionedProverCall {
12767            type Parameters<'a> = ();
12768            type Token<'a> = <Self::Parameters<
12769                'a,
12770            > as alloy_sol_types::SolType>::Token<'a>;
12771            type Return = alloy::sol_types::private::Address;
12772            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
12773            type ReturnToken<'a> = <Self::ReturnTuple<
12774                'a,
12775            > as alloy_sol_types::SolType>::Token<'a>;
12776            const SIGNATURE: &'static str = "permissionedProver()";
12777            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
12778            #[inline]
12779            fn new<'a>(
12780                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12781            ) -> Self {
12782                tuple.into()
12783            }
12784            #[inline]
12785            fn tokenize(&self) -> Self::Token<'_> {
12786                ()
12787            }
12788            #[inline]
12789            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12790                (
12791                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12792                        ret,
12793                    ),
12794                )
12795            }
12796            #[inline]
12797            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12798                <Self::ReturnTuple<
12799                    '_,
12800                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12801                    .map(|r| {
12802                        let r: permissionedProverReturn = r.into();
12803                        r._0
12804                    })
12805            }
12806            #[inline]
12807            fn abi_decode_returns_validate(
12808                data: &[u8],
12809            ) -> alloy_sol_types::Result<Self::Return> {
12810                <Self::ReturnTuple<
12811                    '_,
12812                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12813                    .map(|r| {
12814                        let r: permissionedProverReturn = r.into();
12815                        r._0
12816                    })
12817            }
12818        }
12819    };
12820    #[derive(serde::Serialize, serde::Deserialize)]
12821    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12822    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
12823```solidity
12824function proxiableUUID() external view returns (bytes32);
12825```*/
12826    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12827    #[derive(Clone)]
12828    pub struct proxiableUUIDCall;
12829    #[derive(serde::Serialize, serde::Deserialize)]
12830    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12831    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
12832    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12833    #[derive(Clone)]
12834    pub struct proxiableUUIDReturn {
12835        #[allow(missing_docs)]
12836        pub _0: alloy::sol_types::private::FixedBytes<32>,
12837    }
12838    #[allow(
12839        non_camel_case_types,
12840        non_snake_case,
12841        clippy::pub_underscore_fields,
12842        clippy::style
12843    )]
12844    const _: () = {
12845        use alloy::sol_types as alloy_sol_types;
12846        {
12847            #[doc(hidden)]
12848            #[allow(dead_code)]
12849            type UnderlyingSolTuple<'a> = ();
12850            #[doc(hidden)]
12851            type UnderlyingRustTuple<'a> = ();
12852            #[cfg(test)]
12853            #[allow(dead_code, unreachable_patterns)]
12854            fn _type_assertion(
12855                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12856            ) {
12857                match _t {
12858                    alloy_sol_types::private::AssertTypeEq::<
12859                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12860                    >(_) => {}
12861                }
12862            }
12863            #[automatically_derived]
12864            #[doc(hidden)]
12865            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
12866                fn from(value: proxiableUUIDCall) -> Self {
12867                    ()
12868                }
12869            }
12870            #[automatically_derived]
12871            #[doc(hidden)]
12872            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
12873                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12874                    Self
12875                }
12876            }
12877        }
12878        {
12879            #[doc(hidden)]
12880            #[allow(dead_code)]
12881            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12882            #[doc(hidden)]
12883            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
12884            #[cfg(test)]
12885            #[allow(dead_code, unreachable_patterns)]
12886            fn _type_assertion(
12887                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12888            ) {
12889                match _t {
12890                    alloy_sol_types::private::AssertTypeEq::<
12891                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12892                    >(_) => {}
12893                }
12894            }
12895            #[automatically_derived]
12896            #[doc(hidden)]
12897            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
12898                fn from(value: proxiableUUIDReturn) -> Self {
12899                    (value._0,)
12900                }
12901            }
12902            #[automatically_derived]
12903            #[doc(hidden)]
12904            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
12905                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12906                    Self { _0: tuple.0 }
12907                }
12908            }
12909        }
12910        #[automatically_derived]
12911        impl alloy_sol_types::SolCall for proxiableUUIDCall {
12912            type Parameters<'a> = ();
12913            type Token<'a> = <Self::Parameters<
12914                'a,
12915            > as alloy_sol_types::SolType>::Token<'a>;
12916            type Return = alloy::sol_types::private::FixedBytes<32>;
12917            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12918            type ReturnToken<'a> = <Self::ReturnTuple<
12919                'a,
12920            > as alloy_sol_types::SolType>::Token<'a>;
12921            const SIGNATURE: &'static str = "proxiableUUID()";
12922            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
12923            #[inline]
12924            fn new<'a>(
12925                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12926            ) -> Self {
12927                tuple.into()
12928            }
12929            #[inline]
12930            fn tokenize(&self) -> Self::Token<'_> {
12931                ()
12932            }
12933            #[inline]
12934            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12935                (
12936                    <alloy::sol_types::sol_data::FixedBytes<
12937                        32,
12938                    > as alloy_sol_types::SolType>::tokenize(ret),
12939                )
12940            }
12941            #[inline]
12942            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12943                <Self::ReturnTuple<
12944                    '_,
12945                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12946                    .map(|r| {
12947                        let r: proxiableUUIDReturn = r.into();
12948                        r._0
12949                    })
12950            }
12951            #[inline]
12952            fn abi_decode_returns_validate(
12953                data: &[u8],
12954            ) -> alloy_sol_types::Result<Self::Return> {
12955                <Self::ReturnTuple<
12956                    '_,
12957                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12958                    .map(|r| {
12959                        let r: proxiableUUIDReturn = r.into();
12960                        r._0
12961                    })
12962            }
12963        }
12964    };
12965    #[derive(serde::Serialize, serde::Deserialize)]
12966    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12967    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
12968```solidity
12969function renounceOwnership() external;
12970```*/
12971    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12972    #[derive(Clone)]
12973    pub struct renounceOwnershipCall;
12974    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
12975    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12976    #[derive(Clone)]
12977    pub struct renounceOwnershipReturn {}
12978    #[allow(
12979        non_camel_case_types,
12980        non_snake_case,
12981        clippy::pub_underscore_fields,
12982        clippy::style
12983    )]
12984    const _: () = {
12985        use alloy::sol_types as alloy_sol_types;
12986        {
12987            #[doc(hidden)]
12988            #[allow(dead_code)]
12989            type UnderlyingSolTuple<'a> = ();
12990            #[doc(hidden)]
12991            type UnderlyingRustTuple<'a> = ();
12992            #[cfg(test)]
12993            #[allow(dead_code, unreachable_patterns)]
12994            fn _type_assertion(
12995                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12996            ) {
12997                match _t {
12998                    alloy_sol_types::private::AssertTypeEq::<
12999                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13000                    >(_) => {}
13001                }
13002            }
13003            #[automatically_derived]
13004            #[doc(hidden)]
13005            impl ::core::convert::From<renounceOwnershipCall>
13006            for UnderlyingRustTuple<'_> {
13007                fn from(value: renounceOwnershipCall) -> Self {
13008                    ()
13009                }
13010            }
13011            #[automatically_derived]
13012            #[doc(hidden)]
13013            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13014            for renounceOwnershipCall {
13015                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13016                    Self
13017                }
13018            }
13019        }
13020        {
13021            #[doc(hidden)]
13022            #[allow(dead_code)]
13023            type UnderlyingSolTuple<'a> = ();
13024            #[doc(hidden)]
13025            type UnderlyingRustTuple<'a> = ();
13026            #[cfg(test)]
13027            #[allow(dead_code, unreachable_patterns)]
13028            fn _type_assertion(
13029                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13030            ) {
13031                match _t {
13032                    alloy_sol_types::private::AssertTypeEq::<
13033                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13034                    >(_) => {}
13035                }
13036            }
13037            #[automatically_derived]
13038            #[doc(hidden)]
13039            impl ::core::convert::From<renounceOwnershipReturn>
13040            for UnderlyingRustTuple<'_> {
13041                fn from(value: renounceOwnershipReturn) -> Self {
13042                    ()
13043                }
13044            }
13045            #[automatically_derived]
13046            #[doc(hidden)]
13047            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13048            for renounceOwnershipReturn {
13049                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13050                    Self {}
13051                }
13052            }
13053        }
13054        impl renounceOwnershipReturn {
13055            fn _tokenize(
13056                &self,
13057            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13058                ()
13059            }
13060        }
13061        #[automatically_derived]
13062        impl alloy_sol_types::SolCall for renounceOwnershipCall {
13063            type Parameters<'a> = ();
13064            type Token<'a> = <Self::Parameters<
13065                'a,
13066            > as alloy_sol_types::SolType>::Token<'a>;
13067            type Return = renounceOwnershipReturn;
13068            type ReturnTuple<'a> = ();
13069            type ReturnToken<'a> = <Self::ReturnTuple<
13070                'a,
13071            > as alloy_sol_types::SolType>::Token<'a>;
13072            const SIGNATURE: &'static str = "renounceOwnership()";
13073            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
13074            #[inline]
13075            fn new<'a>(
13076                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13077            ) -> Self {
13078                tuple.into()
13079            }
13080            #[inline]
13081            fn tokenize(&self) -> Self::Token<'_> {
13082                ()
13083            }
13084            #[inline]
13085            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13086                renounceOwnershipReturn::_tokenize(ret)
13087            }
13088            #[inline]
13089            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13090                <Self::ReturnTuple<
13091                    '_,
13092                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13093                    .map(Into::into)
13094            }
13095            #[inline]
13096            fn abi_decode_returns_validate(
13097                data: &[u8],
13098            ) -> alloy_sol_types::Result<Self::Return> {
13099                <Self::ReturnTuple<
13100                    '_,
13101                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13102                    .map(Into::into)
13103            }
13104        }
13105    };
13106    #[derive(serde::Serialize, serde::Deserialize)]
13107    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13108    /**Function with signature `setBlocksPerEpoch(uint64)` and selector `0x3c23b6db`.
13109```solidity
13110function setBlocksPerEpoch(uint64 newBlocksPerEpoch) external;
13111```*/
13112    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13113    #[derive(Clone)]
13114    pub struct setBlocksPerEpochCall {
13115        #[allow(missing_docs)]
13116        pub newBlocksPerEpoch: u64,
13117    }
13118    ///Container type for the return parameters of the [`setBlocksPerEpoch(uint64)`](setBlocksPerEpochCall) function.
13119    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13120    #[derive(Clone)]
13121    pub struct setBlocksPerEpochReturn {}
13122    #[allow(
13123        non_camel_case_types,
13124        non_snake_case,
13125        clippy::pub_underscore_fields,
13126        clippy::style
13127    )]
13128    const _: () = {
13129        use alloy::sol_types as alloy_sol_types;
13130        {
13131            #[doc(hidden)]
13132            #[allow(dead_code)]
13133            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13134            #[doc(hidden)]
13135            type UnderlyingRustTuple<'a> = (u64,);
13136            #[cfg(test)]
13137            #[allow(dead_code, unreachable_patterns)]
13138            fn _type_assertion(
13139                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13140            ) {
13141                match _t {
13142                    alloy_sol_types::private::AssertTypeEq::<
13143                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13144                    >(_) => {}
13145                }
13146            }
13147            #[automatically_derived]
13148            #[doc(hidden)]
13149            impl ::core::convert::From<setBlocksPerEpochCall>
13150            for UnderlyingRustTuple<'_> {
13151                fn from(value: setBlocksPerEpochCall) -> Self {
13152                    (value.newBlocksPerEpoch,)
13153                }
13154            }
13155            #[automatically_derived]
13156            #[doc(hidden)]
13157            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13158            for setBlocksPerEpochCall {
13159                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13160                    Self { newBlocksPerEpoch: tuple.0 }
13161                }
13162            }
13163        }
13164        {
13165            #[doc(hidden)]
13166            #[allow(dead_code)]
13167            type UnderlyingSolTuple<'a> = ();
13168            #[doc(hidden)]
13169            type UnderlyingRustTuple<'a> = ();
13170            #[cfg(test)]
13171            #[allow(dead_code, unreachable_patterns)]
13172            fn _type_assertion(
13173                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13174            ) {
13175                match _t {
13176                    alloy_sol_types::private::AssertTypeEq::<
13177                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13178                    >(_) => {}
13179                }
13180            }
13181            #[automatically_derived]
13182            #[doc(hidden)]
13183            impl ::core::convert::From<setBlocksPerEpochReturn>
13184            for UnderlyingRustTuple<'_> {
13185                fn from(value: setBlocksPerEpochReturn) -> Self {
13186                    ()
13187                }
13188            }
13189            #[automatically_derived]
13190            #[doc(hidden)]
13191            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13192            for setBlocksPerEpochReturn {
13193                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13194                    Self {}
13195                }
13196            }
13197        }
13198        impl setBlocksPerEpochReturn {
13199            fn _tokenize(
13200                &self,
13201            ) -> <setBlocksPerEpochCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13202                ()
13203            }
13204        }
13205        #[automatically_derived]
13206        impl alloy_sol_types::SolCall for setBlocksPerEpochCall {
13207            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13208            type Token<'a> = <Self::Parameters<
13209                'a,
13210            > as alloy_sol_types::SolType>::Token<'a>;
13211            type Return = setBlocksPerEpochReturn;
13212            type ReturnTuple<'a> = ();
13213            type ReturnToken<'a> = <Self::ReturnTuple<
13214                'a,
13215            > as alloy_sol_types::SolType>::Token<'a>;
13216            const SIGNATURE: &'static str = "setBlocksPerEpoch(uint64)";
13217            const SELECTOR: [u8; 4] = [60u8, 35u8, 182u8, 219u8];
13218            #[inline]
13219            fn new<'a>(
13220                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13221            ) -> Self {
13222                tuple.into()
13223            }
13224            #[inline]
13225            fn tokenize(&self) -> Self::Token<'_> {
13226                (
13227                    <alloy::sol_types::sol_data::Uint<
13228                        64,
13229                    > as alloy_sol_types::SolType>::tokenize(&self.newBlocksPerEpoch),
13230                )
13231            }
13232            #[inline]
13233            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13234                setBlocksPerEpochReturn::_tokenize(ret)
13235            }
13236            #[inline]
13237            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13238                <Self::ReturnTuple<
13239                    '_,
13240                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13241                    .map(Into::into)
13242            }
13243            #[inline]
13244            fn abi_decode_returns_validate(
13245                data: &[u8],
13246            ) -> alloy_sol_types::Result<Self::Return> {
13247                <Self::ReturnTuple<
13248                    '_,
13249                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13250                    .map(Into::into)
13251            }
13252        }
13253    };
13254    #[derive(serde::Serialize, serde::Deserialize)]
13255    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13256    /**Function with signature `setFinalizedState((uint64,uint64,uint256))` and selector `0xb5adea3c`.
13257```solidity
13258function setFinalizedState(LightClient.LightClientState memory state) external;
13259```*/
13260    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13261    #[derive(Clone)]
13262    pub struct setFinalizedStateCall {
13263        #[allow(missing_docs)]
13264        pub state: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
13265    }
13266    ///Container type for the return parameters of the [`setFinalizedState((uint64,uint64,uint256))`](setFinalizedStateCall) function.
13267    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13268    #[derive(Clone)]
13269    pub struct setFinalizedStateReturn {}
13270    #[allow(
13271        non_camel_case_types,
13272        non_snake_case,
13273        clippy::pub_underscore_fields,
13274        clippy::style
13275    )]
13276    const _: () = {
13277        use alloy::sol_types as alloy_sol_types;
13278        {
13279            #[doc(hidden)]
13280            #[allow(dead_code)]
13281            type UnderlyingSolTuple<'a> = (LightClient::LightClientState,);
13282            #[doc(hidden)]
13283            type UnderlyingRustTuple<'a> = (
13284                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
13285            );
13286            #[cfg(test)]
13287            #[allow(dead_code, unreachable_patterns)]
13288            fn _type_assertion(
13289                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13290            ) {
13291                match _t {
13292                    alloy_sol_types::private::AssertTypeEq::<
13293                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13294                    >(_) => {}
13295                }
13296            }
13297            #[automatically_derived]
13298            #[doc(hidden)]
13299            impl ::core::convert::From<setFinalizedStateCall>
13300            for UnderlyingRustTuple<'_> {
13301                fn from(value: setFinalizedStateCall) -> Self {
13302                    (value.state,)
13303                }
13304            }
13305            #[automatically_derived]
13306            #[doc(hidden)]
13307            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13308            for setFinalizedStateCall {
13309                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13310                    Self { state: tuple.0 }
13311                }
13312            }
13313        }
13314        {
13315            #[doc(hidden)]
13316            #[allow(dead_code)]
13317            type UnderlyingSolTuple<'a> = ();
13318            #[doc(hidden)]
13319            type UnderlyingRustTuple<'a> = ();
13320            #[cfg(test)]
13321            #[allow(dead_code, unreachable_patterns)]
13322            fn _type_assertion(
13323                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13324            ) {
13325                match _t {
13326                    alloy_sol_types::private::AssertTypeEq::<
13327                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13328                    >(_) => {}
13329                }
13330            }
13331            #[automatically_derived]
13332            #[doc(hidden)]
13333            impl ::core::convert::From<setFinalizedStateReturn>
13334            for UnderlyingRustTuple<'_> {
13335                fn from(value: setFinalizedStateReturn) -> Self {
13336                    ()
13337                }
13338            }
13339            #[automatically_derived]
13340            #[doc(hidden)]
13341            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13342            for setFinalizedStateReturn {
13343                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13344                    Self {}
13345                }
13346            }
13347        }
13348        impl setFinalizedStateReturn {
13349            fn _tokenize(
13350                &self,
13351            ) -> <setFinalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13352                ()
13353            }
13354        }
13355        #[automatically_derived]
13356        impl alloy_sol_types::SolCall for setFinalizedStateCall {
13357            type Parameters<'a> = (LightClient::LightClientState,);
13358            type Token<'a> = <Self::Parameters<
13359                'a,
13360            > as alloy_sol_types::SolType>::Token<'a>;
13361            type Return = setFinalizedStateReturn;
13362            type ReturnTuple<'a> = ();
13363            type ReturnToken<'a> = <Self::ReturnTuple<
13364                'a,
13365            > as alloy_sol_types::SolType>::Token<'a>;
13366            const SIGNATURE: &'static str = "setFinalizedState((uint64,uint64,uint256))";
13367            const SELECTOR: [u8; 4] = [181u8, 173u8, 234u8, 60u8];
13368            #[inline]
13369            fn new<'a>(
13370                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13371            ) -> Self {
13372                tuple.into()
13373            }
13374            #[inline]
13375            fn tokenize(&self) -> Self::Token<'_> {
13376                (
13377                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
13378                        &self.state,
13379                    ),
13380                )
13381            }
13382            #[inline]
13383            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13384                setFinalizedStateReturn::_tokenize(ret)
13385            }
13386            #[inline]
13387            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13388                <Self::ReturnTuple<
13389                    '_,
13390                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13391                    .map(Into::into)
13392            }
13393            #[inline]
13394            fn abi_decode_returns_validate(
13395                data: &[u8],
13396            ) -> alloy_sol_types::Result<Self::Return> {
13397                <Self::ReturnTuple<
13398                    '_,
13399                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13400                    .map(Into::into)
13401            }
13402        }
13403    };
13404    #[derive(serde::Serialize, serde::Deserialize)]
13405    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13406    /**Function with signature `setHotShotDownSince(uint256)` and selector `0x2d52aad6`.
13407```solidity
13408function setHotShotDownSince(uint256 l1Height) external;
13409```*/
13410    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13411    #[derive(Clone)]
13412    pub struct setHotShotDownSinceCall {
13413        #[allow(missing_docs)]
13414        pub l1Height: alloy::sol_types::private::primitives::aliases::U256,
13415    }
13416    ///Container type for the return parameters of the [`setHotShotDownSince(uint256)`](setHotShotDownSinceCall) function.
13417    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13418    #[derive(Clone)]
13419    pub struct setHotShotDownSinceReturn {}
13420    #[allow(
13421        non_camel_case_types,
13422        non_snake_case,
13423        clippy::pub_underscore_fields,
13424        clippy::style
13425    )]
13426    const _: () = {
13427        use alloy::sol_types as alloy_sol_types;
13428        {
13429            #[doc(hidden)]
13430            #[allow(dead_code)]
13431            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13432            #[doc(hidden)]
13433            type UnderlyingRustTuple<'a> = (
13434                alloy::sol_types::private::primitives::aliases::U256,
13435            );
13436            #[cfg(test)]
13437            #[allow(dead_code, unreachable_patterns)]
13438            fn _type_assertion(
13439                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13440            ) {
13441                match _t {
13442                    alloy_sol_types::private::AssertTypeEq::<
13443                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13444                    >(_) => {}
13445                }
13446            }
13447            #[automatically_derived]
13448            #[doc(hidden)]
13449            impl ::core::convert::From<setHotShotDownSinceCall>
13450            for UnderlyingRustTuple<'_> {
13451                fn from(value: setHotShotDownSinceCall) -> Self {
13452                    (value.l1Height,)
13453                }
13454            }
13455            #[automatically_derived]
13456            #[doc(hidden)]
13457            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13458            for setHotShotDownSinceCall {
13459                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13460                    Self { l1Height: tuple.0 }
13461                }
13462            }
13463        }
13464        {
13465            #[doc(hidden)]
13466            #[allow(dead_code)]
13467            type UnderlyingSolTuple<'a> = ();
13468            #[doc(hidden)]
13469            type UnderlyingRustTuple<'a> = ();
13470            #[cfg(test)]
13471            #[allow(dead_code, unreachable_patterns)]
13472            fn _type_assertion(
13473                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13474            ) {
13475                match _t {
13476                    alloy_sol_types::private::AssertTypeEq::<
13477                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13478                    >(_) => {}
13479                }
13480            }
13481            #[automatically_derived]
13482            #[doc(hidden)]
13483            impl ::core::convert::From<setHotShotDownSinceReturn>
13484            for UnderlyingRustTuple<'_> {
13485                fn from(value: setHotShotDownSinceReturn) -> Self {
13486                    ()
13487                }
13488            }
13489            #[automatically_derived]
13490            #[doc(hidden)]
13491            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13492            for setHotShotDownSinceReturn {
13493                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13494                    Self {}
13495                }
13496            }
13497        }
13498        impl setHotShotDownSinceReturn {
13499            fn _tokenize(
13500                &self,
13501            ) -> <setHotShotDownSinceCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13502                ()
13503            }
13504        }
13505        #[automatically_derived]
13506        impl alloy_sol_types::SolCall for setHotShotDownSinceCall {
13507            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13508            type Token<'a> = <Self::Parameters<
13509                'a,
13510            > as alloy_sol_types::SolType>::Token<'a>;
13511            type Return = setHotShotDownSinceReturn;
13512            type ReturnTuple<'a> = ();
13513            type ReturnToken<'a> = <Self::ReturnTuple<
13514                'a,
13515            > as alloy_sol_types::SolType>::Token<'a>;
13516            const SIGNATURE: &'static str = "setHotShotDownSince(uint256)";
13517            const SELECTOR: [u8; 4] = [45u8, 82u8, 170u8, 214u8];
13518            #[inline]
13519            fn new<'a>(
13520                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13521            ) -> Self {
13522                tuple.into()
13523            }
13524            #[inline]
13525            fn tokenize(&self) -> Self::Token<'_> {
13526                (
13527                    <alloy::sol_types::sol_data::Uint<
13528                        256,
13529                    > as alloy_sol_types::SolType>::tokenize(&self.l1Height),
13530                )
13531            }
13532            #[inline]
13533            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13534                setHotShotDownSinceReturn::_tokenize(ret)
13535            }
13536            #[inline]
13537            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13538                <Self::ReturnTuple<
13539                    '_,
13540                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13541                    .map(Into::into)
13542            }
13543            #[inline]
13544            fn abi_decode_returns_validate(
13545                data: &[u8],
13546            ) -> alloy_sol_types::Result<Self::Return> {
13547                <Self::ReturnTuple<
13548                    '_,
13549                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13550                    .map(Into::into)
13551            }
13552        }
13553    };
13554    #[derive(serde::Serialize, serde::Deserialize)]
13555    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13556    /**Function with signature `setHotShotUp()` and selector `0xc8e5e498`.
13557```solidity
13558function setHotShotUp() external;
13559```*/
13560    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13561    #[derive(Clone)]
13562    pub struct setHotShotUpCall;
13563    ///Container type for the return parameters of the [`setHotShotUp()`](setHotShotUpCall) function.
13564    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13565    #[derive(Clone)]
13566    pub struct setHotShotUpReturn {}
13567    #[allow(
13568        non_camel_case_types,
13569        non_snake_case,
13570        clippy::pub_underscore_fields,
13571        clippy::style
13572    )]
13573    const _: () = {
13574        use alloy::sol_types as alloy_sol_types;
13575        {
13576            #[doc(hidden)]
13577            #[allow(dead_code)]
13578            type UnderlyingSolTuple<'a> = ();
13579            #[doc(hidden)]
13580            type UnderlyingRustTuple<'a> = ();
13581            #[cfg(test)]
13582            #[allow(dead_code, unreachable_patterns)]
13583            fn _type_assertion(
13584                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13585            ) {
13586                match _t {
13587                    alloy_sol_types::private::AssertTypeEq::<
13588                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13589                    >(_) => {}
13590                }
13591            }
13592            #[automatically_derived]
13593            #[doc(hidden)]
13594            impl ::core::convert::From<setHotShotUpCall> for UnderlyingRustTuple<'_> {
13595                fn from(value: setHotShotUpCall) -> Self {
13596                    ()
13597                }
13598            }
13599            #[automatically_derived]
13600            #[doc(hidden)]
13601            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotUpCall {
13602                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13603                    Self
13604                }
13605            }
13606        }
13607        {
13608            #[doc(hidden)]
13609            #[allow(dead_code)]
13610            type UnderlyingSolTuple<'a> = ();
13611            #[doc(hidden)]
13612            type UnderlyingRustTuple<'a> = ();
13613            #[cfg(test)]
13614            #[allow(dead_code, unreachable_patterns)]
13615            fn _type_assertion(
13616                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13617            ) {
13618                match _t {
13619                    alloy_sol_types::private::AssertTypeEq::<
13620                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13621                    >(_) => {}
13622                }
13623            }
13624            #[automatically_derived]
13625            #[doc(hidden)]
13626            impl ::core::convert::From<setHotShotUpReturn> for UnderlyingRustTuple<'_> {
13627                fn from(value: setHotShotUpReturn) -> Self {
13628                    ()
13629                }
13630            }
13631            #[automatically_derived]
13632            #[doc(hidden)]
13633            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotUpReturn {
13634                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13635                    Self {}
13636                }
13637            }
13638        }
13639        impl setHotShotUpReturn {
13640            fn _tokenize(
13641                &self,
13642            ) -> <setHotShotUpCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13643                ()
13644            }
13645        }
13646        #[automatically_derived]
13647        impl alloy_sol_types::SolCall for setHotShotUpCall {
13648            type Parameters<'a> = ();
13649            type Token<'a> = <Self::Parameters<
13650                'a,
13651            > as alloy_sol_types::SolType>::Token<'a>;
13652            type Return = setHotShotUpReturn;
13653            type ReturnTuple<'a> = ();
13654            type ReturnToken<'a> = <Self::ReturnTuple<
13655                'a,
13656            > as alloy_sol_types::SolType>::Token<'a>;
13657            const SIGNATURE: &'static str = "setHotShotUp()";
13658            const SELECTOR: [u8; 4] = [200u8, 229u8, 228u8, 152u8];
13659            #[inline]
13660            fn new<'a>(
13661                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13662            ) -> Self {
13663                tuple.into()
13664            }
13665            #[inline]
13666            fn tokenize(&self) -> Self::Token<'_> {
13667                ()
13668            }
13669            #[inline]
13670            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13671                setHotShotUpReturn::_tokenize(ret)
13672            }
13673            #[inline]
13674            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13675                <Self::ReturnTuple<
13676                    '_,
13677                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13678                    .map(Into::into)
13679            }
13680            #[inline]
13681            fn abi_decode_returns_validate(
13682                data: &[u8],
13683            ) -> alloy_sol_types::Result<Self::Return> {
13684                <Self::ReturnTuple<
13685                    '_,
13686                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13687                    .map(Into::into)
13688            }
13689        }
13690    };
13691    #[derive(serde::Serialize, serde::Deserialize)]
13692    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13693    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
13694```solidity
13695function setPermissionedProver(address prover) external;
13696```*/
13697    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13698    #[derive(Clone)]
13699    pub struct setPermissionedProverCall {
13700        #[allow(missing_docs)]
13701        pub prover: alloy::sol_types::private::Address,
13702    }
13703    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
13704    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13705    #[derive(Clone)]
13706    pub struct setPermissionedProverReturn {}
13707    #[allow(
13708        non_camel_case_types,
13709        non_snake_case,
13710        clippy::pub_underscore_fields,
13711        clippy::style
13712    )]
13713    const _: () = {
13714        use alloy::sol_types as alloy_sol_types;
13715        {
13716            #[doc(hidden)]
13717            #[allow(dead_code)]
13718            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
13719            #[doc(hidden)]
13720            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
13721            #[cfg(test)]
13722            #[allow(dead_code, unreachable_patterns)]
13723            fn _type_assertion(
13724                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13725            ) {
13726                match _t {
13727                    alloy_sol_types::private::AssertTypeEq::<
13728                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13729                    >(_) => {}
13730                }
13731            }
13732            #[automatically_derived]
13733            #[doc(hidden)]
13734            impl ::core::convert::From<setPermissionedProverCall>
13735            for UnderlyingRustTuple<'_> {
13736                fn from(value: setPermissionedProverCall) -> Self {
13737                    (value.prover,)
13738                }
13739            }
13740            #[automatically_derived]
13741            #[doc(hidden)]
13742            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13743            for setPermissionedProverCall {
13744                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13745                    Self { prover: tuple.0 }
13746                }
13747            }
13748        }
13749        {
13750            #[doc(hidden)]
13751            #[allow(dead_code)]
13752            type UnderlyingSolTuple<'a> = ();
13753            #[doc(hidden)]
13754            type UnderlyingRustTuple<'a> = ();
13755            #[cfg(test)]
13756            #[allow(dead_code, unreachable_patterns)]
13757            fn _type_assertion(
13758                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13759            ) {
13760                match _t {
13761                    alloy_sol_types::private::AssertTypeEq::<
13762                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13763                    >(_) => {}
13764                }
13765            }
13766            #[automatically_derived]
13767            #[doc(hidden)]
13768            impl ::core::convert::From<setPermissionedProverReturn>
13769            for UnderlyingRustTuple<'_> {
13770                fn from(value: setPermissionedProverReturn) -> Self {
13771                    ()
13772                }
13773            }
13774            #[automatically_derived]
13775            #[doc(hidden)]
13776            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13777            for setPermissionedProverReturn {
13778                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13779                    Self {}
13780                }
13781            }
13782        }
13783        impl setPermissionedProverReturn {
13784            fn _tokenize(
13785                &self,
13786            ) -> <setPermissionedProverCall as alloy_sol_types::SolCall>::ReturnToken<
13787                '_,
13788            > {
13789                ()
13790            }
13791        }
13792        #[automatically_derived]
13793        impl alloy_sol_types::SolCall for setPermissionedProverCall {
13794            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
13795            type Token<'a> = <Self::Parameters<
13796                'a,
13797            > as alloy_sol_types::SolType>::Token<'a>;
13798            type Return = setPermissionedProverReturn;
13799            type ReturnTuple<'a> = ();
13800            type ReturnToken<'a> = <Self::ReturnTuple<
13801                'a,
13802            > as alloy_sol_types::SolType>::Token<'a>;
13803            const SIGNATURE: &'static str = "setPermissionedProver(address)";
13804            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
13805            #[inline]
13806            fn new<'a>(
13807                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13808            ) -> Self {
13809                tuple.into()
13810            }
13811            #[inline]
13812            fn tokenize(&self) -> Self::Token<'_> {
13813                (
13814                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13815                        &self.prover,
13816                    ),
13817                )
13818            }
13819            #[inline]
13820            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13821                setPermissionedProverReturn::_tokenize(ret)
13822            }
13823            #[inline]
13824            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13825                <Self::ReturnTuple<
13826                    '_,
13827                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13828                    .map(Into::into)
13829            }
13830            #[inline]
13831            fn abi_decode_returns_validate(
13832                data: &[u8],
13833            ) -> alloy_sol_types::Result<Self::Return> {
13834                <Self::ReturnTuple<
13835                    '_,
13836                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13837                    .map(Into::into)
13838            }
13839        }
13840    };
13841    #[derive(serde::Serialize, serde::Deserialize)]
13842    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13843    /**Function with signature `setStateHistory((uint64,uint64,uint64,uint256)[])` and selector `0xf5676160`.
13844```solidity
13845function setStateHistory(LightClient.StateHistoryCommitment[] memory _stateHistoryCommitments) external;
13846```*/
13847    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13848    #[derive(Clone)]
13849    pub struct setStateHistoryCall {
13850        #[allow(missing_docs)]
13851        pub _stateHistoryCommitments: alloy::sol_types::private::Vec<
13852            <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
13853        >,
13854    }
13855    ///Container type for the return parameters of the [`setStateHistory((uint64,uint64,uint64,uint256)[])`](setStateHistoryCall) function.
13856    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13857    #[derive(Clone)]
13858    pub struct setStateHistoryReturn {}
13859    #[allow(
13860        non_camel_case_types,
13861        non_snake_case,
13862        clippy::pub_underscore_fields,
13863        clippy::style
13864    )]
13865    const _: () = {
13866        use alloy::sol_types as alloy_sol_types;
13867        {
13868            #[doc(hidden)]
13869            #[allow(dead_code)]
13870            type UnderlyingSolTuple<'a> = (
13871                alloy::sol_types::sol_data::Array<LightClient::StateHistoryCommitment>,
13872            );
13873            #[doc(hidden)]
13874            type UnderlyingRustTuple<'a> = (
13875                alloy::sol_types::private::Vec<
13876                    <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
13877                >,
13878            );
13879            #[cfg(test)]
13880            #[allow(dead_code, unreachable_patterns)]
13881            fn _type_assertion(
13882                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13883            ) {
13884                match _t {
13885                    alloy_sol_types::private::AssertTypeEq::<
13886                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13887                    >(_) => {}
13888                }
13889            }
13890            #[automatically_derived]
13891            #[doc(hidden)]
13892            impl ::core::convert::From<setStateHistoryCall> for UnderlyingRustTuple<'_> {
13893                fn from(value: setStateHistoryCall) -> Self {
13894                    (value._stateHistoryCommitments,)
13895                }
13896            }
13897            #[automatically_derived]
13898            #[doc(hidden)]
13899            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setStateHistoryCall {
13900                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13901                    Self {
13902                        _stateHistoryCommitments: tuple.0,
13903                    }
13904                }
13905            }
13906        }
13907        {
13908            #[doc(hidden)]
13909            #[allow(dead_code)]
13910            type UnderlyingSolTuple<'a> = ();
13911            #[doc(hidden)]
13912            type UnderlyingRustTuple<'a> = ();
13913            #[cfg(test)]
13914            #[allow(dead_code, unreachable_patterns)]
13915            fn _type_assertion(
13916                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13917            ) {
13918                match _t {
13919                    alloy_sol_types::private::AssertTypeEq::<
13920                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13921                    >(_) => {}
13922                }
13923            }
13924            #[automatically_derived]
13925            #[doc(hidden)]
13926            impl ::core::convert::From<setStateHistoryReturn>
13927            for UnderlyingRustTuple<'_> {
13928                fn from(value: setStateHistoryReturn) -> Self {
13929                    ()
13930                }
13931            }
13932            #[automatically_derived]
13933            #[doc(hidden)]
13934            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13935            for setStateHistoryReturn {
13936                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13937                    Self {}
13938                }
13939            }
13940        }
13941        impl setStateHistoryReturn {
13942            fn _tokenize(
13943                &self,
13944            ) -> <setStateHistoryCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13945                ()
13946            }
13947        }
13948        #[automatically_derived]
13949        impl alloy_sol_types::SolCall for setStateHistoryCall {
13950            type Parameters<'a> = (
13951                alloy::sol_types::sol_data::Array<LightClient::StateHistoryCommitment>,
13952            );
13953            type Token<'a> = <Self::Parameters<
13954                'a,
13955            > as alloy_sol_types::SolType>::Token<'a>;
13956            type Return = setStateHistoryReturn;
13957            type ReturnTuple<'a> = ();
13958            type ReturnToken<'a> = <Self::ReturnTuple<
13959                'a,
13960            > as alloy_sol_types::SolType>::Token<'a>;
13961            const SIGNATURE: &'static str = "setStateHistory((uint64,uint64,uint64,uint256)[])";
13962            const SELECTOR: [u8; 4] = [245u8, 103u8, 97u8, 96u8];
13963            #[inline]
13964            fn new<'a>(
13965                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13966            ) -> Self {
13967                tuple.into()
13968            }
13969            #[inline]
13970            fn tokenize(&self) -> Self::Token<'_> {
13971                (
13972                    <alloy::sol_types::sol_data::Array<
13973                        LightClient::StateHistoryCommitment,
13974                    > as alloy_sol_types::SolType>::tokenize(
13975                        &self._stateHistoryCommitments,
13976                    ),
13977                )
13978            }
13979            #[inline]
13980            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13981                setStateHistoryReturn::_tokenize(ret)
13982            }
13983            #[inline]
13984            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13985                <Self::ReturnTuple<
13986                    '_,
13987                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13988                    .map(Into::into)
13989            }
13990            #[inline]
13991            fn abi_decode_returns_validate(
13992                data: &[u8],
13993            ) -> alloy_sol_types::Result<Self::Return> {
13994                <Self::ReturnTuple<
13995                    '_,
13996                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13997                    .map(Into::into)
13998            }
13999        }
14000    };
14001    #[derive(serde::Serialize, serde::Deserialize)]
14002    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14003    /**Function with signature `setStateHistoryRetentionPeriod(uint32)` and selector `0x433dba9f`.
14004```solidity
14005function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
14006```*/
14007    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14008    #[derive(Clone)]
14009    pub struct setStateHistoryRetentionPeriodCall {
14010        #[allow(missing_docs)]
14011        pub historySeconds: u32,
14012    }
14013    ///Container type for the return parameters of the [`setStateHistoryRetentionPeriod(uint32)`](setStateHistoryRetentionPeriodCall) function.
14014    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14015    #[derive(Clone)]
14016    pub struct setStateHistoryRetentionPeriodReturn {}
14017    #[allow(
14018        non_camel_case_types,
14019        non_snake_case,
14020        clippy::pub_underscore_fields,
14021        clippy::style
14022    )]
14023    const _: () = {
14024        use alloy::sol_types as alloy_sol_types;
14025        {
14026            #[doc(hidden)]
14027            #[allow(dead_code)]
14028            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
14029            #[doc(hidden)]
14030            type UnderlyingRustTuple<'a> = (u32,);
14031            #[cfg(test)]
14032            #[allow(dead_code, unreachable_patterns)]
14033            fn _type_assertion(
14034                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14035            ) {
14036                match _t {
14037                    alloy_sol_types::private::AssertTypeEq::<
14038                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14039                    >(_) => {}
14040                }
14041            }
14042            #[automatically_derived]
14043            #[doc(hidden)]
14044            impl ::core::convert::From<setStateHistoryRetentionPeriodCall>
14045            for UnderlyingRustTuple<'_> {
14046                fn from(value: setStateHistoryRetentionPeriodCall) -> Self {
14047                    (value.historySeconds,)
14048                }
14049            }
14050            #[automatically_derived]
14051            #[doc(hidden)]
14052            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14053            for setStateHistoryRetentionPeriodCall {
14054                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14055                    Self { historySeconds: tuple.0 }
14056                }
14057            }
14058        }
14059        {
14060            #[doc(hidden)]
14061            #[allow(dead_code)]
14062            type UnderlyingSolTuple<'a> = ();
14063            #[doc(hidden)]
14064            type UnderlyingRustTuple<'a> = ();
14065            #[cfg(test)]
14066            #[allow(dead_code, unreachable_patterns)]
14067            fn _type_assertion(
14068                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14069            ) {
14070                match _t {
14071                    alloy_sol_types::private::AssertTypeEq::<
14072                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14073                    >(_) => {}
14074                }
14075            }
14076            #[automatically_derived]
14077            #[doc(hidden)]
14078            impl ::core::convert::From<setStateHistoryRetentionPeriodReturn>
14079            for UnderlyingRustTuple<'_> {
14080                fn from(value: setStateHistoryRetentionPeriodReturn) -> Self {
14081                    ()
14082                }
14083            }
14084            #[automatically_derived]
14085            #[doc(hidden)]
14086            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14087            for setStateHistoryRetentionPeriodReturn {
14088                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14089                    Self {}
14090                }
14091            }
14092        }
14093        impl setStateHistoryRetentionPeriodReturn {
14094            fn _tokenize(
14095                &self,
14096            ) -> <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
14097                '_,
14098            > {
14099                ()
14100            }
14101        }
14102        #[automatically_derived]
14103        impl alloy_sol_types::SolCall for setStateHistoryRetentionPeriodCall {
14104            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
14105            type Token<'a> = <Self::Parameters<
14106                'a,
14107            > as alloy_sol_types::SolType>::Token<'a>;
14108            type Return = setStateHistoryRetentionPeriodReturn;
14109            type ReturnTuple<'a> = ();
14110            type ReturnToken<'a> = <Self::ReturnTuple<
14111                'a,
14112            > as alloy_sol_types::SolType>::Token<'a>;
14113            const SIGNATURE: &'static str = "setStateHistoryRetentionPeriod(uint32)";
14114            const SELECTOR: [u8; 4] = [67u8, 61u8, 186u8, 159u8];
14115            #[inline]
14116            fn new<'a>(
14117                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14118            ) -> Self {
14119                tuple.into()
14120            }
14121            #[inline]
14122            fn tokenize(&self) -> Self::Token<'_> {
14123                (
14124                    <alloy::sol_types::sol_data::Uint<
14125                        32,
14126                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
14127                )
14128            }
14129            #[inline]
14130            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14131                setStateHistoryRetentionPeriodReturn::_tokenize(ret)
14132            }
14133            #[inline]
14134            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14135                <Self::ReturnTuple<
14136                    '_,
14137                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14138                    .map(Into::into)
14139            }
14140            #[inline]
14141            fn abi_decode_returns_validate(
14142                data: &[u8],
14143            ) -> alloy_sol_types::Result<Self::Return> {
14144                <Self::ReturnTuple<
14145                    '_,
14146                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14147                    .map(Into::into)
14148            }
14149        }
14150    };
14151    #[derive(serde::Serialize, serde::Deserialize)]
14152    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14153    /**Function with signature `setVotingStakeTableState((uint256,uint256,uint256,uint256))` and selector `0x623a1338`.
14154```solidity
14155function setVotingStakeTableState(LightClient.StakeTableState memory stake) external;
14156```*/
14157    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14158    #[derive(Clone)]
14159    pub struct setVotingStakeTableStateCall {
14160        #[allow(missing_docs)]
14161        pub stake: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
14162    }
14163    ///Container type for the return parameters of the [`setVotingStakeTableState((uint256,uint256,uint256,uint256))`](setVotingStakeTableStateCall) function.
14164    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14165    #[derive(Clone)]
14166    pub struct setVotingStakeTableStateReturn {}
14167    #[allow(
14168        non_camel_case_types,
14169        non_snake_case,
14170        clippy::pub_underscore_fields,
14171        clippy::style
14172    )]
14173    const _: () = {
14174        use alloy::sol_types as alloy_sol_types;
14175        {
14176            #[doc(hidden)]
14177            #[allow(dead_code)]
14178            type UnderlyingSolTuple<'a> = (LightClient::StakeTableState,);
14179            #[doc(hidden)]
14180            type UnderlyingRustTuple<'a> = (
14181                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
14182            );
14183            #[cfg(test)]
14184            #[allow(dead_code, unreachable_patterns)]
14185            fn _type_assertion(
14186                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14187            ) {
14188                match _t {
14189                    alloy_sol_types::private::AssertTypeEq::<
14190                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14191                    >(_) => {}
14192                }
14193            }
14194            #[automatically_derived]
14195            #[doc(hidden)]
14196            impl ::core::convert::From<setVotingStakeTableStateCall>
14197            for UnderlyingRustTuple<'_> {
14198                fn from(value: setVotingStakeTableStateCall) -> Self {
14199                    (value.stake,)
14200                }
14201            }
14202            #[automatically_derived]
14203            #[doc(hidden)]
14204            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14205            for setVotingStakeTableStateCall {
14206                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14207                    Self { stake: tuple.0 }
14208                }
14209            }
14210        }
14211        {
14212            #[doc(hidden)]
14213            #[allow(dead_code)]
14214            type UnderlyingSolTuple<'a> = ();
14215            #[doc(hidden)]
14216            type UnderlyingRustTuple<'a> = ();
14217            #[cfg(test)]
14218            #[allow(dead_code, unreachable_patterns)]
14219            fn _type_assertion(
14220                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14221            ) {
14222                match _t {
14223                    alloy_sol_types::private::AssertTypeEq::<
14224                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14225                    >(_) => {}
14226                }
14227            }
14228            #[automatically_derived]
14229            #[doc(hidden)]
14230            impl ::core::convert::From<setVotingStakeTableStateReturn>
14231            for UnderlyingRustTuple<'_> {
14232                fn from(value: setVotingStakeTableStateReturn) -> Self {
14233                    ()
14234                }
14235            }
14236            #[automatically_derived]
14237            #[doc(hidden)]
14238            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14239            for setVotingStakeTableStateReturn {
14240                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14241                    Self {}
14242                }
14243            }
14244        }
14245        impl setVotingStakeTableStateReturn {
14246            fn _tokenize(
14247                &self,
14248            ) -> <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
14249                '_,
14250            > {
14251                ()
14252            }
14253        }
14254        #[automatically_derived]
14255        impl alloy_sol_types::SolCall for setVotingStakeTableStateCall {
14256            type Parameters<'a> = (LightClient::StakeTableState,);
14257            type Token<'a> = <Self::Parameters<
14258                'a,
14259            > as alloy_sol_types::SolType>::Token<'a>;
14260            type Return = setVotingStakeTableStateReturn;
14261            type ReturnTuple<'a> = ();
14262            type ReturnToken<'a> = <Self::ReturnTuple<
14263                'a,
14264            > as alloy_sol_types::SolType>::Token<'a>;
14265            const SIGNATURE: &'static str = "setVotingStakeTableState((uint256,uint256,uint256,uint256))";
14266            const SELECTOR: [u8; 4] = [98u8, 58u8, 19u8, 56u8];
14267            #[inline]
14268            fn new<'a>(
14269                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14270            ) -> Self {
14271                tuple.into()
14272            }
14273            #[inline]
14274            fn tokenize(&self) -> Self::Token<'_> {
14275                (
14276                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
14277                        &self.stake,
14278                    ),
14279                )
14280            }
14281            #[inline]
14282            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14283                setVotingStakeTableStateReturn::_tokenize(ret)
14284            }
14285            #[inline]
14286            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14287                <Self::ReturnTuple<
14288                    '_,
14289                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14290                    .map(Into::into)
14291            }
14292            #[inline]
14293            fn abi_decode_returns_validate(
14294                data: &[u8],
14295            ) -> alloy_sol_types::Result<Self::Return> {
14296                <Self::ReturnTuple<
14297                    '_,
14298                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14299                    .map(Into::into)
14300            }
14301        }
14302    };
14303    #[derive(serde::Serialize, serde::Deserialize)]
14304    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14305    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
14306```solidity
14307function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
14308```*/
14309    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14310    #[derive(Clone)]
14311    pub struct setstateHistoryRetentionPeriodCall {
14312        #[allow(missing_docs)]
14313        pub historySeconds: u32,
14314    }
14315    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
14316    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14317    #[derive(Clone)]
14318    pub struct setstateHistoryRetentionPeriodReturn {}
14319    #[allow(
14320        non_camel_case_types,
14321        non_snake_case,
14322        clippy::pub_underscore_fields,
14323        clippy::style
14324    )]
14325    const _: () = {
14326        use alloy::sol_types as alloy_sol_types;
14327        {
14328            #[doc(hidden)]
14329            #[allow(dead_code)]
14330            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
14331            #[doc(hidden)]
14332            type UnderlyingRustTuple<'a> = (u32,);
14333            #[cfg(test)]
14334            #[allow(dead_code, unreachable_patterns)]
14335            fn _type_assertion(
14336                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14337            ) {
14338                match _t {
14339                    alloy_sol_types::private::AssertTypeEq::<
14340                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14341                    >(_) => {}
14342                }
14343            }
14344            #[automatically_derived]
14345            #[doc(hidden)]
14346            impl ::core::convert::From<setstateHistoryRetentionPeriodCall>
14347            for UnderlyingRustTuple<'_> {
14348                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
14349                    (value.historySeconds,)
14350                }
14351            }
14352            #[automatically_derived]
14353            #[doc(hidden)]
14354            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14355            for setstateHistoryRetentionPeriodCall {
14356                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14357                    Self { historySeconds: tuple.0 }
14358                }
14359            }
14360        }
14361        {
14362            #[doc(hidden)]
14363            #[allow(dead_code)]
14364            type UnderlyingSolTuple<'a> = ();
14365            #[doc(hidden)]
14366            type UnderlyingRustTuple<'a> = ();
14367            #[cfg(test)]
14368            #[allow(dead_code, unreachable_patterns)]
14369            fn _type_assertion(
14370                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14371            ) {
14372                match _t {
14373                    alloy_sol_types::private::AssertTypeEq::<
14374                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14375                    >(_) => {}
14376                }
14377            }
14378            #[automatically_derived]
14379            #[doc(hidden)]
14380            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn>
14381            for UnderlyingRustTuple<'_> {
14382                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
14383                    ()
14384                }
14385            }
14386            #[automatically_derived]
14387            #[doc(hidden)]
14388            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14389            for setstateHistoryRetentionPeriodReturn {
14390                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14391                    Self {}
14392                }
14393            }
14394        }
14395        impl setstateHistoryRetentionPeriodReturn {
14396            fn _tokenize(
14397                &self,
14398            ) -> <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
14399                '_,
14400            > {
14401                ()
14402            }
14403        }
14404        #[automatically_derived]
14405        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
14406            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
14407            type Token<'a> = <Self::Parameters<
14408                'a,
14409            > as alloy_sol_types::SolType>::Token<'a>;
14410            type Return = setstateHistoryRetentionPeriodReturn;
14411            type ReturnTuple<'a> = ();
14412            type ReturnToken<'a> = <Self::ReturnTuple<
14413                'a,
14414            > as alloy_sol_types::SolType>::Token<'a>;
14415            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
14416            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
14417            #[inline]
14418            fn new<'a>(
14419                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14420            ) -> Self {
14421                tuple.into()
14422            }
14423            #[inline]
14424            fn tokenize(&self) -> Self::Token<'_> {
14425                (
14426                    <alloy::sol_types::sol_data::Uint<
14427                        32,
14428                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
14429                )
14430            }
14431            #[inline]
14432            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14433                setstateHistoryRetentionPeriodReturn::_tokenize(ret)
14434            }
14435            #[inline]
14436            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14437                <Self::ReturnTuple<
14438                    '_,
14439                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14440                    .map(Into::into)
14441            }
14442            #[inline]
14443            fn abi_decode_returns_validate(
14444                data: &[u8],
14445            ) -> alloy_sol_types::Result<Self::Return> {
14446                <Self::ReturnTuple<
14447                    '_,
14448                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14449                    .map(Into::into)
14450            }
14451        }
14452    };
14453    #[derive(serde::Serialize, serde::Deserialize)]
14454    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14455    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
14456```solidity
14457function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
14458```*/
14459    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14460    #[derive(Clone)]
14461    pub struct stateHistoryCommitmentsCall(
14462        pub alloy::sol_types::private::primitives::aliases::U256,
14463    );
14464    #[derive(serde::Serialize, serde::Deserialize)]
14465    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14466    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
14467    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14468    #[derive(Clone)]
14469    pub struct stateHistoryCommitmentsReturn {
14470        #[allow(missing_docs)]
14471        pub l1BlockHeight: u64,
14472        #[allow(missing_docs)]
14473        pub l1BlockTimestamp: u64,
14474        #[allow(missing_docs)]
14475        pub hotShotBlockHeight: u64,
14476        #[allow(missing_docs)]
14477        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14478    }
14479    #[allow(
14480        non_camel_case_types,
14481        non_snake_case,
14482        clippy::pub_underscore_fields,
14483        clippy::style
14484    )]
14485    const _: () = {
14486        use alloy::sol_types as alloy_sol_types;
14487        {
14488            #[doc(hidden)]
14489            #[allow(dead_code)]
14490            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
14491            #[doc(hidden)]
14492            type UnderlyingRustTuple<'a> = (
14493                alloy::sol_types::private::primitives::aliases::U256,
14494            );
14495            #[cfg(test)]
14496            #[allow(dead_code, unreachable_patterns)]
14497            fn _type_assertion(
14498                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14499            ) {
14500                match _t {
14501                    alloy_sol_types::private::AssertTypeEq::<
14502                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14503                    >(_) => {}
14504                }
14505            }
14506            #[automatically_derived]
14507            #[doc(hidden)]
14508            impl ::core::convert::From<stateHistoryCommitmentsCall>
14509            for UnderlyingRustTuple<'_> {
14510                fn from(value: stateHistoryCommitmentsCall) -> Self {
14511                    (value.0,)
14512                }
14513            }
14514            #[automatically_derived]
14515            #[doc(hidden)]
14516            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14517            for stateHistoryCommitmentsCall {
14518                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14519                    Self(tuple.0)
14520                }
14521            }
14522        }
14523        {
14524            #[doc(hidden)]
14525            #[allow(dead_code)]
14526            type UnderlyingSolTuple<'a> = (
14527                alloy::sol_types::sol_data::Uint<64>,
14528                alloy::sol_types::sol_data::Uint<64>,
14529                alloy::sol_types::sol_data::Uint<64>,
14530                BN254::ScalarField,
14531            );
14532            #[doc(hidden)]
14533            type UnderlyingRustTuple<'a> = (
14534                u64,
14535                u64,
14536                u64,
14537                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14538            );
14539            #[cfg(test)]
14540            #[allow(dead_code, unreachable_patterns)]
14541            fn _type_assertion(
14542                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14543            ) {
14544                match _t {
14545                    alloy_sol_types::private::AssertTypeEq::<
14546                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14547                    >(_) => {}
14548                }
14549            }
14550            #[automatically_derived]
14551            #[doc(hidden)]
14552            impl ::core::convert::From<stateHistoryCommitmentsReturn>
14553            for UnderlyingRustTuple<'_> {
14554                fn from(value: stateHistoryCommitmentsReturn) -> Self {
14555                    (
14556                        value.l1BlockHeight,
14557                        value.l1BlockTimestamp,
14558                        value.hotShotBlockHeight,
14559                        value.hotShotBlockCommRoot,
14560                    )
14561                }
14562            }
14563            #[automatically_derived]
14564            #[doc(hidden)]
14565            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14566            for stateHistoryCommitmentsReturn {
14567                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14568                    Self {
14569                        l1BlockHeight: tuple.0,
14570                        l1BlockTimestamp: tuple.1,
14571                        hotShotBlockHeight: tuple.2,
14572                        hotShotBlockCommRoot: tuple.3,
14573                    }
14574                }
14575            }
14576        }
14577        impl stateHistoryCommitmentsReturn {
14578            fn _tokenize(
14579                &self,
14580            ) -> <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::ReturnToken<
14581                '_,
14582            > {
14583                (
14584                    <alloy::sol_types::sol_data::Uint<
14585                        64,
14586                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
14587                    <alloy::sol_types::sol_data::Uint<
14588                        64,
14589                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
14590                    <alloy::sol_types::sol_data::Uint<
14591                        64,
14592                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
14593                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
14594                        &self.hotShotBlockCommRoot,
14595                    ),
14596                )
14597            }
14598        }
14599        #[automatically_derived]
14600        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
14601            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
14602            type Token<'a> = <Self::Parameters<
14603                'a,
14604            > as alloy_sol_types::SolType>::Token<'a>;
14605            type Return = stateHistoryCommitmentsReturn;
14606            type ReturnTuple<'a> = (
14607                alloy::sol_types::sol_data::Uint<64>,
14608                alloy::sol_types::sol_data::Uint<64>,
14609                alloy::sol_types::sol_data::Uint<64>,
14610                BN254::ScalarField,
14611            );
14612            type ReturnToken<'a> = <Self::ReturnTuple<
14613                'a,
14614            > as alloy_sol_types::SolType>::Token<'a>;
14615            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
14616            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
14617            #[inline]
14618            fn new<'a>(
14619                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14620            ) -> Self {
14621                tuple.into()
14622            }
14623            #[inline]
14624            fn tokenize(&self) -> Self::Token<'_> {
14625                (
14626                    <alloy::sol_types::sol_data::Uint<
14627                        256,
14628                    > as alloy_sol_types::SolType>::tokenize(&self.0),
14629                )
14630            }
14631            #[inline]
14632            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14633                stateHistoryCommitmentsReturn::_tokenize(ret)
14634            }
14635            #[inline]
14636            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14637                <Self::ReturnTuple<
14638                    '_,
14639                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14640                    .map(Into::into)
14641            }
14642            #[inline]
14643            fn abi_decode_returns_validate(
14644                data: &[u8],
14645            ) -> alloy_sol_types::Result<Self::Return> {
14646                <Self::ReturnTuple<
14647                    '_,
14648                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14649                    .map(Into::into)
14650            }
14651        }
14652    };
14653    #[derive(serde::Serialize, serde::Deserialize)]
14654    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14655    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
14656```solidity
14657function stateHistoryFirstIndex() external view returns (uint64);
14658```*/
14659    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14660    #[derive(Clone)]
14661    pub struct stateHistoryFirstIndexCall;
14662    #[derive(serde::Serialize, serde::Deserialize)]
14663    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14664    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
14665    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14666    #[derive(Clone)]
14667    pub struct stateHistoryFirstIndexReturn {
14668        #[allow(missing_docs)]
14669        pub _0: u64,
14670    }
14671    #[allow(
14672        non_camel_case_types,
14673        non_snake_case,
14674        clippy::pub_underscore_fields,
14675        clippy::style
14676    )]
14677    const _: () = {
14678        use alloy::sol_types as alloy_sol_types;
14679        {
14680            #[doc(hidden)]
14681            #[allow(dead_code)]
14682            type UnderlyingSolTuple<'a> = ();
14683            #[doc(hidden)]
14684            type UnderlyingRustTuple<'a> = ();
14685            #[cfg(test)]
14686            #[allow(dead_code, unreachable_patterns)]
14687            fn _type_assertion(
14688                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14689            ) {
14690                match _t {
14691                    alloy_sol_types::private::AssertTypeEq::<
14692                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14693                    >(_) => {}
14694                }
14695            }
14696            #[automatically_derived]
14697            #[doc(hidden)]
14698            impl ::core::convert::From<stateHistoryFirstIndexCall>
14699            for UnderlyingRustTuple<'_> {
14700                fn from(value: stateHistoryFirstIndexCall) -> Self {
14701                    ()
14702                }
14703            }
14704            #[automatically_derived]
14705            #[doc(hidden)]
14706            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14707            for stateHistoryFirstIndexCall {
14708                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14709                    Self
14710                }
14711            }
14712        }
14713        {
14714            #[doc(hidden)]
14715            #[allow(dead_code)]
14716            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
14717            #[doc(hidden)]
14718            type UnderlyingRustTuple<'a> = (u64,);
14719            #[cfg(test)]
14720            #[allow(dead_code, unreachable_patterns)]
14721            fn _type_assertion(
14722                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14723            ) {
14724                match _t {
14725                    alloy_sol_types::private::AssertTypeEq::<
14726                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14727                    >(_) => {}
14728                }
14729            }
14730            #[automatically_derived]
14731            #[doc(hidden)]
14732            impl ::core::convert::From<stateHistoryFirstIndexReturn>
14733            for UnderlyingRustTuple<'_> {
14734                fn from(value: stateHistoryFirstIndexReturn) -> Self {
14735                    (value._0,)
14736                }
14737            }
14738            #[automatically_derived]
14739            #[doc(hidden)]
14740            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14741            for stateHistoryFirstIndexReturn {
14742                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14743                    Self { _0: tuple.0 }
14744                }
14745            }
14746        }
14747        #[automatically_derived]
14748        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
14749            type Parameters<'a> = ();
14750            type Token<'a> = <Self::Parameters<
14751                'a,
14752            > as alloy_sol_types::SolType>::Token<'a>;
14753            type Return = u64;
14754            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
14755            type ReturnToken<'a> = <Self::ReturnTuple<
14756                'a,
14757            > as alloy_sol_types::SolType>::Token<'a>;
14758            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
14759            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
14760            #[inline]
14761            fn new<'a>(
14762                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14763            ) -> Self {
14764                tuple.into()
14765            }
14766            #[inline]
14767            fn tokenize(&self) -> Self::Token<'_> {
14768                ()
14769            }
14770            #[inline]
14771            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14772                (
14773                    <alloy::sol_types::sol_data::Uint<
14774                        64,
14775                    > as alloy_sol_types::SolType>::tokenize(ret),
14776                )
14777            }
14778            #[inline]
14779            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14780                <Self::ReturnTuple<
14781                    '_,
14782                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14783                    .map(|r| {
14784                        let r: stateHistoryFirstIndexReturn = r.into();
14785                        r._0
14786                    })
14787            }
14788            #[inline]
14789            fn abi_decode_returns_validate(
14790                data: &[u8],
14791            ) -> alloy_sol_types::Result<Self::Return> {
14792                <Self::ReturnTuple<
14793                    '_,
14794                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14795                    .map(|r| {
14796                        let r: stateHistoryFirstIndexReturn = r.into();
14797                        r._0
14798                    })
14799            }
14800        }
14801    };
14802    #[derive(serde::Serialize, serde::Deserialize)]
14803    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14804    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
14805```solidity
14806function stateHistoryRetentionPeriod() external view returns (uint32);
14807```*/
14808    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14809    #[derive(Clone)]
14810    pub struct stateHistoryRetentionPeriodCall;
14811    #[derive(serde::Serialize, serde::Deserialize)]
14812    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14813    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
14814    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14815    #[derive(Clone)]
14816    pub struct stateHistoryRetentionPeriodReturn {
14817        #[allow(missing_docs)]
14818        pub _0: u32,
14819    }
14820    #[allow(
14821        non_camel_case_types,
14822        non_snake_case,
14823        clippy::pub_underscore_fields,
14824        clippy::style
14825    )]
14826    const _: () = {
14827        use alloy::sol_types as alloy_sol_types;
14828        {
14829            #[doc(hidden)]
14830            #[allow(dead_code)]
14831            type UnderlyingSolTuple<'a> = ();
14832            #[doc(hidden)]
14833            type UnderlyingRustTuple<'a> = ();
14834            #[cfg(test)]
14835            #[allow(dead_code, unreachable_patterns)]
14836            fn _type_assertion(
14837                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14838            ) {
14839                match _t {
14840                    alloy_sol_types::private::AssertTypeEq::<
14841                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14842                    >(_) => {}
14843                }
14844            }
14845            #[automatically_derived]
14846            #[doc(hidden)]
14847            impl ::core::convert::From<stateHistoryRetentionPeriodCall>
14848            for UnderlyingRustTuple<'_> {
14849                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
14850                    ()
14851                }
14852            }
14853            #[automatically_derived]
14854            #[doc(hidden)]
14855            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14856            for stateHistoryRetentionPeriodCall {
14857                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14858                    Self
14859                }
14860            }
14861        }
14862        {
14863            #[doc(hidden)]
14864            #[allow(dead_code)]
14865            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
14866            #[doc(hidden)]
14867            type UnderlyingRustTuple<'a> = (u32,);
14868            #[cfg(test)]
14869            #[allow(dead_code, unreachable_patterns)]
14870            fn _type_assertion(
14871                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14872            ) {
14873                match _t {
14874                    alloy_sol_types::private::AssertTypeEq::<
14875                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14876                    >(_) => {}
14877                }
14878            }
14879            #[automatically_derived]
14880            #[doc(hidden)]
14881            impl ::core::convert::From<stateHistoryRetentionPeriodReturn>
14882            for UnderlyingRustTuple<'_> {
14883                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
14884                    (value._0,)
14885                }
14886            }
14887            #[automatically_derived]
14888            #[doc(hidden)]
14889            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14890            for stateHistoryRetentionPeriodReturn {
14891                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14892                    Self { _0: tuple.0 }
14893                }
14894            }
14895        }
14896        #[automatically_derived]
14897        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
14898            type Parameters<'a> = ();
14899            type Token<'a> = <Self::Parameters<
14900                'a,
14901            > as alloy_sol_types::SolType>::Token<'a>;
14902            type Return = u32;
14903            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
14904            type ReturnToken<'a> = <Self::ReturnTuple<
14905                'a,
14906            > as alloy_sol_types::SolType>::Token<'a>;
14907            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
14908            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
14909            #[inline]
14910            fn new<'a>(
14911                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14912            ) -> Self {
14913                tuple.into()
14914            }
14915            #[inline]
14916            fn tokenize(&self) -> Self::Token<'_> {
14917                ()
14918            }
14919            #[inline]
14920            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14921                (
14922                    <alloy::sol_types::sol_data::Uint<
14923                        32,
14924                    > as alloy_sol_types::SolType>::tokenize(ret),
14925                )
14926            }
14927            #[inline]
14928            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14929                <Self::ReturnTuple<
14930                    '_,
14931                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14932                    .map(|r| {
14933                        let r: stateHistoryRetentionPeriodReturn = r.into();
14934                        r._0
14935                    })
14936            }
14937            #[inline]
14938            fn abi_decode_returns_validate(
14939                data: &[u8],
14940            ) -> alloy_sol_types::Result<Self::Return> {
14941                <Self::ReturnTuple<
14942                    '_,
14943                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14944                    .map(|r| {
14945                        let r: stateHistoryRetentionPeriodReturn = r.into();
14946                        r._0
14947                    })
14948            }
14949        }
14950    };
14951    #[derive(serde::Serialize, serde::Deserialize)]
14952    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14953    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
14954```solidity
14955function transferOwnership(address newOwner) external;
14956```*/
14957    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14958    #[derive(Clone)]
14959    pub struct transferOwnershipCall {
14960        #[allow(missing_docs)]
14961        pub newOwner: alloy::sol_types::private::Address,
14962    }
14963    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
14964    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14965    #[derive(Clone)]
14966    pub struct transferOwnershipReturn {}
14967    #[allow(
14968        non_camel_case_types,
14969        non_snake_case,
14970        clippy::pub_underscore_fields,
14971        clippy::style
14972    )]
14973    const _: () = {
14974        use alloy::sol_types as alloy_sol_types;
14975        {
14976            #[doc(hidden)]
14977            #[allow(dead_code)]
14978            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
14979            #[doc(hidden)]
14980            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
14981            #[cfg(test)]
14982            #[allow(dead_code, unreachable_patterns)]
14983            fn _type_assertion(
14984                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14985            ) {
14986                match _t {
14987                    alloy_sol_types::private::AssertTypeEq::<
14988                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14989                    >(_) => {}
14990                }
14991            }
14992            #[automatically_derived]
14993            #[doc(hidden)]
14994            impl ::core::convert::From<transferOwnershipCall>
14995            for UnderlyingRustTuple<'_> {
14996                fn from(value: transferOwnershipCall) -> Self {
14997                    (value.newOwner,)
14998                }
14999            }
15000            #[automatically_derived]
15001            #[doc(hidden)]
15002            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15003            for transferOwnershipCall {
15004                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15005                    Self { newOwner: tuple.0 }
15006                }
15007            }
15008        }
15009        {
15010            #[doc(hidden)]
15011            #[allow(dead_code)]
15012            type UnderlyingSolTuple<'a> = ();
15013            #[doc(hidden)]
15014            type UnderlyingRustTuple<'a> = ();
15015            #[cfg(test)]
15016            #[allow(dead_code, unreachable_patterns)]
15017            fn _type_assertion(
15018                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15019            ) {
15020                match _t {
15021                    alloy_sol_types::private::AssertTypeEq::<
15022                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15023                    >(_) => {}
15024                }
15025            }
15026            #[automatically_derived]
15027            #[doc(hidden)]
15028            impl ::core::convert::From<transferOwnershipReturn>
15029            for UnderlyingRustTuple<'_> {
15030                fn from(value: transferOwnershipReturn) -> Self {
15031                    ()
15032                }
15033            }
15034            #[automatically_derived]
15035            #[doc(hidden)]
15036            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15037            for transferOwnershipReturn {
15038                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15039                    Self {}
15040                }
15041            }
15042        }
15043        impl transferOwnershipReturn {
15044            fn _tokenize(
15045                &self,
15046            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
15047                ()
15048            }
15049        }
15050        #[automatically_derived]
15051        impl alloy_sol_types::SolCall for transferOwnershipCall {
15052            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
15053            type Token<'a> = <Self::Parameters<
15054                'a,
15055            > as alloy_sol_types::SolType>::Token<'a>;
15056            type Return = transferOwnershipReturn;
15057            type ReturnTuple<'a> = ();
15058            type ReturnToken<'a> = <Self::ReturnTuple<
15059                'a,
15060            > as alloy_sol_types::SolType>::Token<'a>;
15061            const SIGNATURE: &'static str = "transferOwnership(address)";
15062            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
15063            #[inline]
15064            fn new<'a>(
15065                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15066            ) -> Self {
15067                tuple.into()
15068            }
15069            #[inline]
15070            fn tokenize(&self) -> Self::Token<'_> {
15071                (
15072                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15073                        &self.newOwner,
15074                    ),
15075                )
15076            }
15077            #[inline]
15078            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15079                transferOwnershipReturn::_tokenize(ret)
15080            }
15081            #[inline]
15082            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15083                <Self::ReturnTuple<
15084                    '_,
15085                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15086                    .map(Into::into)
15087            }
15088            #[inline]
15089            fn abi_decode_returns_validate(
15090                data: &[u8],
15091            ) -> alloy_sol_types::Result<Self::Return> {
15092                <Self::ReturnTuple<
15093                    '_,
15094                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15095                    .map(Into::into)
15096            }
15097        }
15098    };
15099    #[derive(serde::Serialize, serde::Deserialize)]
15100    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15101    /**Function with signature `updateEpochStartBlock(uint64)` and selector `0x167ac618`.
15102```solidity
15103function updateEpochStartBlock(uint64 newEpochStartBlock) external;
15104```*/
15105    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15106    #[derive(Clone)]
15107    pub struct updateEpochStartBlockCall {
15108        #[allow(missing_docs)]
15109        pub newEpochStartBlock: u64,
15110    }
15111    ///Container type for the return parameters of the [`updateEpochStartBlock(uint64)`](updateEpochStartBlockCall) function.
15112    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15113    #[derive(Clone)]
15114    pub struct updateEpochStartBlockReturn {}
15115    #[allow(
15116        non_camel_case_types,
15117        non_snake_case,
15118        clippy::pub_underscore_fields,
15119        clippy::style
15120    )]
15121    const _: () = {
15122        use alloy::sol_types as alloy_sol_types;
15123        {
15124            #[doc(hidden)]
15125            #[allow(dead_code)]
15126            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
15127            #[doc(hidden)]
15128            type UnderlyingRustTuple<'a> = (u64,);
15129            #[cfg(test)]
15130            #[allow(dead_code, unreachable_patterns)]
15131            fn _type_assertion(
15132                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15133            ) {
15134                match _t {
15135                    alloy_sol_types::private::AssertTypeEq::<
15136                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15137                    >(_) => {}
15138                }
15139            }
15140            #[automatically_derived]
15141            #[doc(hidden)]
15142            impl ::core::convert::From<updateEpochStartBlockCall>
15143            for UnderlyingRustTuple<'_> {
15144                fn from(value: updateEpochStartBlockCall) -> Self {
15145                    (value.newEpochStartBlock,)
15146                }
15147            }
15148            #[automatically_derived]
15149            #[doc(hidden)]
15150            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15151            for updateEpochStartBlockCall {
15152                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15153                    Self {
15154                        newEpochStartBlock: tuple.0,
15155                    }
15156                }
15157            }
15158        }
15159        {
15160            #[doc(hidden)]
15161            #[allow(dead_code)]
15162            type UnderlyingSolTuple<'a> = ();
15163            #[doc(hidden)]
15164            type UnderlyingRustTuple<'a> = ();
15165            #[cfg(test)]
15166            #[allow(dead_code, unreachable_patterns)]
15167            fn _type_assertion(
15168                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15169            ) {
15170                match _t {
15171                    alloy_sol_types::private::AssertTypeEq::<
15172                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15173                    >(_) => {}
15174                }
15175            }
15176            #[automatically_derived]
15177            #[doc(hidden)]
15178            impl ::core::convert::From<updateEpochStartBlockReturn>
15179            for UnderlyingRustTuple<'_> {
15180                fn from(value: updateEpochStartBlockReturn) -> Self {
15181                    ()
15182                }
15183            }
15184            #[automatically_derived]
15185            #[doc(hidden)]
15186            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15187            for updateEpochStartBlockReturn {
15188                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15189                    Self {}
15190                }
15191            }
15192        }
15193        impl updateEpochStartBlockReturn {
15194            fn _tokenize(
15195                &self,
15196            ) -> <updateEpochStartBlockCall as alloy_sol_types::SolCall>::ReturnToken<
15197                '_,
15198            > {
15199                ()
15200            }
15201        }
15202        #[automatically_derived]
15203        impl alloy_sol_types::SolCall for updateEpochStartBlockCall {
15204            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
15205            type Token<'a> = <Self::Parameters<
15206                'a,
15207            > as alloy_sol_types::SolType>::Token<'a>;
15208            type Return = updateEpochStartBlockReturn;
15209            type ReturnTuple<'a> = ();
15210            type ReturnToken<'a> = <Self::ReturnTuple<
15211                'a,
15212            > as alloy_sol_types::SolType>::Token<'a>;
15213            const SIGNATURE: &'static str = "updateEpochStartBlock(uint64)";
15214            const SELECTOR: [u8; 4] = [22u8, 122u8, 198u8, 24u8];
15215            #[inline]
15216            fn new<'a>(
15217                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15218            ) -> Self {
15219                tuple.into()
15220            }
15221            #[inline]
15222            fn tokenize(&self) -> Self::Token<'_> {
15223                (
15224                    <alloy::sol_types::sol_data::Uint<
15225                        64,
15226                    > as alloy_sol_types::SolType>::tokenize(&self.newEpochStartBlock),
15227                )
15228            }
15229            #[inline]
15230            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15231                updateEpochStartBlockReturn::_tokenize(ret)
15232            }
15233            #[inline]
15234            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15235                <Self::ReturnTuple<
15236                    '_,
15237                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15238                    .map(Into::into)
15239            }
15240            #[inline]
15241            fn abi_decode_returns_validate(
15242                data: &[u8],
15243            ) -> alloy_sol_types::Result<Self::Return> {
15244                <Self::ReturnTuple<
15245                    '_,
15246                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15247                    .map(Into::into)
15248            }
15249        }
15250    };
15251    #[derive(serde::Serialize, serde::Deserialize)]
15252    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15253    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
15254```solidity
15255function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
15256```*/
15257    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15258    #[derive(Clone)]
15259    pub struct upgradeToAndCallCall {
15260        #[allow(missing_docs)]
15261        pub newImplementation: alloy::sol_types::private::Address,
15262        #[allow(missing_docs)]
15263        pub data: alloy::sol_types::private::Bytes,
15264    }
15265    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
15266    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15267    #[derive(Clone)]
15268    pub struct upgradeToAndCallReturn {}
15269    #[allow(
15270        non_camel_case_types,
15271        non_snake_case,
15272        clippy::pub_underscore_fields,
15273        clippy::style
15274    )]
15275    const _: () = {
15276        use alloy::sol_types as alloy_sol_types;
15277        {
15278            #[doc(hidden)]
15279            #[allow(dead_code)]
15280            type UnderlyingSolTuple<'a> = (
15281                alloy::sol_types::sol_data::Address,
15282                alloy::sol_types::sol_data::Bytes,
15283            );
15284            #[doc(hidden)]
15285            type UnderlyingRustTuple<'a> = (
15286                alloy::sol_types::private::Address,
15287                alloy::sol_types::private::Bytes,
15288            );
15289            #[cfg(test)]
15290            #[allow(dead_code, unreachable_patterns)]
15291            fn _type_assertion(
15292                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15293            ) {
15294                match _t {
15295                    alloy_sol_types::private::AssertTypeEq::<
15296                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15297                    >(_) => {}
15298                }
15299            }
15300            #[automatically_derived]
15301            #[doc(hidden)]
15302            impl ::core::convert::From<upgradeToAndCallCall>
15303            for UnderlyingRustTuple<'_> {
15304                fn from(value: upgradeToAndCallCall) -> Self {
15305                    (value.newImplementation, value.data)
15306                }
15307            }
15308            #[automatically_derived]
15309            #[doc(hidden)]
15310            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15311            for upgradeToAndCallCall {
15312                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15313                    Self {
15314                        newImplementation: tuple.0,
15315                        data: tuple.1,
15316                    }
15317                }
15318            }
15319        }
15320        {
15321            #[doc(hidden)]
15322            #[allow(dead_code)]
15323            type UnderlyingSolTuple<'a> = ();
15324            #[doc(hidden)]
15325            type UnderlyingRustTuple<'a> = ();
15326            #[cfg(test)]
15327            #[allow(dead_code, unreachable_patterns)]
15328            fn _type_assertion(
15329                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15330            ) {
15331                match _t {
15332                    alloy_sol_types::private::AssertTypeEq::<
15333                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15334                    >(_) => {}
15335                }
15336            }
15337            #[automatically_derived]
15338            #[doc(hidden)]
15339            impl ::core::convert::From<upgradeToAndCallReturn>
15340            for UnderlyingRustTuple<'_> {
15341                fn from(value: upgradeToAndCallReturn) -> Self {
15342                    ()
15343                }
15344            }
15345            #[automatically_derived]
15346            #[doc(hidden)]
15347            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15348            for upgradeToAndCallReturn {
15349                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15350                    Self {}
15351                }
15352            }
15353        }
15354        impl upgradeToAndCallReturn {
15355            fn _tokenize(
15356                &self,
15357            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
15358                ()
15359            }
15360        }
15361        #[automatically_derived]
15362        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
15363            type Parameters<'a> = (
15364                alloy::sol_types::sol_data::Address,
15365                alloy::sol_types::sol_data::Bytes,
15366            );
15367            type Token<'a> = <Self::Parameters<
15368                'a,
15369            > as alloy_sol_types::SolType>::Token<'a>;
15370            type Return = upgradeToAndCallReturn;
15371            type ReturnTuple<'a> = ();
15372            type ReturnToken<'a> = <Self::ReturnTuple<
15373                'a,
15374            > as alloy_sol_types::SolType>::Token<'a>;
15375            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
15376            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
15377            #[inline]
15378            fn new<'a>(
15379                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15380            ) -> Self {
15381                tuple.into()
15382            }
15383            #[inline]
15384            fn tokenize(&self) -> Self::Token<'_> {
15385                (
15386                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15387                        &self.newImplementation,
15388                    ),
15389                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
15390                        &self.data,
15391                    ),
15392                )
15393            }
15394            #[inline]
15395            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15396                upgradeToAndCallReturn::_tokenize(ret)
15397            }
15398            #[inline]
15399            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15400                <Self::ReturnTuple<
15401                    '_,
15402                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15403                    .map(Into::into)
15404            }
15405            #[inline]
15406            fn abi_decode_returns_validate(
15407                data: &[u8],
15408            ) -> alloy_sol_types::Result<Self::Return> {
15409                <Self::ReturnTuple<
15410                    '_,
15411                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15412                    .map(Into::into)
15413            }
15414        }
15415    };
15416    #[derive(serde::Serialize, serde::Deserialize)]
15417    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15418    /**Function with signature `votingStakeTableState()` and selector `0x0625e19b`.
15419```solidity
15420function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
15421```*/
15422    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15423    #[derive(Clone)]
15424    pub struct votingStakeTableStateCall;
15425    #[derive(serde::Serialize, serde::Deserialize)]
15426    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15427    ///Container type for the return parameters of the [`votingStakeTableState()`](votingStakeTableStateCall) function.
15428    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15429    #[derive(Clone)]
15430    pub struct votingStakeTableStateReturn {
15431        #[allow(missing_docs)]
15432        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
15433        #[allow(missing_docs)]
15434        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
15435        #[allow(missing_docs)]
15436        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
15437        #[allow(missing_docs)]
15438        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
15439    }
15440    #[allow(
15441        non_camel_case_types,
15442        non_snake_case,
15443        clippy::pub_underscore_fields,
15444        clippy::style
15445    )]
15446    const _: () = {
15447        use alloy::sol_types as alloy_sol_types;
15448        {
15449            #[doc(hidden)]
15450            #[allow(dead_code)]
15451            type UnderlyingSolTuple<'a> = ();
15452            #[doc(hidden)]
15453            type UnderlyingRustTuple<'a> = ();
15454            #[cfg(test)]
15455            #[allow(dead_code, unreachable_patterns)]
15456            fn _type_assertion(
15457                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15458            ) {
15459                match _t {
15460                    alloy_sol_types::private::AssertTypeEq::<
15461                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15462                    >(_) => {}
15463                }
15464            }
15465            #[automatically_derived]
15466            #[doc(hidden)]
15467            impl ::core::convert::From<votingStakeTableStateCall>
15468            for UnderlyingRustTuple<'_> {
15469                fn from(value: votingStakeTableStateCall) -> Self {
15470                    ()
15471                }
15472            }
15473            #[automatically_derived]
15474            #[doc(hidden)]
15475            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15476            for votingStakeTableStateCall {
15477                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15478                    Self
15479                }
15480            }
15481        }
15482        {
15483            #[doc(hidden)]
15484            #[allow(dead_code)]
15485            type UnderlyingSolTuple<'a> = (
15486                alloy::sol_types::sol_data::Uint<256>,
15487                BN254::ScalarField,
15488                BN254::ScalarField,
15489                BN254::ScalarField,
15490            );
15491            #[doc(hidden)]
15492            type UnderlyingRustTuple<'a> = (
15493                alloy::sol_types::private::primitives::aliases::U256,
15494                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
15495                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
15496                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
15497            );
15498            #[cfg(test)]
15499            #[allow(dead_code, unreachable_patterns)]
15500            fn _type_assertion(
15501                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15502            ) {
15503                match _t {
15504                    alloy_sol_types::private::AssertTypeEq::<
15505                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15506                    >(_) => {}
15507                }
15508            }
15509            #[automatically_derived]
15510            #[doc(hidden)]
15511            impl ::core::convert::From<votingStakeTableStateReturn>
15512            for UnderlyingRustTuple<'_> {
15513                fn from(value: votingStakeTableStateReturn) -> Self {
15514                    (
15515                        value.threshold,
15516                        value.blsKeyComm,
15517                        value.schnorrKeyComm,
15518                        value.amountComm,
15519                    )
15520                }
15521            }
15522            #[automatically_derived]
15523            #[doc(hidden)]
15524            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15525            for votingStakeTableStateReturn {
15526                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15527                    Self {
15528                        threshold: tuple.0,
15529                        blsKeyComm: tuple.1,
15530                        schnorrKeyComm: tuple.2,
15531                        amountComm: tuple.3,
15532                    }
15533                }
15534            }
15535        }
15536        impl votingStakeTableStateReturn {
15537            fn _tokenize(
15538                &self,
15539            ) -> <votingStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
15540                '_,
15541            > {
15542                (
15543                    <alloy::sol_types::sol_data::Uint<
15544                        256,
15545                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
15546                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
15547                        &self.blsKeyComm,
15548                    ),
15549                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
15550                        &self.schnorrKeyComm,
15551                    ),
15552                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
15553                        &self.amountComm,
15554                    ),
15555                )
15556            }
15557        }
15558        #[automatically_derived]
15559        impl alloy_sol_types::SolCall for votingStakeTableStateCall {
15560            type Parameters<'a> = ();
15561            type Token<'a> = <Self::Parameters<
15562                'a,
15563            > as alloy_sol_types::SolType>::Token<'a>;
15564            type Return = votingStakeTableStateReturn;
15565            type ReturnTuple<'a> = (
15566                alloy::sol_types::sol_data::Uint<256>,
15567                BN254::ScalarField,
15568                BN254::ScalarField,
15569                BN254::ScalarField,
15570            );
15571            type ReturnToken<'a> = <Self::ReturnTuple<
15572                'a,
15573            > as alloy_sol_types::SolType>::Token<'a>;
15574            const SIGNATURE: &'static str = "votingStakeTableState()";
15575            const SELECTOR: [u8; 4] = [6u8, 37u8, 225u8, 155u8];
15576            #[inline]
15577            fn new<'a>(
15578                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15579            ) -> Self {
15580                tuple.into()
15581            }
15582            #[inline]
15583            fn tokenize(&self) -> Self::Token<'_> {
15584                ()
15585            }
15586            #[inline]
15587            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15588                votingStakeTableStateReturn::_tokenize(ret)
15589            }
15590            #[inline]
15591            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15592                <Self::ReturnTuple<
15593                    '_,
15594                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15595                    .map(Into::into)
15596            }
15597            #[inline]
15598            fn abi_decode_returns_validate(
15599                data: &[u8],
15600            ) -> alloy_sol_types::Result<Self::Return> {
15601                <Self::ReturnTuple<
15602                    '_,
15603                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15604                    .map(Into::into)
15605            }
15606        }
15607    };
15608    ///Container for all the [`LightClientV3Mock`](self) function calls.
15609    #[derive(serde::Serialize, serde::Deserialize)]
15610    #[derive()]
15611    pub enum LightClientV3MockCalls {
15612        #[allow(missing_docs)]
15613        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
15614        #[allow(missing_docs)]
15615        _getVk(_getVkCall),
15616        #[allow(missing_docs)]
15617        authRoot(authRootCall),
15618        #[allow(missing_docs)]
15619        blocksPerEpoch(blocksPerEpochCall),
15620        #[allow(missing_docs)]
15621        currentBlockNumber(currentBlockNumberCall),
15622        #[allow(missing_docs)]
15623        currentEpoch(currentEpochCall),
15624        #[allow(missing_docs)]
15625        disablePermissionedProverMode(disablePermissionedProverModeCall),
15626        #[allow(missing_docs)]
15627        epochFromBlockNumber(epochFromBlockNumberCall),
15628        #[allow(missing_docs)]
15629        epochStartBlock(epochStartBlockCall),
15630        #[allow(missing_docs)]
15631        finalizedState(finalizedStateCall),
15632        #[allow(missing_docs)]
15633        firstEpoch(firstEpochCall),
15634        #[allow(missing_docs)]
15635        genesisStakeTableState(genesisStakeTableStateCall),
15636        #[allow(missing_docs)]
15637        genesisState(genesisStateCall),
15638        #[allow(missing_docs)]
15639        getHotShotCommitment(getHotShotCommitmentCall),
15640        #[allow(missing_docs)]
15641        getStateHistoryCount(getStateHistoryCountCall),
15642        #[allow(missing_docs)]
15643        getVersion(getVersionCall),
15644        #[allow(missing_docs)]
15645        initialize(initializeCall),
15646        #[allow(missing_docs)]
15647        initializeV2(initializeV2Call),
15648        #[allow(missing_docs)]
15649        initializeV3(initializeV3Call),
15650        #[allow(missing_docs)]
15651        isEpochRoot(isEpochRootCall),
15652        #[allow(missing_docs)]
15653        isGtEpochRoot(isGtEpochRootCall),
15654        #[allow(missing_docs)]
15655        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
15656        #[allow(missing_docs)]
15657        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
15658        #[allow(missing_docs)]
15659        newFinalizedState_0(newFinalizedState_0Call),
15660        #[allow(missing_docs)]
15661        newFinalizedState_1(newFinalizedState_1Call),
15662        #[allow(missing_docs)]
15663        newFinalizedState_2(newFinalizedState_2Call),
15664        #[allow(missing_docs)]
15665        owner(ownerCall),
15666        #[allow(missing_docs)]
15667        permissionedProver(permissionedProverCall),
15668        #[allow(missing_docs)]
15669        proxiableUUID(proxiableUUIDCall),
15670        #[allow(missing_docs)]
15671        renounceOwnership(renounceOwnershipCall),
15672        #[allow(missing_docs)]
15673        setBlocksPerEpoch(setBlocksPerEpochCall),
15674        #[allow(missing_docs)]
15675        setFinalizedState(setFinalizedStateCall),
15676        #[allow(missing_docs)]
15677        setHotShotDownSince(setHotShotDownSinceCall),
15678        #[allow(missing_docs)]
15679        setHotShotUp(setHotShotUpCall),
15680        #[allow(missing_docs)]
15681        setPermissionedProver(setPermissionedProverCall),
15682        #[allow(missing_docs)]
15683        setStateHistory(setStateHistoryCall),
15684        #[allow(missing_docs)]
15685        setStateHistoryRetentionPeriod(setStateHistoryRetentionPeriodCall),
15686        #[allow(missing_docs)]
15687        setVotingStakeTableState(setVotingStakeTableStateCall),
15688        #[allow(missing_docs)]
15689        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
15690        #[allow(missing_docs)]
15691        stateHistoryCommitments(stateHistoryCommitmentsCall),
15692        #[allow(missing_docs)]
15693        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
15694        #[allow(missing_docs)]
15695        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
15696        #[allow(missing_docs)]
15697        transferOwnership(transferOwnershipCall),
15698        #[allow(missing_docs)]
15699        updateEpochStartBlock(updateEpochStartBlockCall),
15700        #[allow(missing_docs)]
15701        upgradeToAndCall(upgradeToAndCallCall),
15702        #[allow(missing_docs)]
15703        votingStakeTableState(votingStakeTableStateCall),
15704    }
15705    #[automatically_derived]
15706    impl LightClientV3MockCalls {
15707        /// All the selectors of this enum.
15708        ///
15709        /// Note that the selectors might not be in the same order as the variants.
15710        /// No guarantees are made about the order of the selectors.
15711        ///
15712        /// Prefer using `SolInterface` methods instead.
15713        pub const SELECTORS: &'static [[u8; 4usize]] = &[
15714            [1u8, 63u8, 165u8, 252u8],
15715            [2u8, 181u8, 146u8, 243u8],
15716            [6u8, 37u8, 225u8, 155u8],
15717            [13u8, 142u8, 110u8, 44u8],
15718            [18u8, 23u8, 60u8, 44u8],
15719            [22u8, 122u8, 198u8, 24u8],
15720            [32u8, 99u8, 212u8, 247u8],
15721            [37u8, 41u8, 116u8, 39u8],
15722            [45u8, 82u8, 170u8, 214u8],
15723            [47u8, 121u8, 136u8, 157u8],
15724            [48u8, 12u8, 137u8, 221u8],
15725            [49u8, 61u8, 247u8, 177u8],
15726            [55u8, 142u8, 194u8, 59u8],
15727            [56u8, 228u8, 84u8, 177u8],
15728            [60u8, 35u8, 182u8, 219u8],
15729            [62u8, 213u8, 91u8, 123u8],
15730            [65u8, 104u8, 39u8, 68u8],
15731            [66u8, 109u8, 49u8, 148u8],
15732            [67u8, 61u8, 186u8, 159u8],
15733            [79u8, 30u8, 242u8, 134u8],
15734            [82u8, 209u8, 144u8, 45u8],
15735            [98u8, 58u8, 19u8, 56u8],
15736            [105u8, 204u8, 106u8, 4u8],
15737            [113u8, 80u8, 24u8, 166u8],
15738            [117u8, 124u8, 55u8, 173u8],
15739            [118u8, 103u8, 24u8, 8u8],
15740            [130u8, 110u8, 65u8, 252u8],
15741            [133u8, 132u8, 210u8, 63u8],
15742            [141u8, 165u8, 203u8, 91u8],
15743            [144u8, 193u8, 67u8, 144u8],
15744            [150u8, 193u8, 202u8, 97u8],
15745            [153u8, 131u8, 40u8, 232u8],
15746            [155u8, 170u8, 60u8, 201u8],
15747            [159u8, 219u8, 84u8, 167u8],
15748            [170u8, 189u8, 93u8, 179u8],
15749            [173u8, 60u8, 177u8, 204u8],
15750            [179u8, 59u8, 196u8, 145u8],
15751            [181u8, 173u8, 234u8, 60u8],
15752            [194u8, 59u8, 158u8, 158u8],
15753            [200u8, 229u8, 228u8, 152u8],
15754            [210u8, 77u8, 147u8, 61u8],
15755            [224u8, 48u8, 51u8, 1u8],
15756            [240u8, 104u8, 32u8, 84u8],
15757            [242u8, 253u8, 227u8, 139u8],
15758            [245u8, 103u8, 97u8, 96u8],
15759            [249u8, 229u8, 13u8, 25u8],
15760        ];
15761    }
15762    #[automatically_derived]
15763    impl alloy_sol_types::SolInterface for LightClientV3MockCalls {
15764        const NAME: &'static str = "LightClientV3MockCalls";
15765        const MIN_DATA_LENGTH: usize = 0usize;
15766        const COUNT: usize = 46usize;
15767        #[inline]
15768        fn selector(&self) -> [u8; 4] {
15769            match self {
15770                Self::UPGRADE_INTERFACE_VERSION(_) => {
15771                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
15772                }
15773                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
15774                Self::authRoot(_) => <authRootCall as alloy_sol_types::SolCall>::SELECTOR,
15775                Self::blocksPerEpoch(_) => {
15776                    <blocksPerEpochCall as alloy_sol_types::SolCall>::SELECTOR
15777                }
15778                Self::currentBlockNumber(_) => {
15779                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
15780                }
15781                Self::currentEpoch(_) => {
15782                    <currentEpochCall as alloy_sol_types::SolCall>::SELECTOR
15783                }
15784                Self::disablePermissionedProverMode(_) => {
15785                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
15786                }
15787                Self::epochFromBlockNumber(_) => {
15788                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
15789                }
15790                Self::epochStartBlock(_) => {
15791                    <epochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
15792                }
15793                Self::finalizedState(_) => {
15794                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
15795                }
15796                Self::firstEpoch(_) => {
15797                    <firstEpochCall as alloy_sol_types::SolCall>::SELECTOR
15798                }
15799                Self::genesisStakeTableState(_) => {
15800                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
15801                }
15802                Self::genesisState(_) => {
15803                    <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR
15804                }
15805                Self::getHotShotCommitment(_) => {
15806                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
15807                }
15808                Self::getStateHistoryCount(_) => {
15809                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
15810                }
15811                Self::getVersion(_) => {
15812                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
15813                }
15814                Self::initialize(_) => {
15815                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
15816                }
15817                Self::initializeV2(_) => {
15818                    <initializeV2Call as alloy_sol_types::SolCall>::SELECTOR
15819                }
15820                Self::initializeV3(_) => {
15821                    <initializeV3Call as alloy_sol_types::SolCall>::SELECTOR
15822                }
15823                Self::isEpochRoot(_) => {
15824                    <isEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
15825                }
15826                Self::isGtEpochRoot(_) => {
15827                    <isGtEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
15828                }
15829                Self::isPermissionedProverEnabled(_) => {
15830                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
15831                }
15832                Self::lagOverEscapeHatchThreshold(_) => {
15833                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
15834                }
15835                Self::newFinalizedState_0(_) => {
15836                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::SELECTOR
15837                }
15838                Self::newFinalizedState_1(_) => {
15839                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::SELECTOR
15840                }
15841                Self::newFinalizedState_2(_) => {
15842                    <newFinalizedState_2Call as alloy_sol_types::SolCall>::SELECTOR
15843                }
15844                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
15845                Self::permissionedProver(_) => {
15846                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
15847                }
15848                Self::proxiableUUID(_) => {
15849                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
15850                }
15851                Self::renounceOwnership(_) => {
15852                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
15853                }
15854                Self::setBlocksPerEpoch(_) => {
15855                    <setBlocksPerEpochCall as alloy_sol_types::SolCall>::SELECTOR
15856                }
15857                Self::setFinalizedState(_) => {
15858                    <setFinalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
15859                }
15860                Self::setHotShotDownSince(_) => {
15861                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::SELECTOR
15862                }
15863                Self::setHotShotUp(_) => {
15864                    <setHotShotUpCall as alloy_sol_types::SolCall>::SELECTOR
15865                }
15866                Self::setPermissionedProver(_) => {
15867                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
15868                }
15869                Self::setStateHistory(_) => {
15870                    <setStateHistoryCall as alloy_sol_types::SolCall>::SELECTOR
15871                }
15872                Self::setStateHistoryRetentionPeriod(_) => {
15873                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
15874                }
15875                Self::setVotingStakeTableState(_) => {
15876                    <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
15877                }
15878                Self::setstateHistoryRetentionPeriod(_) => {
15879                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
15880                }
15881                Self::stateHistoryCommitments(_) => {
15882                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
15883                }
15884                Self::stateHistoryFirstIndex(_) => {
15885                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
15886                }
15887                Self::stateHistoryRetentionPeriod(_) => {
15888                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
15889                }
15890                Self::transferOwnership(_) => {
15891                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
15892                }
15893                Self::updateEpochStartBlock(_) => {
15894                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
15895                }
15896                Self::upgradeToAndCall(_) => {
15897                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
15898                }
15899                Self::votingStakeTableState(_) => {
15900                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
15901                }
15902            }
15903        }
15904        #[inline]
15905        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
15906            Self::SELECTORS.get(i).copied()
15907        }
15908        #[inline]
15909        fn valid_selector(selector: [u8; 4]) -> bool {
15910            Self::SELECTORS.binary_search(&selector).is_ok()
15911        }
15912        #[inline]
15913        #[allow(non_snake_case)]
15914        fn abi_decode_raw(
15915            selector: [u8; 4],
15916            data: &[u8],
15917        ) -> alloy_sol_types::Result<Self> {
15918            static DECODE_SHIMS: &[fn(
15919                &[u8],
15920            ) -> alloy_sol_types::Result<LightClientV3MockCalls>] = &[
15921                {
15922                    fn setPermissionedProver(
15923                        data: &[u8],
15924                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
15925                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
15926                                data,
15927                            )
15928                            .map(LightClientV3MockCalls::setPermissionedProver)
15929                    }
15930                    setPermissionedProver
15931                },
15932                {
15933                    fn stateHistoryCommitments(
15934                        data: &[u8],
15935                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
15936                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
15937                                data,
15938                            )
15939                            .map(LightClientV3MockCalls::stateHistoryCommitments)
15940                    }
15941                    stateHistoryCommitments
15942                },
15943                {
15944                    fn votingStakeTableState(
15945                        data: &[u8],
15946                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
15947                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
15948                                data,
15949                            )
15950                            .map(LightClientV3MockCalls::votingStakeTableState)
15951                    }
15952                    votingStakeTableState
15953                },
15954                {
15955                    fn getVersion(
15956                        data: &[u8],
15957                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
15958                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
15959                                data,
15960                            )
15961                            .map(LightClientV3MockCalls::getVersion)
15962                    }
15963                    getVersion
15964                },
15965                {
15966                    fn _getVk(
15967                        data: &[u8],
15968                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
15969                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
15970                            .map(LightClientV3MockCalls::_getVk)
15971                    }
15972                    _getVk
15973                },
15974                {
15975                    fn updateEpochStartBlock(
15976                        data: &[u8],
15977                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
15978                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
15979                                data,
15980                            )
15981                            .map(LightClientV3MockCalls::updateEpochStartBlock)
15982                    }
15983                    updateEpochStartBlock
15984                },
15985                {
15986                    fn newFinalizedState_0(
15987                        data: &[u8],
15988                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
15989                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw(
15990                                data,
15991                            )
15992                            .map(LightClientV3MockCalls::newFinalizedState_0)
15993                    }
15994                    newFinalizedState_0
15995                },
15996                {
15997                    fn isEpochRoot(
15998                        data: &[u8],
15999                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16000                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
16001                                data,
16002                            )
16003                            .map(LightClientV3MockCalls::isEpochRoot)
16004                    }
16005                    isEpochRoot
16006                },
16007                {
16008                    fn setHotShotDownSince(
16009                        data: &[u8],
16010                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16011                        <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_decode_raw(
16012                                data,
16013                            )
16014                            .map(LightClientV3MockCalls::setHotShotDownSince)
16015                    }
16016                    setHotShotDownSince
16017                },
16018                {
16019                    fn stateHistoryFirstIndex(
16020                        data: &[u8],
16021                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16022                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
16023                                data,
16024                            )
16025                            .map(LightClientV3MockCalls::stateHistoryFirstIndex)
16026                    }
16027                    stateHistoryFirstIndex
16028                },
16029                {
16030                    fn isGtEpochRoot(
16031                        data: &[u8],
16032                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16033                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
16034                                data,
16035                            )
16036                            .map(LightClientV3MockCalls::isGtEpochRoot)
16037                    }
16038                    isGtEpochRoot
16039                },
16040                {
16041                    fn permissionedProver(
16042                        data: &[u8],
16043                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16044                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
16045                                data,
16046                            )
16047                            .map(LightClientV3MockCalls::permissionedProver)
16048                    }
16049                    permissionedProver
16050                },
16051                {
16052                    fn currentBlockNumber(
16053                        data: &[u8],
16054                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16055                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
16056                                data,
16057                            )
16058                            .map(LightClientV3MockCalls::currentBlockNumber)
16059                    }
16060                    currentBlockNumber
16061                },
16062                {
16063                    fn initializeV3(
16064                        data: &[u8],
16065                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16066                        <initializeV3Call as alloy_sol_types::SolCall>::abi_decode_raw(
16067                                data,
16068                            )
16069                            .map(LightClientV3MockCalls::initializeV3)
16070                    }
16071                    initializeV3
16072                },
16073                {
16074                    fn setBlocksPerEpoch(
16075                        data: &[u8],
16076                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16077                        <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
16078                                data,
16079                            )
16080                            .map(LightClientV3MockCalls::setBlocksPerEpoch)
16081                    }
16082                    setBlocksPerEpoch
16083                },
16084                {
16085                    fn epochStartBlock(
16086                        data: &[u8],
16087                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16088                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
16089                                data,
16090                            )
16091                            .map(LightClientV3MockCalls::epochStartBlock)
16092                    }
16093                    epochStartBlock
16094                },
16095                {
16096                    fn firstEpoch(
16097                        data: &[u8],
16098                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16099                        <firstEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
16100                                data,
16101                            )
16102                            .map(LightClientV3MockCalls::firstEpoch)
16103                    }
16104                    firstEpoch
16105                },
16106                {
16107                    fn genesisStakeTableState(
16108                        data: &[u8],
16109                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16110                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
16111                                data,
16112                            )
16113                            .map(LightClientV3MockCalls::genesisStakeTableState)
16114                    }
16115                    genesisStakeTableState
16116                },
16117                {
16118                    fn setStateHistoryRetentionPeriod(
16119                        data: &[u8],
16120                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16121                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
16122                                data,
16123                            )
16124                            .map(LightClientV3MockCalls::setStateHistoryRetentionPeriod)
16125                    }
16126                    setStateHistoryRetentionPeriod
16127                },
16128                {
16129                    fn upgradeToAndCall(
16130                        data: &[u8],
16131                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16132                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
16133                                data,
16134                            )
16135                            .map(LightClientV3MockCalls::upgradeToAndCall)
16136                    }
16137                    upgradeToAndCall
16138                },
16139                {
16140                    fn proxiableUUID(
16141                        data: &[u8],
16142                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16143                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
16144                                data,
16145                            )
16146                            .map(LightClientV3MockCalls::proxiableUUID)
16147                    }
16148                    proxiableUUID
16149                },
16150                {
16151                    fn setVotingStakeTableState(
16152                        data: &[u8],
16153                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16154                        <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
16155                                data,
16156                            )
16157                            .map(LightClientV3MockCalls::setVotingStakeTableState)
16158                    }
16159                    setVotingStakeTableState
16160                },
16161                {
16162                    fn disablePermissionedProverMode(
16163                        data: &[u8],
16164                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16165                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
16166                                data,
16167                            )
16168                            .map(LightClientV3MockCalls::disablePermissionedProverMode)
16169                    }
16170                    disablePermissionedProverMode
16171                },
16172                {
16173                    fn renounceOwnership(
16174                        data: &[u8],
16175                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16176                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
16177                                data,
16178                            )
16179                            .map(LightClientV3MockCalls::renounceOwnership)
16180                    }
16181                    renounceOwnership
16182                },
16183                {
16184                    fn newFinalizedState_1(
16185                        data: &[u8],
16186                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16187                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw(
16188                                data,
16189                            )
16190                            .map(LightClientV3MockCalls::newFinalizedState_1)
16191                    }
16192                    newFinalizedState_1
16193                },
16194                {
16195                    fn currentEpoch(
16196                        data: &[u8],
16197                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16198                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
16199                                data,
16200                            )
16201                            .map(LightClientV3MockCalls::currentEpoch)
16202                    }
16203                    currentEpoch
16204                },
16205                {
16206                    fn isPermissionedProverEnabled(
16207                        data: &[u8],
16208                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16209                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
16210                                data,
16211                            )
16212                            .map(LightClientV3MockCalls::isPermissionedProverEnabled)
16213                    }
16214                    isPermissionedProverEnabled
16215                },
16216                {
16217                    fn getHotShotCommitment(
16218                        data: &[u8],
16219                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16220                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
16221                                data,
16222                            )
16223                            .map(LightClientV3MockCalls::getHotShotCommitment)
16224                    }
16225                    getHotShotCommitment
16226                },
16227                {
16228                    fn owner(
16229                        data: &[u8],
16230                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16231                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
16232                            .map(LightClientV3MockCalls::owner)
16233                    }
16234                    owner
16235                },
16236                {
16237                    fn epochFromBlockNumber(
16238                        data: &[u8],
16239                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16240                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
16241                                data,
16242                            )
16243                            .map(LightClientV3MockCalls::epochFromBlockNumber)
16244                    }
16245                    epochFromBlockNumber
16246                },
16247                {
16248                    fn setstateHistoryRetentionPeriod(
16249                        data: &[u8],
16250                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16251                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
16252                                data,
16253                            )
16254                            .map(LightClientV3MockCalls::setstateHistoryRetentionPeriod)
16255                    }
16256                    setstateHistoryRetentionPeriod
16257                },
16258                {
16259                    fn authRoot(
16260                        data: &[u8],
16261                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16262                        <authRootCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
16263                            .map(LightClientV3MockCalls::authRoot)
16264                    }
16265                    authRoot
16266                },
16267                {
16268                    fn initialize(
16269                        data: &[u8],
16270                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16271                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
16272                                data,
16273                            )
16274                            .map(LightClientV3MockCalls::initialize)
16275                    }
16276                    initialize
16277                },
16278                {
16279                    fn finalizedState(
16280                        data: &[u8],
16281                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16282                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
16283                                data,
16284                            )
16285                            .map(LightClientV3MockCalls::finalizedState)
16286                    }
16287                    finalizedState
16288                },
16289                {
16290                    fn newFinalizedState_2(
16291                        data: &[u8],
16292                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16293                        <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_decode_raw(
16294                                data,
16295                            )
16296                            .map(LightClientV3MockCalls::newFinalizedState_2)
16297                    }
16298                    newFinalizedState_2
16299                },
16300                {
16301                    fn UPGRADE_INTERFACE_VERSION(
16302                        data: &[u8],
16303                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16304                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
16305                                data,
16306                            )
16307                            .map(LightClientV3MockCalls::UPGRADE_INTERFACE_VERSION)
16308                    }
16309                    UPGRADE_INTERFACE_VERSION
16310                },
16311                {
16312                    fn initializeV2(
16313                        data: &[u8],
16314                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16315                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
16316                                data,
16317                            )
16318                            .map(LightClientV3MockCalls::initializeV2)
16319                    }
16320                    initializeV2
16321                },
16322                {
16323                    fn setFinalizedState(
16324                        data: &[u8],
16325                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16326                        <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
16327                                data,
16328                            )
16329                            .map(LightClientV3MockCalls::setFinalizedState)
16330                    }
16331                    setFinalizedState
16332                },
16333                {
16334                    fn stateHistoryRetentionPeriod(
16335                        data: &[u8],
16336                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16337                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
16338                                data,
16339                            )
16340                            .map(LightClientV3MockCalls::stateHistoryRetentionPeriod)
16341                    }
16342                    stateHistoryRetentionPeriod
16343                },
16344                {
16345                    fn setHotShotUp(
16346                        data: &[u8],
16347                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16348                        <setHotShotUpCall as alloy_sol_types::SolCall>::abi_decode_raw(
16349                                data,
16350                            )
16351                            .map(LightClientV3MockCalls::setHotShotUp)
16352                    }
16353                    setHotShotUp
16354                },
16355                {
16356                    fn genesisState(
16357                        data: &[u8],
16358                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16359                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
16360                                data,
16361                            )
16362                            .map(LightClientV3MockCalls::genesisState)
16363                    }
16364                    genesisState
16365                },
16366                {
16367                    fn lagOverEscapeHatchThreshold(
16368                        data: &[u8],
16369                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16370                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
16371                                data,
16372                            )
16373                            .map(LightClientV3MockCalls::lagOverEscapeHatchThreshold)
16374                    }
16375                    lagOverEscapeHatchThreshold
16376                },
16377                {
16378                    fn blocksPerEpoch(
16379                        data: &[u8],
16380                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16381                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
16382                                data,
16383                            )
16384                            .map(LightClientV3MockCalls::blocksPerEpoch)
16385                    }
16386                    blocksPerEpoch
16387                },
16388                {
16389                    fn transferOwnership(
16390                        data: &[u8],
16391                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16392                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
16393                                data,
16394                            )
16395                            .map(LightClientV3MockCalls::transferOwnership)
16396                    }
16397                    transferOwnership
16398                },
16399                {
16400                    fn setStateHistory(
16401                        data: &[u8],
16402                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16403                        <setStateHistoryCall as alloy_sol_types::SolCall>::abi_decode_raw(
16404                                data,
16405                            )
16406                            .map(LightClientV3MockCalls::setStateHistory)
16407                    }
16408                    setStateHistory
16409                },
16410                {
16411                    fn getStateHistoryCount(
16412                        data: &[u8],
16413                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16414                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
16415                                data,
16416                            )
16417                            .map(LightClientV3MockCalls::getStateHistoryCount)
16418                    }
16419                    getStateHistoryCount
16420                },
16421            ];
16422            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
16423                return Err(
16424                    alloy_sol_types::Error::unknown_selector(
16425                        <Self as alloy_sol_types::SolInterface>::NAME,
16426                        selector,
16427                    ),
16428                );
16429            };
16430            DECODE_SHIMS[idx](data)
16431        }
16432        #[inline]
16433        #[allow(non_snake_case)]
16434        fn abi_decode_raw_validate(
16435            selector: [u8; 4],
16436            data: &[u8],
16437        ) -> alloy_sol_types::Result<Self> {
16438            static DECODE_VALIDATE_SHIMS: &[fn(
16439                &[u8],
16440            ) -> alloy_sol_types::Result<LightClientV3MockCalls>] = &[
16441                {
16442                    fn setPermissionedProver(
16443                        data: &[u8],
16444                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16445                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16446                                data,
16447                            )
16448                            .map(LightClientV3MockCalls::setPermissionedProver)
16449                    }
16450                    setPermissionedProver
16451                },
16452                {
16453                    fn stateHistoryCommitments(
16454                        data: &[u8],
16455                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16456                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16457                                data,
16458                            )
16459                            .map(LightClientV3MockCalls::stateHistoryCommitments)
16460                    }
16461                    stateHistoryCommitments
16462                },
16463                {
16464                    fn votingStakeTableState(
16465                        data: &[u8],
16466                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16467                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16468                                data,
16469                            )
16470                            .map(LightClientV3MockCalls::votingStakeTableState)
16471                    }
16472                    votingStakeTableState
16473                },
16474                {
16475                    fn getVersion(
16476                        data: &[u8],
16477                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16478                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16479                                data,
16480                            )
16481                            .map(LightClientV3MockCalls::getVersion)
16482                    }
16483                    getVersion
16484                },
16485                {
16486                    fn _getVk(
16487                        data: &[u8],
16488                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16489                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16490                                data,
16491                            )
16492                            .map(LightClientV3MockCalls::_getVk)
16493                    }
16494                    _getVk
16495                },
16496                {
16497                    fn updateEpochStartBlock(
16498                        data: &[u8],
16499                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16500                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16501                                data,
16502                            )
16503                            .map(LightClientV3MockCalls::updateEpochStartBlock)
16504                    }
16505                    updateEpochStartBlock
16506                },
16507                {
16508                    fn newFinalizedState_0(
16509                        data: &[u8],
16510                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16511                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16512                                data,
16513                            )
16514                            .map(LightClientV3MockCalls::newFinalizedState_0)
16515                    }
16516                    newFinalizedState_0
16517                },
16518                {
16519                    fn isEpochRoot(
16520                        data: &[u8],
16521                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16522                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16523                                data,
16524                            )
16525                            .map(LightClientV3MockCalls::isEpochRoot)
16526                    }
16527                    isEpochRoot
16528                },
16529                {
16530                    fn setHotShotDownSince(
16531                        data: &[u8],
16532                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16533                        <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16534                                data,
16535                            )
16536                            .map(LightClientV3MockCalls::setHotShotDownSince)
16537                    }
16538                    setHotShotDownSince
16539                },
16540                {
16541                    fn stateHistoryFirstIndex(
16542                        data: &[u8],
16543                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16544                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16545                                data,
16546                            )
16547                            .map(LightClientV3MockCalls::stateHistoryFirstIndex)
16548                    }
16549                    stateHistoryFirstIndex
16550                },
16551                {
16552                    fn isGtEpochRoot(
16553                        data: &[u8],
16554                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16555                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16556                                data,
16557                            )
16558                            .map(LightClientV3MockCalls::isGtEpochRoot)
16559                    }
16560                    isGtEpochRoot
16561                },
16562                {
16563                    fn permissionedProver(
16564                        data: &[u8],
16565                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16566                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16567                                data,
16568                            )
16569                            .map(LightClientV3MockCalls::permissionedProver)
16570                    }
16571                    permissionedProver
16572                },
16573                {
16574                    fn currentBlockNumber(
16575                        data: &[u8],
16576                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16577                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16578                                data,
16579                            )
16580                            .map(LightClientV3MockCalls::currentBlockNumber)
16581                    }
16582                    currentBlockNumber
16583                },
16584                {
16585                    fn initializeV3(
16586                        data: &[u8],
16587                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16588                        <initializeV3Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16589                                data,
16590                            )
16591                            .map(LightClientV3MockCalls::initializeV3)
16592                    }
16593                    initializeV3
16594                },
16595                {
16596                    fn setBlocksPerEpoch(
16597                        data: &[u8],
16598                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16599                        <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16600                                data,
16601                            )
16602                            .map(LightClientV3MockCalls::setBlocksPerEpoch)
16603                    }
16604                    setBlocksPerEpoch
16605                },
16606                {
16607                    fn epochStartBlock(
16608                        data: &[u8],
16609                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16610                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16611                                data,
16612                            )
16613                            .map(LightClientV3MockCalls::epochStartBlock)
16614                    }
16615                    epochStartBlock
16616                },
16617                {
16618                    fn firstEpoch(
16619                        data: &[u8],
16620                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16621                        <firstEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16622                                data,
16623                            )
16624                            .map(LightClientV3MockCalls::firstEpoch)
16625                    }
16626                    firstEpoch
16627                },
16628                {
16629                    fn genesisStakeTableState(
16630                        data: &[u8],
16631                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16632                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16633                                data,
16634                            )
16635                            .map(LightClientV3MockCalls::genesisStakeTableState)
16636                    }
16637                    genesisStakeTableState
16638                },
16639                {
16640                    fn setStateHistoryRetentionPeriod(
16641                        data: &[u8],
16642                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16643                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16644                                data,
16645                            )
16646                            .map(LightClientV3MockCalls::setStateHistoryRetentionPeriod)
16647                    }
16648                    setStateHistoryRetentionPeriod
16649                },
16650                {
16651                    fn upgradeToAndCall(
16652                        data: &[u8],
16653                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16654                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16655                                data,
16656                            )
16657                            .map(LightClientV3MockCalls::upgradeToAndCall)
16658                    }
16659                    upgradeToAndCall
16660                },
16661                {
16662                    fn proxiableUUID(
16663                        data: &[u8],
16664                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16665                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16666                                data,
16667                            )
16668                            .map(LightClientV3MockCalls::proxiableUUID)
16669                    }
16670                    proxiableUUID
16671                },
16672                {
16673                    fn setVotingStakeTableState(
16674                        data: &[u8],
16675                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16676                        <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16677                                data,
16678                            )
16679                            .map(LightClientV3MockCalls::setVotingStakeTableState)
16680                    }
16681                    setVotingStakeTableState
16682                },
16683                {
16684                    fn disablePermissionedProverMode(
16685                        data: &[u8],
16686                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16687                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16688                                data,
16689                            )
16690                            .map(LightClientV3MockCalls::disablePermissionedProverMode)
16691                    }
16692                    disablePermissionedProverMode
16693                },
16694                {
16695                    fn renounceOwnership(
16696                        data: &[u8],
16697                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16698                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16699                                data,
16700                            )
16701                            .map(LightClientV3MockCalls::renounceOwnership)
16702                    }
16703                    renounceOwnership
16704                },
16705                {
16706                    fn newFinalizedState_1(
16707                        data: &[u8],
16708                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16709                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16710                                data,
16711                            )
16712                            .map(LightClientV3MockCalls::newFinalizedState_1)
16713                    }
16714                    newFinalizedState_1
16715                },
16716                {
16717                    fn currentEpoch(
16718                        data: &[u8],
16719                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16720                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16721                                data,
16722                            )
16723                            .map(LightClientV3MockCalls::currentEpoch)
16724                    }
16725                    currentEpoch
16726                },
16727                {
16728                    fn isPermissionedProverEnabled(
16729                        data: &[u8],
16730                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16731                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16732                                data,
16733                            )
16734                            .map(LightClientV3MockCalls::isPermissionedProverEnabled)
16735                    }
16736                    isPermissionedProverEnabled
16737                },
16738                {
16739                    fn getHotShotCommitment(
16740                        data: &[u8],
16741                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16742                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16743                                data,
16744                            )
16745                            .map(LightClientV3MockCalls::getHotShotCommitment)
16746                    }
16747                    getHotShotCommitment
16748                },
16749                {
16750                    fn owner(
16751                        data: &[u8],
16752                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16753                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16754                                data,
16755                            )
16756                            .map(LightClientV3MockCalls::owner)
16757                    }
16758                    owner
16759                },
16760                {
16761                    fn epochFromBlockNumber(
16762                        data: &[u8],
16763                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16764                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16765                                data,
16766                            )
16767                            .map(LightClientV3MockCalls::epochFromBlockNumber)
16768                    }
16769                    epochFromBlockNumber
16770                },
16771                {
16772                    fn setstateHistoryRetentionPeriod(
16773                        data: &[u8],
16774                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16775                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16776                                data,
16777                            )
16778                            .map(LightClientV3MockCalls::setstateHistoryRetentionPeriod)
16779                    }
16780                    setstateHistoryRetentionPeriod
16781                },
16782                {
16783                    fn authRoot(
16784                        data: &[u8],
16785                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16786                        <authRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16787                                data,
16788                            )
16789                            .map(LightClientV3MockCalls::authRoot)
16790                    }
16791                    authRoot
16792                },
16793                {
16794                    fn initialize(
16795                        data: &[u8],
16796                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16797                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16798                                data,
16799                            )
16800                            .map(LightClientV3MockCalls::initialize)
16801                    }
16802                    initialize
16803                },
16804                {
16805                    fn finalizedState(
16806                        data: &[u8],
16807                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16808                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16809                                data,
16810                            )
16811                            .map(LightClientV3MockCalls::finalizedState)
16812                    }
16813                    finalizedState
16814                },
16815                {
16816                    fn newFinalizedState_2(
16817                        data: &[u8],
16818                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16819                        <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16820                                data,
16821                            )
16822                            .map(LightClientV3MockCalls::newFinalizedState_2)
16823                    }
16824                    newFinalizedState_2
16825                },
16826                {
16827                    fn UPGRADE_INTERFACE_VERSION(
16828                        data: &[u8],
16829                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16830                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16831                                data,
16832                            )
16833                            .map(LightClientV3MockCalls::UPGRADE_INTERFACE_VERSION)
16834                    }
16835                    UPGRADE_INTERFACE_VERSION
16836                },
16837                {
16838                    fn initializeV2(
16839                        data: &[u8],
16840                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16841                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16842                                data,
16843                            )
16844                            .map(LightClientV3MockCalls::initializeV2)
16845                    }
16846                    initializeV2
16847                },
16848                {
16849                    fn setFinalizedState(
16850                        data: &[u8],
16851                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16852                        <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16853                                data,
16854                            )
16855                            .map(LightClientV3MockCalls::setFinalizedState)
16856                    }
16857                    setFinalizedState
16858                },
16859                {
16860                    fn stateHistoryRetentionPeriod(
16861                        data: &[u8],
16862                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16863                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16864                                data,
16865                            )
16866                            .map(LightClientV3MockCalls::stateHistoryRetentionPeriod)
16867                    }
16868                    stateHistoryRetentionPeriod
16869                },
16870                {
16871                    fn setHotShotUp(
16872                        data: &[u8],
16873                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16874                        <setHotShotUpCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16875                                data,
16876                            )
16877                            .map(LightClientV3MockCalls::setHotShotUp)
16878                    }
16879                    setHotShotUp
16880                },
16881                {
16882                    fn genesisState(
16883                        data: &[u8],
16884                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16885                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16886                                data,
16887                            )
16888                            .map(LightClientV3MockCalls::genesisState)
16889                    }
16890                    genesisState
16891                },
16892                {
16893                    fn lagOverEscapeHatchThreshold(
16894                        data: &[u8],
16895                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16896                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16897                                data,
16898                            )
16899                            .map(LightClientV3MockCalls::lagOverEscapeHatchThreshold)
16900                    }
16901                    lagOverEscapeHatchThreshold
16902                },
16903                {
16904                    fn blocksPerEpoch(
16905                        data: &[u8],
16906                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16907                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16908                                data,
16909                            )
16910                            .map(LightClientV3MockCalls::blocksPerEpoch)
16911                    }
16912                    blocksPerEpoch
16913                },
16914                {
16915                    fn transferOwnership(
16916                        data: &[u8],
16917                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16918                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16919                                data,
16920                            )
16921                            .map(LightClientV3MockCalls::transferOwnership)
16922                    }
16923                    transferOwnership
16924                },
16925                {
16926                    fn setStateHistory(
16927                        data: &[u8],
16928                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16929                        <setStateHistoryCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16930                                data,
16931                            )
16932                            .map(LightClientV3MockCalls::setStateHistory)
16933                    }
16934                    setStateHistory
16935                },
16936                {
16937                    fn getStateHistoryCount(
16938                        data: &[u8],
16939                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16940                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16941                                data,
16942                            )
16943                            .map(LightClientV3MockCalls::getStateHistoryCount)
16944                    }
16945                    getStateHistoryCount
16946                },
16947            ];
16948            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
16949                return Err(
16950                    alloy_sol_types::Error::unknown_selector(
16951                        <Self as alloy_sol_types::SolInterface>::NAME,
16952                        selector,
16953                    ),
16954                );
16955            };
16956            DECODE_VALIDATE_SHIMS[idx](data)
16957        }
16958        #[inline]
16959        fn abi_encoded_size(&self) -> usize {
16960            match self {
16961                Self::UPGRADE_INTERFACE_VERSION(inner) => {
16962                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
16963                        inner,
16964                    )
16965                }
16966                Self::_getVk(inner) => {
16967                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
16968                }
16969                Self::authRoot(inner) => {
16970                    <authRootCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
16971                }
16972                Self::blocksPerEpoch(inner) => {
16973                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
16974                        inner,
16975                    )
16976                }
16977                Self::currentBlockNumber(inner) => {
16978                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
16979                        inner,
16980                    )
16981                }
16982                Self::currentEpoch(inner) => {
16983                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
16984                        inner,
16985                    )
16986                }
16987                Self::disablePermissionedProverMode(inner) => {
16988                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
16989                        inner,
16990                    )
16991                }
16992                Self::epochFromBlockNumber(inner) => {
16993                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
16994                        inner,
16995                    )
16996                }
16997                Self::epochStartBlock(inner) => {
16998                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
16999                        inner,
17000                    )
17001                }
17002                Self::finalizedState(inner) => {
17003                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
17004                        inner,
17005                    )
17006                }
17007                Self::firstEpoch(inner) => {
17008                    <firstEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
17009                }
17010                Self::genesisStakeTableState(inner) => {
17011                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
17012                        inner,
17013                    )
17014                }
17015                Self::genesisState(inner) => {
17016                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
17017                        inner,
17018                    )
17019                }
17020                Self::getHotShotCommitment(inner) => {
17021                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
17022                        inner,
17023                    )
17024                }
17025                Self::getStateHistoryCount(inner) => {
17026                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
17027                        inner,
17028                    )
17029                }
17030                Self::getVersion(inner) => {
17031                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
17032                }
17033                Self::initialize(inner) => {
17034                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
17035                }
17036                Self::initializeV2(inner) => {
17037                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
17038                        inner,
17039                    )
17040                }
17041                Self::initializeV3(inner) => {
17042                    <initializeV3Call as alloy_sol_types::SolCall>::abi_encoded_size(
17043                        inner,
17044                    )
17045                }
17046                Self::isEpochRoot(inner) => {
17047                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
17048                        inner,
17049                    )
17050                }
17051                Self::isGtEpochRoot(inner) => {
17052                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
17053                        inner,
17054                    )
17055                }
17056                Self::isPermissionedProverEnabled(inner) => {
17057                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
17058                        inner,
17059                    )
17060                }
17061                Self::lagOverEscapeHatchThreshold(inner) => {
17062                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
17063                        inner,
17064                    )
17065                }
17066                Self::newFinalizedState_0(inner) => {
17067                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encoded_size(
17068                        inner,
17069                    )
17070                }
17071                Self::newFinalizedState_1(inner) => {
17072                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encoded_size(
17073                        inner,
17074                    )
17075                }
17076                Self::newFinalizedState_2(inner) => {
17077                    <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_encoded_size(
17078                        inner,
17079                    )
17080                }
17081                Self::owner(inner) => {
17082                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
17083                }
17084                Self::permissionedProver(inner) => {
17085                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
17086                        inner,
17087                    )
17088                }
17089                Self::proxiableUUID(inner) => {
17090                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
17091                        inner,
17092                    )
17093                }
17094                Self::renounceOwnership(inner) => {
17095                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
17096                        inner,
17097                    )
17098                }
17099                Self::setBlocksPerEpoch(inner) => {
17100                    <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
17101                        inner,
17102                    )
17103                }
17104                Self::setFinalizedState(inner) => {
17105                    <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
17106                        inner,
17107                    )
17108                }
17109                Self::setHotShotDownSince(inner) => {
17110                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_encoded_size(
17111                        inner,
17112                    )
17113                }
17114                Self::setHotShotUp(inner) => {
17115                    <setHotShotUpCall as alloy_sol_types::SolCall>::abi_encoded_size(
17116                        inner,
17117                    )
17118                }
17119                Self::setPermissionedProver(inner) => {
17120                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
17121                        inner,
17122                    )
17123                }
17124                Self::setStateHistory(inner) => {
17125                    <setStateHistoryCall as alloy_sol_types::SolCall>::abi_encoded_size(
17126                        inner,
17127                    )
17128                }
17129                Self::setStateHistoryRetentionPeriod(inner) => {
17130                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
17131                        inner,
17132                    )
17133                }
17134                Self::setVotingStakeTableState(inner) => {
17135                    <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
17136                        inner,
17137                    )
17138                }
17139                Self::setstateHistoryRetentionPeriod(inner) => {
17140                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
17141                        inner,
17142                    )
17143                }
17144                Self::stateHistoryCommitments(inner) => {
17145                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
17146                        inner,
17147                    )
17148                }
17149                Self::stateHistoryFirstIndex(inner) => {
17150                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
17151                        inner,
17152                    )
17153                }
17154                Self::stateHistoryRetentionPeriod(inner) => {
17155                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
17156                        inner,
17157                    )
17158                }
17159                Self::transferOwnership(inner) => {
17160                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
17161                        inner,
17162                    )
17163                }
17164                Self::updateEpochStartBlock(inner) => {
17165                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
17166                        inner,
17167                    )
17168                }
17169                Self::upgradeToAndCall(inner) => {
17170                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
17171                        inner,
17172                    )
17173                }
17174                Self::votingStakeTableState(inner) => {
17175                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
17176                        inner,
17177                    )
17178                }
17179            }
17180        }
17181        #[inline]
17182        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
17183            match self {
17184                Self::UPGRADE_INTERFACE_VERSION(inner) => {
17185                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
17186                        inner,
17187                        out,
17188                    )
17189                }
17190                Self::_getVk(inner) => {
17191                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
17192                }
17193                Self::authRoot(inner) => {
17194                    <authRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
17195                        inner,
17196                        out,
17197                    )
17198                }
17199                Self::blocksPerEpoch(inner) => {
17200                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
17201                        inner,
17202                        out,
17203                    )
17204                }
17205                Self::currentBlockNumber(inner) => {
17206                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
17207                        inner,
17208                        out,
17209                    )
17210                }
17211                Self::currentEpoch(inner) => {
17212                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
17213                        inner,
17214                        out,
17215                    )
17216                }
17217                Self::disablePermissionedProverMode(inner) => {
17218                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
17219                        inner,
17220                        out,
17221                    )
17222                }
17223                Self::epochFromBlockNumber(inner) => {
17224                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
17225                        inner,
17226                        out,
17227                    )
17228                }
17229                Self::epochStartBlock(inner) => {
17230                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
17231                        inner,
17232                        out,
17233                    )
17234                }
17235                Self::finalizedState(inner) => {
17236                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
17237                        inner,
17238                        out,
17239                    )
17240                }
17241                Self::firstEpoch(inner) => {
17242                    <firstEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
17243                        inner,
17244                        out,
17245                    )
17246                }
17247                Self::genesisStakeTableState(inner) => {
17248                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
17249                        inner,
17250                        out,
17251                    )
17252                }
17253                Self::genesisState(inner) => {
17254                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
17255                        inner,
17256                        out,
17257                    )
17258                }
17259                Self::getHotShotCommitment(inner) => {
17260                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
17261                        inner,
17262                        out,
17263                    )
17264                }
17265                Self::getStateHistoryCount(inner) => {
17266                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
17267                        inner,
17268                        out,
17269                    )
17270                }
17271                Self::getVersion(inner) => {
17272                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
17273                        inner,
17274                        out,
17275                    )
17276                }
17277                Self::initialize(inner) => {
17278                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
17279                        inner,
17280                        out,
17281                    )
17282                }
17283                Self::initializeV2(inner) => {
17284                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
17285                        inner,
17286                        out,
17287                    )
17288                }
17289                Self::initializeV3(inner) => {
17290                    <initializeV3Call as alloy_sol_types::SolCall>::abi_encode_raw(
17291                        inner,
17292                        out,
17293                    )
17294                }
17295                Self::isEpochRoot(inner) => {
17296                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
17297                        inner,
17298                        out,
17299                    )
17300                }
17301                Self::isGtEpochRoot(inner) => {
17302                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
17303                        inner,
17304                        out,
17305                    )
17306                }
17307                Self::isPermissionedProverEnabled(inner) => {
17308                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
17309                        inner,
17310                        out,
17311                    )
17312                }
17313                Self::lagOverEscapeHatchThreshold(inner) => {
17314                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
17315                        inner,
17316                        out,
17317                    )
17318                }
17319                Self::newFinalizedState_0(inner) => {
17320                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encode_raw(
17321                        inner,
17322                        out,
17323                    )
17324                }
17325                Self::newFinalizedState_1(inner) => {
17326                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encode_raw(
17327                        inner,
17328                        out,
17329                    )
17330                }
17331                Self::newFinalizedState_2(inner) => {
17332                    <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_encode_raw(
17333                        inner,
17334                        out,
17335                    )
17336                }
17337                Self::owner(inner) => {
17338                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
17339                }
17340                Self::permissionedProver(inner) => {
17341                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
17342                        inner,
17343                        out,
17344                    )
17345                }
17346                Self::proxiableUUID(inner) => {
17347                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
17348                        inner,
17349                        out,
17350                    )
17351                }
17352                Self::renounceOwnership(inner) => {
17353                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
17354                        inner,
17355                        out,
17356                    )
17357                }
17358                Self::setBlocksPerEpoch(inner) => {
17359                    <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
17360                        inner,
17361                        out,
17362                    )
17363                }
17364                Self::setFinalizedState(inner) => {
17365                    <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
17366                        inner,
17367                        out,
17368                    )
17369                }
17370                Self::setHotShotDownSince(inner) => {
17371                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_encode_raw(
17372                        inner,
17373                        out,
17374                    )
17375                }
17376                Self::setHotShotUp(inner) => {
17377                    <setHotShotUpCall as alloy_sol_types::SolCall>::abi_encode_raw(
17378                        inner,
17379                        out,
17380                    )
17381                }
17382                Self::setPermissionedProver(inner) => {
17383                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
17384                        inner,
17385                        out,
17386                    )
17387                }
17388                Self::setStateHistory(inner) => {
17389                    <setStateHistoryCall as alloy_sol_types::SolCall>::abi_encode_raw(
17390                        inner,
17391                        out,
17392                    )
17393                }
17394                Self::setStateHistoryRetentionPeriod(inner) => {
17395                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
17396                        inner,
17397                        out,
17398                    )
17399                }
17400                Self::setVotingStakeTableState(inner) => {
17401                    <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
17402                        inner,
17403                        out,
17404                    )
17405                }
17406                Self::setstateHistoryRetentionPeriod(inner) => {
17407                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
17408                        inner,
17409                        out,
17410                    )
17411                }
17412                Self::stateHistoryCommitments(inner) => {
17413                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
17414                        inner,
17415                        out,
17416                    )
17417                }
17418                Self::stateHistoryFirstIndex(inner) => {
17419                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
17420                        inner,
17421                        out,
17422                    )
17423                }
17424                Self::stateHistoryRetentionPeriod(inner) => {
17425                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
17426                        inner,
17427                        out,
17428                    )
17429                }
17430                Self::transferOwnership(inner) => {
17431                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
17432                        inner,
17433                        out,
17434                    )
17435                }
17436                Self::updateEpochStartBlock(inner) => {
17437                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
17438                        inner,
17439                        out,
17440                    )
17441                }
17442                Self::upgradeToAndCall(inner) => {
17443                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
17444                        inner,
17445                        out,
17446                    )
17447                }
17448                Self::votingStakeTableState(inner) => {
17449                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
17450                        inner,
17451                        out,
17452                    )
17453                }
17454            }
17455        }
17456    }
17457    ///Container for all the [`LightClientV3Mock`](self) custom errors.
17458    #[derive(serde::Serialize, serde::Deserialize)]
17459    #[derive(Debug, PartialEq, Eq, Hash)]
17460    pub enum LightClientV3MockErrors {
17461        #[allow(missing_docs)]
17462        AddressEmptyCode(AddressEmptyCode),
17463        #[allow(missing_docs)]
17464        DeprecatedApi(DeprecatedApi),
17465        #[allow(missing_docs)]
17466        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
17467        #[allow(missing_docs)]
17468        ERC1967NonPayable(ERC1967NonPayable),
17469        #[allow(missing_docs)]
17470        FailedInnerCall(FailedInnerCall),
17471        #[allow(missing_docs)]
17472        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
17473        #[allow(missing_docs)]
17474        InvalidAddress(InvalidAddress),
17475        #[allow(missing_docs)]
17476        InvalidArgs(InvalidArgs),
17477        #[allow(missing_docs)]
17478        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
17479        #[allow(missing_docs)]
17480        InvalidInitialization(InvalidInitialization),
17481        #[allow(missing_docs)]
17482        InvalidMaxStateHistory(InvalidMaxStateHistory),
17483        #[allow(missing_docs)]
17484        InvalidProof(InvalidProof),
17485        #[allow(missing_docs)]
17486        InvalidScalar(InvalidScalar),
17487        #[allow(missing_docs)]
17488        MissingEpochRootUpdate(MissingEpochRootUpdate),
17489        #[allow(missing_docs)]
17490        NoChangeRequired(NoChangeRequired),
17491        #[allow(missing_docs)]
17492        NotInitializing(NotInitializing),
17493        #[allow(missing_docs)]
17494        OutdatedState(OutdatedState),
17495        #[allow(missing_docs)]
17496        OwnableInvalidOwner(OwnableInvalidOwner),
17497        #[allow(missing_docs)]
17498        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
17499        #[allow(missing_docs)]
17500        ProverNotPermissioned(ProverNotPermissioned),
17501        #[allow(missing_docs)]
17502        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
17503        #[allow(missing_docs)]
17504        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
17505        #[allow(missing_docs)]
17506        WrongStakeTableUsed(WrongStakeTableUsed),
17507    }
17508    #[automatically_derived]
17509    impl LightClientV3MockErrors {
17510        /// All the selectors of this enum.
17511        ///
17512        /// Note that the selectors might not be in the same order as the variants.
17513        /// No guarantees are made about the order of the selectors.
17514        ///
17515        /// Prefer using `SolInterface` methods instead.
17516        pub const SELECTORS: &'static [[u8; 4usize]] = &[
17517            [5u8, 28u8, 70u8, 239u8],
17518            [5u8, 176u8, 92u8, 204u8],
17519            [8u8, 10u8, 232u8, 217u8],
17520            [9u8, 189u8, 227u8, 57u8],
17521            [17u8, 140u8, 218u8, 167u8],
17522            [20u8, 37u8, 234u8, 66u8],
17523            [30u8, 79u8, 189u8, 247u8],
17524            [76u8, 156u8, 140u8, 227u8],
17525            [78u8, 64u8, 92u8, 141u8],
17526            [81u8, 97u8, 128u8, 137u8],
17527            [97u8, 90u8, 146u8, 100u8],
17528            [153u8, 150u8, 179u8, 21u8],
17529            [161u8, 186u8, 7u8, 238u8],
17530            [163u8, 166u8, 71u8, 128u8],
17531            [168u8, 99u8, 174u8, 201u8],
17532            [170u8, 29u8, 73u8, 164u8],
17533            [176u8, 180u8, 56u8, 119u8],
17534            [179u8, 152u8, 151u8, 159u8],
17535            [215u8, 230u8, 188u8, 248u8],
17536            [224u8, 124u8, 141u8, 186u8],
17537            [230u8, 196u8, 36u8, 123u8],
17538            [244u8, 160u8, 238u8, 224u8],
17539            [249u8, 46u8, 232u8, 169u8],
17540        ];
17541    }
17542    #[automatically_derived]
17543    impl alloy_sol_types::SolInterface for LightClientV3MockErrors {
17544        const NAME: &'static str = "LightClientV3MockErrors";
17545        const MIN_DATA_LENGTH: usize = 0usize;
17546        const COUNT: usize = 23usize;
17547        #[inline]
17548        fn selector(&self) -> [u8; 4] {
17549            match self {
17550                Self::AddressEmptyCode(_) => {
17551                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
17552                }
17553                Self::DeprecatedApi(_) => {
17554                    <DeprecatedApi as alloy_sol_types::SolError>::SELECTOR
17555                }
17556                Self::ERC1967InvalidImplementation(_) => {
17557                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
17558                }
17559                Self::ERC1967NonPayable(_) => {
17560                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
17561                }
17562                Self::FailedInnerCall(_) => {
17563                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
17564                }
17565                Self::InsufficientSnapshotHistory(_) => {
17566                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
17567                }
17568                Self::InvalidAddress(_) => {
17569                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
17570                }
17571                Self::InvalidArgs(_) => {
17572                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
17573                }
17574                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
17575                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
17576                }
17577                Self::InvalidInitialization(_) => {
17578                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
17579                }
17580                Self::InvalidMaxStateHistory(_) => {
17581                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
17582                }
17583                Self::InvalidProof(_) => {
17584                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
17585                }
17586                Self::InvalidScalar(_) => {
17587                    <InvalidScalar as alloy_sol_types::SolError>::SELECTOR
17588                }
17589                Self::MissingEpochRootUpdate(_) => {
17590                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::SELECTOR
17591                }
17592                Self::NoChangeRequired(_) => {
17593                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
17594                }
17595                Self::NotInitializing(_) => {
17596                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
17597                }
17598                Self::OutdatedState(_) => {
17599                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
17600                }
17601                Self::OwnableInvalidOwner(_) => {
17602                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
17603                }
17604                Self::OwnableUnauthorizedAccount(_) => {
17605                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
17606                }
17607                Self::ProverNotPermissioned(_) => {
17608                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
17609                }
17610                Self::UUPSUnauthorizedCallContext(_) => {
17611                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
17612                }
17613                Self::UUPSUnsupportedProxiableUUID(_) => {
17614                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
17615                }
17616                Self::WrongStakeTableUsed(_) => {
17617                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
17618                }
17619            }
17620        }
17621        #[inline]
17622        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
17623            Self::SELECTORS.get(i).copied()
17624        }
17625        #[inline]
17626        fn valid_selector(selector: [u8; 4]) -> bool {
17627            Self::SELECTORS.binary_search(&selector).is_ok()
17628        }
17629        #[inline]
17630        #[allow(non_snake_case)]
17631        fn abi_decode_raw(
17632            selector: [u8; 4],
17633            data: &[u8],
17634        ) -> alloy_sol_types::Result<Self> {
17635            static DECODE_SHIMS: &[fn(
17636                &[u8],
17637            ) -> alloy_sol_types::Result<LightClientV3MockErrors>] = &[
17638                {
17639                    fn OutdatedState(
17640                        data: &[u8],
17641                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17642                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(
17643                                data,
17644                            )
17645                            .map(LightClientV3MockErrors::OutdatedState)
17646                    }
17647                    OutdatedState
17648                },
17649                {
17650                    fn InvalidScalar(
17651                        data: &[u8],
17652                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17653                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw(
17654                                data,
17655                            )
17656                            .map(LightClientV3MockErrors::InvalidScalar)
17657                    }
17658                    InvalidScalar
17659                },
17660                {
17661                    fn MissingEpochRootUpdate(
17662                        data: &[u8],
17663                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17664                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw(
17665                                data,
17666                            )
17667                            .map(LightClientV3MockErrors::MissingEpochRootUpdate)
17668                    }
17669                    MissingEpochRootUpdate
17670                },
17671                {
17672                    fn InvalidProof(
17673                        data: &[u8],
17674                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17675                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(data)
17676                            .map(LightClientV3MockErrors::InvalidProof)
17677                    }
17678                    InvalidProof
17679                },
17680                {
17681                    fn OwnableUnauthorizedAccount(
17682                        data: &[u8],
17683                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17684                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
17685                                data,
17686                            )
17687                            .map(LightClientV3MockErrors::OwnableUnauthorizedAccount)
17688                    }
17689                    OwnableUnauthorizedAccount
17690                },
17691                {
17692                    fn FailedInnerCall(
17693                        data: &[u8],
17694                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17695                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
17696                                data,
17697                            )
17698                            .map(LightClientV3MockErrors::FailedInnerCall)
17699                    }
17700                    FailedInnerCall
17701                },
17702                {
17703                    fn OwnableInvalidOwner(
17704                        data: &[u8],
17705                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17706                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
17707                                data,
17708                            )
17709                            .map(LightClientV3MockErrors::OwnableInvalidOwner)
17710                    }
17711                    OwnableInvalidOwner
17712                },
17713                {
17714                    fn ERC1967InvalidImplementation(
17715                        data: &[u8],
17716                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17717                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
17718                                data,
17719                            )
17720                            .map(LightClientV3MockErrors::ERC1967InvalidImplementation)
17721                    }
17722                    ERC1967InvalidImplementation
17723                },
17724                {
17725                    fn DeprecatedApi(
17726                        data: &[u8],
17727                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17728                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw(
17729                                data,
17730                            )
17731                            .map(LightClientV3MockErrors::DeprecatedApi)
17732                    }
17733                    DeprecatedApi
17734                },
17735                {
17736                    fn WrongStakeTableUsed(
17737                        data: &[u8],
17738                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17739                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
17740                                data,
17741                            )
17742                            .map(LightClientV3MockErrors::WrongStakeTableUsed)
17743                    }
17744                    WrongStakeTableUsed
17745                },
17746                {
17747                    fn InvalidHotShotBlockForCommitmentCheck(
17748                        data: &[u8],
17749                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17750                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
17751                                data,
17752                            )
17753                            .map(
17754                                LightClientV3MockErrors::InvalidHotShotBlockForCommitmentCheck,
17755                            )
17756                    }
17757                    InvalidHotShotBlockForCommitmentCheck
17758                },
17759                {
17760                    fn AddressEmptyCode(
17761                        data: &[u8],
17762                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17763                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
17764                                data,
17765                            )
17766                            .map(LightClientV3MockErrors::AddressEmptyCode)
17767                    }
17768                    AddressEmptyCode
17769                },
17770                {
17771                    fn InvalidArgs(
17772                        data: &[u8],
17773                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17774                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(data)
17775                            .map(LightClientV3MockErrors::InvalidArgs)
17776                    }
17777                    InvalidArgs
17778                },
17779                {
17780                    fn ProverNotPermissioned(
17781                        data: &[u8],
17782                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17783                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
17784                                data,
17785                            )
17786                            .map(LightClientV3MockErrors::ProverNotPermissioned)
17787                    }
17788                    ProverNotPermissioned
17789                },
17790                {
17791                    fn NoChangeRequired(
17792                        data: &[u8],
17793                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17794                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
17795                                data,
17796                            )
17797                            .map(LightClientV3MockErrors::NoChangeRequired)
17798                    }
17799                    NoChangeRequired
17800                },
17801                {
17802                    fn UUPSUnsupportedProxiableUUID(
17803                        data: &[u8],
17804                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17805                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
17806                                data,
17807                            )
17808                            .map(LightClientV3MockErrors::UUPSUnsupportedProxiableUUID)
17809                    }
17810                    UUPSUnsupportedProxiableUUID
17811                },
17812                {
17813                    fn InsufficientSnapshotHistory(
17814                        data: &[u8],
17815                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17816                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
17817                                data,
17818                            )
17819                            .map(LightClientV3MockErrors::InsufficientSnapshotHistory)
17820                    }
17821                    InsufficientSnapshotHistory
17822                },
17823                {
17824                    fn ERC1967NonPayable(
17825                        data: &[u8],
17826                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17827                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
17828                                data,
17829                            )
17830                            .map(LightClientV3MockErrors::ERC1967NonPayable)
17831                    }
17832                    ERC1967NonPayable
17833                },
17834                {
17835                    fn NotInitializing(
17836                        data: &[u8],
17837                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17838                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
17839                                data,
17840                            )
17841                            .map(LightClientV3MockErrors::NotInitializing)
17842                    }
17843                    NotInitializing
17844                },
17845                {
17846                    fn UUPSUnauthorizedCallContext(
17847                        data: &[u8],
17848                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17849                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
17850                                data,
17851                            )
17852                            .map(LightClientV3MockErrors::UUPSUnauthorizedCallContext)
17853                    }
17854                    UUPSUnauthorizedCallContext
17855                },
17856                {
17857                    fn InvalidAddress(
17858                        data: &[u8],
17859                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17860                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
17861                                data,
17862                            )
17863                            .map(LightClientV3MockErrors::InvalidAddress)
17864                    }
17865                    InvalidAddress
17866                },
17867                {
17868                    fn InvalidMaxStateHistory(
17869                        data: &[u8],
17870                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17871                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
17872                                data,
17873                            )
17874                            .map(LightClientV3MockErrors::InvalidMaxStateHistory)
17875                    }
17876                    InvalidMaxStateHistory
17877                },
17878                {
17879                    fn InvalidInitialization(
17880                        data: &[u8],
17881                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17882                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
17883                                data,
17884                            )
17885                            .map(LightClientV3MockErrors::InvalidInitialization)
17886                    }
17887                    InvalidInitialization
17888                },
17889            ];
17890            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
17891                return Err(
17892                    alloy_sol_types::Error::unknown_selector(
17893                        <Self as alloy_sol_types::SolInterface>::NAME,
17894                        selector,
17895                    ),
17896                );
17897            };
17898            DECODE_SHIMS[idx](data)
17899        }
17900        #[inline]
17901        #[allow(non_snake_case)]
17902        fn abi_decode_raw_validate(
17903            selector: [u8; 4],
17904            data: &[u8],
17905        ) -> alloy_sol_types::Result<Self> {
17906            static DECODE_VALIDATE_SHIMS: &[fn(
17907                &[u8],
17908            ) -> alloy_sol_types::Result<LightClientV3MockErrors>] = &[
17909                {
17910                    fn OutdatedState(
17911                        data: &[u8],
17912                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17913                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw_validate(
17914                                data,
17915                            )
17916                            .map(LightClientV3MockErrors::OutdatedState)
17917                    }
17918                    OutdatedState
17919                },
17920                {
17921                    fn InvalidScalar(
17922                        data: &[u8],
17923                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17924                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw_validate(
17925                                data,
17926                            )
17927                            .map(LightClientV3MockErrors::InvalidScalar)
17928                    }
17929                    InvalidScalar
17930                },
17931                {
17932                    fn MissingEpochRootUpdate(
17933                        data: &[u8],
17934                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17935                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw_validate(
17936                                data,
17937                            )
17938                            .map(LightClientV3MockErrors::MissingEpochRootUpdate)
17939                    }
17940                    MissingEpochRootUpdate
17941                },
17942                {
17943                    fn InvalidProof(
17944                        data: &[u8],
17945                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17946                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw_validate(
17947                                data,
17948                            )
17949                            .map(LightClientV3MockErrors::InvalidProof)
17950                    }
17951                    InvalidProof
17952                },
17953                {
17954                    fn OwnableUnauthorizedAccount(
17955                        data: &[u8],
17956                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17957                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
17958                                data,
17959                            )
17960                            .map(LightClientV3MockErrors::OwnableUnauthorizedAccount)
17961                    }
17962                    OwnableUnauthorizedAccount
17963                },
17964                {
17965                    fn FailedInnerCall(
17966                        data: &[u8],
17967                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17968                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
17969                                data,
17970                            )
17971                            .map(LightClientV3MockErrors::FailedInnerCall)
17972                    }
17973                    FailedInnerCall
17974                },
17975                {
17976                    fn OwnableInvalidOwner(
17977                        data: &[u8],
17978                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17979                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
17980                                data,
17981                            )
17982                            .map(LightClientV3MockErrors::OwnableInvalidOwner)
17983                    }
17984                    OwnableInvalidOwner
17985                },
17986                {
17987                    fn ERC1967InvalidImplementation(
17988                        data: &[u8],
17989                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17990                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_validate(
17991                                data,
17992                            )
17993                            .map(LightClientV3MockErrors::ERC1967InvalidImplementation)
17994                    }
17995                    ERC1967InvalidImplementation
17996                },
17997                {
17998                    fn DeprecatedApi(
17999                        data: &[u8],
18000                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18001                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw_validate(
18002                                data,
18003                            )
18004                            .map(LightClientV3MockErrors::DeprecatedApi)
18005                    }
18006                    DeprecatedApi
18007                },
18008                {
18009                    fn WrongStakeTableUsed(
18010                        data: &[u8],
18011                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18012                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
18013                                data,
18014                            )
18015                            .map(LightClientV3MockErrors::WrongStakeTableUsed)
18016                    }
18017                    WrongStakeTableUsed
18018                },
18019                {
18020                    fn InvalidHotShotBlockForCommitmentCheck(
18021                        data: &[u8],
18022                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18023                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw_validate(
18024                                data,
18025                            )
18026                            .map(
18027                                LightClientV3MockErrors::InvalidHotShotBlockForCommitmentCheck,
18028                            )
18029                    }
18030                    InvalidHotShotBlockForCommitmentCheck
18031                },
18032                {
18033                    fn AddressEmptyCode(
18034                        data: &[u8],
18035                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18036                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_validate(
18037                                data,
18038                            )
18039                            .map(LightClientV3MockErrors::AddressEmptyCode)
18040                    }
18041                    AddressEmptyCode
18042                },
18043                {
18044                    fn InvalidArgs(
18045                        data: &[u8],
18046                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18047                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw_validate(
18048                                data,
18049                            )
18050                            .map(LightClientV3MockErrors::InvalidArgs)
18051                    }
18052                    InvalidArgs
18053                },
18054                {
18055                    fn ProverNotPermissioned(
18056                        data: &[u8],
18057                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18058                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw_validate(
18059                                data,
18060                            )
18061                            .map(LightClientV3MockErrors::ProverNotPermissioned)
18062                    }
18063                    ProverNotPermissioned
18064                },
18065                {
18066                    fn NoChangeRequired(
18067                        data: &[u8],
18068                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18069                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw_validate(
18070                                data,
18071                            )
18072                            .map(LightClientV3MockErrors::NoChangeRequired)
18073                    }
18074                    NoChangeRequired
18075                },
18076                {
18077                    fn UUPSUnsupportedProxiableUUID(
18078                        data: &[u8],
18079                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18080                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_validate(
18081                                data,
18082                            )
18083                            .map(LightClientV3MockErrors::UUPSUnsupportedProxiableUUID)
18084                    }
18085                    UUPSUnsupportedProxiableUUID
18086                },
18087                {
18088                    fn InsufficientSnapshotHistory(
18089                        data: &[u8],
18090                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18091                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
18092                                data,
18093                            )
18094                            .map(LightClientV3MockErrors::InsufficientSnapshotHistory)
18095                    }
18096                    InsufficientSnapshotHistory
18097                },
18098                {
18099                    fn ERC1967NonPayable(
18100                        data: &[u8],
18101                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18102                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_validate(
18103                                data,
18104                            )
18105                            .map(LightClientV3MockErrors::ERC1967NonPayable)
18106                    }
18107                    ERC1967NonPayable
18108                },
18109                {
18110                    fn NotInitializing(
18111                        data: &[u8],
18112                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18113                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_validate(
18114                                data,
18115                            )
18116                            .map(LightClientV3MockErrors::NotInitializing)
18117                    }
18118                    NotInitializing
18119                },
18120                {
18121                    fn UUPSUnauthorizedCallContext(
18122                        data: &[u8],
18123                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18124                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_validate(
18125                                data,
18126                            )
18127                            .map(LightClientV3MockErrors::UUPSUnauthorizedCallContext)
18128                    }
18129                    UUPSUnauthorizedCallContext
18130                },
18131                {
18132                    fn InvalidAddress(
18133                        data: &[u8],
18134                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18135                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
18136                                data,
18137                            )
18138                            .map(LightClientV3MockErrors::InvalidAddress)
18139                    }
18140                    InvalidAddress
18141                },
18142                {
18143                    fn InvalidMaxStateHistory(
18144                        data: &[u8],
18145                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18146                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
18147                                data,
18148                            )
18149                            .map(LightClientV3MockErrors::InvalidMaxStateHistory)
18150                    }
18151                    InvalidMaxStateHistory
18152                },
18153                {
18154                    fn InvalidInitialization(
18155                        data: &[u8],
18156                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18157                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_validate(
18158                                data,
18159                            )
18160                            .map(LightClientV3MockErrors::InvalidInitialization)
18161                    }
18162                    InvalidInitialization
18163                },
18164            ];
18165            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
18166                return Err(
18167                    alloy_sol_types::Error::unknown_selector(
18168                        <Self as alloy_sol_types::SolInterface>::NAME,
18169                        selector,
18170                    ),
18171                );
18172            };
18173            DECODE_VALIDATE_SHIMS[idx](data)
18174        }
18175        #[inline]
18176        fn abi_encoded_size(&self) -> usize {
18177            match self {
18178                Self::AddressEmptyCode(inner) => {
18179                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
18180                        inner,
18181                    )
18182                }
18183                Self::DeprecatedApi(inner) => {
18184                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encoded_size(inner)
18185                }
18186                Self::ERC1967InvalidImplementation(inner) => {
18187                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
18188                        inner,
18189                    )
18190                }
18191                Self::ERC1967NonPayable(inner) => {
18192                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
18193                        inner,
18194                    )
18195                }
18196                Self::FailedInnerCall(inner) => {
18197                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
18198                        inner,
18199                    )
18200                }
18201                Self::InsufficientSnapshotHistory(inner) => {
18202                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
18203                        inner,
18204                    )
18205                }
18206                Self::InvalidAddress(inner) => {
18207                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
18208                        inner,
18209                    )
18210                }
18211                Self::InvalidArgs(inner) => {
18212                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
18213                }
18214                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
18215                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
18216                        inner,
18217                    )
18218                }
18219                Self::InvalidInitialization(inner) => {
18220                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
18221                        inner,
18222                    )
18223                }
18224                Self::InvalidMaxStateHistory(inner) => {
18225                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
18226                        inner,
18227                    )
18228                }
18229                Self::InvalidProof(inner) => {
18230                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
18231                }
18232                Self::InvalidScalar(inner) => {
18233                    <InvalidScalar as alloy_sol_types::SolError>::abi_encoded_size(inner)
18234                }
18235                Self::MissingEpochRootUpdate(inner) => {
18236                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encoded_size(
18237                        inner,
18238                    )
18239                }
18240                Self::NoChangeRequired(inner) => {
18241                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
18242                        inner,
18243                    )
18244                }
18245                Self::NotInitializing(inner) => {
18246                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
18247                        inner,
18248                    )
18249                }
18250                Self::OutdatedState(inner) => {
18251                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
18252                }
18253                Self::OwnableInvalidOwner(inner) => {
18254                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
18255                        inner,
18256                    )
18257                }
18258                Self::OwnableUnauthorizedAccount(inner) => {
18259                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
18260                        inner,
18261                    )
18262                }
18263                Self::ProverNotPermissioned(inner) => {
18264                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
18265                        inner,
18266                    )
18267                }
18268                Self::UUPSUnauthorizedCallContext(inner) => {
18269                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
18270                        inner,
18271                    )
18272                }
18273                Self::UUPSUnsupportedProxiableUUID(inner) => {
18274                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
18275                        inner,
18276                    )
18277                }
18278                Self::WrongStakeTableUsed(inner) => {
18279                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
18280                        inner,
18281                    )
18282                }
18283            }
18284        }
18285        #[inline]
18286        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
18287            match self {
18288                Self::AddressEmptyCode(inner) => {
18289                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
18290                        inner,
18291                        out,
18292                    )
18293                }
18294                Self::DeprecatedApi(inner) => {
18295                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encode_raw(
18296                        inner,
18297                        out,
18298                    )
18299                }
18300                Self::ERC1967InvalidImplementation(inner) => {
18301                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
18302                        inner,
18303                        out,
18304                    )
18305                }
18306                Self::ERC1967NonPayable(inner) => {
18307                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
18308                        inner,
18309                        out,
18310                    )
18311                }
18312                Self::FailedInnerCall(inner) => {
18313                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
18314                        inner,
18315                        out,
18316                    )
18317                }
18318                Self::InsufficientSnapshotHistory(inner) => {
18319                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
18320                        inner,
18321                        out,
18322                    )
18323                }
18324                Self::InvalidAddress(inner) => {
18325                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
18326                        inner,
18327                        out,
18328                    )
18329                }
18330                Self::InvalidArgs(inner) => {
18331                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
18332                        inner,
18333                        out,
18334                    )
18335                }
18336                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
18337                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
18338                        inner,
18339                        out,
18340                    )
18341                }
18342                Self::InvalidInitialization(inner) => {
18343                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
18344                        inner,
18345                        out,
18346                    )
18347                }
18348                Self::InvalidMaxStateHistory(inner) => {
18349                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
18350                        inner,
18351                        out,
18352                    )
18353                }
18354                Self::InvalidProof(inner) => {
18355                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
18356                        inner,
18357                        out,
18358                    )
18359                }
18360                Self::InvalidScalar(inner) => {
18361                    <InvalidScalar as alloy_sol_types::SolError>::abi_encode_raw(
18362                        inner,
18363                        out,
18364                    )
18365                }
18366                Self::MissingEpochRootUpdate(inner) => {
18367                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encode_raw(
18368                        inner,
18369                        out,
18370                    )
18371                }
18372                Self::NoChangeRequired(inner) => {
18373                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
18374                        inner,
18375                        out,
18376                    )
18377                }
18378                Self::NotInitializing(inner) => {
18379                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
18380                        inner,
18381                        out,
18382                    )
18383                }
18384                Self::OutdatedState(inner) => {
18385                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
18386                        inner,
18387                        out,
18388                    )
18389                }
18390                Self::OwnableInvalidOwner(inner) => {
18391                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
18392                        inner,
18393                        out,
18394                    )
18395                }
18396                Self::OwnableUnauthorizedAccount(inner) => {
18397                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
18398                        inner,
18399                        out,
18400                    )
18401                }
18402                Self::ProverNotPermissioned(inner) => {
18403                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
18404                        inner,
18405                        out,
18406                    )
18407                }
18408                Self::UUPSUnauthorizedCallContext(inner) => {
18409                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
18410                        inner,
18411                        out,
18412                    )
18413                }
18414                Self::UUPSUnsupportedProxiableUUID(inner) => {
18415                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
18416                        inner,
18417                        out,
18418                    )
18419                }
18420                Self::WrongStakeTableUsed(inner) => {
18421                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
18422                        inner,
18423                        out,
18424                    )
18425                }
18426            }
18427        }
18428    }
18429    ///Container for all the [`LightClientV3Mock`](self) events.
18430    #[derive(serde::Serialize, serde::Deserialize)]
18431    #[derive(Debug, PartialEq, Eq, Hash)]
18432    pub enum LightClientV3MockEvents {
18433        #[allow(missing_docs)]
18434        Initialized(Initialized),
18435        #[allow(missing_docs)]
18436        NewEpoch(NewEpoch),
18437        #[allow(missing_docs)]
18438        NewState(NewState),
18439        #[allow(missing_docs)]
18440        OwnershipTransferred(OwnershipTransferred),
18441        #[allow(missing_docs)]
18442        PermissionedProverNotRequired(PermissionedProverNotRequired),
18443        #[allow(missing_docs)]
18444        PermissionedProverRequired(PermissionedProverRequired),
18445        #[allow(missing_docs)]
18446        Upgrade(Upgrade),
18447        #[allow(missing_docs)]
18448        Upgraded(Upgraded),
18449    }
18450    #[automatically_derived]
18451    impl LightClientV3MockEvents {
18452        /// All the selectors of this enum.
18453        ///
18454        /// Note that the selectors might not be in the same order as the variants.
18455        /// No guarantees are made about the order of the selectors.
18456        ///
18457        /// Prefer using `SolInterface` methods instead.
18458        pub const SELECTORS: &'static [[u8; 32usize]] = &[
18459            [
18460                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
18461                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
18462                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
18463            ],
18464            [
18465                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
18466                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
18467                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
18468            ],
18469            [
18470                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
18471                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
18472                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
18473            ],
18474            [
18475                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
18476                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
18477                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
18478            ],
18479            [
18480                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
18481                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
18482                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
18483            ],
18484            [
18485                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
18486                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
18487                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
18488            ],
18489            [
18490                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
18491                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
18492                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
18493            ],
18494            [
18495                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
18496                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
18497                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
18498            ],
18499        ];
18500    }
18501    #[automatically_derived]
18502    impl alloy_sol_types::SolEventInterface for LightClientV3MockEvents {
18503        const NAME: &'static str = "LightClientV3MockEvents";
18504        const COUNT: usize = 8usize;
18505        fn decode_raw_log(
18506            topics: &[alloy_sol_types::Word],
18507            data: &[u8],
18508        ) -> alloy_sol_types::Result<Self> {
18509            match topics.first().copied() {
18510                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
18511                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
18512                            topics,
18513                            data,
18514                        )
18515                        .map(Self::Initialized)
18516                }
18517                Some(<NewEpoch as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
18518                    <NewEpoch as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
18519                        .map(Self::NewEpoch)
18520                }
18521                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
18522                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
18523                        .map(Self::NewState)
18524                }
18525                Some(
18526                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
18527                ) => {
18528                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
18529                            topics,
18530                            data,
18531                        )
18532                        .map(Self::OwnershipTransferred)
18533                }
18534                Some(
18535                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
18536                ) => {
18537                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
18538                            topics,
18539                            data,
18540                        )
18541                        .map(Self::PermissionedProverNotRequired)
18542                }
18543                Some(
18544                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
18545                ) => {
18546                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
18547                            topics,
18548                            data,
18549                        )
18550                        .map(Self::PermissionedProverRequired)
18551                }
18552                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
18553                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
18554                        .map(Self::Upgrade)
18555                }
18556                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
18557                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
18558                        .map(Self::Upgraded)
18559                }
18560                _ => {
18561                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
18562                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
18563                        log: alloy_sol_types::private::Box::new(
18564                            alloy_sol_types::private::LogData::new_unchecked(
18565                                topics.to_vec(),
18566                                data.to_vec().into(),
18567                            ),
18568                        ),
18569                    })
18570                }
18571            }
18572        }
18573    }
18574    #[automatically_derived]
18575    impl alloy_sol_types::private::IntoLogData for LightClientV3MockEvents {
18576        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
18577            match self {
18578                Self::Initialized(inner) => {
18579                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
18580                }
18581                Self::NewEpoch(inner) => {
18582                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
18583                }
18584                Self::NewState(inner) => {
18585                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
18586                }
18587                Self::OwnershipTransferred(inner) => {
18588                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
18589                }
18590                Self::PermissionedProverNotRequired(inner) => {
18591                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
18592                }
18593                Self::PermissionedProverRequired(inner) => {
18594                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
18595                }
18596                Self::Upgrade(inner) => {
18597                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
18598                }
18599                Self::Upgraded(inner) => {
18600                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
18601                }
18602            }
18603        }
18604        fn into_log_data(self) -> alloy_sol_types::private::LogData {
18605            match self {
18606                Self::Initialized(inner) => {
18607                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
18608                }
18609                Self::NewEpoch(inner) => {
18610                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
18611                }
18612                Self::NewState(inner) => {
18613                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
18614                }
18615                Self::OwnershipTransferred(inner) => {
18616                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
18617                }
18618                Self::PermissionedProverNotRequired(inner) => {
18619                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
18620                }
18621                Self::PermissionedProverRequired(inner) => {
18622                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
18623                }
18624                Self::Upgrade(inner) => {
18625                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
18626                }
18627                Self::Upgraded(inner) => {
18628                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
18629                }
18630            }
18631        }
18632    }
18633    use alloy::contract as alloy_contract;
18634    /**Creates a new wrapper around an on-chain [`LightClientV3Mock`](self) contract instance.
18635
18636See the [wrapper's documentation](`LightClientV3MockInstance`) for more details.*/
18637    #[inline]
18638    pub const fn new<
18639        P: alloy_contract::private::Provider<N>,
18640        N: alloy_contract::private::Network,
18641    >(
18642        address: alloy_sol_types::private::Address,
18643        __provider: P,
18644    ) -> LightClientV3MockInstance<P, N> {
18645        LightClientV3MockInstance::<P, N>::new(address, __provider)
18646    }
18647    /**Deploys this contract using the given `provider` and constructor arguments, if any.
18648
18649Returns a new instance of the contract, if the deployment was successful.
18650
18651For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
18652    #[inline]
18653    pub fn deploy<
18654        P: alloy_contract::private::Provider<N>,
18655        N: alloy_contract::private::Network,
18656    >(
18657        __provider: P,
18658    ) -> impl ::core::future::Future<
18659        Output = alloy_contract::Result<LightClientV3MockInstance<P, N>>,
18660    > {
18661        LightClientV3MockInstance::<P, N>::deploy(__provider)
18662    }
18663    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
18664and constructor arguments, if any.
18665
18666This is a simple wrapper around creating a `RawCallBuilder` with the data set to
18667the bytecode concatenated with the constructor's ABI-encoded arguments.*/
18668    #[inline]
18669    pub fn deploy_builder<
18670        P: alloy_contract::private::Provider<N>,
18671        N: alloy_contract::private::Network,
18672    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
18673        LightClientV3MockInstance::<P, N>::deploy_builder(__provider)
18674    }
18675    /**A [`LightClientV3Mock`](self) instance.
18676
18677Contains type-safe methods for interacting with an on-chain instance of the
18678[`LightClientV3Mock`](self) contract located at a given `address`, using a given
18679provider `P`.
18680
18681If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
18682documentation on how to provide it), the `deploy` and `deploy_builder` methods can
18683be used to deploy a new instance of the contract.
18684
18685See the [module-level documentation](self) for all the available methods.*/
18686    #[derive(Clone)]
18687    pub struct LightClientV3MockInstance<P, N = alloy_contract::private::Ethereum> {
18688        address: alloy_sol_types::private::Address,
18689        provider: P,
18690        _network: ::core::marker::PhantomData<N>,
18691    }
18692    #[automatically_derived]
18693    impl<P, N> ::core::fmt::Debug for LightClientV3MockInstance<P, N> {
18694        #[inline]
18695        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
18696            f.debug_tuple("LightClientV3MockInstance").field(&self.address).finish()
18697        }
18698    }
18699    /// Instantiation and getters/setters.
18700    #[automatically_derived]
18701    impl<
18702        P: alloy_contract::private::Provider<N>,
18703        N: alloy_contract::private::Network,
18704    > LightClientV3MockInstance<P, N> {
18705        /**Creates a new wrapper around an on-chain [`LightClientV3Mock`](self) contract instance.
18706
18707See the [wrapper's documentation](`LightClientV3MockInstance`) for more details.*/
18708        #[inline]
18709        pub const fn new(
18710            address: alloy_sol_types::private::Address,
18711            __provider: P,
18712        ) -> Self {
18713            Self {
18714                address,
18715                provider: __provider,
18716                _network: ::core::marker::PhantomData,
18717            }
18718        }
18719        /**Deploys this contract using the given `provider` and constructor arguments, if any.
18720
18721Returns a new instance of the contract, if the deployment was successful.
18722
18723For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
18724        #[inline]
18725        pub async fn deploy(
18726            __provider: P,
18727        ) -> alloy_contract::Result<LightClientV3MockInstance<P, N>> {
18728            let call_builder = Self::deploy_builder(__provider);
18729            let contract_address = call_builder.deploy().await?;
18730            Ok(Self::new(contract_address, call_builder.provider))
18731        }
18732        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
18733and constructor arguments, if any.
18734
18735This is a simple wrapper around creating a `RawCallBuilder` with the data set to
18736the bytecode concatenated with the constructor's ABI-encoded arguments.*/
18737        #[inline]
18738        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
18739            alloy_contract::RawCallBuilder::new_raw_deploy(
18740                __provider,
18741                ::core::clone::Clone::clone(&BYTECODE),
18742            )
18743        }
18744        /// Returns a reference to the address.
18745        #[inline]
18746        pub const fn address(&self) -> &alloy_sol_types::private::Address {
18747            &self.address
18748        }
18749        /// Sets the address.
18750        #[inline]
18751        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
18752            self.address = address;
18753        }
18754        /// Sets the address and returns `self`.
18755        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
18756            self.set_address(address);
18757            self
18758        }
18759        /// Returns a reference to the provider.
18760        #[inline]
18761        pub const fn provider(&self) -> &P {
18762            &self.provider
18763        }
18764    }
18765    impl<P: ::core::clone::Clone, N> LightClientV3MockInstance<&P, N> {
18766        /// Clones the provider and returns a new instance with the cloned provider.
18767        #[inline]
18768        pub fn with_cloned_provider(self) -> LightClientV3MockInstance<P, N> {
18769            LightClientV3MockInstance {
18770                address: self.address,
18771                provider: ::core::clone::Clone::clone(&self.provider),
18772                _network: ::core::marker::PhantomData,
18773            }
18774        }
18775    }
18776    /// Function calls.
18777    #[automatically_derived]
18778    impl<
18779        P: alloy_contract::private::Provider<N>,
18780        N: alloy_contract::private::Network,
18781    > LightClientV3MockInstance<P, N> {
18782        /// Creates a new call builder using this contract instance's provider and address.
18783        ///
18784        /// Note that the call can be any function call, not just those defined in this
18785        /// contract. Prefer using the other methods for building type-safe contract calls.
18786        pub fn call_builder<C: alloy_sol_types::SolCall>(
18787            &self,
18788            call: &C,
18789        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
18790            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
18791        }
18792        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
18793        pub fn UPGRADE_INTERFACE_VERSION(
18794            &self,
18795        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
18796            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
18797        }
18798        ///Creates a new call builder for the [`_getVk`] function.
18799        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<&P, _getVkCall, N> {
18800            self.call_builder(&_getVkCall)
18801        }
18802        ///Creates a new call builder for the [`authRoot`] function.
18803        pub fn authRoot(&self) -> alloy_contract::SolCallBuilder<&P, authRootCall, N> {
18804            self.call_builder(&authRootCall)
18805        }
18806        ///Creates a new call builder for the [`blocksPerEpoch`] function.
18807        pub fn blocksPerEpoch(
18808            &self,
18809        ) -> alloy_contract::SolCallBuilder<&P, blocksPerEpochCall, N> {
18810            self.call_builder(&blocksPerEpochCall)
18811        }
18812        ///Creates a new call builder for the [`currentBlockNumber`] function.
18813        pub fn currentBlockNumber(
18814            &self,
18815        ) -> alloy_contract::SolCallBuilder<&P, currentBlockNumberCall, N> {
18816            self.call_builder(&currentBlockNumberCall)
18817        }
18818        ///Creates a new call builder for the [`currentEpoch`] function.
18819        pub fn currentEpoch(
18820            &self,
18821        ) -> alloy_contract::SolCallBuilder<&P, currentEpochCall, N> {
18822            self.call_builder(&currentEpochCall)
18823        }
18824        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
18825        pub fn disablePermissionedProverMode(
18826            &self,
18827        ) -> alloy_contract::SolCallBuilder<&P, disablePermissionedProverModeCall, N> {
18828            self.call_builder(&disablePermissionedProverModeCall)
18829        }
18830        ///Creates a new call builder for the [`epochFromBlockNumber`] function.
18831        pub fn epochFromBlockNumber(
18832            &self,
18833            _blockNum: u64,
18834            _blocksPerEpoch: u64,
18835        ) -> alloy_contract::SolCallBuilder<&P, epochFromBlockNumberCall, N> {
18836            self.call_builder(
18837                &epochFromBlockNumberCall {
18838                    _blockNum,
18839                    _blocksPerEpoch,
18840                },
18841            )
18842        }
18843        ///Creates a new call builder for the [`epochStartBlock`] function.
18844        pub fn epochStartBlock(
18845            &self,
18846        ) -> alloy_contract::SolCallBuilder<&P, epochStartBlockCall, N> {
18847            self.call_builder(&epochStartBlockCall)
18848        }
18849        ///Creates a new call builder for the [`finalizedState`] function.
18850        pub fn finalizedState(
18851            &self,
18852        ) -> alloy_contract::SolCallBuilder<&P, finalizedStateCall, N> {
18853            self.call_builder(&finalizedStateCall)
18854        }
18855        ///Creates a new call builder for the [`firstEpoch`] function.
18856        pub fn firstEpoch(
18857            &self,
18858        ) -> alloy_contract::SolCallBuilder<&P, firstEpochCall, N> {
18859            self.call_builder(&firstEpochCall)
18860        }
18861        ///Creates a new call builder for the [`genesisStakeTableState`] function.
18862        pub fn genesisStakeTableState(
18863            &self,
18864        ) -> alloy_contract::SolCallBuilder<&P, genesisStakeTableStateCall, N> {
18865            self.call_builder(&genesisStakeTableStateCall)
18866        }
18867        ///Creates a new call builder for the [`genesisState`] function.
18868        pub fn genesisState(
18869            &self,
18870        ) -> alloy_contract::SolCallBuilder<&P, genesisStateCall, N> {
18871            self.call_builder(&genesisStateCall)
18872        }
18873        ///Creates a new call builder for the [`getHotShotCommitment`] function.
18874        pub fn getHotShotCommitment(
18875            &self,
18876            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
18877        ) -> alloy_contract::SolCallBuilder<&P, getHotShotCommitmentCall, N> {
18878            self.call_builder(
18879                &getHotShotCommitmentCall {
18880                    hotShotBlockHeight,
18881                },
18882            )
18883        }
18884        ///Creates a new call builder for the [`getStateHistoryCount`] function.
18885        pub fn getStateHistoryCount(
18886            &self,
18887        ) -> alloy_contract::SolCallBuilder<&P, getStateHistoryCountCall, N> {
18888            self.call_builder(&getStateHistoryCountCall)
18889        }
18890        ///Creates a new call builder for the [`getVersion`] function.
18891        pub fn getVersion(
18892            &self,
18893        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
18894            self.call_builder(&getVersionCall)
18895        }
18896        ///Creates a new call builder for the [`initialize`] function.
18897        pub fn initialize(
18898            &self,
18899            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
18900            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
18901            _stateHistoryRetentionPeriod: u32,
18902            owner: alloy::sol_types::private::Address,
18903        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
18904            self.call_builder(
18905                &initializeCall {
18906                    _genesis,
18907                    _genesisStakeTableState,
18908                    _stateHistoryRetentionPeriod,
18909                    owner,
18910                },
18911            )
18912        }
18913        ///Creates a new call builder for the [`initializeV2`] function.
18914        pub fn initializeV2(
18915            &self,
18916            _blocksPerEpoch: u64,
18917            _epochStartBlock: u64,
18918        ) -> alloy_contract::SolCallBuilder<&P, initializeV2Call, N> {
18919            self.call_builder(
18920                &initializeV2Call {
18921                    _blocksPerEpoch,
18922                    _epochStartBlock,
18923                },
18924            )
18925        }
18926        ///Creates a new call builder for the [`initializeV3`] function.
18927        pub fn initializeV3(
18928            &self,
18929        ) -> alloy_contract::SolCallBuilder<&P, initializeV3Call, N> {
18930            self.call_builder(&initializeV3Call)
18931        }
18932        ///Creates a new call builder for the [`isEpochRoot`] function.
18933        pub fn isEpochRoot(
18934            &self,
18935            blockHeight: u64,
18936        ) -> alloy_contract::SolCallBuilder<&P, isEpochRootCall, N> {
18937            self.call_builder(&isEpochRootCall { blockHeight })
18938        }
18939        ///Creates a new call builder for the [`isGtEpochRoot`] function.
18940        pub fn isGtEpochRoot(
18941            &self,
18942            blockHeight: u64,
18943        ) -> alloy_contract::SolCallBuilder<&P, isGtEpochRootCall, N> {
18944            self.call_builder(&isGtEpochRootCall { blockHeight })
18945        }
18946        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
18947        pub fn isPermissionedProverEnabled(
18948            &self,
18949        ) -> alloy_contract::SolCallBuilder<&P, isPermissionedProverEnabledCall, N> {
18950            self.call_builder(&isPermissionedProverEnabledCall)
18951        }
18952        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
18953        pub fn lagOverEscapeHatchThreshold(
18954            &self,
18955            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
18956            threshold: alloy::sol_types::private::primitives::aliases::U256,
18957        ) -> alloy_contract::SolCallBuilder<&P, lagOverEscapeHatchThresholdCall, N> {
18958            self.call_builder(
18959                &lagOverEscapeHatchThresholdCall {
18960                    blockNumber,
18961                    threshold,
18962                },
18963            )
18964        }
18965        ///Creates a new call builder for the [`newFinalizedState_0`] function.
18966        pub fn newFinalizedState_0(
18967            &self,
18968            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
18969            _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
18970        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_0Call, N> {
18971            self.call_builder(&newFinalizedState_0Call { _0, _1 })
18972        }
18973        ///Creates a new call builder for the [`newFinalizedState_1`] function.
18974        pub fn newFinalizedState_1(
18975            &self,
18976            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
18977            _1: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
18978            _2: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
18979        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_1Call, N> {
18980            self.call_builder(
18981                &newFinalizedState_1Call {
18982                    _0,
18983                    _1,
18984                    _2,
18985                },
18986            )
18987        }
18988        ///Creates a new call builder for the [`newFinalizedState_2`] function.
18989        pub fn newFinalizedState_2(
18990            &self,
18991            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
18992            nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
18993            newAuthRoot: alloy::sol_types::private::primitives::aliases::U256,
18994            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
18995        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_2Call, N> {
18996            self.call_builder(
18997                &newFinalizedState_2Call {
18998                    newState,
18999                    nextStakeTable,
19000                    newAuthRoot,
19001                    proof,
19002                },
19003            )
19004        }
19005        ///Creates a new call builder for the [`owner`] function.
19006        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
19007            self.call_builder(&ownerCall)
19008        }
19009        ///Creates a new call builder for the [`permissionedProver`] function.
19010        pub fn permissionedProver(
19011            &self,
19012        ) -> alloy_contract::SolCallBuilder<&P, permissionedProverCall, N> {
19013            self.call_builder(&permissionedProverCall)
19014        }
19015        ///Creates a new call builder for the [`proxiableUUID`] function.
19016        pub fn proxiableUUID(
19017            &self,
19018        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
19019            self.call_builder(&proxiableUUIDCall)
19020        }
19021        ///Creates a new call builder for the [`renounceOwnership`] function.
19022        pub fn renounceOwnership(
19023            &self,
19024        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
19025            self.call_builder(&renounceOwnershipCall)
19026        }
19027        ///Creates a new call builder for the [`setBlocksPerEpoch`] function.
19028        pub fn setBlocksPerEpoch(
19029            &self,
19030            newBlocksPerEpoch: u64,
19031        ) -> alloy_contract::SolCallBuilder<&P, setBlocksPerEpochCall, N> {
19032            self.call_builder(
19033                &setBlocksPerEpochCall {
19034                    newBlocksPerEpoch,
19035                },
19036            )
19037        }
19038        ///Creates a new call builder for the [`setFinalizedState`] function.
19039        pub fn setFinalizedState(
19040            &self,
19041            state: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
19042        ) -> alloy_contract::SolCallBuilder<&P, setFinalizedStateCall, N> {
19043            self.call_builder(&setFinalizedStateCall { state })
19044        }
19045        ///Creates a new call builder for the [`setHotShotDownSince`] function.
19046        pub fn setHotShotDownSince(
19047            &self,
19048            l1Height: alloy::sol_types::private::primitives::aliases::U256,
19049        ) -> alloy_contract::SolCallBuilder<&P, setHotShotDownSinceCall, N> {
19050            self.call_builder(
19051                &setHotShotDownSinceCall {
19052                    l1Height,
19053                },
19054            )
19055        }
19056        ///Creates a new call builder for the [`setHotShotUp`] function.
19057        pub fn setHotShotUp(
19058            &self,
19059        ) -> alloy_contract::SolCallBuilder<&P, setHotShotUpCall, N> {
19060            self.call_builder(&setHotShotUpCall)
19061        }
19062        ///Creates a new call builder for the [`setPermissionedProver`] function.
19063        pub fn setPermissionedProver(
19064            &self,
19065            prover: alloy::sol_types::private::Address,
19066        ) -> alloy_contract::SolCallBuilder<&P, setPermissionedProverCall, N> {
19067            self.call_builder(
19068                &setPermissionedProverCall {
19069                    prover,
19070                },
19071            )
19072        }
19073        ///Creates a new call builder for the [`setStateHistory`] function.
19074        pub fn setStateHistory(
19075            &self,
19076            _stateHistoryCommitments: alloy::sol_types::private::Vec<
19077                <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
19078            >,
19079        ) -> alloy_contract::SolCallBuilder<&P, setStateHistoryCall, N> {
19080            self.call_builder(
19081                &setStateHistoryCall {
19082                    _stateHistoryCommitments,
19083                },
19084            )
19085        }
19086        ///Creates a new call builder for the [`setStateHistoryRetentionPeriod`] function.
19087        pub fn setStateHistoryRetentionPeriod(
19088            &self,
19089            historySeconds: u32,
19090        ) -> alloy_contract::SolCallBuilder<&P, setStateHistoryRetentionPeriodCall, N> {
19091            self.call_builder(
19092                &setStateHistoryRetentionPeriodCall {
19093                    historySeconds,
19094                },
19095            )
19096        }
19097        ///Creates a new call builder for the [`setVotingStakeTableState`] function.
19098        pub fn setVotingStakeTableState(
19099            &self,
19100            stake: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
19101        ) -> alloy_contract::SolCallBuilder<&P, setVotingStakeTableStateCall, N> {
19102            self.call_builder(
19103                &setVotingStakeTableStateCall {
19104                    stake,
19105                },
19106            )
19107        }
19108        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
19109        pub fn setstateHistoryRetentionPeriod(
19110            &self,
19111            historySeconds: u32,
19112        ) -> alloy_contract::SolCallBuilder<&P, setstateHistoryRetentionPeriodCall, N> {
19113            self.call_builder(
19114                &setstateHistoryRetentionPeriodCall {
19115                    historySeconds,
19116                },
19117            )
19118        }
19119        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
19120        pub fn stateHistoryCommitments(
19121            &self,
19122            _0: alloy::sol_types::private::primitives::aliases::U256,
19123        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryCommitmentsCall, N> {
19124            self.call_builder(&stateHistoryCommitmentsCall(_0))
19125        }
19126        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
19127        pub fn stateHistoryFirstIndex(
19128            &self,
19129        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryFirstIndexCall, N> {
19130            self.call_builder(&stateHistoryFirstIndexCall)
19131        }
19132        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
19133        pub fn stateHistoryRetentionPeriod(
19134            &self,
19135        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryRetentionPeriodCall, N> {
19136            self.call_builder(&stateHistoryRetentionPeriodCall)
19137        }
19138        ///Creates a new call builder for the [`transferOwnership`] function.
19139        pub fn transferOwnership(
19140            &self,
19141            newOwner: alloy::sol_types::private::Address,
19142        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
19143            self.call_builder(&transferOwnershipCall { newOwner })
19144        }
19145        ///Creates a new call builder for the [`updateEpochStartBlock`] function.
19146        pub fn updateEpochStartBlock(
19147            &self,
19148            newEpochStartBlock: u64,
19149        ) -> alloy_contract::SolCallBuilder<&P, updateEpochStartBlockCall, N> {
19150            self.call_builder(
19151                &updateEpochStartBlockCall {
19152                    newEpochStartBlock,
19153                },
19154            )
19155        }
19156        ///Creates a new call builder for the [`upgradeToAndCall`] function.
19157        pub fn upgradeToAndCall(
19158            &self,
19159            newImplementation: alloy::sol_types::private::Address,
19160            data: alloy::sol_types::private::Bytes,
19161        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
19162            self.call_builder(
19163                &upgradeToAndCallCall {
19164                    newImplementation,
19165                    data,
19166                },
19167            )
19168        }
19169        ///Creates a new call builder for the [`votingStakeTableState`] function.
19170        pub fn votingStakeTableState(
19171            &self,
19172        ) -> alloy_contract::SolCallBuilder<&P, votingStakeTableStateCall, N> {
19173            self.call_builder(&votingStakeTableStateCall)
19174        }
19175    }
19176    /// Event filters.
19177    #[automatically_derived]
19178    impl<
19179        P: alloy_contract::private::Provider<N>,
19180        N: alloy_contract::private::Network,
19181    > LightClientV3MockInstance<P, N> {
19182        /// Creates a new event filter using this contract instance's provider and address.
19183        ///
19184        /// Note that the type can be any event, not just those defined in this contract.
19185        /// Prefer using the other methods for building type-safe event filters.
19186        pub fn event_filter<E: alloy_sol_types::SolEvent>(
19187            &self,
19188        ) -> alloy_contract::Event<&P, E, N> {
19189            alloy_contract::Event::new_sol(&self.provider, &self.address)
19190        }
19191        ///Creates a new event filter for the [`Initialized`] event.
19192        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
19193            self.event_filter::<Initialized>()
19194        }
19195        ///Creates a new event filter for the [`NewEpoch`] event.
19196        pub fn NewEpoch_filter(&self) -> alloy_contract::Event<&P, NewEpoch, N> {
19197            self.event_filter::<NewEpoch>()
19198        }
19199        ///Creates a new event filter for the [`NewState`] event.
19200        pub fn NewState_filter(&self) -> alloy_contract::Event<&P, NewState, N> {
19201            self.event_filter::<NewState>()
19202        }
19203        ///Creates a new event filter for the [`OwnershipTransferred`] event.
19204        pub fn OwnershipTransferred_filter(
19205            &self,
19206        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
19207            self.event_filter::<OwnershipTransferred>()
19208        }
19209        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
19210        pub fn PermissionedProverNotRequired_filter(
19211            &self,
19212        ) -> alloy_contract::Event<&P, PermissionedProverNotRequired, N> {
19213            self.event_filter::<PermissionedProverNotRequired>()
19214        }
19215        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
19216        pub fn PermissionedProverRequired_filter(
19217            &self,
19218        ) -> alloy_contract::Event<&P, PermissionedProverRequired, N> {
19219            self.event_filter::<PermissionedProverRequired>()
19220        }
19221        ///Creates a new event filter for the [`Upgrade`] event.
19222        pub fn Upgrade_filter(&self) -> alloy_contract::Event<&P, Upgrade, N> {
19223            self.event_filter::<Upgrade>()
19224        }
19225        ///Creates a new event filter for the [`Upgraded`] event.
19226        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
19227            self.event_filter::<Upgraded>()
19228        }
19229    }
19230}