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        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
334        #[doc(hidden)]
335        type UnderlyingRustTuple<'a> = (
336            <BaseField as alloy::sol_types::SolType>::RustType,
337            <BaseField as alloy::sol_types::SolType>::RustType,
338        );
339        #[cfg(test)]
340        #[allow(dead_code, unreachable_patterns)]
341        fn _type_assertion(
342            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
343        ) {
344            match _t {
345                alloy_sol_types::private::AssertTypeEq::<
346                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
347                >(_) => {}
348            }
349        }
350        #[automatically_derived]
351        #[doc(hidden)]
352        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
353            fn from(value: G1Point) -> Self {
354                (value.x, value.y)
355            }
356        }
357        #[automatically_derived]
358        #[doc(hidden)]
359        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
360            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
361                Self { x: tuple.0, y: tuple.1 }
362            }
363        }
364        #[automatically_derived]
365        impl alloy_sol_types::SolValue for G1Point {
366            type SolType = Self;
367        }
368        #[automatically_derived]
369        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
370            #[inline]
371            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
372                (
373                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
374                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
375                )
376            }
377            #[inline]
378            fn stv_abi_encoded_size(&self) -> usize {
379                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
380                    return size;
381                }
382                let tuple = <UnderlyingRustTuple<
383                    '_,
384                > as ::core::convert::From<Self>>::from(self.clone());
385                <UnderlyingSolTuple<
386                    '_,
387                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
388            }
389            #[inline]
390            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
391                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
392            }
393            #[inline]
394            fn stv_abi_encode_packed_to(
395                &self,
396                out: &mut alloy_sol_types::private::Vec<u8>,
397            ) {
398                let tuple = <UnderlyingRustTuple<
399                    '_,
400                > as ::core::convert::From<Self>>::from(self.clone());
401                <UnderlyingSolTuple<
402                    '_,
403                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
404            }
405            #[inline]
406            fn stv_abi_packed_encoded_size(&self) -> usize {
407                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
408                    return size;
409                }
410                let tuple = <UnderlyingRustTuple<
411                    '_,
412                > as ::core::convert::From<Self>>::from(self.clone());
413                <UnderlyingSolTuple<
414                    '_,
415                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
416            }
417        }
418        #[automatically_derived]
419        impl alloy_sol_types::SolType for G1Point {
420            type RustType = Self;
421            type Token<'a> = <UnderlyingSolTuple<
422                'a,
423            > as alloy_sol_types::SolType>::Token<'a>;
424            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
425            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
426                '_,
427            > as alloy_sol_types::SolType>::ENCODED_SIZE;
428            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
429                '_,
430            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
431            #[inline]
432            fn valid_token(token: &Self::Token<'_>) -> bool {
433                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
434            }
435            #[inline]
436            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
437                let tuple = <UnderlyingSolTuple<
438                    '_,
439                > as alloy_sol_types::SolType>::detokenize(token);
440                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
441            }
442        }
443        #[automatically_derived]
444        impl alloy_sol_types::SolStruct for G1Point {
445            const NAME: &'static str = "G1Point";
446            #[inline]
447            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
448                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
449            }
450            #[inline]
451            fn eip712_components() -> alloy_sol_types::private::Vec<
452                alloy_sol_types::private::Cow<'static, str>,
453            > {
454                alloy_sol_types::private::Vec::new()
455            }
456            #[inline]
457            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
458                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
459            }
460            #[inline]
461            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
462                [
463                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
464                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
465                ]
466                    .concat()
467            }
468        }
469        #[automatically_derived]
470        impl alloy_sol_types::EventTopic for G1Point {
471            #[inline]
472            fn topic_preimage_length(rust: &Self::RustType) -> usize {
473                0usize
474                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
475                        &rust.x,
476                    )
477                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
478                        &rust.y,
479                    )
480            }
481            #[inline]
482            fn encode_topic_preimage(
483                rust: &Self::RustType,
484                out: &mut alloy_sol_types::private::Vec<u8>,
485            ) {
486                out.reserve(
487                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
488                );
489                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
490                    &rust.x,
491                    out,
492                );
493                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
494                    &rust.y,
495                    out,
496                );
497            }
498            #[inline]
499            fn encode_topic(
500                rust: &Self::RustType,
501            ) -> alloy_sol_types::abi::token::WordToken {
502                let mut out = alloy_sol_types::private::Vec::new();
503                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
504                    rust,
505                    &mut out,
506                );
507                alloy_sol_types::abi::token::WordToken(
508                    alloy_sol_types::private::keccak256(out),
509                )
510            }
511        }
512    };
513    use alloy::contract as alloy_contract;
514    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
515
516See the [wrapper's documentation](`BN254Instance`) for more details.*/
517    #[inline]
518    pub const fn new<
519        P: alloy_contract::private::Provider<N>,
520        N: alloy_contract::private::Network,
521    >(address: alloy_sol_types::private::Address, provider: P) -> BN254Instance<P, N> {
522        BN254Instance::<P, N>::new(address, provider)
523    }
524    /**A [`BN254`](self) instance.
525
526Contains type-safe methods for interacting with an on-chain instance of the
527[`BN254`](self) contract located at a given `address`, using a given
528provider `P`.
529
530If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
531documentation on how to provide it), the `deploy` and `deploy_builder` methods can
532be used to deploy a new instance of the contract.
533
534See the [module-level documentation](self) for all the available methods.*/
535    #[derive(Clone)]
536    pub struct BN254Instance<P, N = alloy_contract::private::Ethereum> {
537        address: alloy_sol_types::private::Address,
538        provider: P,
539        _network: ::core::marker::PhantomData<N>,
540    }
541    #[automatically_derived]
542    impl<P, N> ::core::fmt::Debug for BN254Instance<P, N> {
543        #[inline]
544        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
545            f.debug_tuple("BN254Instance").field(&self.address).finish()
546        }
547    }
548    /// Instantiation and getters/setters.
549    #[automatically_derived]
550    impl<
551        P: alloy_contract::private::Provider<N>,
552        N: alloy_contract::private::Network,
553    > BN254Instance<P, N> {
554        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
555
556See the [wrapper's documentation](`BN254Instance`) for more details.*/
557        #[inline]
558        pub const fn new(
559            address: alloy_sol_types::private::Address,
560            provider: P,
561        ) -> Self {
562            Self {
563                address,
564                provider,
565                _network: ::core::marker::PhantomData,
566            }
567        }
568        /// Returns a reference to the address.
569        #[inline]
570        pub const fn address(&self) -> &alloy_sol_types::private::Address {
571            &self.address
572        }
573        /// Sets the address.
574        #[inline]
575        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
576            self.address = address;
577        }
578        /// Sets the address and returns `self`.
579        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
580            self.set_address(address);
581            self
582        }
583        /// Returns a reference to the provider.
584        #[inline]
585        pub const fn provider(&self) -> &P {
586            &self.provider
587        }
588    }
589    impl<P: ::core::clone::Clone, N> BN254Instance<&P, N> {
590        /// Clones the provider and returns a new instance with the cloned provider.
591        #[inline]
592        pub fn with_cloned_provider(self) -> BN254Instance<P, N> {
593            BN254Instance {
594                address: self.address,
595                provider: ::core::clone::Clone::clone(&self.provider),
596                _network: ::core::marker::PhantomData,
597            }
598        }
599    }
600    /// Function calls.
601    #[automatically_derived]
602    impl<
603        P: alloy_contract::private::Provider<N>,
604        N: alloy_contract::private::Network,
605    > BN254Instance<P, N> {
606        /// Creates a new call builder using this contract instance's provider and address.
607        ///
608        /// Note that the call can be any function call, not just those defined in this
609        /// contract. Prefer using the other methods for building type-safe contract calls.
610        pub fn call_builder<C: alloy_sol_types::SolCall>(
611            &self,
612            call: &C,
613        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
614            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
615        }
616    }
617    /// Event filters.
618    #[automatically_derived]
619    impl<
620        P: alloy_contract::private::Provider<N>,
621        N: alloy_contract::private::Network,
622    > BN254Instance<P, N> {
623        /// Creates a new event filter using this contract instance's provider and address.
624        ///
625        /// Note that the type can be any event, not just those defined in this contract.
626        /// Prefer using the other methods for building type-safe event filters.
627        pub fn event_filter<E: alloy_sol_types::SolEvent>(
628            &self,
629        ) -> alloy_contract::Event<&P, E, N> {
630            alloy_contract::Event::new_sol(&self.provider, &self.address)
631        }
632    }
633}
634///Module containing a contract's types and functions.
635/**
636
637```solidity
638library IPlonkVerifier {
639    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; }
640    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; }
641}
642```*/
643#[allow(
644    non_camel_case_types,
645    non_snake_case,
646    clippy::pub_underscore_fields,
647    clippy::style,
648    clippy::empty_structs_with_brackets
649)]
650pub mod IPlonkVerifier {
651    use super::*;
652    use alloy::sol_types as alloy_sol_types;
653    #[derive(serde::Serialize, serde::Deserialize)]
654    #[derive()]
655    /**```solidity
656struct 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; }
657```*/
658    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
659    #[derive(Clone)]
660    pub struct PlonkProof {
661        #[allow(missing_docs)]
662        pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
663        #[allow(missing_docs)]
664        pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
665        #[allow(missing_docs)]
666        pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
667        #[allow(missing_docs)]
668        pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
669        #[allow(missing_docs)]
670        pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
671        #[allow(missing_docs)]
672        pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
673        #[allow(missing_docs)]
674        pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
675        #[allow(missing_docs)]
676        pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
677        #[allow(missing_docs)]
678        pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
679        #[allow(missing_docs)]
680        pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
681        #[allow(missing_docs)]
682        pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
683        #[allow(missing_docs)]
684        pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
685        #[allow(missing_docs)]
686        pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
687        #[allow(missing_docs)]
688        pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
689        #[allow(missing_docs)]
690        pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
691        #[allow(missing_docs)]
692        pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
693        #[allow(missing_docs)]
694        pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
695        #[allow(missing_docs)]
696        pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
697        #[allow(missing_docs)]
698        pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
699        #[allow(missing_docs)]
700        pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
701        #[allow(missing_docs)]
702        pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
703        #[allow(missing_docs)]
704        pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
705        #[allow(missing_docs)]
706        pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
707    }
708    #[allow(
709        non_camel_case_types,
710        non_snake_case,
711        clippy::pub_underscore_fields,
712        clippy::style
713    )]
714    const _: () = {
715        use alloy::sol_types as alloy_sol_types;
716        #[doc(hidden)]
717        type UnderlyingSolTuple<'a> = (
718            BN254::G1Point,
719            BN254::G1Point,
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::ScalarField,
732            BN254::ScalarField,
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        );
742        #[doc(hidden)]
743        type UnderlyingRustTuple<'a> = (
744            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
745            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
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::ScalarField as alloy::sol_types::SolType>::RustType,
758            <BN254::ScalarField 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        );
768        #[cfg(test)]
769        #[allow(dead_code, unreachable_patterns)]
770        fn _type_assertion(
771            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
772        ) {
773            match _t {
774                alloy_sol_types::private::AssertTypeEq::<
775                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
776                >(_) => {}
777            }
778        }
779        #[automatically_derived]
780        #[doc(hidden)]
781        impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
782            fn from(value: PlonkProof) -> Self {
783                (
784                    value.wire0,
785                    value.wire1,
786                    value.wire2,
787                    value.wire3,
788                    value.wire4,
789                    value.prodPerm,
790                    value.split0,
791                    value.split1,
792                    value.split2,
793                    value.split3,
794                    value.split4,
795                    value.zeta,
796                    value.zetaOmega,
797                    value.wireEval0,
798                    value.wireEval1,
799                    value.wireEval2,
800                    value.wireEval3,
801                    value.wireEval4,
802                    value.sigmaEval0,
803                    value.sigmaEval1,
804                    value.sigmaEval2,
805                    value.sigmaEval3,
806                    value.prodPermZetaOmegaEval,
807                )
808            }
809        }
810        #[automatically_derived]
811        #[doc(hidden)]
812        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
813            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
814                Self {
815                    wire0: tuple.0,
816                    wire1: tuple.1,
817                    wire2: tuple.2,
818                    wire3: tuple.3,
819                    wire4: tuple.4,
820                    prodPerm: tuple.5,
821                    split0: tuple.6,
822                    split1: tuple.7,
823                    split2: tuple.8,
824                    split3: tuple.9,
825                    split4: tuple.10,
826                    zeta: tuple.11,
827                    zetaOmega: tuple.12,
828                    wireEval0: tuple.13,
829                    wireEval1: tuple.14,
830                    wireEval2: tuple.15,
831                    wireEval3: tuple.16,
832                    wireEval4: tuple.17,
833                    sigmaEval0: tuple.18,
834                    sigmaEval1: tuple.19,
835                    sigmaEval2: tuple.20,
836                    sigmaEval3: tuple.21,
837                    prodPermZetaOmegaEval: tuple.22,
838                }
839            }
840        }
841        #[automatically_derived]
842        impl alloy_sol_types::SolValue for PlonkProof {
843            type SolType = Self;
844        }
845        #[automatically_derived]
846        impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
847            #[inline]
848            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
849                (
850                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
851                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
852                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
853                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
854                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
855                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
856                        &self.prodPerm,
857                    ),
858                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
859                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
860                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
861                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
862                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
863                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
864                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
865                        &self.zetaOmega,
866                    ),
867                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
868                        &self.wireEval0,
869                    ),
870                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
871                        &self.wireEval1,
872                    ),
873                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
874                        &self.wireEval2,
875                    ),
876                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
877                        &self.wireEval3,
878                    ),
879                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
880                        &self.wireEval4,
881                    ),
882                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
883                        &self.sigmaEval0,
884                    ),
885                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
886                        &self.sigmaEval1,
887                    ),
888                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
889                        &self.sigmaEval2,
890                    ),
891                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
892                        &self.sigmaEval3,
893                    ),
894                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
895                        &self.prodPermZetaOmegaEval,
896                    ),
897                )
898            }
899            #[inline]
900            fn stv_abi_encoded_size(&self) -> usize {
901                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
902                    return size;
903                }
904                let tuple = <UnderlyingRustTuple<
905                    '_,
906                > as ::core::convert::From<Self>>::from(self.clone());
907                <UnderlyingSolTuple<
908                    '_,
909                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
910            }
911            #[inline]
912            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
913                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
914            }
915            #[inline]
916            fn stv_abi_encode_packed_to(
917                &self,
918                out: &mut alloy_sol_types::private::Vec<u8>,
919            ) {
920                let tuple = <UnderlyingRustTuple<
921                    '_,
922                > as ::core::convert::From<Self>>::from(self.clone());
923                <UnderlyingSolTuple<
924                    '_,
925                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
926            }
927            #[inline]
928            fn stv_abi_packed_encoded_size(&self) -> usize {
929                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
930                    return size;
931                }
932                let tuple = <UnderlyingRustTuple<
933                    '_,
934                > as ::core::convert::From<Self>>::from(self.clone());
935                <UnderlyingSolTuple<
936                    '_,
937                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
938            }
939        }
940        #[automatically_derived]
941        impl alloy_sol_types::SolType for PlonkProof {
942            type RustType = Self;
943            type Token<'a> = <UnderlyingSolTuple<
944                'a,
945            > as alloy_sol_types::SolType>::Token<'a>;
946            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
947            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
948                '_,
949            > as alloy_sol_types::SolType>::ENCODED_SIZE;
950            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
951                '_,
952            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
953            #[inline]
954            fn valid_token(token: &Self::Token<'_>) -> bool {
955                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
956            }
957            #[inline]
958            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
959                let tuple = <UnderlyingSolTuple<
960                    '_,
961                > as alloy_sol_types::SolType>::detokenize(token);
962                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
963            }
964        }
965        #[automatically_derived]
966        impl alloy_sol_types::SolStruct for PlonkProof {
967            const NAME: &'static str = "PlonkProof";
968            #[inline]
969            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
970                alloy_sol_types::private::Cow::Borrowed(
971                    "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)",
972                )
973            }
974            #[inline]
975            fn eip712_components() -> alloy_sol_types::private::Vec<
976                alloy_sol_types::private::Cow<'static, str>,
977            > {
978                let mut components = alloy_sol_types::private::Vec::with_capacity(13);
979                components
980                    .push(
981                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
982                    );
983                components
984                    .extend(
985                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
986                    );
987                components
988                    .push(
989                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
990                    );
991                components
992                    .extend(
993                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
994                    );
995                components
996                    .push(
997                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
998                    );
999                components
1000                    .extend(
1001                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1002                    );
1003                components
1004                    .push(
1005                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1006                    );
1007                components
1008                    .extend(
1009                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1010                    );
1011                components
1012                    .push(
1013                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1014                    );
1015                components
1016                    .extend(
1017                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1018                    );
1019                components
1020                    .push(
1021                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1022                    );
1023                components
1024                    .extend(
1025                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1026                    );
1027                components
1028                    .push(
1029                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1030                    );
1031                components
1032                    .extend(
1033                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1034                    );
1035                components
1036                    .push(
1037                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1038                    );
1039                components
1040                    .extend(
1041                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1042                    );
1043                components
1044                    .push(
1045                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1046                    );
1047                components
1048                    .extend(
1049                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1050                    );
1051                components
1052                    .push(
1053                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1054                    );
1055                components
1056                    .extend(
1057                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1058                    );
1059                components
1060                    .push(
1061                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1062                    );
1063                components
1064                    .extend(
1065                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1066                    );
1067                components
1068                    .push(
1069                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1070                    );
1071                components
1072                    .extend(
1073                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1074                    );
1075                components
1076                    .push(
1077                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1078                    );
1079                components
1080                    .extend(
1081                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1082                    );
1083                components
1084            }
1085            #[inline]
1086            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1087                [
1088                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1089                            &self.wire0,
1090                        )
1091                        .0,
1092                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1093                            &self.wire1,
1094                        )
1095                        .0,
1096                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1097                            &self.wire2,
1098                        )
1099                        .0,
1100                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1101                            &self.wire3,
1102                        )
1103                        .0,
1104                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1105                            &self.wire4,
1106                        )
1107                        .0,
1108                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1109                            &self.prodPerm,
1110                        )
1111                        .0,
1112                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1113                            &self.split0,
1114                        )
1115                        .0,
1116                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1117                            &self.split1,
1118                        )
1119                        .0,
1120                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1121                            &self.split2,
1122                        )
1123                        .0,
1124                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1125                            &self.split3,
1126                        )
1127                        .0,
1128                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1129                            &self.split4,
1130                        )
1131                        .0,
1132                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1133                            &self.zeta,
1134                        )
1135                        .0,
1136                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1137                            &self.zetaOmega,
1138                        )
1139                        .0,
1140                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1141                            &self.wireEval0,
1142                        )
1143                        .0,
1144                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1145                            &self.wireEval1,
1146                        )
1147                        .0,
1148                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1149                            &self.wireEval2,
1150                        )
1151                        .0,
1152                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1153                            &self.wireEval3,
1154                        )
1155                        .0,
1156                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1157                            &self.wireEval4,
1158                        )
1159                        .0,
1160                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1161                            &self.sigmaEval0,
1162                        )
1163                        .0,
1164                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1165                            &self.sigmaEval1,
1166                        )
1167                        .0,
1168                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1169                            &self.sigmaEval2,
1170                        )
1171                        .0,
1172                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1173                            &self.sigmaEval3,
1174                        )
1175                        .0,
1176                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1177                            &self.prodPermZetaOmegaEval,
1178                        )
1179                        .0,
1180                ]
1181                    .concat()
1182            }
1183        }
1184        #[automatically_derived]
1185        impl alloy_sol_types::EventTopic for PlonkProof {
1186            #[inline]
1187            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1188                0usize
1189                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1190                        &rust.wire0,
1191                    )
1192                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1193                        &rust.wire1,
1194                    )
1195                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1196                        &rust.wire2,
1197                    )
1198                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1199                        &rust.wire3,
1200                    )
1201                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1202                        &rust.wire4,
1203                    )
1204                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1205                        &rust.prodPerm,
1206                    )
1207                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1208                        &rust.split0,
1209                    )
1210                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1211                        &rust.split1,
1212                    )
1213                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1214                        &rust.split2,
1215                    )
1216                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1217                        &rust.split3,
1218                    )
1219                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1220                        &rust.split4,
1221                    )
1222                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1223                        &rust.zeta,
1224                    )
1225                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1226                        &rust.zetaOmega,
1227                    )
1228                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1229                        &rust.wireEval0,
1230                    )
1231                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1232                        &rust.wireEval1,
1233                    )
1234                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1235                        &rust.wireEval2,
1236                    )
1237                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1238                        &rust.wireEval3,
1239                    )
1240                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1241                        &rust.wireEval4,
1242                    )
1243                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1244                        &rust.sigmaEval0,
1245                    )
1246                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1247                        &rust.sigmaEval1,
1248                    )
1249                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1250                        &rust.sigmaEval2,
1251                    )
1252                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1253                        &rust.sigmaEval3,
1254                    )
1255                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1256                        &rust.prodPermZetaOmegaEval,
1257                    )
1258            }
1259            #[inline]
1260            fn encode_topic_preimage(
1261                rust: &Self::RustType,
1262                out: &mut alloy_sol_types::private::Vec<u8>,
1263            ) {
1264                out.reserve(
1265                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1266                );
1267                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1268                    &rust.wire0,
1269                    out,
1270                );
1271                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1272                    &rust.wire1,
1273                    out,
1274                );
1275                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1276                    &rust.wire2,
1277                    out,
1278                );
1279                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1280                    &rust.wire3,
1281                    out,
1282                );
1283                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1284                    &rust.wire4,
1285                    out,
1286                );
1287                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1288                    &rust.prodPerm,
1289                    out,
1290                );
1291                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1292                    &rust.split0,
1293                    out,
1294                );
1295                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1296                    &rust.split1,
1297                    out,
1298                );
1299                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1300                    &rust.split2,
1301                    out,
1302                );
1303                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1304                    &rust.split3,
1305                    out,
1306                );
1307                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1308                    &rust.split4,
1309                    out,
1310                );
1311                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1312                    &rust.zeta,
1313                    out,
1314                );
1315                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1316                    &rust.zetaOmega,
1317                    out,
1318                );
1319                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1320                    &rust.wireEval0,
1321                    out,
1322                );
1323                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1324                    &rust.wireEval1,
1325                    out,
1326                );
1327                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1328                    &rust.wireEval2,
1329                    out,
1330                );
1331                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1332                    &rust.wireEval3,
1333                    out,
1334                );
1335                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1336                    &rust.wireEval4,
1337                    out,
1338                );
1339                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1340                    &rust.sigmaEval0,
1341                    out,
1342                );
1343                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1344                    &rust.sigmaEval1,
1345                    out,
1346                );
1347                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1348                    &rust.sigmaEval2,
1349                    out,
1350                );
1351                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1352                    &rust.sigmaEval3,
1353                    out,
1354                );
1355                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1356                    &rust.prodPermZetaOmegaEval,
1357                    out,
1358                );
1359            }
1360            #[inline]
1361            fn encode_topic(
1362                rust: &Self::RustType,
1363            ) -> alloy_sol_types::abi::token::WordToken {
1364                let mut out = alloy_sol_types::private::Vec::new();
1365                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1366                    rust,
1367                    &mut out,
1368                );
1369                alloy_sol_types::abi::token::WordToken(
1370                    alloy_sol_types::private::keccak256(out),
1371                )
1372            }
1373        }
1374    };
1375    #[derive(serde::Serialize, serde::Deserialize)]
1376    #[derive()]
1377    /**```solidity
1378struct 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; }
1379```*/
1380    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1381    #[derive(Clone)]
1382    pub struct VerifyingKey {
1383        #[allow(missing_docs)]
1384        pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1385        #[allow(missing_docs)]
1386        pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1387        #[allow(missing_docs)]
1388        pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1389        #[allow(missing_docs)]
1390        pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1391        #[allow(missing_docs)]
1392        pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1393        #[allow(missing_docs)]
1394        pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1395        #[allow(missing_docs)]
1396        pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1397        #[allow(missing_docs)]
1398        pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1399        #[allow(missing_docs)]
1400        pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1401        #[allow(missing_docs)]
1402        pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1403        #[allow(missing_docs)]
1404        pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1405        #[allow(missing_docs)]
1406        pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1407        #[allow(missing_docs)]
1408        pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1409        #[allow(missing_docs)]
1410        pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1411        #[allow(missing_docs)]
1412        pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1413        #[allow(missing_docs)]
1414        pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1415        #[allow(missing_docs)]
1416        pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1417        #[allow(missing_docs)]
1418        pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1419        #[allow(missing_docs)]
1420        pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1421        #[allow(missing_docs)]
1422        pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1423        #[allow(missing_docs)]
1424        pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1425        #[allow(missing_docs)]
1426        pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1427    }
1428    #[allow(
1429        non_camel_case_types,
1430        non_snake_case,
1431        clippy::pub_underscore_fields,
1432        clippy::style
1433    )]
1434    const _: () = {
1435        use alloy::sol_types as alloy_sol_types;
1436        #[doc(hidden)]
1437        type UnderlyingSolTuple<'a> = (
1438            alloy::sol_types::sol_data::Uint<256>,
1439            alloy::sol_types::sol_data::Uint<256>,
1440            BN254::G1Point,
1441            BN254::G1Point,
1442            BN254::G1Point,
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            alloy::sol_types::sol_data::FixedBytes<32>,
1459            alloy::sol_types::sol_data::FixedBytes<32>,
1460        );
1461        #[doc(hidden)]
1462        type UnderlyingRustTuple<'a> = (
1463            alloy::sol_types::private::primitives::aliases::U256,
1464            alloy::sol_types::private::primitives::aliases::U256,
1465            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1466            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1467            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
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            alloy::sol_types::private::FixedBytes<32>,
1484            alloy::sol_types::private::FixedBytes<32>,
1485        );
1486        #[cfg(test)]
1487        #[allow(dead_code, unreachable_patterns)]
1488        fn _type_assertion(
1489            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1490        ) {
1491            match _t {
1492                alloy_sol_types::private::AssertTypeEq::<
1493                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1494                >(_) => {}
1495            }
1496        }
1497        #[automatically_derived]
1498        #[doc(hidden)]
1499        impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1500            fn from(value: VerifyingKey) -> Self {
1501                (
1502                    value.domainSize,
1503                    value.numInputs,
1504                    value.sigma0,
1505                    value.sigma1,
1506                    value.sigma2,
1507                    value.sigma3,
1508                    value.sigma4,
1509                    value.q1,
1510                    value.q2,
1511                    value.q3,
1512                    value.q4,
1513                    value.qM12,
1514                    value.qM34,
1515                    value.qO,
1516                    value.qC,
1517                    value.qH1,
1518                    value.qH2,
1519                    value.qH3,
1520                    value.qH4,
1521                    value.qEcc,
1522                    value.g2LSB,
1523                    value.g2MSB,
1524                )
1525            }
1526        }
1527        #[automatically_derived]
1528        #[doc(hidden)]
1529        impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1530            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1531                Self {
1532                    domainSize: tuple.0,
1533                    numInputs: tuple.1,
1534                    sigma0: tuple.2,
1535                    sigma1: tuple.3,
1536                    sigma2: tuple.4,
1537                    sigma3: tuple.5,
1538                    sigma4: tuple.6,
1539                    q1: tuple.7,
1540                    q2: tuple.8,
1541                    q3: tuple.9,
1542                    q4: tuple.10,
1543                    qM12: tuple.11,
1544                    qM34: tuple.12,
1545                    qO: tuple.13,
1546                    qC: tuple.14,
1547                    qH1: tuple.15,
1548                    qH2: tuple.16,
1549                    qH3: tuple.17,
1550                    qH4: tuple.18,
1551                    qEcc: tuple.19,
1552                    g2LSB: tuple.20,
1553                    g2MSB: tuple.21,
1554                }
1555            }
1556        }
1557        #[automatically_derived]
1558        impl alloy_sol_types::SolValue for VerifyingKey {
1559            type SolType = Self;
1560        }
1561        #[automatically_derived]
1562        impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1563            #[inline]
1564            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1565                (
1566                    <alloy::sol_types::sol_data::Uint<
1567                        256,
1568                    > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1569                    <alloy::sol_types::sol_data::Uint<
1570                        256,
1571                    > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1572                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1573                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1574                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1575                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1576                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1577                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1578                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1579                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1580                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1581                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1582                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1583                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1584                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1585                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1586                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1587                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1588                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1589                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1590                    <alloy::sol_types::sol_data::FixedBytes<
1591                        32,
1592                    > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1593                    <alloy::sol_types::sol_data::FixedBytes<
1594                        32,
1595                    > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1596                )
1597            }
1598            #[inline]
1599            fn stv_abi_encoded_size(&self) -> usize {
1600                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1601                    return size;
1602                }
1603                let tuple = <UnderlyingRustTuple<
1604                    '_,
1605                > as ::core::convert::From<Self>>::from(self.clone());
1606                <UnderlyingSolTuple<
1607                    '_,
1608                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1609            }
1610            #[inline]
1611            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1612                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1613            }
1614            #[inline]
1615            fn stv_abi_encode_packed_to(
1616                &self,
1617                out: &mut alloy_sol_types::private::Vec<u8>,
1618            ) {
1619                let tuple = <UnderlyingRustTuple<
1620                    '_,
1621                > as ::core::convert::From<Self>>::from(self.clone());
1622                <UnderlyingSolTuple<
1623                    '_,
1624                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1625            }
1626            #[inline]
1627            fn stv_abi_packed_encoded_size(&self) -> usize {
1628                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1629                    return size;
1630                }
1631                let tuple = <UnderlyingRustTuple<
1632                    '_,
1633                > as ::core::convert::From<Self>>::from(self.clone());
1634                <UnderlyingSolTuple<
1635                    '_,
1636                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1637            }
1638        }
1639        #[automatically_derived]
1640        impl alloy_sol_types::SolType for VerifyingKey {
1641            type RustType = Self;
1642            type Token<'a> = <UnderlyingSolTuple<
1643                'a,
1644            > as alloy_sol_types::SolType>::Token<'a>;
1645            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1646            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1647                '_,
1648            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1649            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1650                '_,
1651            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1652            #[inline]
1653            fn valid_token(token: &Self::Token<'_>) -> bool {
1654                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1655            }
1656            #[inline]
1657            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1658                let tuple = <UnderlyingSolTuple<
1659                    '_,
1660                > as alloy_sol_types::SolType>::detokenize(token);
1661                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1662            }
1663        }
1664        #[automatically_derived]
1665        impl alloy_sol_types::SolStruct for VerifyingKey {
1666            const NAME: &'static str = "VerifyingKey";
1667            #[inline]
1668            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1669                alloy_sol_types::private::Cow::Borrowed(
1670                    "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)",
1671                )
1672            }
1673            #[inline]
1674            fn eip712_components() -> alloy_sol_types::private::Vec<
1675                alloy_sol_types::private::Cow<'static, str>,
1676            > {
1677                let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1678                components
1679                    .push(
1680                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1681                    );
1682                components
1683                    .extend(
1684                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1685                    );
1686                components
1687                    .push(
1688                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1689                    );
1690                components
1691                    .extend(
1692                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1693                    );
1694                components
1695                    .push(
1696                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1697                    );
1698                components
1699                    .extend(
1700                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1701                    );
1702                components
1703                    .push(
1704                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1705                    );
1706                components
1707                    .extend(
1708                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1709                    );
1710                components
1711                    .push(
1712                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1713                    );
1714                components
1715                    .extend(
1716                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1717                    );
1718                components
1719                    .push(
1720                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1721                    );
1722                components
1723                    .extend(
1724                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1725                    );
1726                components
1727                    .push(
1728                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1729                    );
1730                components
1731                    .extend(
1732                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1733                    );
1734                components
1735                    .push(
1736                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1737                    );
1738                components
1739                    .extend(
1740                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1741                    );
1742                components
1743                    .push(
1744                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1745                    );
1746                components
1747                    .extend(
1748                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1749                    );
1750                components
1751                    .push(
1752                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1753                    );
1754                components
1755                    .extend(
1756                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1757                    );
1758                components
1759                    .push(
1760                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1761                    );
1762                components
1763                    .extend(
1764                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1765                    );
1766                components
1767                    .push(
1768                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1769                    );
1770                components
1771                    .extend(
1772                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1773                    );
1774                components
1775                    .push(
1776                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1777                    );
1778                components
1779                    .extend(
1780                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1781                    );
1782                components
1783                    .push(
1784                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1785                    );
1786                components
1787                    .extend(
1788                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1789                    );
1790                components
1791                    .push(
1792                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1793                    );
1794                components
1795                    .extend(
1796                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1797                    );
1798                components
1799                    .push(
1800                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1801                    );
1802                components
1803                    .extend(
1804                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1805                    );
1806                components
1807                    .push(
1808                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1809                    );
1810                components
1811                    .extend(
1812                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1813                    );
1814                components
1815                    .push(
1816                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1817                    );
1818                components
1819                    .extend(
1820                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1821                    );
1822                components
1823            }
1824            #[inline]
1825            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1826                [
1827                    <alloy::sol_types::sol_data::Uint<
1828                        256,
1829                    > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1830                        .0,
1831                    <alloy::sol_types::sol_data::Uint<
1832                        256,
1833                    > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1834                        .0,
1835                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1836                            &self.sigma0,
1837                        )
1838                        .0,
1839                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1840                            &self.sigma1,
1841                        )
1842                        .0,
1843                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1844                            &self.sigma2,
1845                        )
1846                        .0,
1847                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1848                            &self.sigma3,
1849                        )
1850                        .0,
1851                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1852                            &self.sigma4,
1853                        )
1854                        .0,
1855                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1856                            &self.q1,
1857                        )
1858                        .0,
1859                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1860                            &self.q2,
1861                        )
1862                        .0,
1863                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1864                            &self.q3,
1865                        )
1866                        .0,
1867                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1868                            &self.q4,
1869                        )
1870                        .0,
1871                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1872                            &self.qM12,
1873                        )
1874                        .0,
1875                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1876                            &self.qM34,
1877                        )
1878                        .0,
1879                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1880                            &self.qO,
1881                        )
1882                        .0,
1883                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1884                            &self.qC,
1885                        )
1886                        .0,
1887                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1888                            &self.qH1,
1889                        )
1890                        .0,
1891                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1892                            &self.qH2,
1893                        )
1894                        .0,
1895                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1896                            &self.qH3,
1897                        )
1898                        .0,
1899                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1900                            &self.qH4,
1901                        )
1902                        .0,
1903                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1904                            &self.qEcc,
1905                        )
1906                        .0,
1907                    <alloy::sol_types::sol_data::FixedBytes<
1908                        32,
1909                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1910                        .0,
1911                    <alloy::sol_types::sol_data::FixedBytes<
1912                        32,
1913                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1914                        .0,
1915                ]
1916                    .concat()
1917            }
1918        }
1919        #[automatically_derived]
1920        impl alloy_sol_types::EventTopic for VerifyingKey {
1921            #[inline]
1922            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1923                0usize
1924                    + <alloy::sol_types::sol_data::Uint<
1925                        256,
1926                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1927                        &rust.domainSize,
1928                    )
1929                    + <alloy::sol_types::sol_data::Uint<
1930                        256,
1931                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1932                        &rust.numInputs,
1933                    )
1934                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1935                        &rust.sigma0,
1936                    )
1937                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1938                        &rust.sigma1,
1939                    )
1940                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1941                        &rust.sigma2,
1942                    )
1943                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1944                        &rust.sigma3,
1945                    )
1946                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1947                        &rust.sigma4,
1948                    )
1949                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1950                        &rust.q1,
1951                    )
1952                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1953                        &rust.q2,
1954                    )
1955                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1956                        &rust.q3,
1957                    )
1958                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1959                        &rust.q4,
1960                    )
1961                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1962                        &rust.qM12,
1963                    )
1964                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1965                        &rust.qM34,
1966                    )
1967                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1968                        &rust.qO,
1969                    )
1970                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1971                        &rust.qC,
1972                    )
1973                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1974                        &rust.qH1,
1975                    )
1976                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1977                        &rust.qH2,
1978                    )
1979                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1980                        &rust.qH3,
1981                    )
1982                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1983                        &rust.qH4,
1984                    )
1985                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1986                        &rust.qEcc,
1987                    )
1988                    + <alloy::sol_types::sol_data::FixedBytes<
1989                        32,
1990                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1991                    + <alloy::sol_types::sol_data::FixedBytes<
1992                        32,
1993                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1994            }
1995            #[inline]
1996            fn encode_topic_preimage(
1997                rust: &Self::RustType,
1998                out: &mut alloy_sol_types::private::Vec<u8>,
1999            ) {
2000                out.reserve(
2001                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2002                );
2003                <alloy::sol_types::sol_data::Uint<
2004                    256,
2005                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2006                    &rust.domainSize,
2007                    out,
2008                );
2009                <alloy::sol_types::sol_data::Uint<
2010                    256,
2011                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2012                    &rust.numInputs,
2013                    out,
2014                );
2015                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2016                    &rust.sigma0,
2017                    out,
2018                );
2019                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2020                    &rust.sigma1,
2021                    out,
2022                );
2023                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2024                    &rust.sigma2,
2025                    out,
2026                );
2027                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2028                    &rust.sigma3,
2029                    out,
2030                );
2031                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2032                    &rust.sigma4,
2033                    out,
2034                );
2035                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2036                    &rust.q1,
2037                    out,
2038                );
2039                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2040                    &rust.q2,
2041                    out,
2042                );
2043                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2044                    &rust.q3,
2045                    out,
2046                );
2047                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2048                    &rust.q4,
2049                    out,
2050                );
2051                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2052                    &rust.qM12,
2053                    out,
2054                );
2055                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2056                    &rust.qM34,
2057                    out,
2058                );
2059                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2060                    &rust.qO,
2061                    out,
2062                );
2063                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2064                    &rust.qC,
2065                    out,
2066                );
2067                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2068                    &rust.qH1,
2069                    out,
2070                );
2071                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2072                    &rust.qH2,
2073                    out,
2074                );
2075                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2076                    &rust.qH3,
2077                    out,
2078                );
2079                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2080                    &rust.qH4,
2081                    out,
2082                );
2083                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2084                    &rust.qEcc,
2085                    out,
2086                );
2087                <alloy::sol_types::sol_data::FixedBytes<
2088                    32,
2089                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2090                    &rust.g2LSB,
2091                    out,
2092                );
2093                <alloy::sol_types::sol_data::FixedBytes<
2094                    32,
2095                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2096                    &rust.g2MSB,
2097                    out,
2098                );
2099            }
2100            #[inline]
2101            fn encode_topic(
2102                rust: &Self::RustType,
2103            ) -> alloy_sol_types::abi::token::WordToken {
2104                let mut out = alloy_sol_types::private::Vec::new();
2105                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2106                    rust,
2107                    &mut out,
2108                );
2109                alloy_sol_types::abi::token::WordToken(
2110                    alloy_sol_types::private::keccak256(out),
2111                )
2112            }
2113        }
2114    };
2115    use alloy::contract as alloy_contract;
2116    /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2117
2118See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2119    #[inline]
2120    pub const fn new<
2121        P: alloy_contract::private::Provider<N>,
2122        N: alloy_contract::private::Network,
2123    >(
2124        address: alloy_sol_types::private::Address,
2125        provider: P,
2126    ) -> IPlonkVerifierInstance<P, N> {
2127        IPlonkVerifierInstance::<P, N>::new(address, provider)
2128    }
2129    /**A [`IPlonkVerifier`](self) instance.
2130
2131Contains type-safe methods for interacting with an on-chain instance of the
2132[`IPlonkVerifier`](self) contract located at a given `address`, using a given
2133provider `P`.
2134
2135If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2136documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2137be used to deploy a new instance of the contract.
2138
2139See the [module-level documentation](self) for all the available methods.*/
2140    #[derive(Clone)]
2141    pub struct IPlonkVerifierInstance<P, N = alloy_contract::private::Ethereum> {
2142        address: alloy_sol_types::private::Address,
2143        provider: P,
2144        _network: ::core::marker::PhantomData<N>,
2145    }
2146    #[automatically_derived]
2147    impl<P, N> ::core::fmt::Debug for IPlonkVerifierInstance<P, N> {
2148        #[inline]
2149        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2150            f.debug_tuple("IPlonkVerifierInstance").field(&self.address).finish()
2151        }
2152    }
2153    /// Instantiation and getters/setters.
2154    #[automatically_derived]
2155    impl<
2156        P: alloy_contract::private::Provider<N>,
2157        N: alloy_contract::private::Network,
2158    > IPlonkVerifierInstance<P, N> {
2159        /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2160
2161See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2162        #[inline]
2163        pub const fn new(
2164            address: alloy_sol_types::private::Address,
2165            provider: P,
2166        ) -> Self {
2167            Self {
2168                address,
2169                provider,
2170                _network: ::core::marker::PhantomData,
2171            }
2172        }
2173        /// Returns a reference to the address.
2174        #[inline]
2175        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2176            &self.address
2177        }
2178        /// Sets the address.
2179        #[inline]
2180        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2181            self.address = address;
2182        }
2183        /// Sets the address and returns `self`.
2184        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2185            self.set_address(address);
2186            self
2187        }
2188        /// Returns a reference to the provider.
2189        #[inline]
2190        pub const fn provider(&self) -> &P {
2191            &self.provider
2192        }
2193    }
2194    impl<P: ::core::clone::Clone, N> IPlonkVerifierInstance<&P, N> {
2195        /// Clones the provider and returns a new instance with the cloned provider.
2196        #[inline]
2197        pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<P, N> {
2198            IPlonkVerifierInstance {
2199                address: self.address,
2200                provider: ::core::clone::Clone::clone(&self.provider),
2201                _network: ::core::marker::PhantomData,
2202            }
2203        }
2204    }
2205    /// Function calls.
2206    #[automatically_derived]
2207    impl<
2208        P: alloy_contract::private::Provider<N>,
2209        N: alloy_contract::private::Network,
2210    > IPlonkVerifierInstance<P, N> {
2211        /// Creates a new call builder using this contract instance's provider and address.
2212        ///
2213        /// Note that the call can be any function call, not just those defined in this
2214        /// contract. Prefer using the other methods for building type-safe contract calls.
2215        pub fn call_builder<C: alloy_sol_types::SolCall>(
2216            &self,
2217            call: &C,
2218        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2219            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2220        }
2221    }
2222    /// Event filters.
2223    #[automatically_derived]
2224    impl<
2225        P: alloy_contract::private::Provider<N>,
2226        N: alloy_contract::private::Network,
2227    > IPlonkVerifierInstance<P, N> {
2228        /// Creates a new event filter using this contract instance's provider and address.
2229        ///
2230        /// Note that the type can be any event, not just those defined in this contract.
2231        /// Prefer using the other methods for building type-safe event filters.
2232        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2233            &self,
2234        ) -> alloy_contract::Event<&P, E, N> {
2235            alloy_contract::Event::new_sol(&self.provider, &self.address)
2236        }
2237    }
2238}
2239///Module containing a contract's types and functions.
2240/**
2241
2242```solidity
2243library LightClient {
2244    struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2245    struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2246    struct StateHistoryCommitment { uint64 l1BlockHeight; uint64 l1BlockTimestamp; uint64 hotShotBlockHeight; BN254.ScalarField hotShotBlockCommRoot; }
2247}
2248```*/
2249#[allow(
2250    non_camel_case_types,
2251    non_snake_case,
2252    clippy::pub_underscore_fields,
2253    clippy::style,
2254    clippy::empty_structs_with_brackets
2255)]
2256pub mod LightClient {
2257    use super::*;
2258    use alloy::sol_types as alloy_sol_types;
2259    #[derive(serde::Serialize, serde::Deserialize)]
2260    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2261    /**```solidity
2262struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2263```*/
2264    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2265    #[derive(Clone)]
2266    pub struct LightClientState {
2267        #[allow(missing_docs)]
2268        pub viewNum: u64,
2269        #[allow(missing_docs)]
2270        pub blockHeight: u64,
2271        #[allow(missing_docs)]
2272        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2273    }
2274    #[allow(
2275        non_camel_case_types,
2276        non_snake_case,
2277        clippy::pub_underscore_fields,
2278        clippy::style
2279    )]
2280    const _: () = {
2281        use alloy::sol_types as alloy_sol_types;
2282        #[doc(hidden)]
2283        type UnderlyingSolTuple<'a> = (
2284            alloy::sol_types::sol_data::Uint<64>,
2285            alloy::sol_types::sol_data::Uint<64>,
2286            BN254::ScalarField,
2287        );
2288        #[doc(hidden)]
2289        type UnderlyingRustTuple<'a> = (
2290            u64,
2291            u64,
2292            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2293        );
2294        #[cfg(test)]
2295        #[allow(dead_code, unreachable_patterns)]
2296        fn _type_assertion(
2297            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2298        ) {
2299            match _t {
2300                alloy_sol_types::private::AssertTypeEq::<
2301                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2302                >(_) => {}
2303            }
2304        }
2305        #[automatically_derived]
2306        #[doc(hidden)]
2307        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
2308            fn from(value: LightClientState) -> Self {
2309                (value.viewNum, value.blockHeight, value.blockCommRoot)
2310            }
2311        }
2312        #[automatically_derived]
2313        #[doc(hidden)]
2314        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
2315            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2316                Self {
2317                    viewNum: tuple.0,
2318                    blockHeight: tuple.1,
2319                    blockCommRoot: tuple.2,
2320                }
2321            }
2322        }
2323        #[automatically_derived]
2324        impl alloy_sol_types::SolValue for LightClientState {
2325            type SolType = Self;
2326        }
2327        #[automatically_derived]
2328        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
2329            #[inline]
2330            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2331                (
2332                    <alloy::sol_types::sol_data::Uint<
2333                        64,
2334                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
2335                    <alloy::sol_types::sol_data::Uint<
2336                        64,
2337                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
2338                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2339                        &self.blockCommRoot,
2340                    ),
2341                )
2342            }
2343            #[inline]
2344            fn stv_abi_encoded_size(&self) -> usize {
2345                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2346                    return size;
2347                }
2348                let tuple = <UnderlyingRustTuple<
2349                    '_,
2350                > as ::core::convert::From<Self>>::from(self.clone());
2351                <UnderlyingSolTuple<
2352                    '_,
2353                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2354            }
2355            #[inline]
2356            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2357                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2358            }
2359            #[inline]
2360            fn stv_abi_encode_packed_to(
2361                &self,
2362                out: &mut alloy_sol_types::private::Vec<u8>,
2363            ) {
2364                let tuple = <UnderlyingRustTuple<
2365                    '_,
2366                > as ::core::convert::From<Self>>::from(self.clone());
2367                <UnderlyingSolTuple<
2368                    '_,
2369                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2370            }
2371            #[inline]
2372            fn stv_abi_packed_encoded_size(&self) -> usize {
2373                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2374                    return size;
2375                }
2376                let tuple = <UnderlyingRustTuple<
2377                    '_,
2378                > as ::core::convert::From<Self>>::from(self.clone());
2379                <UnderlyingSolTuple<
2380                    '_,
2381                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2382            }
2383        }
2384        #[automatically_derived]
2385        impl alloy_sol_types::SolType for LightClientState {
2386            type RustType = Self;
2387            type Token<'a> = <UnderlyingSolTuple<
2388                'a,
2389            > as alloy_sol_types::SolType>::Token<'a>;
2390            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2391            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2392                '_,
2393            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2394            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2395                '_,
2396            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2397            #[inline]
2398            fn valid_token(token: &Self::Token<'_>) -> bool {
2399                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2400            }
2401            #[inline]
2402            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2403                let tuple = <UnderlyingSolTuple<
2404                    '_,
2405                > as alloy_sol_types::SolType>::detokenize(token);
2406                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2407            }
2408        }
2409        #[automatically_derived]
2410        impl alloy_sol_types::SolStruct for LightClientState {
2411            const NAME: &'static str = "LightClientState";
2412            #[inline]
2413            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2414                alloy_sol_types::private::Cow::Borrowed(
2415                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
2416                )
2417            }
2418            #[inline]
2419            fn eip712_components() -> alloy_sol_types::private::Vec<
2420                alloy_sol_types::private::Cow<'static, str>,
2421            > {
2422                alloy_sol_types::private::Vec::new()
2423            }
2424            #[inline]
2425            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2426                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2427            }
2428            #[inline]
2429            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2430                [
2431                    <alloy::sol_types::sol_data::Uint<
2432                        64,
2433                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
2434                        .0,
2435                    <alloy::sol_types::sol_data::Uint<
2436                        64,
2437                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
2438                        .0,
2439                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2440                            &self.blockCommRoot,
2441                        )
2442                        .0,
2443                ]
2444                    .concat()
2445            }
2446        }
2447        #[automatically_derived]
2448        impl alloy_sol_types::EventTopic for LightClientState {
2449            #[inline]
2450            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2451                0usize
2452                    + <alloy::sol_types::sol_data::Uint<
2453                        64,
2454                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2455                        &rust.viewNum,
2456                    )
2457                    + <alloy::sol_types::sol_data::Uint<
2458                        64,
2459                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2460                        &rust.blockHeight,
2461                    )
2462                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2463                        &rust.blockCommRoot,
2464                    )
2465            }
2466            #[inline]
2467            fn encode_topic_preimage(
2468                rust: &Self::RustType,
2469                out: &mut alloy_sol_types::private::Vec<u8>,
2470            ) {
2471                out.reserve(
2472                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2473                );
2474                <alloy::sol_types::sol_data::Uint<
2475                    64,
2476                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2477                    &rust.viewNum,
2478                    out,
2479                );
2480                <alloy::sol_types::sol_data::Uint<
2481                    64,
2482                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2483                    &rust.blockHeight,
2484                    out,
2485                );
2486                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2487                    &rust.blockCommRoot,
2488                    out,
2489                );
2490            }
2491            #[inline]
2492            fn encode_topic(
2493                rust: &Self::RustType,
2494            ) -> alloy_sol_types::abi::token::WordToken {
2495                let mut out = alloy_sol_types::private::Vec::new();
2496                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2497                    rust,
2498                    &mut out,
2499                );
2500                alloy_sol_types::abi::token::WordToken(
2501                    alloy_sol_types::private::keccak256(out),
2502                )
2503            }
2504        }
2505    };
2506    #[derive(serde::Serialize, serde::Deserialize)]
2507    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2508    /**```solidity
2509struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2510```*/
2511    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2512    #[derive(Clone)]
2513    pub struct StakeTableState {
2514        #[allow(missing_docs)]
2515        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
2516        #[allow(missing_docs)]
2517        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2518        #[allow(missing_docs)]
2519        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2520        #[allow(missing_docs)]
2521        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2522    }
2523    #[allow(
2524        non_camel_case_types,
2525        non_snake_case,
2526        clippy::pub_underscore_fields,
2527        clippy::style
2528    )]
2529    const _: () = {
2530        use alloy::sol_types as alloy_sol_types;
2531        #[doc(hidden)]
2532        type UnderlyingSolTuple<'a> = (
2533            alloy::sol_types::sol_data::Uint<256>,
2534            BN254::ScalarField,
2535            BN254::ScalarField,
2536            BN254::ScalarField,
2537        );
2538        #[doc(hidden)]
2539        type UnderlyingRustTuple<'a> = (
2540            alloy::sol_types::private::primitives::aliases::U256,
2541            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2542            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2543            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2544        );
2545        #[cfg(test)]
2546        #[allow(dead_code, unreachable_patterns)]
2547        fn _type_assertion(
2548            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2549        ) {
2550            match _t {
2551                alloy_sol_types::private::AssertTypeEq::<
2552                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2553                >(_) => {}
2554            }
2555        }
2556        #[automatically_derived]
2557        #[doc(hidden)]
2558        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
2559            fn from(value: StakeTableState) -> Self {
2560                (
2561                    value.threshold,
2562                    value.blsKeyComm,
2563                    value.schnorrKeyComm,
2564                    value.amountComm,
2565                )
2566            }
2567        }
2568        #[automatically_derived]
2569        #[doc(hidden)]
2570        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
2571            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2572                Self {
2573                    threshold: tuple.0,
2574                    blsKeyComm: tuple.1,
2575                    schnorrKeyComm: tuple.2,
2576                    amountComm: tuple.3,
2577                }
2578            }
2579        }
2580        #[automatically_derived]
2581        impl alloy_sol_types::SolValue for StakeTableState {
2582            type SolType = Self;
2583        }
2584        #[automatically_derived]
2585        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
2586            #[inline]
2587            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2588                (
2589                    <alloy::sol_types::sol_data::Uint<
2590                        256,
2591                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
2592                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2593                        &self.blsKeyComm,
2594                    ),
2595                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2596                        &self.schnorrKeyComm,
2597                    ),
2598                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2599                        &self.amountComm,
2600                    ),
2601                )
2602            }
2603            #[inline]
2604            fn stv_abi_encoded_size(&self) -> usize {
2605                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2606                    return size;
2607                }
2608                let tuple = <UnderlyingRustTuple<
2609                    '_,
2610                > as ::core::convert::From<Self>>::from(self.clone());
2611                <UnderlyingSolTuple<
2612                    '_,
2613                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2614            }
2615            #[inline]
2616            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2617                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2618            }
2619            #[inline]
2620            fn stv_abi_encode_packed_to(
2621                &self,
2622                out: &mut alloy_sol_types::private::Vec<u8>,
2623            ) {
2624                let tuple = <UnderlyingRustTuple<
2625                    '_,
2626                > as ::core::convert::From<Self>>::from(self.clone());
2627                <UnderlyingSolTuple<
2628                    '_,
2629                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2630            }
2631            #[inline]
2632            fn stv_abi_packed_encoded_size(&self) -> usize {
2633                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2634                    return size;
2635                }
2636                let tuple = <UnderlyingRustTuple<
2637                    '_,
2638                > as ::core::convert::From<Self>>::from(self.clone());
2639                <UnderlyingSolTuple<
2640                    '_,
2641                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2642            }
2643        }
2644        #[automatically_derived]
2645        impl alloy_sol_types::SolType for StakeTableState {
2646            type RustType = Self;
2647            type Token<'a> = <UnderlyingSolTuple<
2648                'a,
2649            > as alloy_sol_types::SolType>::Token<'a>;
2650            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2651            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2652                '_,
2653            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2654            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2655                '_,
2656            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2657            #[inline]
2658            fn valid_token(token: &Self::Token<'_>) -> bool {
2659                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2660            }
2661            #[inline]
2662            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2663                let tuple = <UnderlyingSolTuple<
2664                    '_,
2665                > as alloy_sol_types::SolType>::detokenize(token);
2666                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2667            }
2668        }
2669        #[automatically_derived]
2670        impl alloy_sol_types::SolStruct for StakeTableState {
2671            const NAME: &'static str = "StakeTableState";
2672            #[inline]
2673            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2674                alloy_sol_types::private::Cow::Borrowed(
2675                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
2676                )
2677            }
2678            #[inline]
2679            fn eip712_components() -> alloy_sol_types::private::Vec<
2680                alloy_sol_types::private::Cow<'static, str>,
2681            > {
2682                alloy_sol_types::private::Vec::new()
2683            }
2684            #[inline]
2685            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2686                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2687            }
2688            #[inline]
2689            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2690                [
2691                    <alloy::sol_types::sol_data::Uint<
2692                        256,
2693                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
2694                        .0,
2695                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2696                            &self.blsKeyComm,
2697                        )
2698                        .0,
2699                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2700                            &self.schnorrKeyComm,
2701                        )
2702                        .0,
2703                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2704                            &self.amountComm,
2705                        )
2706                        .0,
2707                ]
2708                    .concat()
2709            }
2710        }
2711        #[automatically_derived]
2712        impl alloy_sol_types::EventTopic for StakeTableState {
2713            #[inline]
2714            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2715                0usize
2716                    + <alloy::sol_types::sol_data::Uint<
2717                        256,
2718                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2719                        &rust.threshold,
2720                    )
2721                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2722                        &rust.blsKeyComm,
2723                    )
2724                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2725                        &rust.schnorrKeyComm,
2726                    )
2727                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2728                        &rust.amountComm,
2729                    )
2730            }
2731            #[inline]
2732            fn encode_topic_preimage(
2733                rust: &Self::RustType,
2734                out: &mut alloy_sol_types::private::Vec<u8>,
2735            ) {
2736                out.reserve(
2737                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2738                );
2739                <alloy::sol_types::sol_data::Uint<
2740                    256,
2741                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2742                    &rust.threshold,
2743                    out,
2744                );
2745                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2746                    &rust.blsKeyComm,
2747                    out,
2748                );
2749                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2750                    &rust.schnorrKeyComm,
2751                    out,
2752                );
2753                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2754                    &rust.amountComm,
2755                    out,
2756                );
2757            }
2758            #[inline]
2759            fn encode_topic(
2760                rust: &Self::RustType,
2761            ) -> alloy_sol_types::abi::token::WordToken {
2762                let mut out = alloy_sol_types::private::Vec::new();
2763                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2764                    rust,
2765                    &mut out,
2766                );
2767                alloy_sol_types::abi::token::WordToken(
2768                    alloy_sol_types::private::keccak256(out),
2769                )
2770            }
2771        }
2772    };
2773    #[derive(serde::Serialize, serde::Deserialize)]
2774    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2775    /**```solidity
2776struct StateHistoryCommitment { uint64 l1BlockHeight; uint64 l1BlockTimestamp; uint64 hotShotBlockHeight; BN254.ScalarField hotShotBlockCommRoot; }
2777```*/
2778    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2779    #[derive(Clone)]
2780    pub struct StateHistoryCommitment {
2781        #[allow(missing_docs)]
2782        pub l1BlockHeight: u64,
2783        #[allow(missing_docs)]
2784        pub l1BlockTimestamp: u64,
2785        #[allow(missing_docs)]
2786        pub hotShotBlockHeight: u64,
2787        #[allow(missing_docs)]
2788        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2789    }
2790    #[allow(
2791        non_camel_case_types,
2792        non_snake_case,
2793        clippy::pub_underscore_fields,
2794        clippy::style
2795    )]
2796    const _: () = {
2797        use alloy::sol_types as alloy_sol_types;
2798        #[doc(hidden)]
2799        type UnderlyingSolTuple<'a> = (
2800            alloy::sol_types::sol_data::Uint<64>,
2801            alloy::sol_types::sol_data::Uint<64>,
2802            alloy::sol_types::sol_data::Uint<64>,
2803            BN254::ScalarField,
2804        );
2805        #[doc(hidden)]
2806        type UnderlyingRustTuple<'a> = (
2807            u64,
2808            u64,
2809            u64,
2810            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2811        );
2812        #[cfg(test)]
2813        #[allow(dead_code, unreachable_patterns)]
2814        fn _type_assertion(
2815            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2816        ) {
2817            match _t {
2818                alloy_sol_types::private::AssertTypeEq::<
2819                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2820                >(_) => {}
2821            }
2822        }
2823        #[automatically_derived]
2824        #[doc(hidden)]
2825        impl ::core::convert::From<StateHistoryCommitment> for UnderlyingRustTuple<'_> {
2826            fn from(value: StateHistoryCommitment) -> Self {
2827                (
2828                    value.l1BlockHeight,
2829                    value.l1BlockTimestamp,
2830                    value.hotShotBlockHeight,
2831                    value.hotShotBlockCommRoot,
2832                )
2833            }
2834        }
2835        #[automatically_derived]
2836        #[doc(hidden)]
2837        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StateHistoryCommitment {
2838            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2839                Self {
2840                    l1BlockHeight: tuple.0,
2841                    l1BlockTimestamp: tuple.1,
2842                    hotShotBlockHeight: tuple.2,
2843                    hotShotBlockCommRoot: tuple.3,
2844                }
2845            }
2846        }
2847        #[automatically_derived]
2848        impl alloy_sol_types::SolValue for StateHistoryCommitment {
2849            type SolType = Self;
2850        }
2851        #[automatically_derived]
2852        impl alloy_sol_types::private::SolTypeValue<Self> for StateHistoryCommitment {
2853            #[inline]
2854            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2855                (
2856                    <alloy::sol_types::sol_data::Uint<
2857                        64,
2858                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
2859                    <alloy::sol_types::sol_data::Uint<
2860                        64,
2861                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
2862                    <alloy::sol_types::sol_data::Uint<
2863                        64,
2864                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
2865                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2866                        &self.hotShotBlockCommRoot,
2867                    ),
2868                )
2869            }
2870            #[inline]
2871            fn stv_abi_encoded_size(&self) -> usize {
2872                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2873                    return size;
2874                }
2875                let tuple = <UnderlyingRustTuple<
2876                    '_,
2877                > as ::core::convert::From<Self>>::from(self.clone());
2878                <UnderlyingSolTuple<
2879                    '_,
2880                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2881            }
2882            #[inline]
2883            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2884                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2885            }
2886            #[inline]
2887            fn stv_abi_encode_packed_to(
2888                &self,
2889                out: &mut alloy_sol_types::private::Vec<u8>,
2890            ) {
2891                let tuple = <UnderlyingRustTuple<
2892                    '_,
2893                > as ::core::convert::From<Self>>::from(self.clone());
2894                <UnderlyingSolTuple<
2895                    '_,
2896                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2897            }
2898            #[inline]
2899            fn stv_abi_packed_encoded_size(&self) -> usize {
2900                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2901                    return size;
2902                }
2903                let tuple = <UnderlyingRustTuple<
2904                    '_,
2905                > as ::core::convert::From<Self>>::from(self.clone());
2906                <UnderlyingSolTuple<
2907                    '_,
2908                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2909            }
2910        }
2911        #[automatically_derived]
2912        impl alloy_sol_types::SolType for StateHistoryCommitment {
2913            type RustType = Self;
2914            type Token<'a> = <UnderlyingSolTuple<
2915                'a,
2916            > as alloy_sol_types::SolType>::Token<'a>;
2917            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2918            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2919                '_,
2920            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2921            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2922                '_,
2923            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2924            #[inline]
2925            fn valid_token(token: &Self::Token<'_>) -> bool {
2926                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2927            }
2928            #[inline]
2929            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2930                let tuple = <UnderlyingSolTuple<
2931                    '_,
2932                > as alloy_sol_types::SolType>::detokenize(token);
2933                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2934            }
2935        }
2936        #[automatically_derived]
2937        impl alloy_sol_types::SolStruct for StateHistoryCommitment {
2938            const NAME: &'static str = "StateHistoryCommitment";
2939            #[inline]
2940            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2941                alloy_sol_types::private::Cow::Borrowed(
2942                    "StateHistoryCommitment(uint64 l1BlockHeight,uint64 l1BlockTimestamp,uint64 hotShotBlockHeight,uint256 hotShotBlockCommRoot)",
2943                )
2944            }
2945            #[inline]
2946            fn eip712_components() -> alloy_sol_types::private::Vec<
2947                alloy_sol_types::private::Cow<'static, str>,
2948            > {
2949                alloy_sol_types::private::Vec::new()
2950            }
2951            #[inline]
2952            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2953                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2954            }
2955            #[inline]
2956            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2957                [
2958                    <alloy::sol_types::sol_data::Uint<
2959                        64,
2960                    > as alloy_sol_types::SolType>::eip712_data_word(&self.l1BlockHeight)
2961                        .0,
2962                    <alloy::sol_types::sol_data::Uint<
2963                        64,
2964                    > as alloy_sol_types::SolType>::eip712_data_word(
2965                            &self.l1BlockTimestamp,
2966                        )
2967                        .0,
2968                    <alloy::sol_types::sol_data::Uint<
2969                        64,
2970                    > as alloy_sol_types::SolType>::eip712_data_word(
2971                            &self.hotShotBlockHeight,
2972                        )
2973                        .0,
2974                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2975                            &self.hotShotBlockCommRoot,
2976                        )
2977                        .0,
2978                ]
2979                    .concat()
2980            }
2981        }
2982        #[automatically_derived]
2983        impl alloy_sol_types::EventTopic for StateHistoryCommitment {
2984            #[inline]
2985            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2986                0usize
2987                    + <alloy::sol_types::sol_data::Uint<
2988                        64,
2989                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2990                        &rust.l1BlockHeight,
2991                    )
2992                    + <alloy::sol_types::sol_data::Uint<
2993                        64,
2994                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2995                        &rust.l1BlockTimestamp,
2996                    )
2997                    + <alloy::sol_types::sol_data::Uint<
2998                        64,
2999                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
3000                        &rust.hotShotBlockHeight,
3001                    )
3002                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
3003                        &rust.hotShotBlockCommRoot,
3004                    )
3005            }
3006            #[inline]
3007            fn encode_topic_preimage(
3008                rust: &Self::RustType,
3009                out: &mut alloy_sol_types::private::Vec<u8>,
3010            ) {
3011                out.reserve(
3012                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
3013                );
3014                <alloy::sol_types::sol_data::Uint<
3015                    64,
3016                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3017                    &rust.l1BlockHeight,
3018                    out,
3019                );
3020                <alloy::sol_types::sol_data::Uint<
3021                    64,
3022                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3023                    &rust.l1BlockTimestamp,
3024                    out,
3025                );
3026                <alloy::sol_types::sol_data::Uint<
3027                    64,
3028                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3029                    &rust.hotShotBlockHeight,
3030                    out,
3031                );
3032                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
3033                    &rust.hotShotBlockCommRoot,
3034                    out,
3035                );
3036            }
3037            #[inline]
3038            fn encode_topic(
3039                rust: &Self::RustType,
3040            ) -> alloy_sol_types::abi::token::WordToken {
3041                let mut out = alloy_sol_types::private::Vec::new();
3042                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
3043                    rust,
3044                    &mut out,
3045                );
3046                alloy_sol_types::abi::token::WordToken(
3047                    alloy_sol_types::private::keccak256(out),
3048                )
3049            }
3050        }
3051    };
3052    use alloy::contract as alloy_contract;
3053    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
3054
3055See the [wrapper's documentation](`LightClientInstance`) for more details.*/
3056    #[inline]
3057    pub const fn new<
3058        P: alloy_contract::private::Provider<N>,
3059        N: alloy_contract::private::Network,
3060    >(
3061        address: alloy_sol_types::private::Address,
3062        provider: P,
3063    ) -> LightClientInstance<P, N> {
3064        LightClientInstance::<P, N>::new(address, provider)
3065    }
3066    /**A [`LightClient`](self) instance.
3067
3068Contains type-safe methods for interacting with an on-chain instance of the
3069[`LightClient`](self) contract located at a given `address`, using a given
3070provider `P`.
3071
3072If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
3073documentation on how to provide it), the `deploy` and `deploy_builder` methods can
3074be used to deploy a new instance of the contract.
3075
3076See the [module-level documentation](self) for all the available methods.*/
3077    #[derive(Clone)]
3078    pub struct LightClientInstance<P, N = alloy_contract::private::Ethereum> {
3079        address: alloy_sol_types::private::Address,
3080        provider: P,
3081        _network: ::core::marker::PhantomData<N>,
3082    }
3083    #[automatically_derived]
3084    impl<P, N> ::core::fmt::Debug for LightClientInstance<P, N> {
3085        #[inline]
3086        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
3087            f.debug_tuple("LightClientInstance").field(&self.address).finish()
3088        }
3089    }
3090    /// Instantiation and getters/setters.
3091    #[automatically_derived]
3092    impl<
3093        P: alloy_contract::private::Provider<N>,
3094        N: alloy_contract::private::Network,
3095    > LightClientInstance<P, N> {
3096        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
3097
3098See the [wrapper's documentation](`LightClientInstance`) for more details.*/
3099        #[inline]
3100        pub const fn new(
3101            address: alloy_sol_types::private::Address,
3102            provider: P,
3103        ) -> Self {
3104            Self {
3105                address,
3106                provider,
3107                _network: ::core::marker::PhantomData,
3108            }
3109        }
3110        /// Returns a reference to the address.
3111        #[inline]
3112        pub const fn address(&self) -> &alloy_sol_types::private::Address {
3113            &self.address
3114        }
3115        /// Sets the address.
3116        #[inline]
3117        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
3118            self.address = address;
3119        }
3120        /// Sets the address and returns `self`.
3121        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
3122            self.set_address(address);
3123            self
3124        }
3125        /// Returns a reference to the provider.
3126        #[inline]
3127        pub const fn provider(&self) -> &P {
3128            &self.provider
3129        }
3130    }
3131    impl<P: ::core::clone::Clone, N> LightClientInstance<&P, N> {
3132        /// Clones the provider and returns a new instance with the cloned provider.
3133        #[inline]
3134        pub fn with_cloned_provider(self) -> LightClientInstance<P, N> {
3135            LightClientInstance {
3136                address: self.address,
3137                provider: ::core::clone::Clone::clone(&self.provider),
3138                _network: ::core::marker::PhantomData,
3139            }
3140        }
3141    }
3142    /// Function calls.
3143    #[automatically_derived]
3144    impl<
3145        P: alloy_contract::private::Provider<N>,
3146        N: alloy_contract::private::Network,
3147    > LightClientInstance<P, N> {
3148        /// Creates a new call builder using this contract instance's provider and address.
3149        ///
3150        /// Note that the call can be any function call, not just those defined in this
3151        /// contract. Prefer using the other methods for building type-safe contract calls.
3152        pub fn call_builder<C: alloy_sol_types::SolCall>(
3153            &self,
3154            call: &C,
3155        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
3156            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
3157        }
3158    }
3159    /// Event filters.
3160    #[automatically_derived]
3161    impl<
3162        P: alloy_contract::private::Provider<N>,
3163        N: alloy_contract::private::Network,
3164    > LightClientInstance<P, N> {
3165        /// Creates a new event filter using this contract instance's provider and address.
3166        ///
3167        /// Note that the type can be any event, not just those defined in this contract.
3168        /// Prefer using the other methods for building type-safe event filters.
3169        pub fn event_filter<E: alloy_sol_types::SolEvent>(
3170            &self,
3171        ) -> alloy_contract::Event<&P, E, N> {
3172            alloy_contract::Event::new_sol(&self.provider, &self.address)
3173        }
3174    }
3175}
3176/**
3177
3178Generated by the following Solidity interface...
3179```solidity
3180library BN254 {
3181    type BaseField is uint256;
3182    type ScalarField is uint256;
3183    struct G1Point {
3184        BaseField x;
3185        BaseField y;
3186    }
3187}
3188
3189library IPlonkVerifier {
3190    struct PlonkProof {
3191        BN254.G1Point wire0;
3192        BN254.G1Point wire1;
3193        BN254.G1Point wire2;
3194        BN254.G1Point wire3;
3195        BN254.G1Point wire4;
3196        BN254.G1Point prodPerm;
3197        BN254.G1Point split0;
3198        BN254.G1Point split1;
3199        BN254.G1Point split2;
3200        BN254.G1Point split3;
3201        BN254.G1Point split4;
3202        BN254.G1Point zeta;
3203        BN254.G1Point zetaOmega;
3204        BN254.ScalarField wireEval0;
3205        BN254.ScalarField wireEval1;
3206        BN254.ScalarField wireEval2;
3207        BN254.ScalarField wireEval3;
3208        BN254.ScalarField wireEval4;
3209        BN254.ScalarField sigmaEval0;
3210        BN254.ScalarField sigmaEval1;
3211        BN254.ScalarField sigmaEval2;
3212        BN254.ScalarField sigmaEval3;
3213        BN254.ScalarField prodPermZetaOmegaEval;
3214    }
3215    struct VerifyingKey {
3216        uint256 domainSize;
3217        uint256 numInputs;
3218        BN254.G1Point sigma0;
3219        BN254.G1Point sigma1;
3220        BN254.G1Point sigma2;
3221        BN254.G1Point sigma3;
3222        BN254.G1Point sigma4;
3223        BN254.G1Point q1;
3224        BN254.G1Point q2;
3225        BN254.G1Point q3;
3226        BN254.G1Point q4;
3227        BN254.G1Point qM12;
3228        BN254.G1Point qM34;
3229        BN254.G1Point qO;
3230        BN254.G1Point qC;
3231        BN254.G1Point qH1;
3232        BN254.G1Point qH2;
3233        BN254.G1Point qH3;
3234        BN254.G1Point qH4;
3235        BN254.G1Point qEcc;
3236        bytes32 g2LSB;
3237        bytes32 g2MSB;
3238    }
3239}
3240
3241library LightClient {
3242    struct LightClientState {
3243        uint64 viewNum;
3244        uint64 blockHeight;
3245        BN254.ScalarField blockCommRoot;
3246    }
3247    struct StakeTableState {
3248        uint256 threshold;
3249        BN254.ScalarField blsKeyComm;
3250        BN254.ScalarField schnorrKeyComm;
3251        BN254.ScalarField amountComm;
3252    }
3253    struct StateHistoryCommitment {
3254        uint64 l1BlockHeight;
3255        uint64 l1BlockTimestamp;
3256        uint64 hotShotBlockHeight;
3257        BN254.ScalarField hotShotBlockCommRoot;
3258    }
3259}
3260
3261interface LightClientV3Mock {
3262    error AddressEmptyCode(address target);
3263    error DeprecatedApi();
3264    error ERC1967InvalidImplementation(address implementation);
3265    error ERC1967NonPayable();
3266    error FailedInnerCall();
3267    error InsufficientSnapshotHistory();
3268    error InvalidAddress();
3269    error InvalidArgs();
3270    error InvalidHotShotBlockForCommitmentCheck();
3271    error InvalidInitialization();
3272    error InvalidMaxStateHistory();
3273    error InvalidProof();
3274    error InvalidScalar();
3275    error MissingEpochRootUpdate();
3276    error NoChangeRequired();
3277    error NotInitializing();
3278    error OutdatedState();
3279    error OwnableInvalidOwner(address owner);
3280    error OwnableUnauthorizedAccount(address account);
3281    error OwnershipCannotBeRenounced();
3282    error ProverNotPermissioned();
3283    error UUPSUnauthorizedCallContext();
3284    error UUPSUnsupportedProxiableUUID(bytes32 slot);
3285    error WrongStakeTableUsed();
3286
3287    event Initialized(uint64 version);
3288    event NewEpoch(uint64 epoch);
3289    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
3290    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
3291    event PermissionedProverNotRequired();
3292    event PermissionedProverRequired(address permissionedProver);
3293    event Upgrade(address implementation);
3294    event Upgraded(address indexed implementation);
3295
3296    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
3297    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
3298    function authRoot() external view returns (uint256);
3299    function blocksPerEpoch() external view returns (uint64);
3300    function currentBlockNumber() external view returns (uint256);
3301    function currentEpoch() external view returns (uint64);
3302    function disablePermissionedProverMode() external;
3303    function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
3304    function epochStartBlock() external view returns (uint64);
3305    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3306    function firstEpoch() external view returns (uint64);
3307    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3308    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3309    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
3310    function getStateHistoryCount() external view returns (uint256);
3311    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
3312    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
3313    function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
3314    function initializeV3() external;
3315    function isEpochRoot(uint64 blockHeight) external view returns (bool);
3316    function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
3317    function isPermissionedProverEnabled() external view returns (bool);
3318    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 threshold) external view returns (bool);
3319    function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
3320    function newFinalizedState(LightClient.LightClientState memory, LightClient.StakeTableState memory, IPlonkVerifier.PlonkProof memory) external pure;
3321    function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, uint256 newAuthRoot, IPlonkVerifier.PlonkProof memory proof) external;
3322    function owner() external view returns (address);
3323    function permissionedProver() external view returns (address);
3324    function proxiableUUID() external view returns (bytes32);
3325    function renounceOwnership() external;
3326    function setAuthRoot(uint256 newAuthRoot) external;
3327    function setBlocksPerEpoch(uint64 newBlocksPerEpoch) external;
3328    function setFinalizedState(LightClient.LightClientState memory state) external;
3329    function setHotShotDownSince(uint256 l1Height) external;
3330    function setHotShotUp() external;
3331    function setPermissionedProver(address prover) external;
3332    function setStateHistory(LightClient.StateHistoryCommitment[] memory _stateHistoryCommitments) external;
3333    function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
3334    function setVotingStakeTableState(LightClient.StakeTableState memory stake) external;
3335    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
3336    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
3337    function stateHistoryFirstIndex() external view returns (uint64);
3338    function stateHistoryRetentionPeriod() external view returns (uint32);
3339    function transferOwnership(address newOwner) external;
3340    function updateEpochStartBlock(uint64 newEpochStartBlock) external;
3341    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
3342    function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3343}
3344```
3345
3346...which was generated by the following JSON ABI:
3347```json
3348[
3349  {
3350    "type": "function",
3351    "name": "UPGRADE_INTERFACE_VERSION",
3352    "inputs": [],
3353    "outputs": [
3354      {
3355        "name": "",
3356        "type": "string",
3357        "internalType": "string"
3358      }
3359    ],
3360    "stateMutability": "view"
3361  },
3362  {
3363    "type": "function",
3364    "name": "_getVk",
3365    "inputs": [],
3366    "outputs": [
3367      {
3368        "name": "vk",
3369        "type": "tuple",
3370        "internalType": "struct IPlonkVerifier.VerifyingKey",
3371        "components": [
3372          {
3373            "name": "domainSize",
3374            "type": "uint256",
3375            "internalType": "uint256"
3376          },
3377          {
3378            "name": "numInputs",
3379            "type": "uint256",
3380            "internalType": "uint256"
3381          },
3382          {
3383            "name": "sigma0",
3384            "type": "tuple",
3385            "internalType": "struct BN254.G1Point",
3386            "components": [
3387              {
3388                "name": "x",
3389                "type": "uint256",
3390                "internalType": "BN254.BaseField"
3391              },
3392              {
3393                "name": "y",
3394                "type": "uint256",
3395                "internalType": "BN254.BaseField"
3396              }
3397            ]
3398          },
3399          {
3400            "name": "sigma1",
3401            "type": "tuple",
3402            "internalType": "struct BN254.G1Point",
3403            "components": [
3404              {
3405                "name": "x",
3406                "type": "uint256",
3407                "internalType": "BN254.BaseField"
3408              },
3409              {
3410                "name": "y",
3411                "type": "uint256",
3412                "internalType": "BN254.BaseField"
3413              }
3414            ]
3415          },
3416          {
3417            "name": "sigma2",
3418            "type": "tuple",
3419            "internalType": "struct BN254.G1Point",
3420            "components": [
3421              {
3422                "name": "x",
3423                "type": "uint256",
3424                "internalType": "BN254.BaseField"
3425              },
3426              {
3427                "name": "y",
3428                "type": "uint256",
3429                "internalType": "BN254.BaseField"
3430              }
3431            ]
3432          },
3433          {
3434            "name": "sigma3",
3435            "type": "tuple",
3436            "internalType": "struct BN254.G1Point",
3437            "components": [
3438              {
3439                "name": "x",
3440                "type": "uint256",
3441                "internalType": "BN254.BaseField"
3442              },
3443              {
3444                "name": "y",
3445                "type": "uint256",
3446                "internalType": "BN254.BaseField"
3447              }
3448            ]
3449          },
3450          {
3451            "name": "sigma4",
3452            "type": "tuple",
3453            "internalType": "struct BN254.G1Point",
3454            "components": [
3455              {
3456                "name": "x",
3457                "type": "uint256",
3458                "internalType": "BN254.BaseField"
3459              },
3460              {
3461                "name": "y",
3462                "type": "uint256",
3463                "internalType": "BN254.BaseField"
3464              }
3465            ]
3466          },
3467          {
3468            "name": "q1",
3469            "type": "tuple",
3470            "internalType": "struct BN254.G1Point",
3471            "components": [
3472              {
3473                "name": "x",
3474                "type": "uint256",
3475                "internalType": "BN254.BaseField"
3476              },
3477              {
3478                "name": "y",
3479                "type": "uint256",
3480                "internalType": "BN254.BaseField"
3481              }
3482            ]
3483          },
3484          {
3485            "name": "q2",
3486            "type": "tuple",
3487            "internalType": "struct BN254.G1Point",
3488            "components": [
3489              {
3490                "name": "x",
3491                "type": "uint256",
3492                "internalType": "BN254.BaseField"
3493              },
3494              {
3495                "name": "y",
3496                "type": "uint256",
3497                "internalType": "BN254.BaseField"
3498              }
3499            ]
3500          },
3501          {
3502            "name": "q3",
3503            "type": "tuple",
3504            "internalType": "struct BN254.G1Point",
3505            "components": [
3506              {
3507                "name": "x",
3508                "type": "uint256",
3509                "internalType": "BN254.BaseField"
3510              },
3511              {
3512                "name": "y",
3513                "type": "uint256",
3514                "internalType": "BN254.BaseField"
3515              }
3516            ]
3517          },
3518          {
3519            "name": "q4",
3520            "type": "tuple",
3521            "internalType": "struct BN254.G1Point",
3522            "components": [
3523              {
3524                "name": "x",
3525                "type": "uint256",
3526                "internalType": "BN254.BaseField"
3527              },
3528              {
3529                "name": "y",
3530                "type": "uint256",
3531                "internalType": "BN254.BaseField"
3532              }
3533            ]
3534          },
3535          {
3536            "name": "qM12",
3537            "type": "tuple",
3538            "internalType": "struct BN254.G1Point",
3539            "components": [
3540              {
3541                "name": "x",
3542                "type": "uint256",
3543                "internalType": "BN254.BaseField"
3544              },
3545              {
3546                "name": "y",
3547                "type": "uint256",
3548                "internalType": "BN254.BaseField"
3549              }
3550            ]
3551          },
3552          {
3553            "name": "qM34",
3554            "type": "tuple",
3555            "internalType": "struct BN254.G1Point",
3556            "components": [
3557              {
3558                "name": "x",
3559                "type": "uint256",
3560                "internalType": "BN254.BaseField"
3561              },
3562              {
3563                "name": "y",
3564                "type": "uint256",
3565                "internalType": "BN254.BaseField"
3566              }
3567            ]
3568          },
3569          {
3570            "name": "qO",
3571            "type": "tuple",
3572            "internalType": "struct BN254.G1Point",
3573            "components": [
3574              {
3575                "name": "x",
3576                "type": "uint256",
3577                "internalType": "BN254.BaseField"
3578              },
3579              {
3580                "name": "y",
3581                "type": "uint256",
3582                "internalType": "BN254.BaseField"
3583              }
3584            ]
3585          },
3586          {
3587            "name": "qC",
3588            "type": "tuple",
3589            "internalType": "struct BN254.G1Point",
3590            "components": [
3591              {
3592                "name": "x",
3593                "type": "uint256",
3594                "internalType": "BN254.BaseField"
3595              },
3596              {
3597                "name": "y",
3598                "type": "uint256",
3599                "internalType": "BN254.BaseField"
3600              }
3601            ]
3602          },
3603          {
3604            "name": "qH1",
3605            "type": "tuple",
3606            "internalType": "struct BN254.G1Point",
3607            "components": [
3608              {
3609                "name": "x",
3610                "type": "uint256",
3611                "internalType": "BN254.BaseField"
3612              },
3613              {
3614                "name": "y",
3615                "type": "uint256",
3616                "internalType": "BN254.BaseField"
3617              }
3618            ]
3619          },
3620          {
3621            "name": "qH2",
3622            "type": "tuple",
3623            "internalType": "struct BN254.G1Point",
3624            "components": [
3625              {
3626                "name": "x",
3627                "type": "uint256",
3628                "internalType": "BN254.BaseField"
3629              },
3630              {
3631                "name": "y",
3632                "type": "uint256",
3633                "internalType": "BN254.BaseField"
3634              }
3635            ]
3636          },
3637          {
3638            "name": "qH3",
3639            "type": "tuple",
3640            "internalType": "struct BN254.G1Point",
3641            "components": [
3642              {
3643                "name": "x",
3644                "type": "uint256",
3645                "internalType": "BN254.BaseField"
3646              },
3647              {
3648                "name": "y",
3649                "type": "uint256",
3650                "internalType": "BN254.BaseField"
3651              }
3652            ]
3653          },
3654          {
3655            "name": "qH4",
3656            "type": "tuple",
3657            "internalType": "struct BN254.G1Point",
3658            "components": [
3659              {
3660                "name": "x",
3661                "type": "uint256",
3662                "internalType": "BN254.BaseField"
3663              },
3664              {
3665                "name": "y",
3666                "type": "uint256",
3667                "internalType": "BN254.BaseField"
3668              }
3669            ]
3670          },
3671          {
3672            "name": "qEcc",
3673            "type": "tuple",
3674            "internalType": "struct BN254.G1Point",
3675            "components": [
3676              {
3677                "name": "x",
3678                "type": "uint256",
3679                "internalType": "BN254.BaseField"
3680              },
3681              {
3682                "name": "y",
3683                "type": "uint256",
3684                "internalType": "BN254.BaseField"
3685              }
3686            ]
3687          },
3688          {
3689            "name": "g2LSB",
3690            "type": "bytes32",
3691            "internalType": "bytes32"
3692          },
3693          {
3694            "name": "g2MSB",
3695            "type": "bytes32",
3696            "internalType": "bytes32"
3697          }
3698        ]
3699      }
3700    ],
3701    "stateMutability": "pure"
3702  },
3703  {
3704    "type": "function",
3705    "name": "authRoot",
3706    "inputs": [],
3707    "outputs": [
3708      {
3709        "name": "",
3710        "type": "uint256",
3711        "internalType": "uint256"
3712      }
3713    ],
3714    "stateMutability": "view"
3715  },
3716  {
3717    "type": "function",
3718    "name": "blocksPerEpoch",
3719    "inputs": [],
3720    "outputs": [
3721      {
3722        "name": "",
3723        "type": "uint64",
3724        "internalType": "uint64"
3725      }
3726    ],
3727    "stateMutability": "view"
3728  },
3729  {
3730    "type": "function",
3731    "name": "currentBlockNumber",
3732    "inputs": [],
3733    "outputs": [
3734      {
3735        "name": "",
3736        "type": "uint256",
3737        "internalType": "uint256"
3738      }
3739    ],
3740    "stateMutability": "view"
3741  },
3742  {
3743    "type": "function",
3744    "name": "currentEpoch",
3745    "inputs": [],
3746    "outputs": [
3747      {
3748        "name": "",
3749        "type": "uint64",
3750        "internalType": "uint64"
3751      }
3752    ],
3753    "stateMutability": "view"
3754  },
3755  {
3756    "type": "function",
3757    "name": "disablePermissionedProverMode",
3758    "inputs": [],
3759    "outputs": [],
3760    "stateMutability": "nonpayable"
3761  },
3762  {
3763    "type": "function",
3764    "name": "epochFromBlockNumber",
3765    "inputs": [
3766      {
3767        "name": "_blockNum",
3768        "type": "uint64",
3769        "internalType": "uint64"
3770      },
3771      {
3772        "name": "_blocksPerEpoch",
3773        "type": "uint64",
3774        "internalType": "uint64"
3775      }
3776    ],
3777    "outputs": [
3778      {
3779        "name": "",
3780        "type": "uint64",
3781        "internalType": "uint64"
3782      }
3783    ],
3784    "stateMutability": "pure"
3785  },
3786  {
3787    "type": "function",
3788    "name": "epochStartBlock",
3789    "inputs": [],
3790    "outputs": [
3791      {
3792        "name": "",
3793        "type": "uint64",
3794        "internalType": "uint64"
3795      }
3796    ],
3797    "stateMutability": "view"
3798  },
3799  {
3800    "type": "function",
3801    "name": "finalizedState",
3802    "inputs": [],
3803    "outputs": [
3804      {
3805        "name": "viewNum",
3806        "type": "uint64",
3807        "internalType": "uint64"
3808      },
3809      {
3810        "name": "blockHeight",
3811        "type": "uint64",
3812        "internalType": "uint64"
3813      },
3814      {
3815        "name": "blockCommRoot",
3816        "type": "uint256",
3817        "internalType": "BN254.ScalarField"
3818      }
3819    ],
3820    "stateMutability": "view"
3821  },
3822  {
3823    "type": "function",
3824    "name": "firstEpoch",
3825    "inputs": [],
3826    "outputs": [
3827      {
3828        "name": "",
3829        "type": "uint64",
3830        "internalType": "uint64"
3831      }
3832    ],
3833    "stateMutability": "view"
3834  },
3835  {
3836    "type": "function",
3837    "name": "genesisStakeTableState",
3838    "inputs": [],
3839    "outputs": [
3840      {
3841        "name": "threshold",
3842        "type": "uint256",
3843        "internalType": "uint256"
3844      },
3845      {
3846        "name": "blsKeyComm",
3847        "type": "uint256",
3848        "internalType": "BN254.ScalarField"
3849      },
3850      {
3851        "name": "schnorrKeyComm",
3852        "type": "uint256",
3853        "internalType": "BN254.ScalarField"
3854      },
3855      {
3856        "name": "amountComm",
3857        "type": "uint256",
3858        "internalType": "BN254.ScalarField"
3859      }
3860    ],
3861    "stateMutability": "view"
3862  },
3863  {
3864    "type": "function",
3865    "name": "genesisState",
3866    "inputs": [],
3867    "outputs": [
3868      {
3869        "name": "viewNum",
3870        "type": "uint64",
3871        "internalType": "uint64"
3872      },
3873      {
3874        "name": "blockHeight",
3875        "type": "uint64",
3876        "internalType": "uint64"
3877      },
3878      {
3879        "name": "blockCommRoot",
3880        "type": "uint256",
3881        "internalType": "BN254.ScalarField"
3882      }
3883    ],
3884    "stateMutability": "view"
3885  },
3886  {
3887    "type": "function",
3888    "name": "getHotShotCommitment",
3889    "inputs": [
3890      {
3891        "name": "hotShotBlockHeight",
3892        "type": "uint256",
3893        "internalType": "uint256"
3894      }
3895    ],
3896    "outputs": [
3897      {
3898        "name": "hotShotBlockCommRoot",
3899        "type": "uint256",
3900        "internalType": "BN254.ScalarField"
3901      },
3902      {
3903        "name": "hotshotBlockHeight",
3904        "type": "uint64",
3905        "internalType": "uint64"
3906      }
3907    ],
3908    "stateMutability": "view"
3909  },
3910  {
3911    "type": "function",
3912    "name": "getStateHistoryCount",
3913    "inputs": [],
3914    "outputs": [
3915      {
3916        "name": "",
3917        "type": "uint256",
3918        "internalType": "uint256"
3919      }
3920    ],
3921    "stateMutability": "view"
3922  },
3923  {
3924    "type": "function",
3925    "name": "getVersion",
3926    "inputs": [],
3927    "outputs": [
3928      {
3929        "name": "majorVersion",
3930        "type": "uint8",
3931        "internalType": "uint8"
3932      },
3933      {
3934        "name": "minorVersion",
3935        "type": "uint8",
3936        "internalType": "uint8"
3937      },
3938      {
3939        "name": "patchVersion",
3940        "type": "uint8",
3941        "internalType": "uint8"
3942      }
3943    ],
3944    "stateMutability": "pure"
3945  },
3946  {
3947    "type": "function",
3948    "name": "initialize",
3949    "inputs": [
3950      {
3951        "name": "_genesis",
3952        "type": "tuple",
3953        "internalType": "struct LightClient.LightClientState",
3954        "components": [
3955          {
3956            "name": "viewNum",
3957            "type": "uint64",
3958            "internalType": "uint64"
3959          },
3960          {
3961            "name": "blockHeight",
3962            "type": "uint64",
3963            "internalType": "uint64"
3964          },
3965          {
3966            "name": "blockCommRoot",
3967            "type": "uint256",
3968            "internalType": "BN254.ScalarField"
3969          }
3970        ]
3971      },
3972      {
3973        "name": "_genesisStakeTableState",
3974        "type": "tuple",
3975        "internalType": "struct LightClient.StakeTableState",
3976        "components": [
3977          {
3978            "name": "threshold",
3979            "type": "uint256",
3980            "internalType": "uint256"
3981          },
3982          {
3983            "name": "blsKeyComm",
3984            "type": "uint256",
3985            "internalType": "BN254.ScalarField"
3986          },
3987          {
3988            "name": "schnorrKeyComm",
3989            "type": "uint256",
3990            "internalType": "BN254.ScalarField"
3991          },
3992          {
3993            "name": "amountComm",
3994            "type": "uint256",
3995            "internalType": "BN254.ScalarField"
3996          }
3997        ]
3998      },
3999      {
4000        "name": "_stateHistoryRetentionPeriod",
4001        "type": "uint32",
4002        "internalType": "uint32"
4003      },
4004      {
4005        "name": "owner",
4006        "type": "address",
4007        "internalType": "address"
4008      }
4009    ],
4010    "outputs": [],
4011    "stateMutability": "nonpayable"
4012  },
4013  {
4014    "type": "function",
4015    "name": "initializeV2",
4016    "inputs": [
4017      {
4018        "name": "_blocksPerEpoch",
4019        "type": "uint64",
4020        "internalType": "uint64"
4021      },
4022      {
4023        "name": "_epochStartBlock",
4024        "type": "uint64",
4025        "internalType": "uint64"
4026      }
4027    ],
4028    "outputs": [],
4029    "stateMutability": "nonpayable"
4030  },
4031  {
4032    "type": "function",
4033    "name": "initializeV3",
4034    "inputs": [],
4035    "outputs": [],
4036    "stateMutability": "nonpayable"
4037  },
4038  {
4039    "type": "function",
4040    "name": "isEpochRoot",
4041    "inputs": [
4042      {
4043        "name": "blockHeight",
4044        "type": "uint64",
4045        "internalType": "uint64"
4046      }
4047    ],
4048    "outputs": [
4049      {
4050        "name": "",
4051        "type": "bool",
4052        "internalType": "bool"
4053      }
4054    ],
4055    "stateMutability": "view"
4056  },
4057  {
4058    "type": "function",
4059    "name": "isGtEpochRoot",
4060    "inputs": [
4061      {
4062        "name": "blockHeight",
4063        "type": "uint64",
4064        "internalType": "uint64"
4065      }
4066    ],
4067    "outputs": [
4068      {
4069        "name": "",
4070        "type": "bool",
4071        "internalType": "bool"
4072      }
4073    ],
4074    "stateMutability": "view"
4075  },
4076  {
4077    "type": "function",
4078    "name": "isPermissionedProverEnabled",
4079    "inputs": [],
4080    "outputs": [
4081      {
4082        "name": "",
4083        "type": "bool",
4084        "internalType": "bool"
4085      }
4086    ],
4087    "stateMutability": "view"
4088  },
4089  {
4090    "type": "function",
4091    "name": "lagOverEscapeHatchThreshold",
4092    "inputs": [
4093      {
4094        "name": "blockNumber",
4095        "type": "uint256",
4096        "internalType": "uint256"
4097      },
4098      {
4099        "name": "threshold",
4100        "type": "uint256",
4101        "internalType": "uint256"
4102      }
4103    ],
4104    "outputs": [
4105      {
4106        "name": "",
4107        "type": "bool",
4108        "internalType": "bool"
4109      }
4110    ],
4111    "stateMutability": "view"
4112  },
4113  {
4114    "type": "function",
4115    "name": "newFinalizedState",
4116    "inputs": [
4117      {
4118        "name": "",
4119        "type": "tuple",
4120        "internalType": "struct LightClient.LightClientState",
4121        "components": [
4122          {
4123            "name": "viewNum",
4124            "type": "uint64",
4125            "internalType": "uint64"
4126          },
4127          {
4128            "name": "blockHeight",
4129            "type": "uint64",
4130            "internalType": "uint64"
4131          },
4132          {
4133            "name": "blockCommRoot",
4134            "type": "uint256",
4135            "internalType": "BN254.ScalarField"
4136          }
4137        ]
4138      },
4139      {
4140        "name": "",
4141        "type": "tuple",
4142        "internalType": "struct IPlonkVerifier.PlonkProof",
4143        "components": [
4144          {
4145            "name": "wire0",
4146            "type": "tuple",
4147            "internalType": "struct BN254.G1Point",
4148            "components": [
4149              {
4150                "name": "x",
4151                "type": "uint256",
4152                "internalType": "BN254.BaseField"
4153              },
4154              {
4155                "name": "y",
4156                "type": "uint256",
4157                "internalType": "BN254.BaseField"
4158              }
4159            ]
4160          },
4161          {
4162            "name": "wire1",
4163            "type": "tuple",
4164            "internalType": "struct BN254.G1Point",
4165            "components": [
4166              {
4167                "name": "x",
4168                "type": "uint256",
4169                "internalType": "BN254.BaseField"
4170              },
4171              {
4172                "name": "y",
4173                "type": "uint256",
4174                "internalType": "BN254.BaseField"
4175              }
4176            ]
4177          },
4178          {
4179            "name": "wire2",
4180            "type": "tuple",
4181            "internalType": "struct BN254.G1Point",
4182            "components": [
4183              {
4184                "name": "x",
4185                "type": "uint256",
4186                "internalType": "BN254.BaseField"
4187              },
4188              {
4189                "name": "y",
4190                "type": "uint256",
4191                "internalType": "BN254.BaseField"
4192              }
4193            ]
4194          },
4195          {
4196            "name": "wire3",
4197            "type": "tuple",
4198            "internalType": "struct BN254.G1Point",
4199            "components": [
4200              {
4201                "name": "x",
4202                "type": "uint256",
4203                "internalType": "BN254.BaseField"
4204              },
4205              {
4206                "name": "y",
4207                "type": "uint256",
4208                "internalType": "BN254.BaseField"
4209              }
4210            ]
4211          },
4212          {
4213            "name": "wire4",
4214            "type": "tuple",
4215            "internalType": "struct BN254.G1Point",
4216            "components": [
4217              {
4218                "name": "x",
4219                "type": "uint256",
4220                "internalType": "BN254.BaseField"
4221              },
4222              {
4223                "name": "y",
4224                "type": "uint256",
4225                "internalType": "BN254.BaseField"
4226              }
4227            ]
4228          },
4229          {
4230            "name": "prodPerm",
4231            "type": "tuple",
4232            "internalType": "struct BN254.G1Point",
4233            "components": [
4234              {
4235                "name": "x",
4236                "type": "uint256",
4237                "internalType": "BN254.BaseField"
4238              },
4239              {
4240                "name": "y",
4241                "type": "uint256",
4242                "internalType": "BN254.BaseField"
4243              }
4244            ]
4245          },
4246          {
4247            "name": "split0",
4248            "type": "tuple",
4249            "internalType": "struct BN254.G1Point",
4250            "components": [
4251              {
4252                "name": "x",
4253                "type": "uint256",
4254                "internalType": "BN254.BaseField"
4255              },
4256              {
4257                "name": "y",
4258                "type": "uint256",
4259                "internalType": "BN254.BaseField"
4260              }
4261            ]
4262          },
4263          {
4264            "name": "split1",
4265            "type": "tuple",
4266            "internalType": "struct BN254.G1Point",
4267            "components": [
4268              {
4269                "name": "x",
4270                "type": "uint256",
4271                "internalType": "BN254.BaseField"
4272              },
4273              {
4274                "name": "y",
4275                "type": "uint256",
4276                "internalType": "BN254.BaseField"
4277              }
4278            ]
4279          },
4280          {
4281            "name": "split2",
4282            "type": "tuple",
4283            "internalType": "struct BN254.G1Point",
4284            "components": [
4285              {
4286                "name": "x",
4287                "type": "uint256",
4288                "internalType": "BN254.BaseField"
4289              },
4290              {
4291                "name": "y",
4292                "type": "uint256",
4293                "internalType": "BN254.BaseField"
4294              }
4295            ]
4296          },
4297          {
4298            "name": "split3",
4299            "type": "tuple",
4300            "internalType": "struct BN254.G1Point",
4301            "components": [
4302              {
4303                "name": "x",
4304                "type": "uint256",
4305                "internalType": "BN254.BaseField"
4306              },
4307              {
4308                "name": "y",
4309                "type": "uint256",
4310                "internalType": "BN254.BaseField"
4311              }
4312            ]
4313          },
4314          {
4315            "name": "split4",
4316            "type": "tuple",
4317            "internalType": "struct BN254.G1Point",
4318            "components": [
4319              {
4320                "name": "x",
4321                "type": "uint256",
4322                "internalType": "BN254.BaseField"
4323              },
4324              {
4325                "name": "y",
4326                "type": "uint256",
4327                "internalType": "BN254.BaseField"
4328              }
4329            ]
4330          },
4331          {
4332            "name": "zeta",
4333            "type": "tuple",
4334            "internalType": "struct BN254.G1Point",
4335            "components": [
4336              {
4337                "name": "x",
4338                "type": "uint256",
4339                "internalType": "BN254.BaseField"
4340              },
4341              {
4342                "name": "y",
4343                "type": "uint256",
4344                "internalType": "BN254.BaseField"
4345              }
4346            ]
4347          },
4348          {
4349            "name": "zetaOmega",
4350            "type": "tuple",
4351            "internalType": "struct BN254.G1Point",
4352            "components": [
4353              {
4354                "name": "x",
4355                "type": "uint256",
4356                "internalType": "BN254.BaseField"
4357              },
4358              {
4359                "name": "y",
4360                "type": "uint256",
4361                "internalType": "BN254.BaseField"
4362              }
4363            ]
4364          },
4365          {
4366            "name": "wireEval0",
4367            "type": "uint256",
4368            "internalType": "BN254.ScalarField"
4369          },
4370          {
4371            "name": "wireEval1",
4372            "type": "uint256",
4373            "internalType": "BN254.ScalarField"
4374          },
4375          {
4376            "name": "wireEval2",
4377            "type": "uint256",
4378            "internalType": "BN254.ScalarField"
4379          },
4380          {
4381            "name": "wireEval3",
4382            "type": "uint256",
4383            "internalType": "BN254.ScalarField"
4384          },
4385          {
4386            "name": "wireEval4",
4387            "type": "uint256",
4388            "internalType": "BN254.ScalarField"
4389          },
4390          {
4391            "name": "sigmaEval0",
4392            "type": "uint256",
4393            "internalType": "BN254.ScalarField"
4394          },
4395          {
4396            "name": "sigmaEval1",
4397            "type": "uint256",
4398            "internalType": "BN254.ScalarField"
4399          },
4400          {
4401            "name": "sigmaEval2",
4402            "type": "uint256",
4403            "internalType": "BN254.ScalarField"
4404          },
4405          {
4406            "name": "sigmaEval3",
4407            "type": "uint256",
4408            "internalType": "BN254.ScalarField"
4409          },
4410          {
4411            "name": "prodPermZetaOmegaEval",
4412            "type": "uint256",
4413            "internalType": "BN254.ScalarField"
4414          }
4415        ]
4416      }
4417    ],
4418    "outputs": [],
4419    "stateMutability": "pure"
4420  },
4421  {
4422    "type": "function",
4423    "name": "newFinalizedState",
4424    "inputs": [
4425      {
4426        "name": "",
4427        "type": "tuple",
4428        "internalType": "struct LightClient.LightClientState",
4429        "components": [
4430          {
4431            "name": "viewNum",
4432            "type": "uint64",
4433            "internalType": "uint64"
4434          },
4435          {
4436            "name": "blockHeight",
4437            "type": "uint64",
4438            "internalType": "uint64"
4439          },
4440          {
4441            "name": "blockCommRoot",
4442            "type": "uint256",
4443            "internalType": "BN254.ScalarField"
4444          }
4445        ]
4446      },
4447      {
4448        "name": "",
4449        "type": "tuple",
4450        "internalType": "struct LightClient.StakeTableState",
4451        "components": [
4452          {
4453            "name": "threshold",
4454            "type": "uint256",
4455            "internalType": "uint256"
4456          },
4457          {
4458            "name": "blsKeyComm",
4459            "type": "uint256",
4460            "internalType": "BN254.ScalarField"
4461          },
4462          {
4463            "name": "schnorrKeyComm",
4464            "type": "uint256",
4465            "internalType": "BN254.ScalarField"
4466          },
4467          {
4468            "name": "amountComm",
4469            "type": "uint256",
4470            "internalType": "BN254.ScalarField"
4471          }
4472        ]
4473      },
4474      {
4475        "name": "",
4476        "type": "tuple",
4477        "internalType": "struct IPlonkVerifier.PlonkProof",
4478        "components": [
4479          {
4480            "name": "wire0",
4481            "type": "tuple",
4482            "internalType": "struct BN254.G1Point",
4483            "components": [
4484              {
4485                "name": "x",
4486                "type": "uint256",
4487                "internalType": "BN254.BaseField"
4488              },
4489              {
4490                "name": "y",
4491                "type": "uint256",
4492                "internalType": "BN254.BaseField"
4493              }
4494            ]
4495          },
4496          {
4497            "name": "wire1",
4498            "type": "tuple",
4499            "internalType": "struct BN254.G1Point",
4500            "components": [
4501              {
4502                "name": "x",
4503                "type": "uint256",
4504                "internalType": "BN254.BaseField"
4505              },
4506              {
4507                "name": "y",
4508                "type": "uint256",
4509                "internalType": "BN254.BaseField"
4510              }
4511            ]
4512          },
4513          {
4514            "name": "wire2",
4515            "type": "tuple",
4516            "internalType": "struct BN254.G1Point",
4517            "components": [
4518              {
4519                "name": "x",
4520                "type": "uint256",
4521                "internalType": "BN254.BaseField"
4522              },
4523              {
4524                "name": "y",
4525                "type": "uint256",
4526                "internalType": "BN254.BaseField"
4527              }
4528            ]
4529          },
4530          {
4531            "name": "wire3",
4532            "type": "tuple",
4533            "internalType": "struct BN254.G1Point",
4534            "components": [
4535              {
4536                "name": "x",
4537                "type": "uint256",
4538                "internalType": "BN254.BaseField"
4539              },
4540              {
4541                "name": "y",
4542                "type": "uint256",
4543                "internalType": "BN254.BaseField"
4544              }
4545            ]
4546          },
4547          {
4548            "name": "wire4",
4549            "type": "tuple",
4550            "internalType": "struct BN254.G1Point",
4551            "components": [
4552              {
4553                "name": "x",
4554                "type": "uint256",
4555                "internalType": "BN254.BaseField"
4556              },
4557              {
4558                "name": "y",
4559                "type": "uint256",
4560                "internalType": "BN254.BaseField"
4561              }
4562            ]
4563          },
4564          {
4565            "name": "prodPerm",
4566            "type": "tuple",
4567            "internalType": "struct BN254.G1Point",
4568            "components": [
4569              {
4570                "name": "x",
4571                "type": "uint256",
4572                "internalType": "BN254.BaseField"
4573              },
4574              {
4575                "name": "y",
4576                "type": "uint256",
4577                "internalType": "BN254.BaseField"
4578              }
4579            ]
4580          },
4581          {
4582            "name": "split0",
4583            "type": "tuple",
4584            "internalType": "struct BN254.G1Point",
4585            "components": [
4586              {
4587                "name": "x",
4588                "type": "uint256",
4589                "internalType": "BN254.BaseField"
4590              },
4591              {
4592                "name": "y",
4593                "type": "uint256",
4594                "internalType": "BN254.BaseField"
4595              }
4596            ]
4597          },
4598          {
4599            "name": "split1",
4600            "type": "tuple",
4601            "internalType": "struct BN254.G1Point",
4602            "components": [
4603              {
4604                "name": "x",
4605                "type": "uint256",
4606                "internalType": "BN254.BaseField"
4607              },
4608              {
4609                "name": "y",
4610                "type": "uint256",
4611                "internalType": "BN254.BaseField"
4612              }
4613            ]
4614          },
4615          {
4616            "name": "split2",
4617            "type": "tuple",
4618            "internalType": "struct BN254.G1Point",
4619            "components": [
4620              {
4621                "name": "x",
4622                "type": "uint256",
4623                "internalType": "BN254.BaseField"
4624              },
4625              {
4626                "name": "y",
4627                "type": "uint256",
4628                "internalType": "BN254.BaseField"
4629              }
4630            ]
4631          },
4632          {
4633            "name": "split3",
4634            "type": "tuple",
4635            "internalType": "struct BN254.G1Point",
4636            "components": [
4637              {
4638                "name": "x",
4639                "type": "uint256",
4640                "internalType": "BN254.BaseField"
4641              },
4642              {
4643                "name": "y",
4644                "type": "uint256",
4645                "internalType": "BN254.BaseField"
4646              }
4647            ]
4648          },
4649          {
4650            "name": "split4",
4651            "type": "tuple",
4652            "internalType": "struct BN254.G1Point",
4653            "components": [
4654              {
4655                "name": "x",
4656                "type": "uint256",
4657                "internalType": "BN254.BaseField"
4658              },
4659              {
4660                "name": "y",
4661                "type": "uint256",
4662                "internalType": "BN254.BaseField"
4663              }
4664            ]
4665          },
4666          {
4667            "name": "zeta",
4668            "type": "tuple",
4669            "internalType": "struct BN254.G1Point",
4670            "components": [
4671              {
4672                "name": "x",
4673                "type": "uint256",
4674                "internalType": "BN254.BaseField"
4675              },
4676              {
4677                "name": "y",
4678                "type": "uint256",
4679                "internalType": "BN254.BaseField"
4680              }
4681            ]
4682          },
4683          {
4684            "name": "zetaOmega",
4685            "type": "tuple",
4686            "internalType": "struct BN254.G1Point",
4687            "components": [
4688              {
4689                "name": "x",
4690                "type": "uint256",
4691                "internalType": "BN254.BaseField"
4692              },
4693              {
4694                "name": "y",
4695                "type": "uint256",
4696                "internalType": "BN254.BaseField"
4697              }
4698            ]
4699          },
4700          {
4701            "name": "wireEval0",
4702            "type": "uint256",
4703            "internalType": "BN254.ScalarField"
4704          },
4705          {
4706            "name": "wireEval1",
4707            "type": "uint256",
4708            "internalType": "BN254.ScalarField"
4709          },
4710          {
4711            "name": "wireEval2",
4712            "type": "uint256",
4713            "internalType": "BN254.ScalarField"
4714          },
4715          {
4716            "name": "wireEval3",
4717            "type": "uint256",
4718            "internalType": "BN254.ScalarField"
4719          },
4720          {
4721            "name": "wireEval4",
4722            "type": "uint256",
4723            "internalType": "BN254.ScalarField"
4724          },
4725          {
4726            "name": "sigmaEval0",
4727            "type": "uint256",
4728            "internalType": "BN254.ScalarField"
4729          },
4730          {
4731            "name": "sigmaEval1",
4732            "type": "uint256",
4733            "internalType": "BN254.ScalarField"
4734          },
4735          {
4736            "name": "sigmaEval2",
4737            "type": "uint256",
4738            "internalType": "BN254.ScalarField"
4739          },
4740          {
4741            "name": "sigmaEval3",
4742            "type": "uint256",
4743            "internalType": "BN254.ScalarField"
4744          },
4745          {
4746            "name": "prodPermZetaOmegaEval",
4747            "type": "uint256",
4748            "internalType": "BN254.ScalarField"
4749          }
4750        ]
4751      }
4752    ],
4753    "outputs": [],
4754    "stateMutability": "pure"
4755  },
4756  {
4757    "type": "function",
4758    "name": "newFinalizedState",
4759    "inputs": [
4760      {
4761        "name": "newState",
4762        "type": "tuple",
4763        "internalType": "struct LightClient.LightClientState",
4764        "components": [
4765          {
4766            "name": "viewNum",
4767            "type": "uint64",
4768            "internalType": "uint64"
4769          },
4770          {
4771            "name": "blockHeight",
4772            "type": "uint64",
4773            "internalType": "uint64"
4774          },
4775          {
4776            "name": "blockCommRoot",
4777            "type": "uint256",
4778            "internalType": "BN254.ScalarField"
4779          }
4780        ]
4781      },
4782      {
4783        "name": "nextStakeTable",
4784        "type": "tuple",
4785        "internalType": "struct LightClient.StakeTableState",
4786        "components": [
4787          {
4788            "name": "threshold",
4789            "type": "uint256",
4790            "internalType": "uint256"
4791          },
4792          {
4793            "name": "blsKeyComm",
4794            "type": "uint256",
4795            "internalType": "BN254.ScalarField"
4796          },
4797          {
4798            "name": "schnorrKeyComm",
4799            "type": "uint256",
4800            "internalType": "BN254.ScalarField"
4801          },
4802          {
4803            "name": "amountComm",
4804            "type": "uint256",
4805            "internalType": "BN254.ScalarField"
4806          }
4807        ]
4808      },
4809      {
4810        "name": "newAuthRoot",
4811        "type": "uint256",
4812        "internalType": "uint256"
4813      },
4814      {
4815        "name": "proof",
4816        "type": "tuple",
4817        "internalType": "struct IPlonkVerifier.PlonkProof",
4818        "components": [
4819          {
4820            "name": "wire0",
4821            "type": "tuple",
4822            "internalType": "struct BN254.G1Point",
4823            "components": [
4824              {
4825                "name": "x",
4826                "type": "uint256",
4827                "internalType": "BN254.BaseField"
4828              },
4829              {
4830                "name": "y",
4831                "type": "uint256",
4832                "internalType": "BN254.BaseField"
4833              }
4834            ]
4835          },
4836          {
4837            "name": "wire1",
4838            "type": "tuple",
4839            "internalType": "struct BN254.G1Point",
4840            "components": [
4841              {
4842                "name": "x",
4843                "type": "uint256",
4844                "internalType": "BN254.BaseField"
4845              },
4846              {
4847                "name": "y",
4848                "type": "uint256",
4849                "internalType": "BN254.BaseField"
4850              }
4851            ]
4852          },
4853          {
4854            "name": "wire2",
4855            "type": "tuple",
4856            "internalType": "struct BN254.G1Point",
4857            "components": [
4858              {
4859                "name": "x",
4860                "type": "uint256",
4861                "internalType": "BN254.BaseField"
4862              },
4863              {
4864                "name": "y",
4865                "type": "uint256",
4866                "internalType": "BN254.BaseField"
4867              }
4868            ]
4869          },
4870          {
4871            "name": "wire3",
4872            "type": "tuple",
4873            "internalType": "struct BN254.G1Point",
4874            "components": [
4875              {
4876                "name": "x",
4877                "type": "uint256",
4878                "internalType": "BN254.BaseField"
4879              },
4880              {
4881                "name": "y",
4882                "type": "uint256",
4883                "internalType": "BN254.BaseField"
4884              }
4885            ]
4886          },
4887          {
4888            "name": "wire4",
4889            "type": "tuple",
4890            "internalType": "struct BN254.G1Point",
4891            "components": [
4892              {
4893                "name": "x",
4894                "type": "uint256",
4895                "internalType": "BN254.BaseField"
4896              },
4897              {
4898                "name": "y",
4899                "type": "uint256",
4900                "internalType": "BN254.BaseField"
4901              }
4902            ]
4903          },
4904          {
4905            "name": "prodPerm",
4906            "type": "tuple",
4907            "internalType": "struct BN254.G1Point",
4908            "components": [
4909              {
4910                "name": "x",
4911                "type": "uint256",
4912                "internalType": "BN254.BaseField"
4913              },
4914              {
4915                "name": "y",
4916                "type": "uint256",
4917                "internalType": "BN254.BaseField"
4918              }
4919            ]
4920          },
4921          {
4922            "name": "split0",
4923            "type": "tuple",
4924            "internalType": "struct BN254.G1Point",
4925            "components": [
4926              {
4927                "name": "x",
4928                "type": "uint256",
4929                "internalType": "BN254.BaseField"
4930              },
4931              {
4932                "name": "y",
4933                "type": "uint256",
4934                "internalType": "BN254.BaseField"
4935              }
4936            ]
4937          },
4938          {
4939            "name": "split1",
4940            "type": "tuple",
4941            "internalType": "struct BN254.G1Point",
4942            "components": [
4943              {
4944                "name": "x",
4945                "type": "uint256",
4946                "internalType": "BN254.BaseField"
4947              },
4948              {
4949                "name": "y",
4950                "type": "uint256",
4951                "internalType": "BN254.BaseField"
4952              }
4953            ]
4954          },
4955          {
4956            "name": "split2",
4957            "type": "tuple",
4958            "internalType": "struct BN254.G1Point",
4959            "components": [
4960              {
4961                "name": "x",
4962                "type": "uint256",
4963                "internalType": "BN254.BaseField"
4964              },
4965              {
4966                "name": "y",
4967                "type": "uint256",
4968                "internalType": "BN254.BaseField"
4969              }
4970            ]
4971          },
4972          {
4973            "name": "split3",
4974            "type": "tuple",
4975            "internalType": "struct BN254.G1Point",
4976            "components": [
4977              {
4978                "name": "x",
4979                "type": "uint256",
4980                "internalType": "BN254.BaseField"
4981              },
4982              {
4983                "name": "y",
4984                "type": "uint256",
4985                "internalType": "BN254.BaseField"
4986              }
4987            ]
4988          },
4989          {
4990            "name": "split4",
4991            "type": "tuple",
4992            "internalType": "struct BN254.G1Point",
4993            "components": [
4994              {
4995                "name": "x",
4996                "type": "uint256",
4997                "internalType": "BN254.BaseField"
4998              },
4999              {
5000                "name": "y",
5001                "type": "uint256",
5002                "internalType": "BN254.BaseField"
5003              }
5004            ]
5005          },
5006          {
5007            "name": "zeta",
5008            "type": "tuple",
5009            "internalType": "struct BN254.G1Point",
5010            "components": [
5011              {
5012                "name": "x",
5013                "type": "uint256",
5014                "internalType": "BN254.BaseField"
5015              },
5016              {
5017                "name": "y",
5018                "type": "uint256",
5019                "internalType": "BN254.BaseField"
5020              }
5021            ]
5022          },
5023          {
5024            "name": "zetaOmega",
5025            "type": "tuple",
5026            "internalType": "struct BN254.G1Point",
5027            "components": [
5028              {
5029                "name": "x",
5030                "type": "uint256",
5031                "internalType": "BN254.BaseField"
5032              },
5033              {
5034                "name": "y",
5035                "type": "uint256",
5036                "internalType": "BN254.BaseField"
5037              }
5038            ]
5039          },
5040          {
5041            "name": "wireEval0",
5042            "type": "uint256",
5043            "internalType": "BN254.ScalarField"
5044          },
5045          {
5046            "name": "wireEval1",
5047            "type": "uint256",
5048            "internalType": "BN254.ScalarField"
5049          },
5050          {
5051            "name": "wireEval2",
5052            "type": "uint256",
5053            "internalType": "BN254.ScalarField"
5054          },
5055          {
5056            "name": "wireEval3",
5057            "type": "uint256",
5058            "internalType": "BN254.ScalarField"
5059          },
5060          {
5061            "name": "wireEval4",
5062            "type": "uint256",
5063            "internalType": "BN254.ScalarField"
5064          },
5065          {
5066            "name": "sigmaEval0",
5067            "type": "uint256",
5068            "internalType": "BN254.ScalarField"
5069          },
5070          {
5071            "name": "sigmaEval1",
5072            "type": "uint256",
5073            "internalType": "BN254.ScalarField"
5074          },
5075          {
5076            "name": "sigmaEval2",
5077            "type": "uint256",
5078            "internalType": "BN254.ScalarField"
5079          },
5080          {
5081            "name": "sigmaEval3",
5082            "type": "uint256",
5083            "internalType": "BN254.ScalarField"
5084          },
5085          {
5086            "name": "prodPermZetaOmegaEval",
5087            "type": "uint256",
5088            "internalType": "BN254.ScalarField"
5089          }
5090        ]
5091      }
5092    ],
5093    "outputs": [],
5094    "stateMutability": "nonpayable"
5095  },
5096  {
5097    "type": "function",
5098    "name": "owner",
5099    "inputs": [],
5100    "outputs": [
5101      {
5102        "name": "",
5103        "type": "address",
5104        "internalType": "address"
5105      }
5106    ],
5107    "stateMutability": "view"
5108  },
5109  {
5110    "type": "function",
5111    "name": "permissionedProver",
5112    "inputs": [],
5113    "outputs": [
5114      {
5115        "name": "",
5116        "type": "address",
5117        "internalType": "address"
5118      }
5119    ],
5120    "stateMutability": "view"
5121  },
5122  {
5123    "type": "function",
5124    "name": "proxiableUUID",
5125    "inputs": [],
5126    "outputs": [
5127      {
5128        "name": "",
5129        "type": "bytes32",
5130        "internalType": "bytes32"
5131      }
5132    ],
5133    "stateMutability": "view"
5134  },
5135  {
5136    "type": "function",
5137    "name": "renounceOwnership",
5138    "inputs": [],
5139    "outputs": [],
5140    "stateMutability": "nonpayable"
5141  },
5142  {
5143    "type": "function",
5144    "name": "setAuthRoot",
5145    "inputs": [
5146      {
5147        "name": "newAuthRoot",
5148        "type": "uint256",
5149        "internalType": "uint256"
5150      }
5151    ],
5152    "outputs": [],
5153    "stateMutability": "nonpayable"
5154  },
5155  {
5156    "type": "function",
5157    "name": "setBlocksPerEpoch",
5158    "inputs": [
5159      {
5160        "name": "newBlocksPerEpoch",
5161        "type": "uint64",
5162        "internalType": "uint64"
5163      }
5164    ],
5165    "outputs": [],
5166    "stateMutability": "nonpayable"
5167  },
5168  {
5169    "type": "function",
5170    "name": "setFinalizedState",
5171    "inputs": [
5172      {
5173        "name": "state",
5174        "type": "tuple",
5175        "internalType": "struct LightClient.LightClientState",
5176        "components": [
5177          {
5178            "name": "viewNum",
5179            "type": "uint64",
5180            "internalType": "uint64"
5181          },
5182          {
5183            "name": "blockHeight",
5184            "type": "uint64",
5185            "internalType": "uint64"
5186          },
5187          {
5188            "name": "blockCommRoot",
5189            "type": "uint256",
5190            "internalType": "BN254.ScalarField"
5191          }
5192        ]
5193      }
5194    ],
5195    "outputs": [],
5196    "stateMutability": "nonpayable"
5197  },
5198  {
5199    "type": "function",
5200    "name": "setHotShotDownSince",
5201    "inputs": [
5202      {
5203        "name": "l1Height",
5204        "type": "uint256",
5205        "internalType": "uint256"
5206      }
5207    ],
5208    "outputs": [],
5209    "stateMutability": "nonpayable"
5210  },
5211  {
5212    "type": "function",
5213    "name": "setHotShotUp",
5214    "inputs": [],
5215    "outputs": [],
5216    "stateMutability": "nonpayable"
5217  },
5218  {
5219    "type": "function",
5220    "name": "setPermissionedProver",
5221    "inputs": [
5222      {
5223        "name": "prover",
5224        "type": "address",
5225        "internalType": "address"
5226      }
5227    ],
5228    "outputs": [],
5229    "stateMutability": "nonpayable"
5230  },
5231  {
5232    "type": "function",
5233    "name": "setStateHistory",
5234    "inputs": [
5235      {
5236        "name": "_stateHistoryCommitments",
5237        "type": "tuple[]",
5238        "internalType": "struct LightClient.StateHistoryCommitment[]",
5239        "components": [
5240          {
5241            "name": "l1BlockHeight",
5242            "type": "uint64",
5243            "internalType": "uint64"
5244          },
5245          {
5246            "name": "l1BlockTimestamp",
5247            "type": "uint64",
5248            "internalType": "uint64"
5249          },
5250          {
5251            "name": "hotShotBlockHeight",
5252            "type": "uint64",
5253            "internalType": "uint64"
5254          },
5255          {
5256            "name": "hotShotBlockCommRoot",
5257            "type": "uint256",
5258            "internalType": "BN254.ScalarField"
5259          }
5260        ]
5261      }
5262    ],
5263    "outputs": [],
5264    "stateMutability": "nonpayable"
5265  },
5266  {
5267    "type": "function",
5268    "name": "setStateHistoryRetentionPeriod",
5269    "inputs": [
5270      {
5271        "name": "historySeconds",
5272        "type": "uint32",
5273        "internalType": "uint32"
5274      }
5275    ],
5276    "outputs": [],
5277    "stateMutability": "nonpayable"
5278  },
5279  {
5280    "type": "function",
5281    "name": "setVotingStakeTableState",
5282    "inputs": [
5283      {
5284        "name": "stake",
5285        "type": "tuple",
5286        "internalType": "struct LightClient.StakeTableState",
5287        "components": [
5288          {
5289            "name": "threshold",
5290            "type": "uint256",
5291            "internalType": "uint256"
5292          },
5293          {
5294            "name": "blsKeyComm",
5295            "type": "uint256",
5296            "internalType": "BN254.ScalarField"
5297          },
5298          {
5299            "name": "schnorrKeyComm",
5300            "type": "uint256",
5301            "internalType": "BN254.ScalarField"
5302          },
5303          {
5304            "name": "amountComm",
5305            "type": "uint256",
5306            "internalType": "BN254.ScalarField"
5307          }
5308        ]
5309      }
5310    ],
5311    "outputs": [],
5312    "stateMutability": "nonpayable"
5313  },
5314  {
5315    "type": "function",
5316    "name": "setstateHistoryRetentionPeriod",
5317    "inputs": [
5318      {
5319        "name": "historySeconds",
5320        "type": "uint32",
5321        "internalType": "uint32"
5322      }
5323    ],
5324    "outputs": [],
5325    "stateMutability": "nonpayable"
5326  },
5327  {
5328    "type": "function",
5329    "name": "stateHistoryCommitments",
5330    "inputs": [
5331      {
5332        "name": "",
5333        "type": "uint256",
5334        "internalType": "uint256"
5335      }
5336    ],
5337    "outputs": [
5338      {
5339        "name": "l1BlockHeight",
5340        "type": "uint64",
5341        "internalType": "uint64"
5342      },
5343      {
5344        "name": "l1BlockTimestamp",
5345        "type": "uint64",
5346        "internalType": "uint64"
5347      },
5348      {
5349        "name": "hotShotBlockHeight",
5350        "type": "uint64",
5351        "internalType": "uint64"
5352      },
5353      {
5354        "name": "hotShotBlockCommRoot",
5355        "type": "uint256",
5356        "internalType": "BN254.ScalarField"
5357      }
5358    ],
5359    "stateMutability": "view"
5360  },
5361  {
5362    "type": "function",
5363    "name": "stateHistoryFirstIndex",
5364    "inputs": [],
5365    "outputs": [
5366      {
5367        "name": "",
5368        "type": "uint64",
5369        "internalType": "uint64"
5370      }
5371    ],
5372    "stateMutability": "view"
5373  },
5374  {
5375    "type": "function",
5376    "name": "stateHistoryRetentionPeriod",
5377    "inputs": [],
5378    "outputs": [
5379      {
5380        "name": "",
5381        "type": "uint32",
5382        "internalType": "uint32"
5383      }
5384    ],
5385    "stateMutability": "view"
5386  },
5387  {
5388    "type": "function",
5389    "name": "transferOwnership",
5390    "inputs": [
5391      {
5392        "name": "newOwner",
5393        "type": "address",
5394        "internalType": "address"
5395      }
5396    ],
5397    "outputs": [],
5398    "stateMutability": "nonpayable"
5399  },
5400  {
5401    "type": "function",
5402    "name": "updateEpochStartBlock",
5403    "inputs": [
5404      {
5405        "name": "newEpochStartBlock",
5406        "type": "uint64",
5407        "internalType": "uint64"
5408      }
5409    ],
5410    "outputs": [],
5411    "stateMutability": "nonpayable"
5412  },
5413  {
5414    "type": "function",
5415    "name": "upgradeToAndCall",
5416    "inputs": [
5417      {
5418        "name": "newImplementation",
5419        "type": "address",
5420        "internalType": "address"
5421      },
5422      {
5423        "name": "data",
5424        "type": "bytes",
5425        "internalType": "bytes"
5426      }
5427    ],
5428    "outputs": [],
5429    "stateMutability": "payable"
5430  },
5431  {
5432    "type": "function",
5433    "name": "votingStakeTableState",
5434    "inputs": [],
5435    "outputs": [
5436      {
5437        "name": "threshold",
5438        "type": "uint256",
5439        "internalType": "uint256"
5440      },
5441      {
5442        "name": "blsKeyComm",
5443        "type": "uint256",
5444        "internalType": "BN254.ScalarField"
5445      },
5446      {
5447        "name": "schnorrKeyComm",
5448        "type": "uint256",
5449        "internalType": "BN254.ScalarField"
5450      },
5451      {
5452        "name": "amountComm",
5453        "type": "uint256",
5454        "internalType": "BN254.ScalarField"
5455      }
5456    ],
5457    "stateMutability": "view"
5458  },
5459  {
5460    "type": "event",
5461    "name": "Initialized",
5462    "inputs": [
5463      {
5464        "name": "version",
5465        "type": "uint64",
5466        "indexed": false,
5467        "internalType": "uint64"
5468      }
5469    ],
5470    "anonymous": false
5471  },
5472  {
5473    "type": "event",
5474    "name": "NewEpoch",
5475    "inputs": [
5476      {
5477        "name": "epoch",
5478        "type": "uint64",
5479        "indexed": false,
5480        "internalType": "uint64"
5481      }
5482    ],
5483    "anonymous": false
5484  },
5485  {
5486    "type": "event",
5487    "name": "NewState",
5488    "inputs": [
5489      {
5490        "name": "viewNum",
5491        "type": "uint64",
5492        "indexed": true,
5493        "internalType": "uint64"
5494      },
5495      {
5496        "name": "blockHeight",
5497        "type": "uint64",
5498        "indexed": true,
5499        "internalType": "uint64"
5500      },
5501      {
5502        "name": "blockCommRoot",
5503        "type": "uint256",
5504        "indexed": false,
5505        "internalType": "BN254.ScalarField"
5506      }
5507    ],
5508    "anonymous": false
5509  },
5510  {
5511    "type": "event",
5512    "name": "OwnershipTransferred",
5513    "inputs": [
5514      {
5515        "name": "previousOwner",
5516        "type": "address",
5517        "indexed": true,
5518        "internalType": "address"
5519      },
5520      {
5521        "name": "newOwner",
5522        "type": "address",
5523        "indexed": true,
5524        "internalType": "address"
5525      }
5526    ],
5527    "anonymous": false
5528  },
5529  {
5530    "type": "event",
5531    "name": "PermissionedProverNotRequired",
5532    "inputs": [],
5533    "anonymous": false
5534  },
5535  {
5536    "type": "event",
5537    "name": "PermissionedProverRequired",
5538    "inputs": [
5539      {
5540        "name": "permissionedProver",
5541        "type": "address",
5542        "indexed": false,
5543        "internalType": "address"
5544      }
5545    ],
5546    "anonymous": false
5547  },
5548  {
5549    "type": "event",
5550    "name": "Upgrade",
5551    "inputs": [
5552      {
5553        "name": "implementation",
5554        "type": "address",
5555        "indexed": false,
5556        "internalType": "address"
5557      }
5558    ],
5559    "anonymous": false
5560  },
5561  {
5562    "type": "event",
5563    "name": "Upgraded",
5564    "inputs": [
5565      {
5566        "name": "implementation",
5567        "type": "address",
5568        "indexed": true,
5569        "internalType": "address"
5570      }
5571    ],
5572    "anonymous": false
5573  },
5574  {
5575    "type": "error",
5576    "name": "AddressEmptyCode",
5577    "inputs": [
5578      {
5579        "name": "target",
5580        "type": "address",
5581        "internalType": "address"
5582      }
5583    ]
5584  },
5585  {
5586    "type": "error",
5587    "name": "DeprecatedApi",
5588    "inputs": []
5589  },
5590  {
5591    "type": "error",
5592    "name": "ERC1967InvalidImplementation",
5593    "inputs": [
5594      {
5595        "name": "implementation",
5596        "type": "address",
5597        "internalType": "address"
5598      }
5599    ]
5600  },
5601  {
5602    "type": "error",
5603    "name": "ERC1967NonPayable",
5604    "inputs": []
5605  },
5606  {
5607    "type": "error",
5608    "name": "FailedInnerCall",
5609    "inputs": []
5610  },
5611  {
5612    "type": "error",
5613    "name": "InsufficientSnapshotHistory",
5614    "inputs": []
5615  },
5616  {
5617    "type": "error",
5618    "name": "InvalidAddress",
5619    "inputs": []
5620  },
5621  {
5622    "type": "error",
5623    "name": "InvalidArgs",
5624    "inputs": []
5625  },
5626  {
5627    "type": "error",
5628    "name": "InvalidHotShotBlockForCommitmentCheck",
5629    "inputs": []
5630  },
5631  {
5632    "type": "error",
5633    "name": "InvalidInitialization",
5634    "inputs": []
5635  },
5636  {
5637    "type": "error",
5638    "name": "InvalidMaxStateHistory",
5639    "inputs": []
5640  },
5641  {
5642    "type": "error",
5643    "name": "InvalidProof",
5644    "inputs": []
5645  },
5646  {
5647    "type": "error",
5648    "name": "InvalidScalar",
5649    "inputs": []
5650  },
5651  {
5652    "type": "error",
5653    "name": "MissingEpochRootUpdate",
5654    "inputs": []
5655  },
5656  {
5657    "type": "error",
5658    "name": "NoChangeRequired",
5659    "inputs": []
5660  },
5661  {
5662    "type": "error",
5663    "name": "NotInitializing",
5664    "inputs": []
5665  },
5666  {
5667    "type": "error",
5668    "name": "OutdatedState",
5669    "inputs": []
5670  },
5671  {
5672    "type": "error",
5673    "name": "OwnableInvalidOwner",
5674    "inputs": [
5675      {
5676        "name": "owner",
5677        "type": "address",
5678        "internalType": "address"
5679      }
5680    ]
5681  },
5682  {
5683    "type": "error",
5684    "name": "OwnableUnauthorizedAccount",
5685    "inputs": [
5686      {
5687        "name": "account",
5688        "type": "address",
5689        "internalType": "address"
5690      }
5691    ]
5692  },
5693  {
5694    "type": "error",
5695    "name": "OwnershipCannotBeRenounced",
5696    "inputs": []
5697  },
5698  {
5699    "type": "error",
5700    "name": "ProverNotPermissioned",
5701    "inputs": []
5702  },
5703  {
5704    "type": "error",
5705    "name": "UUPSUnauthorizedCallContext",
5706    "inputs": []
5707  },
5708  {
5709    "type": "error",
5710    "name": "UUPSUnsupportedProxiableUUID",
5711    "inputs": [
5712      {
5713        "name": "slot",
5714        "type": "bytes32",
5715        "internalType": "bytes32"
5716      }
5717    ]
5718  },
5719  {
5720    "type": "error",
5721    "name": "WrongStakeTableUsed",
5722    "inputs": []
5723  }
5724]
5725```*/
5726#[allow(
5727    non_camel_case_types,
5728    non_snake_case,
5729    clippy::pub_underscore_fields,
5730    clippy::style,
5731    clippy::empty_structs_with_brackets
5732)]
5733pub mod LightClientV3Mock {
5734    use super::*;
5735    use alloy::sol_types as alloy_sol_types;
5736    /// The creation / init bytecode of the contract.
5737    ///
5738    /// ```text
5739    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051613aeb6100f95f395f8181611dc601528181611def0152611f6c0152613aeb5ff3fe608060405260043610610280575f3560e01c806369cc6a0411610155578063aabd5db3116100be578063d24d933d11610078578063d24d933d146108d5578063e030330114610904578063f068205414610923578063f2fde38b14610942578063f567616014610961578063f9e50d1914610980575f5ffd5b8063aabd5db3146107e5578063ad3cb1cc14610804578063b33bc49114610841578063b5adea3c14610860578063c23b9e9e1461087f578063c8e5e498146108b7575f5ffd5b80638da5cb5b1161010f5780638da5cb5b146106e257806390c143901461071e57806396c1ca611461073d578063998328e81461075c5780639baa3cc9146107715780639fdb54a714610790575f5ffd5b806369cc6a0414610631578063715018a614610645578063757c37ad146106595780637667180814610673578063826e41fc146106875780638584d23f146106a6575f5ffd5b8063300c89dd116101f757806341682744116101b15780634168274414610575578063426d319414610592578063433dba9f146105b35780634f1ef286146105d257806352d1902d146105e5578063623a1338146105f9575f5ffd5b8063300c89dd1461048c578063313df7b1146104ab578063378ec23b146104e257806338e454b1146104fe5780633c23b6db146105125780633ed55b7b1461054f575f5ffd5b8063167ac61811610248578063167ac618146103905780631af08034146103af5780632063d4f7146103ce57806325297427146103ed5780632d52aad61461041c5780632f79889d1461044e575f5ffd5b8063013fa5fc1461028457806302b592f3146102a55780630625e19b146103025780630d8e6e2c1461034457806312173c2c1461036f575b5f5ffd5b34801561028f575f5ffd5b506102a361029e366004612bf2565b610994565b005b3480156102b0575f5ffd5b506102c46102bf366004612c0b565b610a47565b6040516102f994939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b34801561030d575f5ffd5b50600b54600c54600d54600e546103249392919084565b6040805194855260208501939093529183015260608201526080016102f9565b34801561034f575f5ffd5b5060408051600381525f60208201819052918101919091526060016102f9565b34801561037a575f5ffd5b50610383610a90565b6040516102f99190612c22565b34801561039b575f5ffd5b506102a36103aa366004612e39565b6110c0565b3480156103ba575f5ffd5b506102a36103c9366004612c0b565b600f55565b3480156103d9575f5ffd5b506102a36103e836600461311d565b611137565b3480156103f8575f5ffd5b5061040c610407366004612e39565b611150565b60405190151581526020016102f9565b348015610427575f5ffd5b506102a3610436366004612c0b565b6010805460ff60401b1916600160401b179055601155565b348015610459575f5ffd5b5060085461047490600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016102f9565b348015610497575f5ffd5b5061040c6104a6366004612e39565b6111b2565b3480156104b6575f5ffd5b506008546104ca906001600160a01b031681565b6040516001600160a01b0390911681526020016102f9565b3480156104ed575f5ffd5b50435b6040519081526020016102f9565b348015610509575f5ffd5b506102a3611247565b34801561051d575f5ffd5b506102a361052c366004612e39565b600a805467ffffffffffffffff19166001600160401b0392909216919091179055565b34801561055a575f5ffd5b50600a5461047490600160401b90046001600160401b031681565b348015610580575f5ffd5b506010546001600160401b0316610474565b34801561059d575f5ffd5b505f546001546002546003546103249392919084565b3480156105be575f5ffd5b506102a36105cd366004613164565b61133e565b6102a36105e036600461317d565b611352565b3480156105f0575f5ffd5b506104f0611371565b348015610604575f5ffd5b506102a3610613366004613263565b8051600b556020810151600c556040810151600d5560600151600e55565b34801561063c575f5ffd5b506102a361138c565b348015610650575f5ffd5b506102a36113fa565b348015610664575f5ffd5b506102a36103e836600461327d565b34801561067e575f5ffd5b5061047461141b565b348015610692575f5ffd5b506008546001600160a01b0316151561040c565b3480156106b1575f5ffd5b506106c56106c0366004612c0b565b611445565b604080519283526001600160401b039091166020830152016102f9565b3480156106ed575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166104ca565b348015610729575f5ffd5b506104746107383660046132c1565b611570565b348015610748575f5ffd5b506102a3610757366004613164565b6115df565b348015610767575f5ffd5b506104f0600f5481565b34801561077c575f5ffd5b506102a361078b3660046132e9565b611668565b34801561079b575f5ffd5b506006546007546107bf916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016102f9565b3480156107f0575f5ffd5b506102a36107ff36600461333e565b611777565b34801561080f575f5ffd5b50610834604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102f99190613382565b34801561084c575f5ffd5b506102a361085b3660046132c1565b611a9c565b34801561086b575f5ffd5b506102a361087a3660046133b7565b611bf5565b34801561088a575f5ffd5b506008546108a290600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016102f9565b3480156108c2575f5ffd5b506102a36010805460ff60401b19169055565b3480156108e0575f5ffd5b506004546005546107bf916001600160401b0380821692600160401b909204169083565b34801561090f575f5ffd5b5061040c61091e3660046133d1565b611c3c565b34801561092e575f5ffd5b50600a54610474906001600160401b031681565b34801561094d575f5ffd5b506102a361095c366004612bf2565b611c76565b34801561096c575f5ffd5b506102a361097b3660046133f1565b611cb5565b34801561098b575f5ffd5b506009546104f0565b61099c611d60565b6001600160a01b0381166109c35760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036109f25760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610a56575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b610a98612912565b620100008152600560208201527f018f7ccd26652f2ad0a0d891bf29c5ef9f7b2a4e5a8295ee0acde69b1669acb56040820151527f0c3b19cb30f3edf93eb2b9e0b11ce099c5745bc3eda3226c7f5d5f39a97bfcaa6020604083015101527f141e3d68aad50bf0843f645d61f5e8fe3608d312e457d1bf712ce20c2ce906a96060820151527f2b44c03676d0a3cd12257e589b78f059a525aac5d6bfab0d6189d4b40ae511226020606083015101527f18609f79b8297b3f9951e7139945aa60e33e914dea6f27bda920b0e0c90935f36080820151527f11a6315abb98f76cce5b4fa5d87b8a2064d2d04c20f83314d2dd2fdb68141e3d6020608083015101527f2fa93348689ea07bb760d7c3100d3148afc342c050eba7f39455e478a5730d0560a0820151527f0b7c92113ecabfa54988d3a81e13237196c9975dd3dea0a325c49bcf901f8b4a602060a083015101527f2ae11000a5bd0a79adf8e3a5a449ea5c58dfa7d6a2fa24b9c976ecfca706584060c0820151527f0c4677befdd8c7d2474f2f7d19f2d0e2747a7e05469cc08eee2b7b81ad4872e2602060c083015101527f04065da2ee5858e53035e3fab84444a8663a8ead5d299b0b0460b9bd6b9c34cb60e0820151527f0dd33bf9f503c9d0b486ec825bd8ddfbc93a96f4e09978bea94db7caa33e32f0602060e083015101527f0d53ecf3464c3b43f674a4c9ae5dacd9e2a6cf69ccd06bdb38cdef07acd0b9b8610100820151527f0c0a5358e274a877cd87e017a90e3e2c4630637c14400d16141610817543cc6c602061010083015101527f053d21494294a22b3e3c567c9f618615af41c257043b87470788d7c30e915b32610120820151527f04cfeb1d7ff9e07794e47e486fcfe6b0e143c74a49ce915ebdf6ae68df6e06b8602061012083015101527f113f2826bf7221de175ca046f82f51112a9eb1486b06747f4d13940bc26f4bb8610140820151527f05cfaa7aa08b080dcbc31caddd501fe5ef8c118d8ed7d500708ec689b3ac7f2b602061014083015101527f0a9d147b2c3c63d298198af385558871a9b69c192291a4ee69def6d82dd7c31e610160820151527f016d5ae3fc3c6dc5283ff63e2ffe92d0931cc77258cccf3d1c9aed601ed2e8ba602061016083015101527f123d9f2908cd4f038bb281805ad8e922444469b02f4b83e6c051c0e1caad152c610180820151527f08e647cc02b9df4ceb5b154550d2b29a7b67370f67a37274206bb12c5c451dc2602061018083015101527f1859105e4ad21829c12c4a5b50d5a2a5d988fd73eb4424465638e199ab367b826101a0820151527f0abbccc29007b3c64dad550f76c99ea330b102dd7fb57a542a9add84845d51c360206101a083015101527f263a7ebacbf181a281a3494d75e822165d3f50e9ac14e74a822ad91503ec78a96101c0820151527f1f0968f3165c00c63964e71ef0c42396a146190a97ff2f436ae89288cb9d344660206101c083015101527f2f7cd5cc72420dd90cf820746b89e616dff8b21e9aadb9a4a06f41ece2039a5e6101e0820151527f15a34038506ec14fc8c26ad2551619bace01483f085e208d2302ad4c2111cb3760206101e083015101527f172d2aa0fb172d331b0f3671ae68be93ecfbda63a722176be8841e839031b61e610200820151527f13b29e31f3730117e54309a33f472f538f688bb94ccc3085da13a561dc8865e9602061020083015101527f0bf4050e8f045922cae613d4a626aeaeee7dc24a2b7bb473aee45e5c94e7ede3610220820151527f15aa6d9399cd9b8ab3883839d300e76f9e4e2baad7d39e0aa2e382f235d22263602061022083015101527f09dd102380546061aa42f087f8ac5525a6747b8db1e3c4fe033fdbe3d80d6e9a610240820151527f2edfb5b603bbb2d376ffe876bd219319d34d8813d09b70fb37da3cc2b77ebacb602061024083015101527f044bef6f37b3b1db2da99a5262d054163fc465d24e53925d07e5d4b5fe946746610260820151527f10453728e61b7fdf863adffb97c4a65b9c116087c10f01563fc31393ee69ea3f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b6110c8611d60565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b0385811682029283179485905561110e94919091048116928116911617611570565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806111705750600a546001600160401b0316155b1561117c57505f919050565b600a546001600160401b03166111938360056134fd565b61119d9190613530565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806111d25750600a546001600160401b0316155b156111de57505f919050565b600a546111f4906001600160401b031683613530565b6001600160401b031615806112415750600a5461121c906005906001600160401b031661355d565b600a546001600160401b0391821691611236911684613530565b6001600160401b0316115b92915050565b61124f611d60565b5f516020613abf5f395f51905f52805460039190600160401b900460ff1680611285575080546001600160401b03808416911610155b156112a35760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b9081178355600a546112dd9291810482169116611570565b6010805467ffffffffffffffff19166001600160401b03928316179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050565b611346611d60565b61134f816115df565b50565b61135a611dbb565b61136382611e5f565b61136d8282611ea0565b5050565b5f61137a611f61565b505f516020613a9f5f395f51905f5290565b611394611d60565b6008546001600160a01b0316156113df57600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b611402611d60565b6040516317d5c96560e11b815260040160405180910390fd5b600654600a545f91611440916001600160401b03600160401b90920482169116611570565b905090565b600980545f9182919061145960018361357c565b815481106114695761146961358f565b5f918252602090912060029091020154600160801b90046001600160401b031684106114a857604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b818110156115695784600982815481106114d8576114d861358f565b5f918252602090912060029091020154600160801b90046001600160401b0316111561156157600981815481106115115761151161358f565b905f5260205f20906002020160010154600982815481106115345761153461358f565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b6001016114bc565b5050915091565b5f816001600160401b03165f0361158857505f611241565b826001600160401b03165f036115a057506001611241565b6115aa8284613530565b6001600160401b03165f036115ca576115c382846135a3565b9050611241565b6115d482846135a3565b6115c39060016134fd565b6115e7611d60565b610e108163ffffffff16108061160657506301e133808163ffffffff16115b80611624575060085463ffffffff600160a01b909104811690821611155b15611642576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b5f516020613abf5f395f51905f528054600160401b810460ff1615906001600160401b03165f811580156116995750825b90505f826001600160401b031660011480156116b45750303b155b9050811580156116c2575080155b156116e05760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561170a57845460ff60401b1916600160401b1785555b61171386611faa565b61171b611fbb565b611726898989611fc3565b831561176c57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6008546001600160a01b03161515801561179c57506008546001600160a01b03163314155b156117ba576040516301474c8f60e71b815260040160405180910390fd5b60065484516001600160401b0391821691161115806117f3575060065460208501516001600160401b03600160401b9092048216911611155b156118115760405163051c46ef60e01b815260040160405180910390fd5b61181e84604001516120ef565b61182b83602001516120ef565b61183883604001516120ef565b61184583606001516120ef565b5f61184e61141b565b6020860151600a549192505f9161186e91906001600160401b0316611570565b6010549091506001600160401b03908116908216106118b25761189486602001516111b2565b156118b25760405163080ae8d960e01b815260040160405180910390fd5b6010546001600160401b03908116908216111561195e5760026118d5838361355d565b6001600160401b0316106118fc5760405163080ae8d960e01b815260040160405180910390fd5b6119078260016134fd565b6001600160401b0316816001600160401b0316148015611940575060065461193e90600160401b90046001600160401b0316611150565b155b1561195e5760405163080ae8d960e01b815260040160405180910390fd5b61196a86868686612130565b85516006805460208901516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040870151600755600f8590556010548116908216108015906119c757506119c78660200151611150565b15611a31578451600b556020850151600c556040850151600d556060850151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b611a158260016134fd565b6040516001600160401b03909116815260200160405180910390a15b611a3c43428861235a565b85602001516001600160401b0316865f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae68860400151604051611a8c91815260200190565b60405180910390a3505050505050565b611aa4611d60565b5f516020613abf5f395f51905f52805460029190600160401b900460ff1680611ada575080546001600160401b03808416911610155b15611af85760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b178255600590851611611b40576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b031990921690871617179055611b898385611570565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b80516006805460208401516001600160401b03908116600160401b026001600160801b0319909216931692909217919091179055604081015160075561134f43428361235a565b6010545f90600160401b900460ff16611c5e57611c598383612543565b611c6f565b8160115484611c6d919061357c565b115b9392505050565b611c7e611d60565b6001600160a01b038116611cac57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61134f8161269b565b611cc060095f612b77565b5f5b815181101561136d576009828281518110611cdf57611cdf61358f565b6020908102919091018101518254600181810185555f94855293839020825160029092020180549383015160408401516001600160401b03908116600160801b0267ffffffffffffffff60801b19928216600160401b026001600160801b031990971691909416179490941793909316178255606001519082015501611cc2565b33611d927f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146113f85760405163118cdaa760e01b8152336004820152602401611ca3565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611e4157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611e355f516020613a9f5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156113f85760405163703e46dd60e11b815260040160405180910390fd5b611e67611d60565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610a3c565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611efa575060408051601f3d908101601f19168201909252611ef7918101906135d0565b60015b611f2257604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611ca3565b5f516020613a9f5f395f51905f528114611f5257604051632a87526960e21b815260048101829052602401611ca3565b611f5c838361270b565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113f85760405163703e46dd60e11b815260040160405180910390fd5b611fb2612760565b61134f81612796565b6113f8612760565b82516001600160401b0316151580611fe7575060208301516001600160401b031615155b80611ff457506020820151155b8061200157506040820151155b8061200e57506060820151155b8061201857508151155b8061202a5750610e108163ffffffff16105b8061203e57506301e133808163ffffffff16115b1561205c576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181108061136d5760405163016c173360e21b815260040160405180910390fd5b5f612139610a90565b9050612143612b95565b600c548152600d54602080830191909152600e546040830152600b54606080840191909152600a549188015190916001600160401b03600160401b909104811691161080159061219b575061219b8760200151611150565b156121e4576040805187516020808301919091528801518183015290870151606080830191909152870151608082015260a001604051602081830303815290604052905061221f565b60408051600b546020820152600c5491810191909152600d546060820152600e54608082015260a00160405160208183030381529060405290505b6040805188516001600160401b039081166020808401919091528a015116818301529088015160608201525f9060800160408051601f198184030181529082905261227091849089906020016135fe565b60408051601f19818403018152919052805160209091012090506122b47f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182613620565b60808401526040516354e8bd6760e01b815273ffffffffffffffffffffffffffffffffffffffff906354e8bd67906122f490879087908a90600401613815565b602060405180830381865af415801561230f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123339190613a35565b612350576040516309bde33960e01b815260040160405180910390fd5b5050505050505050565b600954158015906123cf575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b031690811061239a5761239a61358f565b5f9182526020909120600290910201546123c490600160401b90046001600160401b03168461355d565b6001600160401b0316115b1561246257600854600980549091600160c01b90046001600160401b03169081106123fc576123fc61358f565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861243c83613a54565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b6009545f9043841180612554575080155b8061259e5750600854600980549091600160c01b90046001600160401b03169081106125825761258261358f565b5f9182526020909120600290910201546001600160401b031684105b156125bc5760405163b0b4387760e01b815260040160405180910390fd5b5f80806125ca60018561357c565b90505b8161266657600854600160c01b90046001600160401b031681106126665786600982815481106125ff576125ff61358f565b5f9182526020909120600290910201546001600160401b0316116126545760019150600981815481106126345761263461358f565b5f9182526020909120600290910201546001600160401b03169250612666565b8061265e81613a7e565b9150506125cd565b816126845760405163b0b4387760e01b815260040160405180910390fd5b8561268f848961357c565b11979650505050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6127148261279e565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561275857611f5c8282612801565b61136d612873565b5f516020613abf5f395f51905f5254600160401b900460ff166113f857604051631afcd79f60e31b815260040160405180910390fd5b611c7e612760565b806001600160a01b03163b5f036127d357604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611ca3565b5f516020613a9f5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161281d9190613a93565b5f60405180830381855af49150503d805f8114612855576040519150601f19603f3d011682016040523d82523d5f602084013e61285a565b606091505b509150915061286a858383612892565b95945050505050565b34156113f85760405163b398979f60e01b815260040160405180910390fd5b6060826128a257611c59826128e9565b81511580156128b957506001600160a01b0384163b155b156128e257604051639996b31560e01b81526001600160a01b0385166004820152602401611ca3565b5092915050565b8051156128f95780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161294560405180604001604052805f81526020015f81525090565b815260200161296560405180604001604052805f81526020015f81525090565b815260200161298560405180604001604052805f81526020015f81525090565b81526020016129a560405180604001604052805f81526020015f81525090565b81526020016129c560405180604001604052805f81526020015f81525090565b81526020016129e560405180604001604052805f81526020015f81525090565b8152602001612a0560405180604001604052805f81526020015f81525090565b8152602001612a2560405180604001604052805f81526020015f81525090565b8152602001612a4560405180604001604052805f81526020015f81525090565b8152602001612a6560405180604001604052805f81526020015f81525090565b8152602001612a8560405180604001604052805f81526020015f81525090565b8152602001612aa560405180604001604052805f81526020015f81525090565b8152602001612ac560405180604001604052805f81526020015f81525090565b8152602001612ae560405180604001604052805f81526020015f81525090565b8152602001612b0560405180604001604052805f81526020015f81525090565b8152602001612b2560405180604001604052805f81526020015f81525090565b8152602001612b4560405180604001604052805f81526020015f81525090565b8152602001612b6560405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b5080545f8255600202905f5260205f209081019061134f9190612bb3565b6040518060a001604052806005906020820280368337509192915050565b5b80821115612bd85780546001600160c01b03191681555f6001820155600201612bb4565b5090565b80356001600160a01b03811681146111ad575f5ffd5b5f60208284031215612c02575f5ffd5b611c6f82612bdc565b5f60208284031215612c1b575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612c54604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b03811681146111ad575f5ffd5b5f60208284031215612e49575f5ffd5b611c6f82612e23565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612e8957612e89612e52565b60405290565b604051608081016001600160401b0381118282101715612e8957612e89612e52565b604051601f8201601f191681016001600160401b0381118282101715612ed957612ed9612e52565b604052919050565b5f60608284031215612ef1575f5ffd5b604051606081016001600160401b0381118282101715612f1357612f13612e52565b604052905080612f2283612e23565b8152612f3060208401612e23565b6020820152604092830135920191909152919050565b5f60408284031215612f56575f5ffd5b604080519081016001600160401b0381118282101715612f7857612f78612e52565b604052823581526020928301359281019290925250919050565b5f6104808284031215612fa3575f5ffd5b612fab612e66565b9050612fb78383612f46565b8152612fc68360408401612f46565b6020820152612fd88360808401612f46565b6040820152612fea8360c08401612f46565b6060820152612ffd836101008401612f46565b6080820152613010836101408401612f46565b60a0820152613023836101808401612f46565b60c0820152613036836101c08401612f46565b60e0820152613049836102008401612f46565b61010082015261305d836102408401612f46565b610120820152613071836102808401612f46565b610140820152613085836102c08401612f46565b610160820152613099836103008401612f46565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e0838503121561312f575f5ffd5b6131398484612ee1565b91506131488460608501612f92565b90509250929050565b803563ffffffff811681146111ad575f5ffd5b5f60208284031215613174575f5ffd5b611c6f82613151565b5f5f6040838503121561318e575f5ffd5b61319783612bdc565b915060208301356001600160401b038111156131b1575f5ffd5b8301601f810185136131c1575f5ffd5b80356001600160401b038111156131da576131da612e52565b6131ed601f8201601f1916602001612eb1565b818152866020838501011115613201575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215613230575f5ffd5b613238612e8f565b8235815260208084013590820152604080840135908201526060928301359281019290925250919050565b5f60808284031215613273575f5ffd5b611c6f8383613220565b5f5f5f6105608486031215613290575f5ffd5b61329a8585612ee1565b92506132a98560608601613220565b91506132b88560e08601612f92565b90509250925092565b5f5f604083850312156132d2575f5ffd5b6132db83612e23565b915061314860208401612e23565b5f5f5f5f61012085870312156132fd575f5ffd5b6133078686612ee1565b93506133168660608701613220565b925061332460e08601613151565b91506133336101008601612bdc565b905092959194509250565b5f5f5f5f6105808587031215613352575f5ffd5b61335c8686612ee1565b935061336b8660608701613220565b925060e08501359150613333866101008701612f92565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f606082840312156133c7575f5ffd5b611c6f8383612ee1565b5f5f604083850312156133e2575f5ffd5b50508035926020909101359150565b5f60208284031215613401575f5ffd5b81356001600160401b03811115613416575f5ffd5b8201601f81018413613426575f5ffd5b80356001600160401b0381111561343f5761343f612e52565b61344e60208260051b01612eb1565b8082825260208201915060208360071b85010192508683111561346f575f5ffd5b6020840193505b828410156134df576080848803121561348d575f5ffd5b613495612e8f565b61349e85612e23565b81526134ac60208601612e23565b60208201526134bd60408601612e23565b6040820152606085810135908201528252608090930192602090910190613476565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115611241576112416134e9565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b038316806135485761354861351c565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115611241576112416134e9565b81810381811115611241576112416134e9565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b038316806135bb576135bb61351c565b806001600160401b0384160491505092915050565b5f602082840312156135e0575f5ffd5b5051919050565b5f81518060208401855e5f93019283525090919050565b5f61361261360c83876135e7565b856135e7565b928352505060200192915050565b5f8261362e5761362e61351c565b500690565b805f5b6005811015613655578151845260209384019390910190600101613636565b50505050565b61367082825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a208201905084518252602085015160208301526040850151613847604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152613a1f610500830185613633565b613a2d6105a083018461365b565b949350505050565b5f60208284031215613a45575f5ffd5b81518015158114611c6f575f5ffd5b5f6001600160401b0382166001600160401b038103613a7557613a756134e9565b60010192915050565b5f81613a8c57613a8c6134e9565b505f190190565b5f611c6f82846135e756fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c634300081c000a
5740    /// ```
5741    #[rustfmt::skip]
5742    #[allow(clippy::all)]
5743    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
5744        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:\xEBa\0\xF9_9_\x81\x81a\x1D\xC6\x01R\x81\x81a\x1D\xEF\x01Ra\x1Fl\x01Ra:\xEB_\xF3\xFE`\x80`@R`\x046\x10a\x02\x80W_5`\xE0\x1C\x80ci\xCCj\x04\x11a\x01UW\x80c\xAA\xBD]\xB3\x11a\0\xBEW\x80c\xD2M\x93=\x11a\0xW\x80c\xD2M\x93=\x14a\x08\xD5W\x80c\xE003\x01\x14a\t\x04W\x80c\xF0h T\x14a\t#W\x80c\xF2\xFD\xE3\x8B\x14a\tBW\x80c\xF5ga`\x14a\taW\x80c\xF9\xE5\r\x19\x14a\t\x80W__\xFD[\x80c\xAA\xBD]\xB3\x14a\x07\xE5W\x80c\xAD<\xB1\xCC\x14a\x08\x04W\x80c\xB3;\xC4\x91\x14a\x08AW\x80c\xB5\xAD\xEA<\x14a\x08`W\x80c\xC2;\x9E\x9E\x14a\x08\x7FW\x80c\xC8\xE5\xE4\x98\x14a\x08\xB7W__\xFD[\x80c\x8D\xA5\xCB[\x11a\x01\x0FW\x80c\x8D\xA5\xCB[\x14a\x06\xE2W\x80c\x90\xC1C\x90\x14a\x07\x1EW\x80c\x96\xC1\xCAa\x14a\x07=W\x80c\x99\x83(\xE8\x14a\x07\\W\x80c\x9B\xAA<\xC9\x14a\x07qW\x80c\x9F\xDBT\xA7\x14a\x07\x90W__\xFD[\x80ci\xCCj\x04\x14a\x061W\x80cqP\x18\xA6\x14a\x06EW\x80cu|7\xAD\x14a\x06YW\x80cvg\x18\x08\x14a\x06sW\x80c\x82nA\xFC\x14a\x06\x87W\x80c\x85\x84\xD2?\x14a\x06\xA6W__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\xF7W\x80cAh'D\x11a\x01\xB1W\x80cAh'D\x14a\x05uW\x80cBm1\x94\x14a\x05\x92W\x80cC=\xBA\x9F\x14a\x05\xB3W\x80cO\x1E\xF2\x86\x14a\x05\xD2W\x80cR\xD1\x90-\x14a\x05\xE5W\x80cb:\x138\x14a\x05\xF9W__\xFD[\x80c0\x0C\x89\xDD\x14a\x04\x8CW\x80c1=\xF7\xB1\x14a\x04\xABW\x80c7\x8E\xC2;\x14a\x04\xE2W\x80c8\xE4T\xB1\x14a\x04\xFEW\x80c<#\xB6\xDB\x14a\x05\x12W\x80c>\xD5[{\x14a\x05OW__\xFD[\x80c\x16z\xC6\x18\x11a\x02HW\x80c\x16z\xC6\x18\x14a\x03\x90W\x80c\x1A\xF0\x804\x14a\x03\xAFW\x80c c\xD4\xF7\x14a\x03\xCEW\x80c%)t'\x14a\x03\xEDW\x80c-R\xAA\xD6\x14a\x04\x1CW\x80c/y\x88\x9D\x14a\x04NW__\xFD[\x80c\x01?\xA5\xFC\x14a\x02\x84W\x80c\x02\xB5\x92\xF3\x14a\x02\xA5W\x80c\x06%\xE1\x9B\x14a\x03\x02W\x80c\r\x8En,\x14a\x03DW\x80c\x12\x17<,\x14a\x03oW[__\xFD[4\x80\x15a\x02\x8FW__\xFD[Pa\x02\xA3a\x02\x9E6`\x04a+\xF2V[a\t\x94V[\0[4\x80\x15a\x02\xB0W__\xFD[Pa\x02\xC4a\x02\xBF6`\x04a,\x0BV[a\nGV[`@Qa\x02\xF9\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\rW__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x03$\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\xF9V[4\x80\x15a\x03OW__\xFD[P`@\x80Q`\x03\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\xF9V[4\x80\x15a\x03zW__\xFD[Pa\x03\x83a\n\x90V[`@Qa\x02\xF9\x91\x90a,\"V[4\x80\x15a\x03\x9BW__\xFD[Pa\x02\xA3a\x03\xAA6`\x04a.9V[a\x10\xC0V[4\x80\x15a\x03\xBAW__\xFD[Pa\x02\xA3a\x03\xC96`\x04a,\x0BV[`\x0FUV[4\x80\x15a\x03\xD9W__\xFD[Pa\x02\xA3a\x03\xE86`\x04a1\x1DV[a\x117V[4\x80\x15a\x03\xF8W__\xFD[Pa\x04\x0Ca\x04\x076`\x04a.9V[a\x11PV[`@Q\x90\x15\x15\x81R` \x01a\x02\xF9V[4\x80\x15a\x04'W__\xFD[Pa\x02\xA3a\x0466`\x04a,\x0BV[`\x10\x80T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x90U`\x11UV[4\x80\x15a\x04YW__\xFD[P`\x08Ta\x04t\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xF9V[4\x80\x15a\x04\x97W__\xFD[Pa\x04\x0Ca\x04\xA66`\x04a.9V[a\x11\xB2V[4\x80\x15a\x04\xB6W__\xFD[P`\x08Ta\x04\xCA\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xF9V[4\x80\x15a\x04\xEDW__\xFD[PC[`@Q\x90\x81R` \x01a\x02\xF9V[4\x80\x15a\x05\tW__\xFD[Pa\x02\xA3a\x12GV[4\x80\x15a\x05\x1DW__\xFD[Pa\x02\xA3a\x05,6`\x04a.9V[`\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\x05ZW__\xFD[P`\nTa\x04t\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x05\x80W__\xFD[P`\x10T`\x01`\x01`@\x1B\x03\x16a\x04tV[4\x80\x15a\x05\x9DW__\xFD[P_T`\x01T`\x02T`\x03Ta\x03$\x93\x92\x91\x90\x84V[4\x80\x15a\x05\xBEW__\xFD[Pa\x02\xA3a\x05\xCD6`\x04a1dV[a\x13>V[a\x02\xA3a\x05\xE06`\x04a1}V[a\x13RV[4\x80\x15a\x05\xF0W__\xFD[Pa\x04\xF0a\x13qV[4\x80\x15a\x06\x04W__\xFD[Pa\x02\xA3a\x06\x136`\x04a2cV[\x80Q`\x0BU` \x81\x01Q`\x0CU`@\x81\x01Q`\rU``\x01Q`\x0EUV[4\x80\x15a\x06<W__\xFD[Pa\x02\xA3a\x13\x8CV[4\x80\x15a\x06PW__\xFD[Pa\x02\xA3a\x13\xFAV[4\x80\x15a\x06dW__\xFD[Pa\x02\xA3a\x03\xE86`\x04a2}V[4\x80\x15a\x06~W__\xFD[Pa\x04ta\x14\x1BV[4\x80\x15a\x06\x92W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x04\x0CV[4\x80\x15a\x06\xB1W__\xFD[Pa\x06\xC5a\x06\xC06`\x04a,\x0BV[a\x14EV[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\xF9V[4\x80\x15a\x06\xEDW__\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\xCAV[4\x80\x15a\x07)W__\xFD[Pa\x04ta\x0786`\x04a2\xC1V[a\x15pV[4\x80\x15a\x07HW__\xFD[Pa\x02\xA3a\x07W6`\x04a1dV[a\x15\xDFV[4\x80\x15a\x07gW__\xFD[Pa\x04\xF0`\x0FT\x81V[4\x80\x15a\x07|W__\xFD[Pa\x02\xA3a\x07\x8B6`\x04a2\xE9V[a\x16hV[4\x80\x15a\x07\x9BW__\xFD[P`\x06T`\x07Ta\x07\xBF\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\xF9V[4\x80\x15a\x07\xF0W__\xFD[Pa\x02\xA3a\x07\xFF6`\x04a3>V[a\x17wV[4\x80\x15a\x08\x0FW__\xFD[Pa\x084`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\xF9\x91\x90a3\x82V[4\x80\x15a\x08LW__\xFD[Pa\x02\xA3a\x08[6`\x04a2\xC1V[a\x1A\x9CV[4\x80\x15a\x08kW__\xFD[Pa\x02\xA3a\x08z6`\x04a3\xB7V[a\x1B\xF5V[4\x80\x15a\x08\x8AW__\xFD[P`\x08Ta\x08\xA2\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\xF9V[4\x80\x15a\x08\xC2W__\xFD[Pa\x02\xA3`\x10\x80T`\xFF`@\x1B\x19\x16\x90UV[4\x80\x15a\x08\xE0W__\xFD[P`\x04T`\x05Ta\x07\xBF\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\t\x0FW__\xFD[Pa\x04\x0Ca\t\x1E6`\x04a3\xD1V[a\x1C<V[4\x80\x15a\t.W__\xFD[P`\nTa\x04t\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\tMW__\xFD[Pa\x02\xA3a\t\\6`\x04a+\xF2V[a\x1CvV[4\x80\x15a\tlW__\xFD[Pa\x02\xA3a\t{6`\x04a3\xF1V[a\x1C\xB5V[4\x80\x15a\t\x8BW__\xFD[P`\tTa\x04\xF0V[a\t\x9Ca\x1D`V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t\xC3W`@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\xF2W`@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\nVW_\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\n\x98a)\x12V[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\xC8a\x1D`V[`\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\x11\x0E\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\x15pV[`\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\x11pWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\x11|WP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\x11\x93\x83`\x05a4\xFDV[a\x11\x9D\x91\x90a50V[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\x11\xD2WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\x11\xDEWP_\x91\x90PV[`\nTa\x11\xF4\x90`\x01`\x01`@\x1B\x03\x16\x83a50V[`\x01`\x01`@\x1B\x03\x16\x15\x80a\x12AWP`\nTa\x12\x1C\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a5]V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\x126\x91\x16\x84a50V[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[a\x12Oa\x1D`V[_Q` a:\xBF_9_Q\x90_R\x80T`\x03\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x12\x85WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x12\xA3W`@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\xDD\x92\x91\x81\x04\x82\x16\x91\x16a\x15pV[`\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\x13Fa\x1D`V[a\x13O\x81a\x15\xDFV[PV[a\x13Za\x1D\xBBV[a\x13c\x82a\x1E_V[a\x13m\x82\x82a\x1E\xA0V[PPV[_a\x13za\x1FaV[P_Q` a:\x9F_9_Q\x90_R\x90V[a\x13\x94a\x1D`V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x13\xDFW`\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\x14\x02a\x1D`V[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T`\nT_\x91a\x14@\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\x15pV[\x90P\x90V[`\t\x80T_\x91\x82\x91\x90a\x14Y`\x01\x83a5|V[\x81T\x81\x10a\x14iWa\x14ia5\x8FV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x14\xA8W`@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\x15iW\x84`\t\x82\x81T\x81\x10a\x14\xD8Wa\x14\xD8a5\x8FV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x15aW`\t\x81\x81T\x81\x10a\x15\x11Wa\x15\x11a5\x8FV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x154Wa\x154a5\x8FV[\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\x14\xBCV[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x15\x88WP_a\x12AV[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x15\xA0WP`\x01a\x12AV[a\x15\xAA\x82\x84a50V[`\x01`\x01`@\x1B\x03\x16_\x03a\x15\xCAWa\x15\xC3\x82\x84a5\xA3V[\x90Pa\x12AV[a\x15\xD4\x82\x84a5\xA3V[a\x15\xC3\x90`\x01a4\xFDV[a\x15\xE7a\x1D`V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x16\x06WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x16$WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x16BW`@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:\xBF_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x16\x99WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x16\xB4WP0;\x15[\x90P\x81\x15\x80\x15a\x16\xC2WP\x80\x15[\x15a\x16\xE0W`@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\x17\nW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x17\x13\x86a\x1F\xAAV[a\x17\x1Ba\x1F\xBBV[a\x17&\x89\x89\x89a\x1F\xC3V[\x83\x15a\x17lW\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\x17\x9CWP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x17\xBAW`@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\xF3WP`\x06T` \x85\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x18\x11W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x18\x1E\x84`@\x01Qa \xEFV[a\x18+\x83` \x01Qa \xEFV[a\x188\x83`@\x01Qa \xEFV[a\x18E\x83``\x01Qa \xEFV[_a\x18Na\x14\x1BV[` \x86\x01Q`\nT\x91\x92P_\x91a\x18n\x91\x90`\x01`\x01`@\x1B\x03\x16a\x15pV[`\x10T\x90\x91P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x10a\x18\xB2Wa\x18\x94\x86` \x01Qa\x11\xB2V[\x15a\x18\xB2W`@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^W`\x02a\x18\xD5\x83\x83a5]V[`\x01`\x01`@\x1B\x03\x16\x10a\x18\xFCW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x19\x07\x82`\x01a4\xFDV[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x19@WP`\x06Ta\x19>\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\x11PV[\x15[\x15a\x19^W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x19j\x86\x86\x86\x86a!0V[\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\xC7WPa\x19\xC7\x86` \x01Qa\x11PV[\x15a\x1A1W\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\x1A\x15\x82`\x01a4\xFDV[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x1A<CB\x88a#ZV[\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\x1A\x8C\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPPV[a\x1A\xA4a\x1D`V[_Q` a:\xBF_9_Q\x90_R\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x1A\xDAWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x1A\xF8W`@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\x1B@W`@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\x89\x83\x85a\x15pV[`\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\x13OCB\x83a#ZV[`\x10T_\x90`\x01`@\x1B\x90\x04`\xFF\x16a\x1C^Wa\x1CY\x83\x83a%CV[a\x1CoV[\x81`\x11T\x84a\x1Cm\x91\x90a5|V[\x11[\x93\x92PPPV[a\x1C~a\x1D`V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1C\xACW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x13O\x81a&\x9BV[a\x1C\xC0`\t_a+wV[_[\x81Q\x81\x10\x15a\x13mW`\t\x82\x82\x81Q\x81\x10a\x1C\xDFWa\x1C\xDFa5\x8FV[` \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\x1C\xC2V[3a\x1D\x92\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\xF8W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x1C\xA3V[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\x1EAWP\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\x1E5_Q` a:\x9F_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x13\xF8W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1Ega\x1D`V[`@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<V[\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\xFAWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1E\xF7\x91\x81\x01\x90a5\xD0V[`\x01[a\x1F\"W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x1C\xA3V[_Q` a:\x9F_9_Q\x90_R\x81\x14a\x1FRW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x1C\xA3V[a\x1F\\\x83\x83a'\x0BV[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\xF8W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1F\xB2a'`V[a\x13O\x81a'\x96V[a\x13\xF8a'`V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x1F\xE7WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x1F\xF4WP` \x82\x01Q\x15[\x80a \x01WP`@\x82\x01Q\x15[\x80a \x0EWP``\x82\x01Q\x15[\x80a \x18WP\x81Q\x15[\x80a *WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a >WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a \\W`@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\x13mW`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a!9a\n\x90V[\x90Pa!Ca+\x95V[`\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!\x9BWPa!\x9B\x87` \x01Qa\x11PV[\x15a!\xE4W`@\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\"\x1FV[`@\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\"p\x91\x84\x90\x89\x90` \x01a5\xFEV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x90Pa\"\xB4\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x82a6 V[`\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\"\xF4\x90\x87\x90\x87\x90\x8A\x90`\x04\x01a8\x15V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a#\x0FW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a#3\x91\x90a:5V[a#PW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPPV[`\tT\x15\x80\x15\x90a#\xCFWP`\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#\x9AWa#\x9Aa5\x8FV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta#\xC4\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a5]V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a$bW`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a#\xFCWa#\xFCa5\x8FV[_\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$<\x83a:TV[\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%TWP\x80\x15[\x80a%\x9EWP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a%\x82Wa%\x82a5\x8FV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a%\xBCW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a%\xCA`\x01\x85a5|V[\x90P[\x81a&fW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a&fW\x86`\t\x82\x81T\x81\x10a%\xFFWa%\xFFa5\x8FV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a&TW`\x01\x91P`\t\x81\x81T\x81\x10a&4Wa&4a5\x8FV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa&fV[\x80a&^\x81a:~V[\x91PPa%\xCDV[\x81a&\x84W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a&\x8F\x84\x89a5|V[\x11\x97\x96PPPPPPPV[\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'\x14\x82a'\x9EV[`@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'XWa\x1F\\\x82\x82a(\x01V[a\x13ma(sV[_Q` a:\xBF_9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a\x13\xF8W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1C~a'`V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a'\xD3W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x1C\xA3V[_Q` a:\x9F_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(\x1D\x91\x90a:\x93V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a(UW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a(ZV[``\x91P[P\x91P\x91Pa(j\x85\x83\x83a(\x92V[\x95\x94PPPPPV[4\x15a\x13\xF8W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a(\xA2Wa\x1CY\x82a(\xE9V[\x81Q\x15\x80\x15a(\xB9WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a(\xE2W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x1C\xA3V[P\x92\x91PPV[\x80Q\x15a(\xF9W\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)E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)e`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\x85`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\xA5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\xC5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\xE5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\x05`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*%`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*e`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\x85`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\xA5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\xC5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\xE5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a+\x05`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a+%`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a+E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a+e`@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\x13O\x91\x90a+\xB3V[`@Q\x80`\xA0\x01`@R\x80`\x05\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15a+\xD8W\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U_`\x01\x82\x01U`\x02\x01a+\xB4V[P\x90V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\xADW__\xFD[_` \x82\x84\x03\x12\x15a,\x02W__\xFD[a\x1Co\x82a+\xDCV[_` \x82\x84\x03\x12\x15a,\x1BW__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa,T`@\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\xADW__\xFD[_` \x82\x84\x03\x12\x15a.IW__\xFD[a\x1Co\x82a.#V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.\x89Wa.\x89a.RV[`@R\x90V[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.\x89Wa.\x89a.RV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.\xD9Wa.\xD9a.RV[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a.\xF1W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/\x13Wa/\x13a.RV[`@R\x90P\x80a/\"\x83a.#V[\x81Ra/0` \x84\x01a.#V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a/VW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/xWa/xa.RV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a/\xA3W__\xFD[a/\xABa.fV[\x90Pa/\xB7\x83\x83a/FV[\x81Ra/\xC6\x83`@\x84\x01a/FV[` \x82\x01Ra/\xD8\x83`\x80\x84\x01a/FV[`@\x82\x01Ra/\xEA\x83`\xC0\x84\x01a/FV[``\x82\x01Ra/\xFD\x83a\x01\0\x84\x01a/FV[`\x80\x82\x01Ra0\x10\x83a\x01@\x84\x01a/FV[`\xA0\x82\x01Ra0#\x83a\x01\x80\x84\x01a/FV[`\xC0\x82\x01Ra06\x83a\x01\xC0\x84\x01a/FV[`\xE0\x82\x01Ra0I\x83a\x02\0\x84\x01a/FV[a\x01\0\x82\x01Ra0]\x83a\x02@\x84\x01a/FV[a\x01 \x82\x01Ra0q\x83a\x02\x80\x84\x01a/FV[a\x01@\x82\x01Ra0\x85\x83a\x02\xC0\x84\x01a/FV[a\x01`\x82\x01Ra0\x99\x83a\x03\0\x84\x01a/FV[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\x15a1/W__\xFD[a19\x84\x84a.\xE1V[\x91Pa1H\x84``\x85\x01a/\x92V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\xADW__\xFD[_` \x82\x84\x03\x12\x15a1tW__\xFD[a\x1Co\x82a1QV[__`@\x83\x85\x03\x12\x15a1\x8EW__\xFD[a1\x97\x83a+\xDCV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xB1W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a1\xC1W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xDAWa1\xDAa.RV[a1\xED`\x1F\x82\x01`\x1F\x19\x16` \x01a.\xB1V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a2\x01W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a20W__\xFD[a28a.\x8FV[\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\x15a2sW__\xFD[a\x1Co\x83\x83a2 V[___a\x05`\x84\x86\x03\x12\x15a2\x90W__\xFD[a2\x9A\x85\x85a.\xE1V[\x92Pa2\xA9\x85``\x86\x01a2 V[\x91Pa2\xB8\x85`\xE0\x86\x01a/\x92V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a2\xD2W__\xFD[a2\xDB\x83a.#V[\x91Pa1H` \x84\x01a.#V[____a\x01 \x85\x87\x03\x12\x15a2\xFDW__\xFD[a3\x07\x86\x86a.\xE1V[\x93Pa3\x16\x86``\x87\x01a2 V[\x92Pa3$`\xE0\x86\x01a1QV[\x91Pa33a\x01\0\x86\x01a+\xDCV[\x90P\x92\x95\x91\x94P\x92PV[____a\x05\x80\x85\x87\x03\x12\x15a3RW__\xFD[a3\\\x86\x86a.\xE1V[\x93Pa3k\x86``\x87\x01a2 V[\x92P`\xE0\x85\x015\x91Pa33\x86a\x01\0\x87\x01a/\x92V[` \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\xC7W__\xFD[a\x1Co\x83\x83a.\xE1V[__`@\x83\x85\x03\x12\x15a3\xE2W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a4\x01W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a4\x16W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a4&W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a4?Wa4?a.RV[a4N` \x82`\x05\x1B\x01a.\xB1V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x07\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a4oW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a4\xDFW`\x80\x84\x88\x03\x12\x15a4\x8DW__\xFD[a4\x95a.\x8FV[a4\x9E\x85a.#V[\x81Ra4\xAC` \x86\x01a.#V[` \x82\x01Ra4\xBD`@\x86\x01a.#V[`@\x82\x01R``\x85\x81\x015\x90\x82\x01R\x82R`\x80\x90\x93\x01\x92` \x90\x91\x01\x90a4vV[\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\x12AWa\x12Aa4\xE9V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a5HWa5Ha5\x1CV[\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\x12AWa\x12Aa4\xE9V[\x81\x81\x03\x81\x81\x11\x15a\x12AWa\x12Aa4\xE9V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a5\xBBWa5\xBBa5\x1CV[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_` \x82\x84\x03\x12\x15a5\xE0W__\xFD[PQ\x91\x90PV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a6\x12a6\x0C\x83\x87a5\xE7V[\x85a5\xE7V[\x92\x83RPP` \x01\x92\x91PPV[_\x82a6.Wa6.a5\x1CV[P\x06\x90V[\x80_[`\x05\x81\x10\x15a6UW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a66V[PPPPV[a6p\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\x01Qa8G`@\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\x01Ra:\x1Fa\x05\0\x83\x01\x85a63V[a:-a\x05\xA0\x83\x01\x84a6[V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a:EW__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1CoW__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a:uWa:ua4\xE9V[`\x01\x01\x92\x91PPV[_\x81a:\x8CWa:\x8Ca4\xE9V[P_\x19\x01\x90V[_a\x1Co\x82\x84a5\xE7V\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",
5745    );
5746    /// The runtime bytecode of the contract, as deployed on the network.
5747    ///
5748    /// ```text
5749    ///0x608060405260043610610280575f3560e01c806369cc6a0411610155578063aabd5db3116100be578063d24d933d11610078578063d24d933d146108d5578063e030330114610904578063f068205414610923578063f2fde38b14610942578063f567616014610961578063f9e50d1914610980575f5ffd5b8063aabd5db3146107e5578063ad3cb1cc14610804578063b33bc49114610841578063b5adea3c14610860578063c23b9e9e1461087f578063c8e5e498146108b7575f5ffd5b80638da5cb5b1161010f5780638da5cb5b146106e257806390c143901461071e57806396c1ca611461073d578063998328e81461075c5780639baa3cc9146107715780639fdb54a714610790575f5ffd5b806369cc6a0414610631578063715018a614610645578063757c37ad146106595780637667180814610673578063826e41fc146106875780638584d23f146106a6575f5ffd5b8063300c89dd116101f757806341682744116101b15780634168274414610575578063426d319414610592578063433dba9f146105b35780634f1ef286146105d257806352d1902d146105e5578063623a1338146105f9575f5ffd5b8063300c89dd1461048c578063313df7b1146104ab578063378ec23b146104e257806338e454b1146104fe5780633c23b6db146105125780633ed55b7b1461054f575f5ffd5b8063167ac61811610248578063167ac618146103905780631af08034146103af5780632063d4f7146103ce57806325297427146103ed5780632d52aad61461041c5780632f79889d1461044e575f5ffd5b8063013fa5fc1461028457806302b592f3146102a55780630625e19b146103025780630d8e6e2c1461034457806312173c2c1461036f575b5f5ffd5b34801561028f575f5ffd5b506102a361029e366004612bf2565b610994565b005b3480156102b0575f5ffd5b506102c46102bf366004612c0b565b610a47565b6040516102f994939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b34801561030d575f5ffd5b50600b54600c54600d54600e546103249392919084565b6040805194855260208501939093529183015260608201526080016102f9565b34801561034f575f5ffd5b5060408051600381525f60208201819052918101919091526060016102f9565b34801561037a575f5ffd5b50610383610a90565b6040516102f99190612c22565b34801561039b575f5ffd5b506102a36103aa366004612e39565b6110c0565b3480156103ba575f5ffd5b506102a36103c9366004612c0b565b600f55565b3480156103d9575f5ffd5b506102a36103e836600461311d565b611137565b3480156103f8575f5ffd5b5061040c610407366004612e39565b611150565b60405190151581526020016102f9565b348015610427575f5ffd5b506102a3610436366004612c0b565b6010805460ff60401b1916600160401b179055601155565b348015610459575f5ffd5b5060085461047490600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016102f9565b348015610497575f5ffd5b5061040c6104a6366004612e39565b6111b2565b3480156104b6575f5ffd5b506008546104ca906001600160a01b031681565b6040516001600160a01b0390911681526020016102f9565b3480156104ed575f5ffd5b50435b6040519081526020016102f9565b348015610509575f5ffd5b506102a3611247565b34801561051d575f5ffd5b506102a361052c366004612e39565b600a805467ffffffffffffffff19166001600160401b0392909216919091179055565b34801561055a575f5ffd5b50600a5461047490600160401b90046001600160401b031681565b348015610580575f5ffd5b506010546001600160401b0316610474565b34801561059d575f5ffd5b505f546001546002546003546103249392919084565b3480156105be575f5ffd5b506102a36105cd366004613164565b61133e565b6102a36105e036600461317d565b611352565b3480156105f0575f5ffd5b506104f0611371565b348015610604575f5ffd5b506102a3610613366004613263565b8051600b556020810151600c556040810151600d5560600151600e55565b34801561063c575f5ffd5b506102a361138c565b348015610650575f5ffd5b506102a36113fa565b348015610664575f5ffd5b506102a36103e836600461327d565b34801561067e575f5ffd5b5061047461141b565b348015610692575f5ffd5b506008546001600160a01b0316151561040c565b3480156106b1575f5ffd5b506106c56106c0366004612c0b565b611445565b604080519283526001600160401b039091166020830152016102f9565b3480156106ed575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166104ca565b348015610729575f5ffd5b506104746107383660046132c1565b611570565b348015610748575f5ffd5b506102a3610757366004613164565b6115df565b348015610767575f5ffd5b506104f0600f5481565b34801561077c575f5ffd5b506102a361078b3660046132e9565b611668565b34801561079b575f5ffd5b506006546007546107bf916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016102f9565b3480156107f0575f5ffd5b506102a36107ff36600461333e565b611777565b34801561080f575f5ffd5b50610834604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102f99190613382565b34801561084c575f5ffd5b506102a361085b3660046132c1565b611a9c565b34801561086b575f5ffd5b506102a361087a3660046133b7565b611bf5565b34801561088a575f5ffd5b506008546108a290600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016102f9565b3480156108c2575f5ffd5b506102a36010805460ff60401b19169055565b3480156108e0575f5ffd5b506004546005546107bf916001600160401b0380821692600160401b909204169083565b34801561090f575f5ffd5b5061040c61091e3660046133d1565b611c3c565b34801561092e575f5ffd5b50600a54610474906001600160401b031681565b34801561094d575f5ffd5b506102a361095c366004612bf2565b611c76565b34801561096c575f5ffd5b506102a361097b3660046133f1565b611cb5565b34801561098b575f5ffd5b506009546104f0565b61099c611d60565b6001600160a01b0381166109c35760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036109f25760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610a56575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b610a98612912565b620100008152600560208201527f018f7ccd26652f2ad0a0d891bf29c5ef9f7b2a4e5a8295ee0acde69b1669acb56040820151527f0c3b19cb30f3edf93eb2b9e0b11ce099c5745bc3eda3226c7f5d5f39a97bfcaa6020604083015101527f141e3d68aad50bf0843f645d61f5e8fe3608d312e457d1bf712ce20c2ce906a96060820151527f2b44c03676d0a3cd12257e589b78f059a525aac5d6bfab0d6189d4b40ae511226020606083015101527f18609f79b8297b3f9951e7139945aa60e33e914dea6f27bda920b0e0c90935f36080820151527f11a6315abb98f76cce5b4fa5d87b8a2064d2d04c20f83314d2dd2fdb68141e3d6020608083015101527f2fa93348689ea07bb760d7c3100d3148afc342c050eba7f39455e478a5730d0560a0820151527f0b7c92113ecabfa54988d3a81e13237196c9975dd3dea0a325c49bcf901f8b4a602060a083015101527f2ae11000a5bd0a79adf8e3a5a449ea5c58dfa7d6a2fa24b9c976ecfca706584060c0820151527f0c4677befdd8c7d2474f2f7d19f2d0e2747a7e05469cc08eee2b7b81ad4872e2602060c083015101527f04065da2ee5858e53035e3fab84444a8663a8ead5d299b0b0460b9bd6b9c34cb60e0820151527f0dd33bf9f503c9d0b486ec825bd8ddfbc93a96f4e09978bea94db7caa33e32f0602060e083015101527f0d53ecf3464c3b43f674a4c9ae5dacd9e2a6cf69ccd06bdb38cdef07acd0b9b8610100820151527f0c0a5358e274a877cd87e017a90e3e2c4630637c14400d16141610817543cc6c602061010083015101527f053d21494294a22b3e3c567c9f618615af41c257043b87470788d7c30e915b32610120820151527f04cfeb1d7ff9e07794e47e486fcfe6b0e143c74a49ce915ebdf6ae68df6e06b8602061012083015101527f113f2826bf7221de175ca046f82f51112a9eb1486b06747f4d13940bc26f4bb8610140820151527f05cfaa7aa08b080dcbc31caddd501fe5ef8c118d8ed7d500708ec689b3ac7f2b602061014083015101527f0a9d147b2c3c63d298198af385558871a9b69c192291a4ee69def6d82dd7c31e610160820151527f016d5ae3fc3c6dc5283ff63e2ffe92d0931cc77258cccf3d1c9aed601ed2e8ba602061016083015101527f123d9f2908cd4f038bb281805ad8e922444469b02f4b83e6c051c0e1caad152c610180820151527f08e647cc02b9df4ceb5b154550d2b29a7b67370f67a37274206bb12c5c451dc2602061018083015101527f1859105e4ad21829c12c4a5b50d5a2a5d988fd73eb4424465638e199ab367b826101a0820151527f0abbccc29007b3c64dad550f76c99ea330b102dd7fb57a542a9add84845d51c360206101a083015101527f263a7ebacbf181a281a3494d75e822165d3f50e9ac14e74a822ad91503ec78a96101c0820151527f1f0968f3165c00c63964e71ef0c42396a146190a97ff2f436ae89288cb9d344660206101c083015101527f2f7cd5cc72420dd90cf820746b89e616dff8b21e9aadb9a4a06f41ece2039a5e6101e0820151527f15a34038506ec14fc8c26ad2551619bace01483f085e208d2302ad4c2111cb3760206101e083015101527f172d2aa0fb172d331b0f3671ae68be93ecfbda63a722176be8841e839031b61e610200820151527f13b29e31f3730117e54309a33f472f538f688bb94ccc3085da13a561dc8865e9602061020083015101527f0bf4050e8f045922cae613d4a626aeaeee7dc24a2b7bb473aee45e5c94e7ede3610220820151527f15aa6d9399cd9b8ab3883839d300e76f9e4e2baad7d39e0aa2e382f235d22263602061022083015101527f09dd102380546061aa42f087f8ac5525a6747b8db1e3c4fe033fdbe3d80d6e9a610240820151527f2edfb5b603bbb2d376ffe876bd219319d34d8813d09b70fb37da3cc2b77ebacb602061024083015101527f044bef6f37b3b1db2da99a5262d054163fc465d24e53925d07e5d4b5fe946746610260820151527f10453728e61b7fdf863adffb97c4a65b9c116087c10f01563fc31393ee69ea3f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b6110c8611d60565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b0385811682029283179485905561110e94919091048116928116911617611570565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806111705750600a546001600160401b0316155b1561117c57505f919050565b600a546001600160401b03166111938360056134fd565b61119d9190613530565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806111d25750600a546001600160401b0316155b156111de57505f919050565b600a546111f4906001600160401b031683613530565b6001600160401b031615806112415750600a5461121c906005906001600160401b031661355d565b600a546001600160401b0391821691611236911684613530565b6001600160401b0316115b92915050565b61124f611d60565b5f516020613abf5f395f51905f52805460039190600160401b900460ff1680611285575080546001600160401b03808416911610155b156112a35760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b9081178355600a546112dd9291810482169116611570565b6010805467ffffffffffffffff19166001600160401b03928316179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050565b611346611d60565b61134f816115df565b50565b61135a611dbb565b61136382611e5f565b61136d8282611ea0565b5050565b5f61137a611f61565b505f516020613a9f5f395f51905f5290565b611394611d60565b6008546001600160a01b0316156113df57600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b611402611d60565b6040516317d5c96560e11b815260040160405180910390fd5b600654600a545f91611440916001600160401b03600160401b90920482169116611570565b905090565b600980545f9182919061145960018361357c565b815481106114695761146961358f565b5f918252602090912060029091020154600160801b90046001600160401b031684106114a857604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b818110156115695784600982815481106114d8576114d861358f565b5f918252602090912060029091020154600160801b90046001600160401b0316111561156157600981815481106115115761151161358f565b905f5260205f20906002020160010154600982815481106115345761153461358f565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b6001016114bc565b5050915091565b5f816001600160401b03165f0361158857505f611241565b826001600160401b03165f036115a057506001611241565b6115aa8284613530565b6001600160401b03165f036115ca576115c382846135a3565b9050611241565b6115d482846135a3565b6115c39060016134fd565b6115e7611d60565b610e108163ffffffff16108061160657506301e133808163ffffffff16115b80611624575060085463ffffffff600160a01b909104811690821611155b15611642576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b5f516020613abf5f395f51905f528054600160401b810460ff1615906001600160401b03165f811580156116995750825b90505f826001600160401b031660011480156116b45750303b155b9050811580156116c2575080155b156116e05760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561170a57845460ff60401b1916600160401b1785555b61171386611faa565b61171b611fbb565b611726898989611fc3565b831561176c57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6008546001600160a01b03161515801561179c57506008546001600160a01b03163314155b156117ba576040516301474c8f60e71b815260040160405180910390fd5b60065484516001600160401b0391821691161115806117f3575060065460208501516001600160401b03600160401b9092048216911611155b156118115760405163051c46ef60e01b815260040160405180910390fd5b61181e84604001516120ef565b61182b83602001516120ef565b61183883604001516120ef565b61184583606001516120ef565b5f61184e61141b565b6020860151600a549192505f9161186e91906001600160401b0316611570565b6010549091506001600160401b03908116908216106118b25761189486602001516111b2565b156118b25760405163080ae8d960e01b815260040160405180910390fd5b6010546001600160401b03908116908216111561195e5760026118d5838361355d565b6001600160401b0316106118fc5760405163080ae8d960e01b815260040160405180910390fd5b6119078260016134fd565b6001600160401b0316816001600160401b0316148015611940575060065461193e90600160401b90046001600160401b0316611150565b155b1561195e5760405163080ae8d960e01b815260040160405180910390fd5b61196a86868686612130565b85516006805460208901516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040870151600755600f8590556010548116908216108015906119c757506119c78660200151611150565b15611a31578451600b556020850151600c556040850151600d556060850151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b611a158260016134fd565b6040516001600160401b03909116815260200160405180910390a15b611a3c43428861235a565b85602001516001600160401b0316865f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae68860400151604051611a8c91815260200190565b60405180910390a3505050505050565b611aa4611d60565b5f516020613abf5f395f51905f52805460029190600160401b900460ff1680611ada575080546001600160401b03808416911610155b15611af85760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b178255600590851611611b40576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b031990921690871617179055611b898385611570565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b80516006805460208401516001600160401b03908116600160401b026001600160801b0319909216931692909217919091179055604081015160075561134f43428361235a565b6010545f90600160401b900460ff16611c5e57611c598383612543565b611c6f565b8160115484611c6d919061357c565b115b9392505050565b611c7e611d60565b6001600160a01b038116611cac57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61134f8161269b565b611cc060095f612b77565b5f5b815181101561136d576009828281518110611cdf57611cdf61358f565b6020908102919091018101518254600181810185555f94855293839020825160029092020180549383015160408401516001600160401b03908116600160801b0267ffffffffffffffff60801b19928216600160401b026001600160801b031990971691909416179490941793909316178255606001519082015501611cc2565b33611d927f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146113f85760405163118cdaa760e01b8152336004820152602401611ca3565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611e4157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611e355f516020613a9f5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156113f85760405163703e46dd60e11b815260040160405180910390fd5b611e67611d60565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610a3c565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611efa575060408051601f3d908101601f19168201909252611ef7918101906135d0565b60015b611f2257604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611ca3565b5f516020613a9f5f395f51905f528114611f5257604051632a87526960e21b815260048101829052602401611ca3565b611f5c838361270b565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113f85760405163703e46dd60e11b815260040160405180910390fd5b611fb2612760565b61134f81612796565b6113f8612760565b82516001600160401b0316151580611fe7575060208301516001600160401b031615155b80611ff457506020820151155b8061200157506040820151155b8061200e57506060820151155b8061201857508151155b8061202a5750610e108163ffffffff16105b8061203e57506301e133808163ffffffff16115b1561205c576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181108061136d5760405163016c173360e21b815260040160405180910390fd5b5f612139610a90565b9050612143612b95565b600c548152600d54602080830191909152600e546040830152600b54606080840191909152600a549188015190916001600160401b03600160401b909104811691161080159061219b575061219b8760200151611150565b156121e4576040805187516020808301919091528801518183015290870151606080830191909152870151608082015260a001604051602081830303815290604052905061221f565b60408051600b546020820152600c5491810191909152600d546060820152600e54608082015260a00160405160208183030381529060405290505b6040805188516001600160401b039081166020808401919091528a015116818301529088015160608201525f9060800160408051601f198184030181529082905261227091849089906020016135fe565b60408051601f19818403018152919052805160209091012090506122b47f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182613620565b60808401526040516354e8bd6760e01b815273ffffffffffffffffffffffffffffffffffffffff906354e8bd67906122f490879087908a90600401613815565b602060405180830381865af415801561230f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123339190613a35565b612350576040516309bde33960e01b815260040160405180910390fd5b5050505050505050565b600954158015906123cf575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b031690811061239a5761239a61358f565b5f9182526020909120600290910201546123c490600160401b90046001600160401b03168461355d565b6001600160401b0316115b1561246257600854600980549091600160c01b90046001600160401b03169081106123fc576123fc61358f565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861243c83613a54565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b6009545f9043841180612554575080155b8061259e5750600854600980549091600160c01b90046001600160401b03169081106125825761258261358f565b5f9182526020909120600290910201546001600160401b031684105b156125bc5760405163b0b4387760e01b815260040160405180910390fd5b5f80806125ca60018561357c565b90505b8161266657600854600160c01b90046001600160401b031681106126665786600982815481106125ff576125ff61358f565b5f9182526020909120600290910201546001600160401b0316116126545760019150600981815481106126345761263461358f565b5f9182526020909120600290910201546001600160401b03169250612666565b8061265e81613a7e565b9150506125cd565b816126845760405163b0b4387760e01b815260040160405180910390fd5b8561268f848961357c565b11979650505050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6127148261279e565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561275857611f5c8282612801565b61136d612873565b5f516020613abf5f395f51905f5254600160401b900460ff166113f857604051631afcd79f60e31b815260040160405180910390fd5b611c7e612760565b806001600160a01b03163b5f036127d357604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611ca3565b5f516020613a9f5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161281d9190613a93565b5f60405180830381855af49150503d805f8114612855576040519150601f19603f3d011682016040523d82523d5f602084013e61285a565b606091505b509150915061286a858383612892565b95945050505050565b34156113f85760405163b398979f60e01b815260040160405180910390fd5b6060826128a257611c59826128e9565b81511580156128b957506001600160a01b0384163b155b156128e257604051639996b31560e01b81526001600160a01b0385166004820152602401611ca3565b5092915050565b8051156128f95780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161294560405180604001604052805f81526020015f81525090565b815260200161296560405180604001604052805f81526020015f81525090565b815260200161298560405180604001604052805f81526020015f81525090565b81526020016129a560405180604001604052805f81526020015f81525090565b81526020016129c560405180604001604052805f81526020015f81525090565b81526020016129e560405180604001604052805f81526020015f81525090565b8152602001612a0560405180604001604052805f81526020015f81525090565b8152602001612a2560405180604001604052805f81526020015f81525090565b8152602001612a4560405180604001604052805f81526020015f81525090565b8152602001612a6560405180604001604052805f81526020015f81525090565b8152602001612a8560405180604001604052805f81526020015f81525090565b8152602001612aa560405180604001604052805f81526020015f81525090565b8152602001612ac560405180604001604052805f81526020015f81525090565b8152602001612ae560405180604001604052805f81526020015f81525090565b8152602001612b0560405180604001604052805f81526020015f81525090565b8152602001612b2560405180604001604052805f81526020015f81525090565b8152602001612b4560405180604001604052805f81526020015f81525090565b8152602001612b6560405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b5080545f8255600202905f5260205f209081019061134f9190612bb3565b6040518060a001604052806005906020820280368337509192915050565b5b80821115612bd85780546001600160c01b03191681555f6001820155600201612bb4565b5090565b80356001600160a01b03811681146111ad575f5ffd5b5f60208284031215612c02575f5ffd5b611c6f82612bdc565b5f60208284031215612c1b575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612c54604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b03811681146111ad575f5ffd5b5f60208284031215612e49575f5ffd5b611c6f82612e23565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612e8957612e89612e52565b60405290565b604051608081016001600160401b0381118282101715612e8957612e89612e52565b604051601f8201601f191681016001600160401b0381118282101715612ed957612ed9612e52565b604052919050565b5f60608284031215612ef1575f5ffd5b604051606081016001600160401b0381118282101715612f1357612f13612e52565b604052905080612f2283612e23565b8152612f3060208401612e23565b6020820152604092830135920191909152919050565b5f60408284031215612f56575f5ffd5b604080519081016001600160401b0381118282101715612f7857612f78612e52565b604052823581526020928301359281019290925250919050565b5f6104808284031215612fa3575f5ffd5b612fab612e66565b9050612fb78383612f46565b8152612fc68360408401612f46565b6020820152612fd88360808401612f46565b6040820152612fea8360c08401612f46565b6060820152612ffd836101008401612f46565b6080820152613010836101408401612f46565b60a0820152613023836101808401612f46565b60c0820152613036836101c08401612f46565b60e0820152613049836102008401612f46565b61010082015261305d836102408401612f46565b610120820152613071836102808401612f46565b610140820152613085836102c08401612f46565b610160820152613099836103008401612f46565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e0838503121561312f575f5ffd5b6131398484612ee1565b91506131488460608501612f92565b90509250929050565b803563ffffffff811681146111ad575f5ffd5b5f60208284031215613174575f5ffd5b611c6f82613151565b5f5f6040838503121561318e575f5ffd5b61319783612bdc565b915060208301356001600160401b038111156131b1575f5ffd5b8301601f810185136131c1575f5ffd5b80356001600160401b038111156131da576131da612e52565b6131ed601f8201601f1916602001612eb1565b818152866020838501011115613201575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215613230575f5ffd5b613238612e8f565b8235815260208084013590820152604080840135908201526060928301359281019290925250919050565b5f60808284031215613273575f5ffd5b611c6f8383613220565b5f5f5f6105608486031215613290575f5ffd5b61329a8585612ee1565b92506132a98560608601613220565b91506132b88560e08601612f92565b90509250925092565b5f5f604083850312156132d2575f5ffd5b6132db83612e23565b915061314860208401612e23565b5f5f5f5f61012085870312156132fd575f5ffd5b6133078686612ee1565b93506133168660608701613220565b925061332460e08601613151565b91506133336101008601612bdc565b905092959194509250565b5f5f5f5f6105808587031215613352575f5ffd5b61335c8686612ee1565b935061336b8660608701613220565b925060e08501359150613333866101008701612f92565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f606082840312156133c7575f5ffd5b611c6f8383612ee1565b5f5f604083850312156133e2575f5ffd5b50508035926020909101359150565b5f60208284031215613401575f5ffd5b81356001600160401b03811115613416575f5ffd5b8201601f81018413613426575f5ffd5b80356001600160401b0381111561343f5761343f612e52565b61344e60208260051b01612eb1565b8082825260208201915060208360071b85010192508683111561346f575f5ffd5b6020840193505b828410156134df576080848803121561348d575f5ffd5b613495612e8f565b61349e85612e23565b81526134ac60208601612e23565b60208201526134bd60408601612e23565b6040820152606085810135908201528252608090930192602090910190613476565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115611241576112416134e9565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b038316806135485761354861351c565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115611241576112416134e9565b81810381811115611241576112416134e9565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b038316806135bb576135bb61351c565b806001600160401b0384160491505092915050565b5f602082840312156135e0575f5ffd5b5051919050565b5f81518060208401855e5f93019283525090919050565b5f61361261360c83876135e7565b856135e7565b928352505060200192915050565b5f8261362e5761362e61351c565b500690565b805f5b6005811015613655578151845260209384019390910190600101613636565b50505050565b61367082825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a208201905084518252602085015160208301526040850151613847604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152613a1f610500830185613633565b613a2d6105a083018461365b565b949350505050565b5f60208284031215613a45575f5ffd5b81518015158114611c6f575f5ffd5b5f6001600160401b0382166001600160401b038103613a7557613a756134e9565b60010192915050565b5f81613a8c57613a8c6134e9565b505f190190565b5f611c6f82846135e756fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c634300081c000a
5750    /// ```
5751    #[rustfmt::skip]
5752    #[allow(clippy::all)]
5753    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
5754        b"`\x80`@R`\x046\x10a\x02\x80W_5`\xE0\x1C\x80ci\xCCj\x04\x11a\x01UW\x80c\xAA\xBD]\xB3\x11a\0\xBEW\x80c\xD2M\x93=\x11a\0xW\x80c\xD2M\x93=\x14a\x08\xD5W\x80c\xE003\x01\x14a\t\x04W\x80c\xF0h T\x14a\t#W\x80c\xF2\xFD\xE3\x8B\x14a\tBW\x80c\xF5ga`\x14a\taW\x80c\xF9\xE5\r\x19\x14a\t\x80W__\xFD[\x80c\xAA\xBD]\xB3\x14a\x07\xE5W\x80c\xAD<\xB1\xCC\x14a\x08\x04W\x80c\xB3;\xC4\x91\x14a\x08AW\x80c\xB5\xAD\xEA<\x14a\x08`W\x80c\xC2;\x9E\x9E\x14a\x08\x7FW\x80c\xC8\xE5\xE4\x98\x14a\x08\xB7W__\xFD[\x80c\x8D\xA5\xCB[\x11a\x01\x0FW\x80c\x8D\xA5\xCB[\x14a\x06\xE2W\x80c\x90\xC1C\x90\x14a\x07\x1EW\x80c\x96\xC1\xCAa\x14a\x07=W\x80c\x99\x83(\xE8\x14a\x07\\W\x80c\x9B\xAA<\xC9\x14a\x07qW\x80c\x9F\xDBT\xA7\x14a\x07\x90W__\xFD[\x80ci\xCCj\x04\x14a\x061W\x80cqP\x18\xA6\x14a\x06EW\x80cu|7\xAD\x14a\x06YW\x80cvg\x18\x08\x14a\x06sW\x80c\x82nA\xFC\x14a\x06\x87W\x80c\x85\x84\xD2?\x14a\x06\xA6W__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\xF7W\x80cAh'D\x11a\x01\xB1W\x80cAh'D\x14a\x05uW\x80cBm1\x94\x14a\x05\x92W\x80cC=\xBA\x9F\x14a\x05\xB3W\x80cO\x1E\xF2\x86\x14a\x05\xD2W\x80cR\xD1\x90-\x14a\x05\xE5W\x80cb:\x138\x14a\x05\xF9W__\xFD[\x80c0\x0C\x89\xDD\x14a\x04\x8CW\x80c1=\xF7\xB1\x14a\x04\xABW\x80c7\x8E\xC2;\x14a\x04\xE2W\x80c8\xE4T\xB1\x14a\x04\xFEW\x80c<#\xB6\xDB\x14a\x05\x12W\x80c>\xD5[{\x14a\x05OW__\xFD[\x80c\x16z\xC6\x18\x11a\x02HW\x80c\x16z\xC6\x18\x14a\x03\x90W\x80c\x1A\xF0\x804\x14a\x03\xAFW\x80c c\xD4\xF7\x14a\x03\xCEW\x80c%)t'\x14a\x03\xEDW\x80c-R\xAA\xD6\x14a\x04\x1CW\x80c/y\x88\x9D\x14a\x04NW__\xFD[\x80c\x01?\xA5\xFC\x14a\x02\x84W\x80c\x02\xB5\x92\xF3\x14a\x02\xA5W\x80c\x06%\xE1\x9B\x14a\x03\x02W\x80c\r\x8En,\x14a\x03DW\x80c\x12\x17<,\x14a\x03oW[__\xFD[4\x80\x15a\x02\x8FW__\xFD[Pa\x02\xA3a\x02\x9E6`\x04a+\xF2V[a\t\x94V[\0[4\x80\x15a\x02\xB0W__\xFD[Pa\x02\xC4a\x02\xBF6`\x04a,\x0BV[a\nGV[`@Qa\x02\xF9\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\rW__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x03$\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\xF9V[4\x80\x15a\x03OW__\xFD[P`@\x80Q`\x03\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\xF9V[4\x80\x15a\x03zW__\xFD[Pa\x03\x83a\n\x90V[`@Qa\x02\xF9\x91\x90a,\"V[4\x80\x15a\x03\x9BW__\xFD[Pa\x02\xA3a\x03\xAA6`\x04a.9V[a\x10\xC0V[4\x80\x15a\x03\xBAW__\xFD[Pa\x02\xA3a\x03\xC96`\x04a,\x0BV[`\x0FUV[4\x80\x15a\x03\xD9W__\xFD[Pa\x02\xA3a\x03\xE86`\x04a1\x1DV[a\x117V[4\x80\x15a\x03\xF8W__\xFD[Pa\x04\x0Ca\x04\x076`\x04a.9V[a\x11PV[`@Q\x90\x15\x15\x81R` \x01a\x02\xF9V[4\x80\x15a\x04'W__\xFD[Pa\x02\xA3a\x0466`\x04a,\x0BV[`\x10\x80T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x90U`\x11UV[4\x80\x15a\x04YW__\xFD[P`\x08Ta\x04t\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xF9V[4\x80\x15a\x04\x97W__\xFD[Pa\x04\x0Ca\x04\xA66`\x04a.9V[a\x11\xB2V[4\x80\x15a\x04\xB6W__\xFD[P`\x08Ta\x04\xCA\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xF9V[4\x80\x15a\x04\xEDW__\xFD[PC[`@Q\x90\x81R` \x01a\x02\xF9V[4\x80\x15a\x05\tW__\xFD[Pa\x02\xA3a\x12GV[4\x80\x15a\x05\x1DW__\xFD[Pa\x02\xA3a\x05,6`\x04a.9V[`\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\x05ZW__\xFD[P`\nTa\x04t\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x05\x80W__\xFD[P`\x10T`\x01`\x01`@\x1B\x03\x16a\x04tV[4\x80\x15a\x05\x9DW__\xFD[P_T`\x01T`\x02T`\x03Ta\x03$\x93\x92\x91\x90\x84V[4\x80\x15a\x05\xBEW__\xFD[Pa\x02\xA3a\x05\xCD6`\x04a1dV[a\x13>V[a\x02\xA3a\x05\xE06`\x04a1}V[a\x13RV[4\x80\x15a\x05\xF0W__\xFD[Pa\x04\xF0a\x13qV[4\x80\x15a\x06\x04W__\xFD[Pa\x02\xA3a\x06\x136`\x04a2cV[\x80Q`\x0BU` \x81\x01Q`\x0CU`@\x81\x01Q`\rU``\x01Q`\x0EUV[4\x80\x15a\x06<W__\xFD[Pa\x02\xA3a\x13\x8CV[4\x80\x15a\x06PW__\xFD[Pa\x02\xA3a\x13\xFAV[4\x80\x15a\x06dW__\xFD[Pa\x02\xA3a\x03\xE86`\x04a2}V[4\x80\x15a\x06~W__\xFD[Pa\x04ta\x14\x1BV[4\x80\x15a\x06\x92W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x04\x0CV[4\x80\x15a\x06\xB1W__\xFD[Pa\x06\xC5a\x06\xC06`\x04a,\x0BV[a\x14EV[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\xF9V[4\x80\x15a\x06\xEDW__\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\xCAV[4\x80\x15a\x07)W__\xFD[Pa\x04ta\x0786`\x04a2\xC1V[a\x15pV[4\x80\x15a\x07HW__\xFD[Pa\x02\xA3a\x07W6`\x04a1dV[a\x15\xDFV[4\x80\x15a\x07gW__\xFD[Pa\x04\xF0`\x0FT\x81V[4\x80\x15a\x07|W__\xFD[Pa\x02\xA3a\x07\x8B6`\x04a2\xE9V[a\x16hV[4\x80\x15a\x07\x9BW__\xFD[P`\x06T`\x07Ta\x07\xBF\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\xF9V[4\x80\x15a\x07\xF0W__\xFD[Pa\x02\xA3a\x07\xFF6`\x04a3>V[a\x17wV[4\x80\x15a\x08\x0FW__\xFD[Pa\x084`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\xF9\x91\x90a3\x82V[4\x80\x15a\x08LW__\xFD[Pa\x02\xA3a\x08[6`\x04a2\xC1V[a\x1A\x9CV[4\x80\x15a\x08kW__\xFD[Pa\x02\xA3a\x08z6`\x04a3\xB7V[a\x1B\xF5V[4\x80\x15a\x08\x8AW__\xFD[P`\x08Ta\x08\xA2\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\xF9V[4\x80\x15a\x08\xC2W__\xFD[Pa\x02\xA3`\x10\x80T`\xFF`@\x1B\x19\x16\x90UV[4\x80\x15a\x08\xE0W__\xFD[P`\x04T`\x05Ta\x07\xBF\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\t\x0FW__\xFD[Pa\x04\x0Ca\t\x1E6`\x04a3\xD1V[a\x1C<V[4\x80\x15a\t.W__\xFD[P`\nTa\x04t\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\tMW__\xFD[Pa\x02\xA3a\t\\6`\x04a+\xF2V[a\x1CvV[4\x80\x15a\tlW__\xFD[Pa\x02\xA3a\t{6`\x04a3\xF1V[a\x1C\xB5V[4\x80\x15a\t\x8BW__\xFD[P`\tTa\x04\xF0V[a\t\x9Ca\x1D`V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t\xC3W`@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\xF2W`@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\nVW_\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\n\x98a)\x12V[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\xC8a\x1D`V[`\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\x11\x0E\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\x15pV[`\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\x11pWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\x11|WP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\x11\x93\x83`\x05a4\xFDV[a\x11\x9D\x91\x90a50V[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\x11\xD2WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\x11\xDEWP_\x91\x90PV[`\nTa\x11\xF4\x90`\x01`\x01`@\x1B\x03\x16\x83a50V[`\x01`\x01`@\x1B\x03\x16\x15\x80a\x12AWP`\nTa\x12\x1C\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a5]V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\x126\x91\x16\x84a50V[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[a\x12Oa\x1D`V[_Q` a:\xBF_9_Q\x90_R\x80T`\x03\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x12\x85WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x12\xA3W`@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\xDD\x92\x91\x81\x04\x82\x16\x91\x16a\x15pV[`\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\x13Fa\x1D`V[a\x13O\x81a\x15\xDFV[PV[a\x13Za\x1D\xBBV[a\x13c\x82a\x1E_V[a\x13m\x82\x82a\x1E\xA0V[PPV[_a\x13za\x1FaV[P_Q` a:\x9F_9_Q\x90_R\x90V[a\x13\x94a\x1D`V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x13\xDFW`\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\x14\x02a\x1D`V[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T`\nT_\x91a\x14@\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\x15pV[\x90P\x90V[`\t\x80T_\x91\x82\x91\x90a\x14Y`\x01\x83a5|V[\x81T\x81\x10a\x14iWa\x14ia5\x8FV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x14\xA8W`@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\x15iW\x84`\t\x82\x81T\x81\x10a\x14\xD8Wa\x14\xD8a5\x8FV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x15aW`\t\x81\x81T\x81\x10a\x15\x11Wa\x15\x11a5\x8FV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x154Wa\x154a5\x8FV[\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\x14\xBCV[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x15\x88WP_a\x12AV[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x15\xA0WP`\x01a\x12AV[a\x15\xAA\x82\x84a50V[`\x01`\x01`@\x1B\x03\x16_\x03a\x15\xCAWa\x15\xC3\x82\x84a5\xA3V[\x90Pa\x12AV[a\x15\xD4\x82\x84a5\xA3V[a\x15\xC3\x90`\x01a4\xFDV[a\x15\xE7a\x1D`V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x16\x06WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x16$WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x16BW`@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:\xBF_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x16\x99WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x16\xB4WP0;\x15[\x90P\x81\x15\x80\x15a\x16\xC2WP\x80\x15[\x15a\x16\xE0W`@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\x17\nW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x17\x13\x86a\x1F\xAAV[a\x17\x1Ba\x1F\xBBV[a\x17&\x89\x89\x89a\x1F\xC3V[\x83\x15a\x17lW\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\x17\x9CWP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x17\xBAW`@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\xF3WP`\x06T` \x85\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x18\x11W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x18\x1E\x84`@\x01Qa \xEFV[a\x18+\x83` \x01Qa \xEFV[a\x188\x83`@\x01Qa \xEFV[a\x18E\x83``\x01Qa \xEFV[_a\x18Na\x14\x1BV[` \x86\x01Q`\nT\x91\x92P_\x91a\x18n\x91\x90`\x01`\x01`@\x1B\x03\x16a\x15pV[`\x10T\x90\x91P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x10a\x18\xB2Wa\x18\x94\x86` \x01Qa\x11\xB2V[\x15a\x18\xB2W`@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^W`\x02a\x18\xD5\x83\x83a5]V[`\x01`\x01`@\x1B\x03\x16\x10a\x18\xFCW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x19\x07\x82`\x01a4\xFDV[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x19@WP`\x06Ta\x19>\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\x11PV[\x15[\x15a\x19^W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x19j\x86\x86\x86\x86a!0V[\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\xC7WPa\x19\xC7\x86` \x01Qa\x11PV[\x15a\x1A1W\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\x1A\x15\x82`\x01a4\xFDV[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x1A<CB\x88a#ZV[\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\x1A\x8C\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPPV[a\x1A\xA4a\x1D`V[_Q` a:\xBF_9_Q\x90_R\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x1A\xDAWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x1A\xF8W`@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\x1B@W`@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\x89\x83\x85a\x15pV[`\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\x13OCB\x83a#ZV[`\x10T_\x90`\x01`@\x1B\x90\x04`\xFF\x16a\x1C^Wa\x1CY\x83\x83a%CV[a\x1CoV[\x81`\x11T\x84a\x1Cm\x91\x90a5|V[\x11[\x93\x92PPPV[a\x1C~a\x1D`V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1C\xACW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x13O\x81a&\x9BV[a\x1C\xC0`\t_a+wV[_[\x81Q\x81\x10\x15a\x13mW`\t\x82\x82\x81Q\x81\x10a\x1C\xDFWa\x1C\xDFa5\x8FV[` \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\x1C\xC2V[3a\x1D\x92\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\xF8W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x1C\xA3V[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\x1EAWP\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\x1E5_Q` a:\x9F_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x13\xF8W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1Ega\x1D`V[`@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<V[\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\xFAWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1E\xF7\x91\x81\x01\x90a5\xD0V[`\x01[a\x1F\"W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x1C\xA3V[_Q` a:\x9F_9_Q\x90_R\x81\x14a\x1FRW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x1C\xA3V[a\x1F\\\x83\x83a'\x0BV[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\xF8W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1F\xB2a'`V[a\x13O\x81a'\x96V[a\x13\xF8a'`V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x1F\xE7WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x1F\xF4WP` \x82\x01Q\x15[\x80a \x01WP`@\x82\x01Q\x15[\x80a \x0EWP``\x82\x01Q\x15[\x80a \x18WP\x81Q\x15[\x80a *WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a >WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a \\W`@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\x13mW`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a!9a\n\x90V[\x90Pa!Ca+\x95V[`\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!\x9BWPa!\x9B\x87` \x01Qa\x11PV[\x15a!\xE4W`@\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\"\x1FV[`@\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\"p\x91\x84\x90\x89\x90` \x01a5\xFEV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x90Pa\"\xB4\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x82a6 V[`\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\"\xF4\x90\x87\x90\x87\x90\x8A\x90`\x04\x01a8\x15V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a#\x0FW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a#3\x91\x90a:5V[a#PW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPPV[`\tT\x15\x80\x15\x90a#\xCFWP`\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#\x9AWa#\x9Aa5\x8FV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta#\xC4\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a5]V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a$bW`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a#\xFCWa#\xFCa5\x8FV[_\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$<\x83a:TV[\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%TWP\x80\x15[\x80a%\x9EWP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a%\x82Wa%\x82a5\x8FV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a%\xBCW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a%\xCA`\x01\x85a5|V[\x90P[\x81a&fW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a&fW\x86`\t\x82\x81T\x81\x10a%\xFFWa%\xFFa5\x8FV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a&TW`\x01\x91P`\t\x81\x81T\x81\x10a&4Wa&4a5\x8FV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa&fV[\x80a&^\x81a:~V[\x91PPa%\xCDV[\x81a&\x84W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a&\x8F\x84\x89a5|V[\x11\x97\x96PPPPPPPV[\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'\x14\x82a'\x9EV[`@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'XWa\x1F\\\x82\x82a(\x01V[a\x13ma(sV[_Q` a:\xBF_9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a\x13\xF8W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1C~a'`V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a'\xD3W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x1C\xA3V[_Q` a:\x9F_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(\x1D\x91\x90a:\x93V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a(UW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a(ZV[``\x91P[P\x91P\x91Pa(j\x85\x83\x83a(\x92V[\x95\x94PPPPPV[4\x15a\x13\xF8W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a(\xA2Wa\x1CY\x82a(\xE9V[\x81Q\x15\x80\x15a(\xB9WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a(\xE2W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x1C\xA3V[P\x92\x91PPV[\x80Q\x15a(\xF9W\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)E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)e`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\x85`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\xA5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\xC5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\xE5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\x05`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*%`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*e`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\x85`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\xA5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\xC5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\xE5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a+\x05`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a+%`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a+E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a+e`@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\x13O\x91\x90a+\xB3V[`@Q\x80`\xA0\x01`@R\x80`\x05\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15a+\xD8W\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U_`\x01\x82\x01U`\x02\x01a+\xB4V[P\x90V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\xADW__\xFD[_` \x82\x84\x03\x12\x15a,\x02W__\xFD[a\x1Co\x82a+\xDCV[_` \x82\x84\x03\x12\x15a,\x1BW__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa,T`@\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\xADW__\xFD[_` \x82\x84\x03\x12\x15a.IW__\xFD[a\x1Co\x82a.#V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.\x89Wa.\x89a.RV[`@R\x90V[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.\x89Wa.\x89a.RV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.\xD9Wa.\xD9a.RV[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a.\xF1W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/\x13Wa/\x13a.RV[`@R\x90P\x80a/\"\x83a.#V[\x81Ra/0` \x84\x01a.#V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a/VW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/xWa/xa.RV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a/\xA3W__\xFD[a/\xABa.fV[\x90Pa/\xB7\x83\x83a/FV[\x81Ra/\xC6\x83`@\x84\x01a/FV[` \x82\x01Ra/\xD8\x83`\x80\x84\x01a/FV[`@\x82\x01Ra/\xEA\x83`\xC0\x84\x01a/FV[``\x82\x01Ra/\xFD\x83a\x01\0\x84\x01a/FV[`\x80\x82\x01Ra0\x10\x83a\x01@\x84\x01a/FV[`\xA0\x82\x01Ra0#\x83a\x01\x80\x84\x01a/FV[`\xC0\x82\x01Ra06\x83a\x01\xC0\x84\x01a/FV[`\xE0\x82\x01Ra0I\x83a\x02\0\x84\x01a/FV[a\x01\0\x82\x01Ra0]\x83a\x02@\x84\x01a/FV[a\x01 \x82\x01Ra0q\x83a\x02\x80\x84\x01a/FV[a\x01@\x82\x01Ra0\x85\x83a\x02\xC0\x84\x01a/FV[a\x01`\x82\x01Ra0\x99\x83a\x03\0\x84\x01a/FV[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\x15a1/W__\xFD[a19\x84\x84a.\xE1V[\x91Pa1H\x84``\x85\x01a/\x92V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\xADW__\xFD[_` \x82\x84\x03\x12\x15a1tW__\xFD[a\x1Co\x82a1QV[__`@\x83\x85\x03\x12\x15a1\x8EW__\xFD[a1\x97\x83a+\xDCV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xB1W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a1\xC1W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xDAWa1\xDAa.RV[a1\xED`\x1F\x82\x01`\x1F\x19\x16` \x01a.\xB1V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a2\x01W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a20W__\xFD[a28a.\x8FV[\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\x15a2sW__\xFD[a\x1Co\x83\x83a2 V[___a\x05`\x84\x86\x03\x12\x15a2\x90W__\xFD[a2\x9A\x85\x85a.\xE1V[\x92Pa2\xA9\x85``\x86\x01a2 V[\x91Pa2\xB8\x85`\xE0\x86\x01a/\x92V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a2\xD2W__\xFD[a2\xDB\x83a.#V[\x91Pa1H` \x84\x01a.#V[____a\x01 \x85\x87\x03\x12\x15a2\xFDW__\xFD[a3\x07\x86\x86a.\xE1V[\x93Pa3\x16\x86``\x87\x01a2 V[\x92Pa3$`\xE0\x86\x01a1QV[\x91Pa33a\x01\0\x86\x01a+\xDCV[\x90P\x92\x95\x91\x94P\x92PV[____a\x05\x80\x85\x87\x03\x12\x15a3RW__\xFD[a3\\\x86\x86a.\xE1V[\x93Pa3k\x86``\x87\x01a2 V[\x92P`\xE0\x85\x015\x91Pa33\x86a\x01\0\x87\x01a/\x92V[` \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\xC7W__\xFD[a\x1Co\x83\x83a.\xE1V[__`@\x83\x85\x03\x12\x15a3\xE2W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a4\x01W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a4\x16W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a4&W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a4?Wa4?a.RV[a4N` \x82`\x05\x1B\x01a.\xB1V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x07\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a4oW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a4\xDFW`\x80\x84\x88\x03\x12\x15a4\x8DW__\xFD[a4\x95a.\x8FV[a4\x9E\x85a.#V[\x81Ra4\xAC` \x86\x01a.#V[` \x82\x01Ra4\xBD`@\x86\x01a.#V[`@\x82\x01R``\x85\x81\x015\x90\x82\x01R\x82R`\x80\x90\x93\x01\x92` \x90\x91\x01\x90a4vV[\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\x12AWa\x12Aa4\xE9V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a5HWa5Ha5\x1CV[\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\x12AWa\x12Aa4\xE9V[\x81\x81\x03\x81\x81\x11\x15a\x12AWa\x12Aa4\xE9V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a5\xBBWa5\xBBa5\x1CV[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_` \x82\x84\x03\x12\x15a5\xE0W__\xFD[PQ\x91\x90PV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a6\x12a6\x0C\x83\x87a5\xE7V[\x85a5\xE7V[\x92\x83RPP` \x01\x92\x91PPV[_\x82a6.Wa6.a5\x1CV[P\x06\x90V[\x80_[`\x05\x81\x10\x15a6UW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a66V[PPPPV[a6p\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\x01Qa8G`@\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\x01Ra:\x1Fa\x05\0\x83\x01\x85a63V[a:-a\x05\xA0\x83\x01\x84a6[V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a:EW__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1CoW__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a:uWa:ua4\xE9V[`\x01\x01\x92\x91PPV[_\x81a:\x8CWa:\x8Ca4\xE9V[P_\x19\x01\x90V[_a\x1Co\x82\x84a5\xE7V\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",
5755    );
5756    #[derive(serde::Serialize, serde::Deserialize)]
5757    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5758    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
5759```solidity
5760error AddressEmptyCode(address target);
5761```*/
5762    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5763    #[derive(Clone)]
5764    pub struct AddressEmptyCode {
5765        #[allow(missing_docs)]
5766        pub target: alloy::sol_types::private::Address,
5767    }
5768    #[allow(
5769        non_camel_case_types,
5770        non_snake_case,
5771        clippy::pub_underscore_fields,
5772        clippy::style
5773    )]
5774    const _: () = {
5775        use alloy::sol_types as alloy_sol_types;
5776        #[doc(hidden)]
5777        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5778        #[doc(hidden)]
5779        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5780        #[cfg(test)]
5781        #[allow(dead_code, unreachable_patterns)]
5782        fn _type_assertion(
5783            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5784        ) {
5785            match _t {
5786                alloy_sol_types::private::AssertTypeEq::<
5787                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5788                >(_) => {}
5789            }
5790        }
5791        #[automatically_derived]
5792        #[doc(hidden)]
5793        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
5794            fn from(value: AddressEmptyCode) -> Self {
5795                (value.target,)
5796            }
5797        }
5798        #[automatically_derived]
5799        #[doc(hidden)]
5800        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
5801            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5802                Self { target: tuple.0 }
5803            }
5804        }
5805        #[automatically_derived]
5806        impl alloy_sol_types::SolError for AddressEmptyCode {
5807            type Parameters<'a> = UnderlyingSolTuple<'a>;
5808            type Token<'a> = <Self::Parameters<
5809                'a,
5810            > as alloy_sol_types::SolType>::Token<'a>;
5811            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
5812            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
5813            #[inline]
5814            fn new<'a>(
5815                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5816            ) -> Self {
5817                tuple.into()
5818            }
5819            #[inline]
5820            fn tokenize(&self) -> Self::Token<'_> {
5821                (
5822                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5823                        &self.target,
5824                    ),
5825                )
5826            }
5827            #[inline]
5828            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5829                <Self::Parameters<
5830                    '_,
5831                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5832                    .map(Self::new)
5833            }
5834        }
5835    };
5836    #[derive(serde::Serialize, serde::Deserialize)]
5837    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5838    /**Custom error with signature `DeprecatedApi()` and selector `0x4e405c8d`.
5839```solidity
5840error DeprecatedApi();
5841```*/
5842    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5843    #[derive(Clone)]
5844    pub struct DeprecatedApi;
5845    #[allow(
5846        non_camel_case_types,
5847        non_snake_case,
5848        clippy::pub_underscore_fields,
5849        clippy::style
5850    )]
5851    const _: () = {
5852        use alloy::sol_types as alloy_sol_types;
5853        #[doc(hidden)]
5854        type UnderlyingSolTuple<'a> = ();
5855        #[doc(hidden)]
5856        type UnderlyingRustTuple<'a> = ();
5857        #[cfg(test)]
5858        #[allow(dead_code, unreachable_patterns)]
5859        fn _type_assertion(
5860            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5861        ) {
5862            match _t {
5863                alloy_sol_types::private::AssertTypeEq::<
5864                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5865                >(_) => {}
5866            }
5867        }
5868        #[automatically_derived]
5869        #[doc(hidden)]
5870        impl ::core::convert::From<DeprecatedApi> for UnderlyingRustTuple<'_> {
5871            fn from(value: DeprecatedApi) -> Self {
5872                ()
5873            }
5874        }
5875        #[automatically_derived]
5876        #[doc(hidden)]
5877        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DeprecatedApi {
5878            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5879                Self
5880            }
5881        }
5882        #[automatically_derived]
5883        impl alloy_sol_types::SolError for DeprecatedApi {
5884            type Parameters<'a> = UnderlyingSolTuple<'a>;
5885            type Token<'a> = <Self::Parameters<
5886                'a,
5887            > as alloy_sol_types::SolType>::Token<'a>;
5888            const SIGNATURE: &'static str = "DeprecatedApi()";
5889            const SELECTOR: [u8; 4] = [78u8, 64u8, 92u8, 141u8];
5890            #[inline]
5891            fn new<'a>(
5892                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5893            ) -> Self {
5894                tuple.into()
5895            }
5896            #[inline]
5897            fn tokenize(&self) -> Self::Token<'_> {
5898                ()
5899            }
5900            #[inline]
5901            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5902                <Self::Parameters<
5903                    '_,
5904                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5905                    .map(Self::new)
5906            }
5907        }
5908    };
5909    #[derive(serde::Serialize, serde::Deserialize)]
5910    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5911    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
5912```solidity
5913error ERC1967InvalidImplementation(address implementation);
5914```*/
5915    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5916    #[derive(Clone)]
5917    pub struct ERC1967InvalidImplementation {
5918        #[allow(missing_docs)]
5919        pub implementation: alloy::sol_types::private::Address,
5920    }
5921    #[allow(
5922        non_camel_case_types,
5923        non_snake_case,
5924        clippy::pub_underscore_fields,
5925        clippy::style
5926    )]
5927    const _: () = {
5928        use alloy::sol_types as alloy_sol_types;
5929        #[doc(hidden)]
5930        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5931        #[doc(hidden)]
5932        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5933        #[cfg(test)]
5934        #[allow(dead_code, unreachable_patterns)]
5935        fn _type_assertion(
5936            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5937        ) {
5938            match _t {
5939                alloy_sol_types::private::AssertTypeEq::<
5940                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5941                >(_) => {}
5942            }
5943        }
5944        #[automatically_derived]
5945        #[doc(hidden)]
5946        impl ::core::convert::From<ERC1967InvalidImplementation>
5947        for UnderlyingRustTuple<'_> {
5948            fn from(value: ERC1967InvalidImplementation) -> Self {
5949                (value.implementation,)
5950            }
5951        }
5952        #[automatically_derived]
5953        #[doc(hidden)]
5954        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5955        for ERC1967InvalidImplementation {
5956            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5957                Self { implementation: tuple.0 }
5958            }
5959        }
5960        #[automatically_derived]
5961        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
5962            type Parameters<'a> = UnderlyingSolTuple<'a>;
5963            type Token<'a> = <Self::Parameters<
5964                'a,
5965            > as alloy_sol_types::SolType>::Token<'a>;
5966            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
5967            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
5968            #[inline]
5969            fn new<'a>(
5970                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5971            ) -> Self {
5972                tuple.into()
5973            }
5974            #[inline]
5975            fn tokenize(&self) -> Self::Token<'_> {
5976                (
5977                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5978                        &self.implementation,
5979                    ),
5980                )
5981            }
5982            #[inline]
5983            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5984                <Self::Parameters<
5985                    '_,
5986                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5987                    .map(Self::new)
5988            }
5989        }
5990    };
5991    #[derive(serde::Serialize, serde::Deserialize)]
5992    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5993    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
5994```solidity
5995error ERC1967NonPayable();
5996```*/
5997    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5998    #[derive(Clone)]
5999    pub struct ERC1967NonPayable;
6000    #[allow(
6001        non_camel_case_types,
6002        non_snake_case,
6003        clippy::pub_underscore_fields,
6004        clippy::style
6005    )]
6006    const _: () = {
6007        use alloy::sol_types as alloy_sol_types;
6008        #[doc(hidden)]
6009        type UnderlyingSolTuple<'a> = ();
6010        #[doc(hidden)]
6011        type UnderlyingRustTuple<'a> = ();
6012        #[cfg(test)]
6013        #[allow(dead_code, unreachable_patterns)]
6014        fn _type_assertion(
6015            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6016        ) {
6017            match _t {
6018                alloy_sol_types::private::AssertTypeEq::<
6019                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6020                >(_) => {}
6021            }
6022        }
6023        #[automatically_derived]
6024        #[doc(hidden)]
6025        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
6026            fn from(value: ERC1967NonPayable) -> Self {
6027                ()
6028            }
6029        }
6030        #[automatically_derived]
6031        #[doc(hidden)]
6032        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
6033            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6034                Self
6035            }
6036        }
6037        #[automatically_derived]
6038        impl alloy_sol_types::SolError for ERC1967NonPayable {
6039            type Parameters<'a> = UnderlyingSolTuple<'a>;
6040            type Token<'a> = <Self::Parameters<
6041                'a,
6042            > as alloy_sol_types::SolType>::Token<'a>;
6043            const SIGNATURE: &'static str = "ERC1967NonPayable()";
6044            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
6045            #[inline]
6046            fn new<'a>(
6047                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6048            ) -> Self {
6049                tuple.into()
6050            }
6051            #[inline]
6052            fn tokenize(&self) -> Self::Token<'_> {
6053                ()
6054            }
6055            #[inline]
6056            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6057                <Self::Parameters<
6058                    '_,
6059                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6060                    .map(Self::new)
6061            }
6062        }
6063    };
6064    #[derive(serde::Serialize, serde::Deserialize)]
6065    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6066    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
6067```solidity
6068error FailedInnerCall();
6069```*/
6070    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6071    #[derive(Clone)]
6072    pub struct FailedInnerCall;
6073    #[allow(
6074        non_camel_case_types,
6075        non_snake_case,
6076        clippy::pub_underscore_fields,
6077        clippy::style
6078    )]
6079    const _: () = {
6080        use alloy::sol_types as alloy_sol_types;
6081        #[doc(hidden)]
6082        type UnderlyingSolTuple<'a> = ();
6083        #[doc(hidden)]
6084        type UnderlyingRustTuple<'a> = ();
6085        #[cfg(test)]
6086        #[allow(dead_code, unreachable_patterns)]
6087        fn _type_assertion(
6088            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6089        ) {
6090            match _t {
6091                alloy_sol_types::private::AssertTypeEq::<
6092                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6093                >(_) => {}
6094            }
6095        }
6096        #[automatically_derived]
6097        #[doc(hidden)]
6098        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
6099            fn from(value: FailedInnerCall) -> Self {
6100                ()
6101            }
6102        }
6103        #[automatically_derived]
6104        #[doc(hidden)]
6105        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
6106            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6107                Self
6108            }
6109        }
6110        #[automatically_derived]
6111        impl alloy_sol_types::SolError for FailedInnerCall {
6112            type Parameters<'a> = UnderlyingSolTuple<'a>;
6113            type Token<'a> = <Self::Parameters<
6114                'a,
6115            > as alloy_sol_types::SolType>::Token<'a>;
6116            const SIGNATURE: &'static str = "FailedInnerCall()";
6117            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
6118            #[inline]
6119            fn new<'a>(
6120                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6121            ) -> Self {
6122                tuple.into()
6123            }
6124            #[inline]
6125            fn tokenize(&self) -> Self::Token<'_> {
6126                ()
6127            }
6128            #[inline]
6129            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6130                <Self::Parameters<
6131                    '_,
6132                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6133                    .map(Self::new)
6134            }
6135        }
6136    };
6137    #[derive(serde::Serialize, serde::Deserialize)]
6138    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6139    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
6140```solidity
6141error InsufficientSnapshotHistory();
6142```*/
6143    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6144    #[derive(Clone)]
6145    pub struct InsufficientSnapshotHistory;
6146    #[allow(
6147        non_camel_case_types,
6148        non_snake_case,
6149        clippy::pub_underscore_fields,
6150        clippy::style
6151    )]
6152    const _: () = {
6153        use alloy::sol_types as alloy_sol_types;
6154        #[doc(hidden)]
6155        type UnderlyingSolTuple<'a> = ();
6156        #[doc(hidden)]
6157        type UnderlyingRustTuple<'a> = ();
6158        #[cfg(test)]
6159        #[allow(dead_code, unreachable_patterns)]
6160        fn _type_assertion(
6161            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6162        ) {
6163            match _t {
6164                alloy_sol_types::private::AssertTypeEq::<
6165                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6166                >(_) => {}
6167            }
6168        }
6169        #[automatically_derived]
6170        #[doc(hidden)]
6171        impl ::core::convert::From<InsufficientSnapshotHistory>
6172        for UnderlyingRustTuple<'_> {
6173            fn from(value: InsufficientSnapshotHistory) -> Self {
6174                ()
6175            }
6176        }
6177        #[automatically_derived]
6178        #[doc(hidden)]
6179        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6180        for InsufficientSnapshotHistory {
6181            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6182                Self
6183            }
6184        }
6185        #[automatically_derived]
6186        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
6187            type Parameters<'a> = UnderlyingSolTuple<'a>;
6188            type Token<'a> = <Self::Parameters<
6189                'a,
6190            > as alloy_sol_types::SolType>::Token<'a>;
6191            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
6192            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
6193            #[inline]
6194            fn new<'a>(
6195                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6196            ) -> Self {
6197                tuple.into()
6198            }
6199            #[inline]
6200            fn tokenize(&self) -> Self::Token<'_> {
6201                ()
6202            }
6203            #[inline]
6204            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6205                <Self::Parameters<
6206                    '_,
6207                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6208                    .map(Self::new)
6209            }
6210        }
6211    };
6212    #[derive(serde::Serialize, serde::Deserialize)]
6213    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6214    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
6215```solidity
6216error InvalidAddress();
6217```*/
6218    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6219    #[derive(Clone)]
6220    pub struct InvalidAddress;
6221    #[allow(
6222        non_camel_case_types,
6223        non_snake_case,
6224        clippy::pub_underscore_fields,
6225        clippy::style
6226    )]
6227    const _: () = {
6228        use alloy::sol_types as alloy_sol_types;
6229        #[doc(hidden)]
6230        type UnderlyingSolTuple<'a> = ();
6231        #[doc(hidden)]
6232        type UnderlyingRustTuple<'a> = ();
6233        #[cfg(test)]
6234        #[allow(dead_code, unreachable_patterns)]
6235        fn _type_assertion(
6236            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6237        ) {
6238            match _t {
6239                alloy_sol_types::private::AssertTypeEq::<
6240                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6241                >(_) => {}
6242            }
6243        }
6244        #[automatically_derived]
6245        #[doc(hidden)]
6246        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
6247            fn from(value: InvalidAddress) -> Self {
6248                ()
6249            }
6250        }
6251        #[automatically_derived]
6252        #[doc(hidden)]
6253        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
6254            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6255                Self
6256            }
6257        }
6258        #[automatically_derived]
6259        impl alloy_sol_types::SolError for InvalidAddress {
6260            type Parameters<'a> = UnderlyingSolTuple<'a>;
6261            type Token<'a> = <Self::Parameters<
6262                'a,
6263            > as alloy_sol_types::SolType>::Token<'a>;
6264            const SIGNATURE: &'static str = "InvalidAddress()";
6265            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
6266            #[inline]
6267            fn new<'a>(
6268                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6269            ) -> Self {
6270                tuple.into()
6271            }
6272            #[inline]
6273            fn tokenize(&self) -> Self::Token<'_> {
6274                ()
6275            }
6276            #[inline]
6277            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6278                <Self::Parameters<
6279                    '_,
6280                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6281                    .map(Self::new)
6282            }
6283        }
6284    };
6285    #[derive(serde::Serialize, serde::Deserialize)]
6286    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6287    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
6288```solidity
6289error InvalidArgs();
6290```*/
6291    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6292    #[derive(Clone)]
6293    pub struct InvalidArgs;
6294    #[allow(
6295        non_camel_case_types,
6296        non_snake_case,
6297        clippy::pub_underscore_fields,
6298        clippy::style
6299    )]
6300    const _: () = {
6301        use alloy::sol_types as alloy_sol_types;
6302        #[doc(hidden)]
6303        type UnderlyingSolTuple<'a> = ();
6304        #[doc(hidden)]
6305        type UnderlyingRustTuple<'a> = ();
6306        #[cfg(test)]
6307        #[allow(dead_code, unreachable_patterns)]
6308        fn _type_assertion(
6309            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6310        ) {
6311            match _t {
6312                alloy_sol_types::private::AssertTypeEq::<
6313                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6314                >(_) => {}
6315            }
6316        }
6317        #[automatically_derived]
6318        #[doc(hidden)]
6319        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
6320            fn from(value: InvalidArgs) -> Self {
6321                ()
6322            }
6323        }
6324        #[automatically_derived]
6325        #[doc(hidden)]
6326        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
6327            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6328                Self
6329            }
6330        }
6331        #[automatically_derived]
6332        impl alloy_sol_types::SolError for InvalidArgs {
6333            type Parameters<'a> = UnderlyingSolTuple<'a>;
6334            type Token<'a> = <Self::Parameters<
6335                'a,
6336            > as alloy_sol_types::SolType>::Token<'a>;
6337            const SIGNATURE: &'static str = "InvalidArgs()";
6338            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
6339            #[inline]
6340            fn new<'a>(
6341                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6342            ) -> Self {
6343                tuple.into()
6344            }
6345            #[inline]
6346            fn tokenize(&self) -> Self::Token<'_> {
6347                ()
6348            }
6349            #[inline]
6350            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6351                <Self::Parameters<
6352                    '_,
6353                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6354                    .map(Self::new)
6355            }
6356        }
6357    };
6358    #[derive(serde::Serialize, serde::Deserialize)]
6359    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6360    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
6361```solidity
6362error InvalidHotShotBlockForCommitmentCheck();
6363```*/
6364    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6365    #[derive(Clone)]
6366    pub struct InvalidHotShotBlockForCommitmentCheck;
6367    #[allow(
6368        non_camel_case_types,
6369        non_snake_case,
6370        clippy::pub_underscore_fields,
6371        clippy::style
6372    )]
6373    const _: () = {
6374        use alloy::sol_types as alloy_sol_types;
6375        #[doc(hidden)]
6376        type UnderlyingSolTuple<'a> = ();
6377        #[doc(hidden)]
6378        type UnderlyingRustTuple<'a> = ();
6379        #[cfg(test)]
6380        #[allow(dead_code, unreachable_patterns)]
6381        fn _type_assertion(
6382            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6383        ) {
6384            match _t {
6385                alloy_sol_types::private::AssertTypeEq::<
6386                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6387                >(_) => {}
6388            }
6389        }
6390        #[automatically_derived]
6391        #[doc(hidden)]
6392        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck>
6393        for UnderlyingRustTuple<'_> {
6394            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
6395                ()
6396            }
6397        }
6398        #[automatically_derived]
6399        #[doc(hidden)]
6400        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6401        for InvalidHotShotBlockForCommitmentCheck {
6402            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6403                Self
6404            }
6405        }
6406        #[automatically_derived]
6407        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
6408            type Parameters<'a> = UnderlyingSolTuple<'a>;
6409            type Token<'a> = <Self::Parameters<
6410                'a,
6411            > as alloy_sol_types::SolType>::Token<'a>;
6412            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
6413            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
6414            #[inline]
6415            fn new<'a>(
6416                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6417            ) -> Self {
6418                tuple.into()
6419            }
6420            #[inline]
6421            fn tokenize(&self) -> Self::Token<'_> {
6422                ()
6423            }
6424            #[inline]
6425            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6426                <Self::Parameters<
6427                    '_,
6428                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6429                    .map(Self::new)
6430            }
6431        }
6432    };
6433    #[derive(serde::Serialize, serde::Deserialize)]
6434    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6435    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
6436```solidity
6437error InvalidInitialization();
6438```*/
6439    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6440    #[derive(Clone)]
6441    pub struct InvalidInitialization;
6442    #[allow(
6443        non_camel_case_types,
6444        non_snake_case,
6445        clippy::pub_underscore_fields,
6446        clippy::style
6447    )]
6448    const _: () = {
6449        use alloy::sol_types as alloy_sol_types;
6450        #[doc(hidden)]
6451        type UnderlyingSolTuple<'a> = ();
6452        #[doc(hidden)]
6453        type UnderlyingRustTuple<'a> = ();
6454        #[cfg(test)]
6455        #[allow(dead_code, unreachable_patterns)]
6456        fn _type_assertion(
6457            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6458        ) {
6459            match _t {
6460                alloy_sol_types::private::AssertTypeEq::<
6461                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6462                >(_) => {}
6463            }
6464        }
6465        #[automatically_derived]
6466        #[doc(hidden)]
6467        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
6468            fn from(value: InvalidInitialization) -> Self {
6469                ()
6470            }
6471        }
6472        #[automatically_derived]
6473        #[doc(hidden)]
6474        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
6475            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6476                Self
6477            }
6478        }
6479        #[automatically_derived]
6480        impl alloy_sol_types::SolError for InvalidInitialization {
6481            type Parameters<'a> = UnderlyingSolTuple<'a>;
6482            type Token<'a> = <Self::Parameters<
6483                'a,
6484            > as alloy_sol_types::SolType>::Token<'a>;
6485            const SIGNATURE: &'static str = "InvalidInitialization()";
6486            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
6487            #[inline]
6488            fn new<'a>(
6489                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6490            ) -> Self {
6491                tuple.into()
6492            }
6493            #[inline]
6494            fn tokenize(&self) -> Self::Token<'_> {
6495                ()
6496            }
6497            #[inline]
6498            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6499                <Self::Parameters<
6500                    '_,
6501                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6502                    .map(Self::new)
6503            }
6504        }
6505    };
6506    #[derive(serde::Serialize, serde::Deserialize)]
6507    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6508    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
6509```solidity
6510error InvalidMaxStateHistory();
6511```*/
6512    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6513    #[derive(Clone)]
6514    pub struct InvalidMaxStateHistory;
6515    #[allow(
6516        non_camel_case_types,
6517        non_snake_case,
6518        clippy::pub_underscore_fields,
6519        clippy::style
6520    )]
6521    const _: () = {
6522        use alloy::sol_types as alloy_sol_types;
6523        #[doc(hidden)]
6524        type UnderlyingSolTuple<'a> = ();
6525        #[doc(hidden)]
6526        type UnderlyingRustTuple<'a> = ();
6527        #[cfg(test)]
6528        #[allow(dead_code, unreachable_patterns)]
6529        fn _type_assertion(
6530            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6531        ) {
6532            match _t {
6533                alloy_sol_types::private::AssertTypeEq::<
6534                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6535                >(_) => {}
6536            }
6537        }
6538        #[automatically_derived]
6539        #[doc(hidden)]
6540        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
6541            fn from(value: InvalidMaxStateHistory) -> Self {
6542                ()
6543            }
6544        }
6545        #[automatically_derived]
6546        #[doc(hidden)]
6547        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
6548            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6549                Self
6550            }
6551        }
6552        #[automatically_derived]
6553        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
6554            type Parameters<'a> = UnderlyingSolTuple<'a>;
6555            type Token<'a> = <Self::Parameters<
6556                'a,
6557            > as alloy_sol_types::SolType>::Token<'a>;
6558            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
6559            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
6560            #[inline]
6561            fn new<'a>(
6562                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6563            ) -> Self {
6564                tuple.into()
6565            }
6566            #[inline]
6567            fn tokenize(&self) -> Self::Token<'_> {
6568                ()
6569            }
6570            #[inline]
6571            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6572                <Self::Parameters<
6573                    '_,
6574                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6575                    .map(Self::new)
6576            }
6577        }
6578    };
6579    #[derive(serde::Serialize, serde::Deserialize)]
6580    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6581    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
6582```solidity
6583error InvalidProof();
6584```*/
6585    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6586    #[derive(Clone)]
6587    pub struct InvalidProof;
6588    #[allow(
6589        non_camel_case_types,
6590        non_snake_case,
6591        clippy::pub_underscore_fields,
6592        clippy::style
6593    )]
6594    const _: () = {
6595        use alloy::sol_types as alloy_sol_types;
6596        #[doc(hidden)]
6597        type UnderlyingSolTuple<'a> = ();
6598        #[doc(hidden)]
6599        type UnderlyingRustTuple<'a> = ();
6600        #[cfg(test)]
6601        #[allow(dead_code, unreachable_patterns)]
6602        fn _type_assertion(
6603            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6604        ) {
6605            match _t {
6606                alloy_sol_types::private::AssertTypeEq::<
6607                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6608                >(_) => {}
6609            }
6610        }
6611        #[automatically_derived]
6612        #[doc(hidden)]
6613        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
6614            fn from(value: InvalidProof) -> Self {
6615                ()
6616            }
6617        }
6618        #[automatically_derived]
6619        #[doc(hidden)]
6620        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
6621            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6622                Self
6623            }
6624        }
6625        #[automatically_derived]
6626        impl alloy_sol_types::SolError for InvalidProof {
6627            type Parameters<'a> = UnderlyingSolTuple<'a>;
6628            type Token<'a> = <Self::Parameters<
6629                'a,
6630            > as alloy_sol_types::SolType>::Token<'a>;
6631            const SIGNATURE: &'static str = "InvalidProof()";
6632            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
6633            #[inline]
6634            fn new<'a>(
6635                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6636            ) -> Self {
6637                tuple.into()
6638            }
6639            #[inline]
6640            fn tokenize(&self) -> Self::Token<'_> {
6641                ()
6642            }
6643            #[inline]
6644            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6645                <Self::Parameters<
6646                    '_,
6647                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6648                    .map(Self::new)
6649            }
6650        }
6651    };
6652    #[derive(serde::Serialize, serde::Deserialize)]
6653    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6654    /**Custom error with signature `InvalidScalar()` and selector `0x05b05ccc`.
6655```solidity
6656error InvalidScalar();
6657```*/
6658    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6659    #[derive(Clone)]
6660    pub struct InvalidScalar;
6661    #[allow(
6662        non_camel_case_types,
6663        non_snake_case,
6664        clippy::pub_underscore_fields,
6665        clippy::style
6666    )]
6667    const _: () = {
6668        use alloy::sol_types as alloy_sol_types;
6669        #[doc(hidden)]
6670        type UnderlyingSolTuple<'a> = ();
6671        #[doc(hidden)]
6672        type UnderlyingRustTuple<'a> = ();
6673        #[cfg(test)]
6674        #[allow(dead_code, unreachable_patterns)]
6675        fn _type_assertion(
6676            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6677        ) {
6678            match _t {
6679                alloy_sol_types::private::AssertTypeEq::<
6680                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6681                >(_) => {}
6682            }
6683        }
6684        #[automatically_derived]
6685        #[doc(hidden)]
6686        impl ::core::convert::From<InvalidScalar> for UnderlyingRustTuple<'_> {
6687            fn from(value: InvalidScalar) -> Self {
6688                ()
6689            }
6690        }
6691        #[automatically_derived]
6692        #[doc(hidden)]
6693        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidScalar {
6694            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6695                Self
6696            }
6697        }
6698        #[automatically_derived]
6699        impl alloy_sol_types::SolError for InvalidScalar {
6700            type Parameters<'a> = UnderlyingSolTuple<'a>;
6701            type Token<'a> = <Self::Parameters<
6702                'a,
6703            > as alloy_sol_types::SolType>::Token<'a>;
6704            const SIGNATURE: &'static str = "InvalidScalar()";
6705            const SELECTOR: [u8; 4] = [5u8, 176u8, 92u8, 204u8];
6706            #[inline]
6707            fn new<'a>(
6708                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6709            ) -> Self {
6710                tuple.into()
6711            }
6712            #[inline]
6713            fn tokenize(&self) -> Self::Token<'_> {
6714                ()
6715            }
6716            #[inline]
6717            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6718                <Self::Parameters<
6719                    '_,
6720                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6721                    .map(Self::new)
6722            }
6723        }
6724    };
6725    #[derive(serde::Serialize, serde::Deserialize)]
6726    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6727    /**Custom error with signature `MissingEpochRootUpdate()` and selector `0x080ae8d9`.
6728```solidity
6729error MissingEpochRootUpdate();
6730```*/
6731    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6732    #[derive(Clone)]
6733    pub struct MissingEpochRootUpdate;
6734    #[allow(
6735        non_camel_case_types,
6736        non_snake_case,
6737        clippy::pub_underscore_fields,
6738        clippy::style
6739    )]
6740    const _: () = {
6741        use alloy::sol_types as alloy_sol_types;
6742        #[doc(hidden)]
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        type UnderlyingSolTuple<'a> = ();
6817        #[doc(hidden)]
6818        type UnderlyingRustTuple<'a> = ();
6819        #[cfg(test)]
6820        #[allow(dead_code, unreachable_patterns)]
6821        fn _type_assertion(
6822            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6823        ) {
6824            match _t {
6825                alloy_sol_types::private::AssertTypeEq::<
6826                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6827                >(_) => {}
6828            }
6829        }
6830        #[automatically_derived]
6831        #[doc(hidden)]
6832        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
6833            fn from(value: NoChangeRequired) -> Self {
6834                ()
6835            }
6836        }
6837        #[automatically_derived]
6838        #[doc(hidden)]
6839        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
6840            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6841                Self
6842            }
6843        }
6844        #[automatically_derived]
6845        impl alloy_sol_types::SolError for NoChangeRequired {
6846            type Parameters<'a> = UnderlyingSolTuple<'a>;
6847            type Token<'a> = <Self::Parameters<
6848                'a,
6849            > as alloy_sol_types::SolType>::Token<'a>;
6850            const SIGNATURE: &'static str = "NoChangeRequired()";
6851            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
6852            #[inline]
6853            fn new<'a>(
6854                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6855            ) -> Self {
6856                tuple.into()
6857            }
6858            #[inline]
6859            fn tokenize(&self) -> Self::Token<'_> {
6860                ()
6861            }
6862            #[inline]
6863            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6864                <Self::Parameters<
6865                    '_,
6866                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6867                    .map(Self::new)
6868            }
6869        }
6870    };
6871    #[derive(serde::Serialize, serde::Deserialize)]
6872    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6873    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
6874```solidity
6875error NotInitializing();
6876```*/
6877    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6878    #[derive(Clone)]
6879    pub struct NotInitializing;
6880    #[allow(
6881        non_camel_case_types,
6882        non_snake_case,
6883        clippy::pub_underscore_fields,
6884        clippy::style
6885    )]
6886    const _: () = {
6887        use alloy::sol_types as alloy_sol_types;
6888        #[doc(hidden)]
6889        type UnderlyingSolTuple<'a> = ();
6890        #[doc(hidden)]
6891        type UnderlyingRustTuple<'a> = ();
6892        #[cfg(test)]
6893        #[allow(dead_code, unreachable_patterns)]
6894        fn _type_assertion(
6895            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6896        ) {
6897            match _t {
6898                alloy_sol_types::private::AssertTypeEq::<
6899                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6900                >(_) => {}
6901            }
6902        }
6903        #[automatically_derived]
6904        #[doc(hidden)]
6905        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
6906            fn from(value: NotInitializing) -> Self {
6907                ()
6908            }
6909        }
6910        #[automatically_derived]
6911        #[doc(hidden)]
6912        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
6913            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6914                Self
6915            }
6916        }
6917        #[automatically_derived]
6918        impl alloy_sol_types::SolError for NotInitializing {
6919            type Parameters<'a> = UnderlyingSolTuple<'a>;
6920            type Token<'a> = <Self::Parameters<
6921                'a,
6922            > as alloy_sol_types::SolType>::Token<'a>;
6923            const SIGNATURE: &'static str = "NotInitializing()";
6924            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
6925            #[inline]
6926            fn new<'a>(
6927                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6928            ) -> Self {
6929                tuple.into()
6930            }
6931            #[inline]
6932            fn tokenize(&self) -> Self::Token<'_> {
6933                ()
6934            }
6935            #[inline]
6936            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6937                <Self::Parameters<
6938                    '_,
6939                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6940                    .map(Self::new)
6941            }
6942        }
6943    };
6944    #[derive(serde::Serialize, serde::Deserialize)]
6945    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6946    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
6947```solidity
6948error OutdatedState();
6949```*/
6950    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6951    #[derive(Clone)]
6952    pub struct OutdatedState;
6953    #[allow(
6954        non_camel_case_types,
6955        non_snake_case,
6956        clippy::pub_underscore_fields,
6957        clippy::style
6958    )]
6959    const _: () = {
6960        use alloy::sol_types as alloy_sol_types;
6961        #[doc(hidden)]
6962        type UnderlyingSolTuple<'a> = ();
6963        #[doc(hidden)]
6964        type UnderlyingRustTuple<'a> = ();
6965        #[cfg(test)]
6966        #[allow(dead_code, unreachable_patterns)]
6967        fn _type_assertion(
6968            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6969        ) {
6970            match _t {
6971                alloy_sol_types::private::AssertTypeEq::<
6972                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6973                >(_) => {}
6974            }
6975        }
6976        #[automatically_derived]
6977        #[doc(hidden)]
6978        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
6979            fn from(value: OutdatedState) -> Self {
6980                ()
6981            }
6982        }
6983        #[automatically_derived]
6984        #[doc(hidden)]
6985        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
6986            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6987                Self
6988            }
6989        }
6990        #[automatically_derived]
6991        impl alloy_sol_types::SolError for OutdatedState {
6992            type Parameters<'a> = UnderlyingSolTuple<'a>;
6993            type Token<'a> = <Self::Parameters<
6994                'a,
6995            > as alloy_sol_types::SolType>::Token<'a>;
6996            const SIGNATURE: &'static str = "OutdatedState()";
6997            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
6998            #[inline]
6999            fn new<'a>(
7000                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7001            ) -> Self {
7002                tuple.into()
7003            }
7004            #[inline]
7005            fn tokenize(&self) -> Self::Token<'_> {
7006                ()
7007            }
7008            #[inline]
7009            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7010                <Self::Parameters<
7011                    '_,
7012                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7013                    .map(Self::new)
7014            }
7015        }
7016    };
7017    #[derive(serde::Serialize, serde::Deserialize)]
7018    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7019    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
7020```solidity
7021error OwnableInvalidOwner(address owner);
7022```*/
7023    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7024    #[derive(Clone)]
7025    pub struct OwnableInvalidOwner {
7026        #[allow(missing_docs)]
7027        pub owner: alloy::sol_types::private::Address,
7028    }
7029    #[allow(
7030        non_camel_case_types,
7031        non_snake_case,
7032        clippy::pub_underscore_fields,
7033        clippy::style
7034    )]
7035    const _: () = {
7036        use alloy::sol_types as alloy_sol_types;
7037        #[doc(hidden)]
7038        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7039        #[doc(hidden)]
7040        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7041        #[cfg(test)]
7042        #[allow(dead_code, unreachable_patterns)]
7043        fn _type_assertion(
7044            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7045        ) {
7046            match _t {
7047                alloy_sol_types::private::AssertTypeEq::<
7048                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7049                >(_) => {}
7050            }
7051        }
7052        #[automatically_derived]
7053        #[doc(hidden)]
7054        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
7055            fn from(value: OwnableInvalidOwner) -> Self {
7056                (value.owner,)
7057            }
7058        }
7059        #[automatically_derived]
7060        #[doc(hidden)]
7061        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
7062            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7063                Self { owner: tuple.0 }
7064            }
7065        }
7066        #[automatically_derived]
7067        impl alloy_sol_types::SolError for OwnableInvalidOwner {
7068            type Parameters<'a> = UnderlyingSolTuple<'a>;
7069            type Token<'a> = <Self::Parameters<
7070                'a,
7071            > as alloy_sol_types::SolType>::Token<'a>;
7072            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
7073            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
7074            #[inline]
7075            fn new<'a>(
7076                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7077            ) -> Self {
7078                tuple.into()
7079            }
7080            #[inline]
7081            fn tokenize(&self) -> Self::Token<'_> {
7082                (
7083                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7084                        &self.owner,
7085                    ),
7086                )
7087            }
7088            #[inline]
7089            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7090                <Self::Parameters<
7091                    '_,
7092                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7093                    .map(Self::new)
7094            }
7095        }
7096    };
7097    #[derive(serde::Serialize, serde::Deserialize)]
7098    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7099    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
7100```solidity
7101error OwnableUnauthorizedAccount(address account);
7102```*/
7103    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7104    #[derive(Clone)]
7105    pub struct OwnableUnauthorizedAccount {
7106        #[allow(missing_docs)]
7107        pub account: alloy::sol_types::private::Address,
7108    }
7109    #[allow(
7110        non_camel_case_types,
7111        non_snake_case,
7112        clippy::pub_underscore_fields,
7113        clippy::style
7114    )]
7115    const _: () = {
7116        use alloy::sol_types as alloy_sol_types;
7117        #[doc(hidden)]
7118        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7119        #[doc(hidden)]
7120        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7121        #[cfg(test)]
7122        #[allow(dead_code, unreachable_patterns)]
7123        fn _type_assertion(
7124            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7125        ) {
7126            match _t {
7127                alloy_sol_types::private::AssertTypeEq::<
7128                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7129                >(_) => {}
7130            }
7131        }
7132        #[automatically_derived]
7133        #[doc(hidden)]
7134        impl ::core::convert::From<OwnableUnauthorizedAccount>
7135        for UnderlyingRustTuple<'_> {
7136            fn from(value: OwnableUnauthorizedAccount) -> Self {
7137                (value.account,)
7138            }
7139        }
7140        #[automatically_derived]
7141        #[doc(hidden)]
7142        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7143        for OwnableUnauthorizedAccount {
7144            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7145                Self { account: tuple.0 }
7146            }
7147        }
7148        #[automatically_derived]
7149        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
7150            type Parameters<'a> = UnderlyingSolTuple<'a>;
7151            type Token<'a> = <Self::Parameters<
7152                'a,
7153            > as alloy_sol_types::SolType>::Token<'a>;
7154            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
7155            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
7156            #[inline]
7157            fn new<'a>(
7158                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7159            ) -> Self {
7160                tuple.into()
7161            }
7162            #[inline]
7163            fn tokenize(&self) -> Self::Token<'_> {
7164                (
7165                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7166                        &self.account,
7167                    ),
7168                )
7169            }
7170            #[inline]
7171            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7172                <Self::Parameters<
7173                    '_,
7174                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7175                    .map(Self::new)
7176            }
7177        }
7178    };
7179    #[derive(serde::Serialize, serde::Deserialize)]
7180    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7181    /**Custom error with signature `OwnershipCannotBeRenounced()` and selector `0x2fab92ca`.
7182```solidity
7183error OwnershipCannotBeRenounced();
7184```*/
7185    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7186    #[derive(Clone)]
7187    pub struct OwnershipCannotBeRenounced;
7188    #[allow(
7189        non_camel_case_types,
7190        non_snake_case,
7191        clippy::pub_underscore_fields,
7192        clippy::style
7193    )]
7194    const _: () = {
7195        use alloy::sol_types as alloy_sol_types;
7196        #[doc(hidden)]
7197        type UnderlyingSolTuple<'a> = ();
7198        #[doc(hidden)]
7199        type UnderlyingRustTuple<'a> = ();
7200        #[cfg(test)]
7201        #[allow(dead_code, unreachable_patterns)]
7202        fn _type_assertion(
7203            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7204        ) {
7205            match _t {
7206                alloy_sol_types::private::AssertTypeEq::<
7207                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7208                >(_) => {}
7209            }
7210        }
7211        #[automatically_derived]
7212        #[doc(hidden)]
7213        impl ::core::convert::From<OwnershipCannotBeRenounced>
7214        for UnderlyingRustTuple<'_> {
7215            fn from(value: OwnershipCannotBeRenounced) -> Self {
7216                ()
7217            }
7218        }
7219        #[automatically_derived]
7220        #[doc(hidden)]
7221        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7222        for OwnershipCannotBeRenounced {
7223            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7224                Self
7225            }
7226        }
7227        #[automatically_derived]
7228        impl alloy_sol_types::SolError for OwnershipCannotBeRenounced {
7229            type Parameters<'a> = UnderlyingSolTuple<'a>;
7230            type Token<'a> = <Self::Parameters<
7231                'a,
7232            > as alloy_sol_types::SolType>::Token<'a>;
7233            const SIGNATURE: &'static str = "OwnershipCannotBeRenounced()";
7234            const SELECTOR: [u8; 4] = [47u8, 171u8, 146u8, 202u8];
7235            #[inline]
7236            fn new<'a>(
7237                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7238            ) -> Self {
7239                tuple.into()
7240            }
7241            #[inline]
7242            fn tokenize(&self) -> Self::Token<'_> {
7243                ()
7244            }
7245            #[inline]
7246            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7247                <Self::Parameters<
7248                    '_,
7249                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7250                    .map(Self::new)
7251            }
7252        }
7253    };
7254    #[derive(serde::Serialize, serde::Deserialize)]
7255    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7256    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
7257```solidity
7258error ProverNotPermissioned();
7259```*/
7260    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7261    #[derive(Clone)]
7262    pub struct ProverNotPermissioned;
7263    #[allow(
7264        non_camel_case_types,
7265        non_snake_case,
7266        clippy::pub_underscore_fields,
7267        clippy::style
7268    )]
7269    const _: () = {
7270        use alloy::sol_types as alloy_sol_types;
7271        #[doc(hidden)]
7272        type UnderlyingSolTuple<'a> = ();
7273        #[doc(hidden)]
7274        type UnderlyingRustTuple<'a> = ();
7275        #[cfg(test)]
7276        #[allow(dead_code, unreachable_patterns)]
7277        fn _type_assertion(
7278            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7279        ) {
7280            match _t {
7281                alloy_sol_types::private::AssertTypeEq::<
7282                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7283                >(_) => {}
7284            }
7285        }
7286        #[automatically_derived]
7287        #[doc(hidden)]
7288        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
7289            fn from(value: ProverNotPermissioned) -> Self {
7290                ()
7291            }
7292        }
7293        #[automatically_derived]
7294        #[doc(hidden)]
7295        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
7296            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7297                Self
7298            }
7299        }
7300        #[automatically_derived]
7301        impl alloy_sol_types::SolError for ProverNotPermissioned {
7302            type Parameters<'a> = UnderlyingSolTuple<'a>;
7303            type Token<'a> = <Self::Parameters<
7304                'a,
7305            > as alloy_sol_types::SolType>::Token<'a>;
7306            const SIGNATURE: &'static str = "ProverNotPermissioned()";
7307            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
7308            #[inline]
7309            fn new<'a>(
7310                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7311            ) -> Self {
7312                tuple.into()
7313            }
7314            #[inline]
7315            fn tokenize(&self) -> Self::Token<'_> {
7316                ()
7317            }
7318            #[inline]
7319            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7320                <Self::Parameters<
7321                    '_,
7322                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7323                    .map(Self::new)
7324            }
7325        }
7326    };
7327    #[derive(serde::Serialize, serde::Deserialize)]
7328    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7329    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
7330```solidity
7331error UUPSUnauthorizedCallContext();
7332```*/
7333    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7334    #[derive(Clone)]
7335    pub struct UUPSUnauthorizedCallContext;
7336    #[allow(
7337        non_camel_case_types,
7338        non_snake_case,
7339        clippy::pub_underscore_fields,
7340        clippy::style
7341    )]
7342    const _: () = {
7343        use alloy::sol_types as alloy_sol_types;
7344        #[doc(hidden)]
7345        type UnderlyingSolTuple<'a> = ();
7346        #[doc(hidden)]
7347        type UnderlyingRustTuple<'a> = ();
7348        #[cfg(test)]
7349        #[allow(dead_code, unreachable_patterns)]
7350        fn _type_assertion(
7351            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7352        ) {
7353            match _t {
7354                alloy_sol_types::private::AssertTypeEq::<
7355                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7356                >(_) => {}
7357            }
7358        }
7359        #[automatically_derived]
7360        #[doc(hidden)]
7361        impl ::core::convert::From<UUPSUnauthorizedCallContext>
7362        for UnderlyingRustTuple<'_> {
7363            fn from(value: UUPSUnauthorizedCallContext) -> Self {
7364                ()
7365            }
7366        }
7367        #[automatically_derived]
7368        #[doc(hidden)]
7369        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7370        for UUPSUnauthorizedCallContext {
7371            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7372                Self
7373            }
7374        }
7375        #[automatically_derived]
7376        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
7377            type Parameters<'a> = UnderlyingSolTuple<'a>;
7378            type Token<'a> = <Self::Parameters<
7379                'a,
7380            > as alloy_sol_types::SolType>::Token<'a>;
7381            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
7382            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
7383            #[inline]
7384            fn new<'a>(
7385                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7386            ) -> Self {
7387                tuple.into()
7388            }
7389            #[inline]
7390            fn tokenize(&self) -> Self::Token<'_> {
7391                ()
7392            }
7393            #[inline]
7394            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7395                <Self::Parameters<
7396                    '_,
7397                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7398                    .map(Self::new)
7399            }
7400        }
7401    };
7402    #[derive(serde::Serialize, serde::Deserialize)]
7403    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7404    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
7405```solidity
7406error UUPSUnsupportedProxiableUUID(bytes32 slot);
7407```*/
7408    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7409    #[derive(Clone)]
7410    pub struct UUPSUnsupportedProxiableUUID {
7411        #[allow(missing_docs)]
7412        pub slot: alloy::sol_types::private::FixedBytes<32>,
7413    }
7414    #[allow(
7415        non_camel_case_types,
7416        non_snake_case,
7417        clippy::pub_underscore_fields,
7418        clippy::style
7419    )]
7420    const _: () = {
7421        use alloy::sol_types as alloy_sol_types;
7422        #[doc(hidden)]
7423        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7424        #[doc(hidden)]
7425        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
7426        #[cfg(test)]
7427        #[allow(dead_code, unreachable_patterns)]
7428        fn _type_assertion(
7429            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7430        ) {
7431            match _t {
7432                alloy_sol_types::private::AssertTypeEq::<
7433                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7434                >(_) => {}
7435            }
7436        }
7437        #[automatically_derived]
7438        #[doc(hidden)]
7439        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
7440        for UnderlyingRustTuple<'_> {
7441            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
7442                (value.slot,)
7443            }
7444        }
7445        #[automatically_derived]
7446        #[doc(hidden)]
7447        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7448        for UUPSUnsupportedProxiableUUID {
7449            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7450                Self { slot: tuple.0 }
7451            }
7452        }
7453        #[automatically_derived]
7454        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
7455            type Parameters<'a> = UnderlyingSolTuple<'a>;
7456            type Token<'a> = <Self::Parameters<
7457                'a,
7458            > as alloy_sol_types::SolType>::Token<'a>;
7459            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
7460            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
7461            #[inline]
7462            fn new<'a>(
7463                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7464            ) -> Self {
7465                tuple.into()
7466            }
7467            #[inline]
7468            fn tokenize(&self) -> Self::Token<'_> {
7469                (
7470                    <alloy::sol_types::sol_data::FixedBytes<
7471                        32,
7472                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
7473                )
7474            }
7475            #[inline]
7476            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7477                <Self::Parameters<
7478                    '_,
7479                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7480                    .map(Self::new)
7481            }
7482        }
7483    };
7484    #[derive(serde::Serialize, serde::Deserialize)]
7485    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7486    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
7487```solidity
7488error WrongStakeTableUsed();
7489```*/
7490    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7491    #[derive(Clone)]
7492    pub struct WrongStakeTableUsed;
7493    #[allow(
7494        non_camel_case_types,
7495        non_snake_case,
7496        clippy::pub_underscore_fields,
7497        clippy::style
7498    )]
7499    const _: () = {
7500        use alloy::sol_types as alloy_sol_types;
7501        #[doc(hidden)]
7502        type UnderlyingSolTuple<'a> = ();
7503        #[doc(hidden)]
7504        type UnderlyingRustTuple<'a> = ();
7505        #[cfg(test)]
7506        #[allow(dead_code, unreachable_patterns)]
7507        fn _type_assertion(
7508            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7509        ) {
7510            match _t {
7511                alloy_sol_types::private::AssertTypeEq::<
7512                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7513                >(_) => {}
7514            }
7515        }
7516        #[automatically_derived]
7517        #[doc(hidden)]
7518        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
7519            fn from(value: WrongStakeTableUsed) -> Self {
7520                ()
7521            }
7522        }
7523        #[automatically_derived]
7524        #[doc(hidden)]
7525        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
7526            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7527                Self
7528            }
7529        }
7530        #[automatically_derived]
7531        impl alloy_sol_types::SolError for WrongStakeTableUsed {
7532            type Parameters<'a> = UnderlyingSolTuple<'a>;
7533            type Token<'a> = <Self::Parameters<
7534                'a,
7535            > as alloy_sol_types::SolType>::Token<'a>;
7536            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
7537            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
7538            #[inline]
7539            fn new<'a>(
7540                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7541            ) -> Self {
7542                tuple.into()
7543            }
7544            #[inline]
7545            fn tokenize(&self) -> Self::Token<'_> {
7546                ()
7547            }
7548            #[inline]
7549            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7550                <Self::Parameters<
7551                    '_,
7552                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7553                    .map(Self::new)
7554            }
7555        }
7556    };
7557    #[derive(serde::Serialize, serde::Deserialize)]
7558    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7559    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
7560```solidity
7561event Initialized(uint64 version);
7562```*/
7563    #[allow(
7564        non_camel_case_types,
7565        non_snake_case,
7566        clippy::pub_underscore_fields,
7567        clippy::style
7568    )]
7569    #[derive(Clone)]
7570    pub struct Initialized {
7571        #[allow(missing_docs)]
7572        pub version: u64,
7573    }
7574    #[allow(
7575        non_camel_case_types,
7576        non_snake_case,
7577        clippy::pub_underscore_fields,
7578        clippy::style
7579    )]
7580    const _: () = {
7581        use alloy::sol_types as alloy_sol_types;
7582        #[automatically_derived]
7583        impl alloy_sol_types::SolEvent for Initialized {
7584            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7585            type DataToken<'a> = <Self::DataTuple<
7586                'a,
7587            > as alloy_sol_types::SolType>::Token<'a>;
7588            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7589            const SIGNATURE: &'static str = "Initialized(uint64)";
7590            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7591                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
7592                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
7593                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
7594            ]);
7595            const ANONYMOUS: bool = false;
7596            #[allow(unused_variables)]
7597            #[inline]
7598            fn new(
7599                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7600                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7601            ) -> Self {
7602                Self { version: data.0 }
7603            }
7604            #[inline]
7605            fn check_signature(
7606                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7607            ) -> alloy_sol_types::Result<()> {
7608                if topics.0 != Self::SIGNATURE_HASH {
7609                    return Err(
7610                        alloy_sol_types::Error::invalid_event_signature_hash(
7611                            Self::SIGNATURE,
7612                            topics.0,
7613                            Self::SIGNATURE_HASH,
7614                        ),
7615                    );
7616                }
7617                Ok(())
7618            }
7619            #[inline]
7620            fn tokenize_body(&self) -> Self::DataToken<'_> {
7621                (
7622                    <alloy::sol_types::sol_data::Uint<
7623                        64,
7624                    > as alloy_sol_types::SolType>::tokenize(&self.version),
7625                )
7626            }
7627            #[inline]
7628            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7629                (Self::SIGNATURE_HASH.into(),)
7630            }
7631            #[inline]
7632            fn encode_topics_raw(
7633                &self,
7634                out: &mut [alloy_sol_types::abi::token::WordToken],
7635            ) -> alloy_sol_types::Result<()> {
7636                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7637                    return Err(alloy_sol_types::Error::Overrun);
7638                }
7639                out[0usize] = alloy_sol_types::abi::token::WordToken(
7640                    Self::SIGNATURE_HASH,
7641                );
7642                Ok(())
7643            }
7644        }
7645        #[automatically_derived]
7646        impl alloy_sol_types::private::IntoLogData for Initialized {
7647            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7648                From::from(self)
7649            }
7650            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7651                From::from(&self)
7652            }
7653        }
7654        #[automatically_derived]
7655        impl From<&Initialized> for alloy_sol_types::private::LogData {
7656            #[inline]
7657            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
7658                alloy_sol_types::SolEvent::encode_log_data(this)
7659            }
7660        }
7661    };
7662    #[derive(serde::Serialize, serde::Deserialize)]
7663    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7664    /**Event with signature `NewEpoch(uint64)` and selector `0x31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b`.
7665```solidity
7666event NewEpoch(uint64 epoch);
7667```*/
7668    #[allow(
7669        non_camel_case_types,
7670        non_snake_case,
7671        clippy::pub_underscore_fields,
7672        clippy::style
7673    )]
7674    #[derive(Clone)]
7675    pub struct NewEpoch {
7676        #[allow(missing_docs)]
7677        pub epoch: u64,
7678    }
7679    #[allow(
7680        non_camel_case_types,
7681        non_snake_case,
7682        clippy::pub_underscore_fields,
7683        clippy::style
7684    )]
7685    const _: () = {
7686        use alloy::sol_types as alloy_sol_types;
7687        #[automatically_derived]
7688        impl alloy_sol_types::SolEvent for NewEpoch {
7689            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7690            type DataToken<'a> = <Self::DataTuple<
7691                'a,
7692            > as alloy_sol_types::SolType>::Token<'a>;
7693            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7694            const SIGNATURE: &'static str = "NewEpoch(uint64)";
7695            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7696                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
7697                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
7698                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
7699            ]);
7700            const ANONYMOUS: bool = false;
7701            #[allow(unused_variables)]
7702            #[inline]
7703            fn new(
7704                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7705                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7706            ) -> Self {
7707                Self { epoch: data.0 }
7708            }
7709            #[inline]
7710            fn check_signature(
7711                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7712            ) -> alloy_sol_types::Result<()> {
7713                if topics.0 != Self::SIGNATURE_HASH {
7714                    return Err(
7715                        alloy_sol_types::Error::invalid_event_signature_hash(
7716                            Self::SIGNATURE,
7717                            topics.0,
7718                            Self::SIGNATURE_HASH,
7719                        ),
7720                    );
7721                }
7722                Ok(())
7723            }
7724            #[inline]
7725            fn tokenize_body(&self) -> Self::DataToken<'_> {
7726                (
7727                    <alloy::sol_types::sol_data::Uint<
7728                        64,
7729                    > as alloy_sol_types::SolType>::tokenize(&self.epoch),
7730                )
7731            }
7732            #[inline]
7733            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7734                (Self::SIGNATURE_HASH.into(),)
7735            }
7736            #[inline]
7737            fn encode_topics_raw(
7738                &self,
7739                out: &mut [alloy_sol_types::abi::token::WordToken],
7740            ) -> alloy_sol_types::Result<()> {
7741                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7742                    return Err(alloy_sol_types::Error::Overrun);
7743                }
7744                out[0usize] = alloy_sol_types::abi::token::WordToken(
7745                    Self::SIGNATURE_HASH,
7746                );
7747                Ok(())
7748            }
7749        }
7750        #[automatically_derived]
7751        impl alloy_sol_types::private::IntoLogData for NewEpoch {
7752            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7753                From::from(self)
7754            }
7755            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7756                From::from(&self)
7757            }
7758        }
7759        #[automatically_derived]
7760        impl From<&NewEpoch> for alloy_sol_types::private::LogData {
7761            #[inline]
7762            fn from(this: &NewEpoch) -> alloy_sol_types::private::LogData {
7763                alloy_sol_types::SolEvent::encode_log_data(this)
7764            }
7765        }
7766    };
7767    #[derive(serde::Serialize, serde::Deserialize)]
7768    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7769    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
7770```solidity
7771event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
7772```*/
7773    #[allow(
7774        non_camel_case_types,
7775        non_snake_case,
7776        clippy::pub_underscore_fields,
7777        clippy::style
7778    )]
7779    #[derive(Clone)]
7780    pub struct NewState {
7781        #[allow(missing_docs)]
7782        pub viewNum: u64,
7783        #[allow(missing_docs)]
7784        pub blockHeight: u64,
7785        #[allow(missing_docs)]
7786        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7787    }
7788    #[allow(
7789        non_camel_case_types,
7790        non_snake_case,
7791        clippy::pub_underscore_fields,
7792        clippy::style
7793    )]
7794    const _: () = {
7795        use alloy::sol_types as alloy_sol_types;
7796        #[automatically_derived]
7797        impl alloy_sol_types::SolEvent for NewState {
7798            type DataTuple<'a> = (BN254::ScalarField,);
7799            type DataToken<'a> = <Self::DataTuple<
7800                'a,
7801            > as alloy_sol_types::SolType>::Token<'a>;
7802            type TopicList = (
7803                alloy_sol_types::sol_data::FixedBytes<32>,
7804                alloy::sol_types::sol_data::Uint<64>,
7805                alloy::sol_types::sol_data::Uint<64>,
7806            );
7807            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
7808            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7809                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
7810                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
7811                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
7812            ]);
7813            const ANONYMOUS: bool = false;
7814            #[allow(unused_variables)]
7815            #[inline]
7816            fn new(
7817                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7818                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7819            ) -> Self {
7820                Self {
7821                    viewNum: topics.1,
7822                    blockHeight: topics.2,
7823                    blockCommRoot: data.0,
7824                }
7825            }
7826            #[inline]
7827            fn check_signature(
7828                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7829            ) -> alloy_sol_types::Result<()> {
7830                if topics.0 != Self::SIGNATURE_HASH {
7831                    return Err(
7832                        alloy_sol_types::Error::invalid_event_signature_hash(
7833                            Self::SIGNATURE,
7834                            topics.0,
7835                            Self::SIGNATURE_HASH,
7836                        ),
7837                    );
7838                }
7839                Ok(())
7840            }
7841            #[inline]
7842            fn tokenize_body(&self) -> Self::DataToken<'_> {
7843                (
7844                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7845                        &self.blockCommRoot,
7846                    ),
7847                )
7848            }
7849            #[inline]
7850            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7851                (
7852                    Self::SIGNATURE_HASH.into(),
7853                    self.viewNum.clone(),
7854                    self.blockHeight.clone(),
7855                )
7856            }
7857            #[inline]
7858            fn encode_topics_raw(
7859                &self,
7860                out: &mut [alloy_sol_types::abi::token::WordToken],
7861            ) -> alloy_sol_types::Result<()> {
7862                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7863                    return Err(alloy_sol_types::Error::Overrun);
7864                }
7865                out[0usize] = alloy_sol_types::abi::token::WordToken(
7866                    Self::SIGNATURE_HASH,
7867                );
7868                out[1usize] = <alloy::sol_types::sol_data::Uint<
7869                    64,
7870                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
7871                out[2usize] = <alloy::sol_types::sol_data::Uint<
7872                    64,
7873                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
7874                Ok(())
7875            }
7876        }
7877        #[automatically_derived]
7878        impl alloy_sol_types::private::IntoLogData for NewState {
7879            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7880                From::from(self)
7881            }
7882            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7883                From::from(&self)
7884            }
7885        }
7886        #[automatically_derived]
7887        impl From<&NewState> for alloy_sol_types::private::LogData {
7888            #[inline]
7889            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
7890                alloy_sol_types::SolEvent::encode_log_data(this)
7891            }
7892        }
7893    };
7894    #[derive(serde::Serialize, serde::Deserialize)]
7895    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7896    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
7897```solidity
7898event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
7899```*/
7900    #[allow(
7901        non_camel_case_types,
7902        non_snake_case,
7903        clippy::pub_underscore_fields,
7904        clippy::style
7905    )]
7906    #[derive(Clone)]
7907    pub struct OwnershipTransferred {
7908        #[allow(missing_docs)]
7909        pub previousOwner: alloy::sol_types::private::Address,
7910        #[allow(missing_docs)]
7911        pub newOwner: alloy::sol_types::private::Address,
7912    }
7913    #[allow(
7914        non_camel_case_types,
7915        non_snake_case,
7916        clippy::pub_underscore_fields,
7917        clippy::style
7918    )]
7919    const _: () = {
7920        use alloy::sol_types as alloy_sol_types;
7921        #[automatically_derived]
7922        impl alloy_sol_types::SolEvent for OwnershipTransferred {
7923            type DataTuple<'a> = ();
7924            type DataToken<'a> = <Self::DataTuple<
7925                'a,
7926            > as alloy_sol_types::SolType>::Token<'a>;
7927            type TopicList = (
7928                alloy_sol_types::sol_data::FixedBytes<32>,
7929                alloy::sol_types::sol_data::Address,
7930                alloy::sol_types::sol_data::Address,
7931            );
7932            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
7933            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7934                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
7935                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
7936                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
7937            ]);
7938            const ANONYMOUS: bool = false;
7939            #[allow(unused_variables)]
7940            #[inline]
7941            fn new(
7942                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7943                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7944            ) -> Self {
7945                Self {
7946                    previousOwner: topics.1,
7947                    newOwner: topics.2,
7948                }
7949            }
7950            #[inline]
7951            fn check_signature(
7952                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7953            ) -> alloy_sol_types::Result<()> {
7954                if topics.0 != Self::SIGNATURE_HASH {
7955                    return Err(
7956                        alloy_sol_types::Error::invalid_event_signature_hash(
7957                            Self::SIGNATURE,
7958                            topics.0,
7959                            Self::SIGNATURE_HASH,
7960                        ),
7961                    );
7962                }
7963                Ok(())
7964            }
7965            #[inline]
7966            fn tokenize_body(&self) -> Self::DataToken<'_> {
7967                ()
7968            }
7969            #[inline]
7970            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7971                (
7972                    Self::SIGNATURE_HASH.into(),
7973                    self.previousOwner.clone(),
7974                    self.newOwner.clone(),
7975                )
7976            }
7977            #[inline]
7978            fn encode_topics_raw(
7979                &self,
7980                out: &mut [alloy_sol_types::abi::token::WordToken],
7981            ) -> alloy_sol_types::Result<()> {
7982                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7983                    return Err(alloy_sol_types::Error::Overrun);
7984                }
7985                out[0usize] = alloy_sol_types::abi::token::WordToken(
7986                    Self::SIGNATURE_HASH,
7987                );
7988                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7989                    &self.previousOwner,
7990                );
7991                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7992                    &self.newOwner,
7993                );
7994                Ok(())
7995            }
7996        }
7997        #[automatically_derived]
7998        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
7999            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8000                From::from(self)
8001            }
8002            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8003                From::from(&self)
8004            }
8005        }
8006        #[automatically_derived]
8007        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
8008            #[inline]
8009            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
8010                alloy_sol_types::SolEvent::encode_log_data(this)
8011            }
8012        }
8013    };
8014    #[derive(serde::Serialize, serde::Deserialize)]
8015    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8016    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
8017```solidity
8018event PermissionedProverNotRequired();
8019```*/
8020    #[allow(
8021        non_camel_case_types,
8022        non_snake_case,
8023        clippy::pub_underscore_fields,
8024        clippy::style
8025    )]
8026    #[derive(Clone)]
8027    pub struct PermissionedProverNotRequired;
8028    #[allow(
8029        non_camel_case_types,
8030        non_snake_case,
8031        clippy::pub_underscore_fields,
8032        clippy::style
8033    )]
8034    const _: () = {
8035        use alloy::sol_types as alloy_sol_types;
8036        #[automatically_derived]
8037        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
8038            type DataTuple<'a> = ();
8039            type DataToken<'a> = <Self::DataTuple<
8040                'a,
8041            > as alloy_sol_types::SolType>::Token<'a>;
8042            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
8043            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
8044            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8045                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
8046                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
8047                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
8048            ]);
8049            const ANONYMOUS: bool = false;
8050            #[allow(unused_variables)]
8051            #[inline]
8052            fn new(
8053                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8054                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8055            ) -> Self {
8056                Self {}
8057            }
8058            #[inline]
8059            fn check_signature(
8060                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8061            ) -> alloy_sol_types::Result<()> {
8062                if topics.0 != Self::SIGNATURE_HASH {
8063                    return Err(
8064                        alloy_sol_types::Error::invalid_event_signature_hash(
8065                            Self::SIGNATURE,
8066                            topics.0,
8067                            Self::SIGNATURE_HASH,
8068                        ),
8069                    );
8070                }
8071                Ok(())
8072            }
8073            #[inline]
8074            fn tokenize_body(&self) -> Self::DataToken<'_> {
8075                ()
8076            }
8077            #[inline]
8078            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8079                (Self::SIGNATURE_HASH.into(),)
8080            }
8081            #[inline]
8082            fn encode_topics_raw(
8083                &self,
8084                out: &mut [alloy_sol_types::abi::token::WordToken],
8085            ) -> alloy_sol_types::Result<()> {
8086                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8087                    return Err(alloy_sol_types::Error::Overrun);
8088                }
8089                out[0usize] = alloy_sol_types::abi::token::WordToken(
8090                    Self::SIGNATURE_HASH,
8091                );
8092                Ok(())
8093            }
8094        }
8095        #[automatically_derived]
8096        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
8097            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8098                From::from(self)
8099            }
8100            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8101                From::from(&self)
8102            }
8103        }
8104        #[automatically_derived]
8105        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
8106            #[inline]
8107            fn from(
8108                this: &PermissionedProverNotRequired,
8109            ) -> alloy_sol_types::private::LogData {
8110                alloy_sol_types::SolEvent::encode_log_data(this)
8111            }
8112        }
8113    };
8114    #[derive(serde::Serialize, serde::Deserialize)]
8115    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8116    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
8117```solidity
8118event PermissionedProverRequired(address permissionedProver);
8119```*/
8120    #[allow(
8121        non_camel_case_types,
8122        non_snake_case,
8123        clippy::pub_underscore_fields,
8124        clippy::style
8125    )]
8126    #[derive(Clone)]
8127    pub struct PermissionedProverRequired {
8128        #[allow(missing_docs)]
8129        pub permissionedProver: alloy::sol_types::private::Address,
8130    }
8131    #[allow(
8132        non_camel_case_types,
8133        non_snake_case,
8134        clippy::pub_underscore_fields,
8135        clippy::style
8136    )]
8137    const _: () = {
8138        use alloy::sol_types as alloy_sol_types;
8139        #[automatically_derived]
8140        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
8141            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
8142            type DataToken<'a> = <Self::DataTuple<
8143                'a,
8144            > as alloy_sol_types::SolType>::Token<'a>;
8145            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
8146            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
8147            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8148                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
8149                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
8150                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
8151            ]);
8152            const ANONYMOUS: bool = false;
8153            #[allow(unused_variables)]
8154            #[inline]
8155            fn new(
8156                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8157                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8158            ) -> Self {
8159                Self { permissionedProver: data.0 }
8160            }
8161            #[inline]
8162            fn check_signature(
8163                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8164            ) -> alloy_sol_types::Result<()> {
8165                if topics.0 != Self::SIGNATURE_HASH {
8166                    return Err(
8167                        alloy_sol_types::Error::invalid_event_signature_hash(
8168                            Self::SIGNATURE,
8169                            topics.0,
8170                            Self::SIGNATURE_HASH,
8171                        ),
8172                    );
8173                }
8174                Ok(())
8175            }
8176            #[inline]
8177            fn tokenize_body(&self) -> Self::DataToken<'_> {
8178                (
8179                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8180                        &self.permissionedProver,
8181                    ),
8182                )
8183            }
8184            #[inline]
8185            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8186                (Self::SIGNATURE_HASH.into(),)
8187            }
8188            #[inline]
8189            fn encode_topics_raw(
8190                &self,
8191                out: &mut [alloy_sol_types::abi::token::WordToken],
8192            ) -> alloy_sol_types::Result<()> {
8193                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8194                    return Err(alloy_sol_types::Error::Overrun);
8195                }
8196                out[0usize] = alloy_sol_types::abi::token::WordToken(
8197                    Self::SIGNATURE_HASH,
8198                );
8199                Ok(())
8200            }
8201        }
8202        #[automatically_derived]
8203        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
8204            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8205                From::from(self)
8206            }
8207            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8208                From::from(&self)
8209            }
8210        }
8211        #[automatically_derived]
8212        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
8213            #[inline]
8214            fn from(
8215                this: &PermissionedProverRequired,
8216            ) -> alloy_sol_types::private::LogData {
8217                alloy_sol_types::SolEvent::encode_log_data(this)
8218            }
8219        }
8220    };
8221    #[derive(serde::Serialize, serde::Deserialize)]
8222    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8223    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
8224```solidity
8225event Upgrade(address implementation);
8226```*/
8227    #[allow(
8228        non_camel_case_types,
8229        non_snake_case,
8230        clippy::pub_underscore_fields,
8231        clippy::style
8232    )]
8233    #[derive(Clone)]
8234    pub struct Upgrade {
8235        #[allow(missing_docs)]
8236        pub implementation: alloy::sol_types::private::Address,
8237    }
8238    #[allow(
8239        non_camel_case_types,
8240        non_snake_case,
8241        clippy::pub_underscore_fields,
8242        clippy::style
8243    )]
8244    const _: () = {
8245        use alloy::sol_types as alloy_sol_types;
8246        #[automatically_derived]
8247        impl alloy_sol_types::SolEvent for Upgrade {
8248            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
8249            type DataToken<'a> = <Self::DataTuple<
8250                'a,
8251            > as alloy_sol_types::SolType>::Token<'a>;
8252            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
8253            const SIGNATURE: &'static str = "Upgrade(address)";
8254            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8255                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
8256                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
8257                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
8258            ]);
8259            const ANONYMOUS: bool = false;
8260            #[allow(unused_variables)]
8261            #[inline]
8262            fn new(
8263                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8264                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8265            ) -> Self {
8266                Self { implementation: data.0 }
8267            }
8268            #[inline]
8269            fn check_signature(
8270                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8271            ) -> alloy_sol_types::Result<()> {
8272                if topics.0 != Self::SIGNATURE_HASH {
8273                    return Err(
8274                        alloy_sol_types::Error::invalid_event_signature_hash(
8275                            Self::SIGNATURE,
8276                            topics.0,
8277                            Self::SIGNATURE_HASH,
8278                        ),
8279                    );
8280                }
8281                Ok(())
8282            }
8283            #[inline]
8284            fn tokenize_body(&self) -> Self::DataToken<'_> {
8285                (
8286                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8287                        &self.implementation,
8288                    ),
8289                )
8290            }
8291            #[inline]
8292            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8293                (Self::SIGNATURE_HASH.into(),)
8294            }
8295            #[inline]
8296            fn encode_topics_raw(
8297                &self,
8298                out: &mut [alloy_sol_types::abi::token::WordToken],
8299            ) -> alloy_sol_types::Result<()> {
8300                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8301                    return Err(alloy_sol_types::Error::Overrun);
8302                }
8303                out[0usize] = alloy_sol_types::abi::token::WordToken(
8304                    Self::SIGNATURE_HASH,
8305                );
8306                Ok(())
8307            }
8308        }
8309        #[automatically_derived]
8310        impl alloy_sol_types::private::IntoLogData for Upgrade {
8311            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8312                From::from(self)
8313            }
8314            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8315                From::from(&self)
8316            }
8317        }
8318        #[automatically_derived]
8319        impl From<&Upgrade> for alloy_sol_types::private::LogData {
8320            #[inline]
8321            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
8322                alloy_sol_types::SolEvent::encode_log_data(this)
8323            }
8324        }
8325    };
8326    #[derive(serde::Serialize, serde::Deserialize)]
8327    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8328    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
8329```solidity
8330event Upgraded(address indexed implementation);
8331```*/
8332    #[allow(
8333        non_camel_case_types,
8334        non_snake_case,
8335        clippy::pub_underscore_fields,
8336        clippy::style
8337    )]
8338    #[derive(Clone)]
8339    pub struct Upgraded {
8340        #[allow(missing_docs)]
8341        pub implementation: alloy::sol_types::private::Address,
8342    }
8343    #[allow(
8344        non_camel_case_types,
8345        non_snake_case,
8346        clippy::pub_underscore_fields,
8347        clippy::style
8348    )]
8349    const _: () = {
8350        use alloy::sol_types as alloy_sol_types;
8351        #[automatically_derived]
8352        impl alloy_sol_types::SolEvent for Upgraded {
8353            type DataTuple<'a> = ();
8354            type DataToken<'a> = <Self::DataTuple<
8355                'a,
8356            > as alloy_sol_types::SolType>::Token<'a>;
8357            type TopicList = (
8358                alloy_sol_types::sol_data::FixedBytes<32>,
8359                alloy::sol_types::sol_data::Address,
8360            );
8361            const SIGNATURE: &'static str = "Upgraded(address)";
8362            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8363                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
8364                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
8365                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
8366            ]);
8367            const ANONYMOUS: bool = false;
8368            #[allow(unused_variables)]
8369            #[inline]
8370            fn new(
8371                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8372                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8373            ) -> Self {
8374                Self { implementation: topics.1 }
8375            }
8376            #[inline]
8377            fn check_signature(
8378                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8379            ) -> alloy_sol_types::Result<()> {
8380                if topics.0 != Self::SIGNATURE_HASH {
8381                    return Err(
8382                        alloy_sol_types::Error::invalid_event_signature_hash(
8383                            Self::SIGNATURE,
8384                            topics.0,
8385                            Self::SIGNATURE_HASH,
8386                        ),
8387                    );
8388                }
8389                Ok(())
8390            }
8391            #[inline]
8392            fn tokenize_body(&self) -> Self::DataToken<'_> {
8393                ()
8394            }
8395            #[inline]
8396            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8397                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
8398            }
8399            #[inline]
8400            fn encode_topics_raw(
8401                &self,
8402                out: &mut [alloy_sol_types::abi::token::WordToken],
8403            ) -> alloy_sol_types::Result<()> {
8404                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8405                    return Err(alloy_sol_types::Error::Overrun);
8406                }
8407                out[0usize] = alloy_sol_types::abi::token::WordToken(
8408                    Self::SIGNATURE_HASH,
8409                );
8410                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8411                    &self.implementation,
8412                );
8413                Ok(())
8414            }
8415        }
8416        #[automatically_derived]
8417        impl alloy_sol_types::private::IntoLogData for Upgraded {
8418            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8419                From::from(self)
8420            }
8421            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8422                From::from(&self)
8423            }
8424        }
8425        #[automatically_derived]
8426        impl From<&Upgraded> for alloy_sol_types::private::LogData {
8427            #[inline]
8428            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
8429                alloy_sol_types::SolEvent::encode_log_data(this)
8430            }
8431        }
8432    };
8433    #[derive(serde::Serialize, serde::Deserialize)]
8434    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8435    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
8436```solidity
8437function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
8438```*/
8439    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8440    #[derive(Clone)]
8441    pub struct UPGRADE_INTERFACE_VERSIONCall;
8442    #[derive(serde::Serialize, serde::Deserialize)]
8443    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8444    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
8445    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8446    #[derive(Clone)]
8447    pub struct UPGRADE_INTERFACE_VERSIONReturn {
8448        #[allow(missing_docs)]
8449        pub _0: alloy::sol_types::private::String,
8450    }
8451    #[allow(
8452        non_camel_case_types,
8453        non_snake_case,
8454        clippy::pub_underscore_fields,
8455        clippy::style
8456    )]
8457    const _: () = {
8458        use alloy::sol_types as alloy_sol_types;
8459        {
8460            #[doc(hidden)]
8461            type UnderlyingSolTuple<'a> = ();
8462            #[doc(hidden)]
8463            type UnderlyingRustTuple<'a> = ();
8464            #[cfg(test)]
8465            #[allow(dead_code, unreachable_patterns)]
8466            fn _type_assertion(
8467                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8468            ) {
8469                match _t {
8470                    alloy_sol_types::private::AssertTypeEq::<
8471                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8472                    >(_) => {}
8473                }
8474            }
8475            #[automatically_derived]
8476            #[doc(hidden)]
8477            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
8478            for UnderlyingRustTuple<'_> {
8479                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
8480                    ()
8481                }
8482            }
8483            #[automatically_derived]
8484            #[doc(hidden)]
8485            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8486            for UPGRADE_INTERFACE_VERSIONCall {
8487                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8488                    Self
8489                }
8490            }
8491        }
8492        {
8493            #[doc(hidden)]
8494            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
8495            #[doc(hidden)]
8496            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
8497            #[cfg(test)]
8498            #[allow(dead_code, unreachable_patterns)]
8499            fn _type_assertion(
8500                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8501            ) {
8502                match _t {
8503                    alloy_sol_types::private::AssertTypeEq::<
8504                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8505                    >(_) => {}
8506                }
8507            }
8508            #[automatically_derived]
8509            #[doc(hidden)]
8510            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
8511            for UnderlyingRustTuple<'_> {
8512                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
8513                    (value._0,)
8514                }
8515            }
8516            #[automatically_derived]
8517            #[doc(hidden)]
8518            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8519            for UPGRADE_INTERFACE_VERSIONReturn {
8520                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8521                    Self { _0: tuple.0 }
8522                }
8523            }
8524        }
8525        #[automatically_derived]
8526        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
8527            type Parameters<'a> = ();
8528            type Token<'a> = <Self::Parameters<
8529                'a,
8530            > as alloy_sol_types::SolType>::Token<'a>;
8531            type Return = alloy::sol_types::private::String;
8532            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
8533            type ReturnToken<'a> = <Self::ReturnTuple<
8534                'a,
8535            > as alloy_sol_types::SolType>::Token<'a>;
8536            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
8537            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
8538            #[inline]
8539            fn new<'a>(
8540                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8541            ) -> Self {
8542                tuple.into()
8543            }
8544            #[inline]
8545            fn tokenize(&self) -> Self::Token<'_> {
8546                ()
8547            }
8548            #[inline]
8549            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8550                (
8551                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
8552                        ret,
8553                    ),
8554                )
8555            }
8556            #[inline]
8557            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8558                <Self::ReturnTuple<
8559                    '_,
8560                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8561                    .map(|r| {
8562                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
8563                        r._0
8564                    })
8565            }
8566            #[inline]
8567            fn abi_decode_returns_validate(
8568                data: &[u8],
8569            ) -> alloy_sol_types::Result<Self::Return> {
8570                <Self::ReturnTuple<
8571                    '_,
8572                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8573                    .map(|r| {
8574                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
8575                        r._0
8576                    })
8577            }
8578        }
8579    };
8580    #[derive(serde::Serialize, serde::Deserialize)]
8581    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8582    /**Function with signature `_getVk()` and selector `0x12173c2c`.
8583```solidity
8584function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
8585```*/
8586    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8587    #[derive(Clone)]
8588    pub struct _getVkCall;
8589    #[derive(serde::Serialize, serde::Deserialize)]
8590    #[derive()]
8591    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
8592    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8593    #[derive(Clone)]
8594    pub struct _getVkReturn {
8595        #[allow(missing_docs)]
8596        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
8597    }
8598    #[allow(
8599        non_camel_case_types,
8600        non_snake_case,
8601        clippy::pub_underscore_fields,
8602        clippy::style
8603    )]
8604    const _: () = {
8605        use alloy::sol_types as alloy_sol_types;
8606        {
8607            #[doc(hidden)]
8608            type UnderlyingSolTuple<'a> = ();
8609            #[doc(hidden)]
8610            type UnderlyingRustTuple<'a> = ();
8611            #[cfg(test)]
8612            #[allow(dead_code, unreachable_patterns)]
8613            fn _type_assertion(
8614                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8615            ) {
8616                match _t {
8617                    alloy_sol_types::private::AssertTypeEq::<
8618                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8619                    >(_) => {}
8620                }
8621            }
8622            #[automatically_derived]
8623            #[doc(hidden)]
8624            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
8625                fn from(value: _getVkCall) -> Self {
8626                    ()
8627                }
8628            }
8629            #[automatically_derived]
8630            #[doc(hidden)]
8631            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
8632                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8633                    Self
8634                }
8635            }
8636        }
8637        {
8638            #[doc(hidden)]
8639            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
8640            #[doc(hidden)]
8641            type UnderlyingRustTuple<'a> = (
8642                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
8643            );
8644            #[cfg(test)]
8645            #[allow(dead_code, unreachable_patterns)]
8646            fn _type_assertion(
8647                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8648            ) {
8649                match _t {
8650                    alloy_sol_types::private::AssertTypeEq::<
8651                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8652                    >(_) => {}
8653                }
8654            }
8655            #[automatically_derived]
8656            #[doc(hidden)]
8657            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
8658                fn from(value: _getVkReturn) -> Self {
8659                    (value.vk,)
8660                }
8661            }
8662            #[automatically_derived]
8663            #[doc(hidden)]
8664            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
8665                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8666                    Self { vk: tuple.0 }
8667                }
8668            }
8669        }
8670        #[automatically_derived]
8671        impl alloy_sol_types::SolCall for _getVkCall {
8672            type Parameters<'a> = ();
8673            type Token<'a> = <Self::Parameters<
8674                'a,
8675            > as alloy_sol_types::SolType>::Token<'a>;
8676            type Return = <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType;
8677            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
8678            type ReturnToken<'a> = <Self::ReturnTuple<
8679                'a,
8680            > as alloy_sol_types::SolType>::Token<'a>;
8681            const SIGNATURE: &'static str = "_getVk()";
8682            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
8683            #[inline]
8684            fn new<'a>(
8685                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8686            ) -> Self {
8687                tuple.into()
8688            }
8689            #[inline]
8690            fn tokenize(&self) -> Self::Token<'_> {
8691                ()
8692            }
8693            #[inline]
8694            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8695                (
8696                    <IPlonkVerifier::VerifyingKey as alloy_sol_types::SolType>::tokenize(
8697                        ret,
8698                    ),
8699                )
8700            }
8701            #[inline]
8702            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8703                <Self::ReturnTuple<
8704                    '_,
8705                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8706                    .map(|r| {
8707                        let r: _getVkReturn = r.into();
8708                        r.vk
8709                    })
8710            }
8711            #[inline]
8712            fn abi_decode_returns_validate(
8713                data: &[u8],
8714            ) -> alloy_sol_types::Result<Self::Return> {
8715                <Self::ReturnTuple<
8716                    '_,
8717                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8718                    .map(|r| {
8719                        let r: _getVkReturn = r.into();
8720                        r.vk
8721                    })
8722            }
8723        }
8724    };
8725    #[derive(serde::Serialize, serde::Deserialize)]
8726    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8727    /**Function with signature `authRoot()` and selector `0x998328e8`.
8728```solidity
8729function authRoot() external view returns (uint256);
8730```*/
8731    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8732    #[derive(Clone)]
8733    pub struct authRootCall;
8734    #[derive(serde::Serialize, serde::Deserialize)]
8735    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8736    ///Container type for the return parameters of the [`authRoot()`](authRootCall) function.
8737    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8738    #[derive(Clone)]
8739    pub struct authRootReturn {
8740        #[allow(missing_docs)]
8741        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8742    }
8743    #[allow(
8744        non_camel_case_types,
8745        non_snake_case,
8746        clippy::pub_underscore_fields,
8747        clippy::style
8748    )]
8749    const _: () = {
8750        use alloy::sol_types as alloy_sol_types;
8751        {
8752            #[doc(hidden)]
8753            type UnderlyingSolTuple<'a> = ();
8754            #[doc(hidden)]
8755            type UnderlyingRustTuple<'a> = ();
8756            #[cfg(test)]
8757            #[allow(dead_code, unreachable_patterns)]
8758            fn _type_assertion(
8759                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8760            ) {
8761                match _t {
8762                    alloy_sol_types::private::AssertTypeEq::<
8763                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8764                    >(_) => {}
8765                }
8766            }
8767            #[automatically_derived]
8768            #[doc(hidden)]
8769            impl ::core::convert::From<authRootCall> for UnderlyingRustTuple<'_> {
8770                fn from(value: authRootCall) -> Self {
8771                    ()
8772                }
8773            }
8774            #[automatically_derived]
8775            #[doc(hidden)]
8776            impl ::core::convert::From<UnderlyingRustTuple<'_>> for authRootCall {
8777                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8778                    Self
8779                }
8780            }
8781        }
8782        {
8783            #[doc(hidden)]
8784            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8785            #[doc(hidden)]
8786            type UnderlyingRustTuple<'a> = (
8787                alloy::sol_types::private::primitives::aliases::U256,
8788            );
8789            #[cfg(test)]
8790            #[allow(dead_code, unreachable_patterns)]
8791            fn _type_assertion(
8792                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8793            ) {
8794                match _t {
8795                    alloy_sol_types::private::AssertTypeEq::<
8796                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8797                    >(_) => {}
8798                }
8799            }
8800            #[automatically_derived]
8801            #[doc(hidden)]
8802            impl ::core::convert::From<authRootReturn> for UnderlyingRustTuple<'_> {
8803                fn from(value: authRootReturn) -> Self {
8804                    (value._0,)
8805                }
8806            }
8807            #[automatically_derived]
8808            #[doc(hidden)]
8809            impl ::core::convert::From<UnderlyingRustTuple<'_>> for authRootReturn {
8810                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8811                    Self { _0: tuple.0 }
8812                }
8813            }
8814        }
8815        #[automatically_derived]
8816        impl alloy_sol_types::SolCall for authRootCall {
8817            type Parameters<'a> = ();
8818            type Token<'a> = <Self::Parameters<
8819                'a,
8820            > as alloy_sol_types::SolType>::Token<'a>;
8821            type Return = alloy::sol_types::private::primitives::aliases::U256;
8822            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8823            type ReturnToken<'a> = <Self::ReturnTuple<
8824                'a,
8825            > as alloy_sol_types::SolType>::Token<'a>;
8826            const SIGNATURE: &'static str = "authRoot()";
8827            const SELECTOR: [u8; 4] = [153u8, 131u8, 40u8, 232u8];
8828            #[inline]
8829            fn new<'a>(
8830                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8831            ) -> Self {
8832                tuple.into()
8833            }
8834            #[inline]
8835            fn tokenize(&self) -> Self::Token<'_> {
8836                ()
8837            }
8838            #[inline]
8839            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8840                (
8841                    <alloy::sol_types::sol_data::Uint<
8842                        256,
8843                    > as alloy_sol_types::SolType>::tokenize(ret),
8844                )
8845            }
8846            #[inline]
8847            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8848                <Self::ReturnTuple<
8849                    '_,
8850                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8851                    .map(|r| {
8852                        let r: authRootReturn = r.into();
8853                        r._0
8854                    })
8855            }
8856            #[inline]
8857            fn abi_decode_returns_validate(
8858                data: &[u8],
8859            ) -> alloy_sol_types::Result<Self::Return> {
8860                <Self::ReturnTuple<
8861                    '_,
8862                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8863                    .map(|r| {
8864                        let r: authRootReturn = r.into();
8865                        r._0
8866                    })
8867            }
8868        }
8869    };
8870    #[derive(serde::Serialize, serde::Deserialize)]
8871    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8872    /**Function with signature `blocksPerEpoch()` and selector `0xf0682054`.
8873```solidity
8874function blocksPerEpoch() external view returns (uint64);
8875```*/
8876    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8877    #[derive(Clone)]
8878    pub struct blocksPerEpochCall;
8879    #[derive(serde::Serialize, serde::Deserialize)]
8880    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8881    ///Container type for the return parameters of the [`blocksPerEpoch()`](blocksPerEpochCall) function.
8882    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8883    #[derive(Clone)]
8884    pub struct blocksPerEpochReturn {
8885        #[allow(missing_docs)]
8886        pub _0: u64,
8887    }
8888    #[allow(
8889        non_camel_case_types,
8890        non_snake_case,
8891        clippy::pub_underscore_fields,
8892        clippy::style
8893    )]
8894    const _: () = {
8895        use alloy::sol_types as alloy_sol_types;
8896        {
8897            #[doc(hidden)]
8898            type UnderlyingSolTuple<'a> = ();
8899            #[doc(hidden)]
8900            type UnderlyingRustTuple<'a> = ();
8901            #[cfg(test)]
8902            #[allow(dead_code, unreachable_patterns)]
8903            fn _type_assertion(
8904                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8905            ) {
8906                match _t {
8907                    alloy_sol_types::private::AssertTypeEq::<
8908                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8909                    >(_) => {}
8910                }
8911            }
8912            #[automatically_derived]
8913            #[doc(hidden)]
8914            impl ::core::convert::From<blocksPerEpochCall> for UnderlyingRustTuple<'_> {
8915                fn from(value: blocksPerEpochCall) -> Self {
8916                    ()
8917                }
8918            }
8919            #[automatically_derived]
8920            #[doc(hidden)]
8921            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blocksPerEpochCall {
8922                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8923                    Self
8924                }
8925            }
8926        }
8927        {
8928            #[doc(hidden)]
8929            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8930            #[doc(hidden)]
8931            type UnderlyingRustTuple<'a> = (u64,);
8932            #[cfg(test)]
8933            #[allow(dead_code, unreachable_patterns)]
8934            fn _type_assertion(
8935                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8936            ) {
8937                match _t {
8938                    alloy_sol_types::private::AssertTypeEq::<
8939                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8940                    >(_) => {}
8941                }
8942            }
8943            #[automatically_derived]
8944            #[doc(hidden)]
8945            impl ::core::convert::From<blocksPerEpochReturn>
8946            for UnderlyingRustTuple<'_> {
8947                fn from(value: blocksPerEpochReturn) -> Self {
8948                    (value._0,)
8949                }
8950            }
8951            #[automatically_derived]
8952            #[doc(hidden)]
8953            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8954            for blocksPerEpochReturn {
8955                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8956                    Self { _0: tuple.0 }
8957                }
8958            }
8959        }
8960        #[automatically_derived]
8961        impl alloy_sol_types::SolCall for blocksPerEpochCall {
8962            type Parameters<'a> = ();
8963            type Token<'a> = <Self::Parameters<
8964                'a,
8965            > as alloy_sol_types::SolType>::Token<'a>;
8966            type Return = u64;
8967            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8968            type ReturnToken<'a> = <Self::ReturnTuple<
8969                'a,
8970            > as alloy_sol_types::SolType>::Token<'a>;
8971            const SIGNATURE: &'static str = "blocksPerEpoch()";
8972            const SELECTOR: [u8; 4] = [240u8, 104u8, 32u8, 84u8];
8973            #[inline]
8974            fn new<'a>(
8975                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8976            ) -> Self {
8977                tuple.into()
8978            }
8979            #[inline]
8980            fn tokenize(&self) -> Self::Token<'_> {
8981                ()
8982            }
8983            #[inline]
8984            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8985                (
8986                    <alloy::sol_types::sol_data::Uint<
8987                        64,
8988                    > as alloy_sol_types::SolType>::tokenize(ret),
8989                )
8990            }
8991            #[inline]
8992            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8993                <Self::ReturnTuple<
8994                    '_,
8995                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8996                    .map(|r| {
8997                        let r: blocksPerEpochReturn = r.into();
8998                        r._0
8999                    })
9000            }
9001            #[inline]
9002            fn abi_decode_returns_validate(
9003                data: &[u8],
9004            ) -> alloy_sol_types::Result<Self::Return> {
9005                <Self::ReturnTuple<
9006                    '_,
9007                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9008                    .map(|r| {
9009                        let r: blocksPerEpochReturn = r.into();
9010                        r._0
9011                    })
9012            }
9013        }
9014    };
9015    #[derive(serde::Serialize, serde::Deserialize)]
9016    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9017    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
9018```solidity
9019function currentBlockNumber() external view returns (uint256);
9020```*/
9021    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9022    #[derive(Clone)]
9023    pub struct currentBlockNumberCall;
9024    #[derive(serde::Serialize, serde::Deserialize)]
9025    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9026    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
9027    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9028    #[derive(Clone)]
9029    pub struct currentBlockNumberReturn {
9030        #[allow(missing_docs)]
9031        pub _0: alloy::sol_types::private::primitives::aliases::U256,
9032    }
9033    #[allow(
9034        non_camel_case_types,
9035        non_snake_case,
9036        clippy::pub_underscore_fields,
9037        clippy::style
9038    )]
9039    const _: () = {
9040        use alloy::sol_types as alloy_sol_types;
9041        {
9042            #[doc(hidden)]
9043            type UnderlyingSolTuple<'a> = ();
9044            #[doc(hidden)]
9045            type UnderlyingRustTuple<'a> = ();
9046            #[cfg(test)]
9047            #[allow(dead_code, unreachable_patterns)]
9048            fn _type_assertion(
9049                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9050            ) {
9051                match _t {
9052                    alloy_sol_types::private::AssertTypeEq::<
9053                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9054                    >(_) => {}
9055                }
9056            }
9057            #[automatically_derived]
9058            #[doc(hidden)]
9059            impl ::core::convert::From<currentBlockNumberCall>
9060            for UnderlyingRustTuple<'_> {
9061                fn from(value: currentBlockNumberCall) -> Self {
9062                    ()
9063                }
9064            }
9065            #[automatically_derived]
9066            #[doc(hidden)]
9067            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9068            for currentBlockNumberCall {
9069                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9070                    Self
9071                }
9072            }
9073        }
9074        {
9075            #[doc(hidden)]
9076            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9077            #[doc(hidden)]
9078            type UnderlyingRustTuple<'a> = (
9079                alloy::sol_types::private::primitives::aliases::U256,
9080            );
9081            #[cfg(test)]
9082            #[allow(dead_code, unreachable_patterns)]
9083            fn _type_assertion(
9084                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9085            ) {
9086                match _t {
9087                    alloy_sol_types::private::AssertTypeEq::<
9088                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9089                    >(_) => {}
9090                }
9091            }
9092            #[automatically_derived]
9093            #[doc(hidden)]
9094            impl ::core::convert::From<currentBlockNumberReturn>
9095            for UnderlyingRustTuple<'_> {
9096                fn from(value: currentBlockNumberReturn) -> Self {
9097                    (value._0,)
9098                }
9099            }
9100            #[automatically_derived]
9101            #[doc(hidden)]
9102            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9103            for currentBlockNumberReturn {
9104                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9105                    Self { _0: tuple.0 }
9106                }
9107            }
9108        }
9109        #[automatically_derived]
9110        impl alloy_sol_types::SolCall for currentBlockNumberCall {
9111            type Parameters<'a> = ();
9112            type Token<'a> = <Self::Parameters<
9113                'a,
9114            > as alloy_sol_types::SolType>::Token<'a>;
9115            type Return = alloy::sol_types::private::primitives::aliases::U256;
9116            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9117            type ReturnToken<'a> = <Self::ReturnTuple<
9118                'a,
9119            > as alloy_sol_types::SolType>::Token<'a>;
9120            const SIGNATURE: &'static str = "currentBlockNumber()";
9121            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
9122            #[inline]
9123            fn new<'a>(
9124                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9125            ) -> Self {
9126                tuple.into()
9127            }
9128            #[inline]
9129            fn tokenize(&self) -> Self::Token<'_> {
9130                ()
9131            }
9132            #[inline]
9133            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9134                (
9135                    <alloy::sol_types::sol_data::Uint<
9136                        256,
9137                    > as alloy_sol_types::SolType>::tokenize(ret),
9138                )
9139            }
9140            #[inline]
9141            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9142                <Self::ReturnTuple<
9143                    '_,
9144                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9145                    .map(|r| {
9146                        let r: currentBlockNumberReturn = r.into();
9147                        r._0
9148                    })
9149            }
9150            #[inline]
9151            fn abi_decode_returns_validate(
9152                data: &[u8],
9153            ) -> alloy_sol_types::Result<Self::Return> {
9154                <Self::ReturnTuple<
9155                    '_,
9156                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9157                    .map(|r| {
9158                        let r: currentBlockNumberReturn = r.into();
9159                        r._0
9160                    })
9161            }
9162        }
9163    };
9164    #[derive(serde::Serialize, serde::Deserialize)]
9165    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9166    /**Function with signature `currentEpoch()` and selector `0x76671808`.
9167```solidity
9168function currentEpoch() external view returns (uint64);
9169```*/
9170    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9171    #[derive(Clone)]
9172    pub struct currentEpochCall;
9173    #[derive(serde::Serialize, serde::Deserialize)]
9174    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9175    ///Container type for the return parameters of the [`currentEpoch()`](currentEpochCall) function.
9176    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9177    #[derive(Clone)]
9178    pub struct currentEpochReturn {
9179        #[allow(missing_docs)]
9180        pub _0: u64,
9181    }
9182    #[allow(
9183        non_camel_case_types,
9184        non_snake_case,
9185        clippy::pub_underscore_fields,
9186        clippy::style
9187    )]
9188    const _: () = {
9189        use alloy::sol_types as alloy_sol_types;
9190        {
9191            #[doc(hidden)]
9192            type UnderlyingSolTuple<'a> = ();
9193            #[doc(hidden)]
9194            type UnderlyingRustTuple<'a> = ();
9195            #[cfg(test)]
9196            #[allow(dead_code, unreachable_patterns)]
9197            fn _type_assertion(
9198                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9199            ) {
9200                match _t {
9201                    alloy_sol_types::private::AssertTypeEq::<
9202                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9203                    >(_) => {}
9204                }
9205            }
9206            #[automatically_derived]
9207            #[doc(hidden)]
9208            impl ::core::convert::From<currentEpochCall> for UnderlyingRustTuple<'_> {
9209                fn from(value: currentEpochCall) -> Self {
9210                    ()
9211                }
9212            }
9213            #[automatically_derived]
9214            #[doc(hidden)]
9215            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochCall {
9216                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9217                    Self
9218                }
9219            }
9220        }
9221        {
9222            #[doc(hidden)]
9223            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9224            #[doc(hidden)]
9225            type UnderlyingRustTuple<'a> = (u64,);
9226            #[cfg(test)]
9227            #[allow(dead_code, unreachable_patterns)]
9228            fn _type_assertion(
9229                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9230            ) {
9231                match _t {
9232                    alloy_sol_types::private::AssertTypeEq::<
9233                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9234                    >(_) => {}
9235                }
9236            }
9237            #[automatically_derived]
9238            #[doc(hidden)]
9239            impl ::core::convert::From<currentEpochReturn> for UnderlyingRustTuple<'_> {
9240                fn from(value: currentEpochReturn) -> Self {
9241                    (value._0,)
9242                }
9243            }
9244            #[automatically_derived]
9245            #[doc(hidden)]
9246            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochReturn {
9247                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9248                    Self { _0: tuple.0 }
9249                }
9250            }
9251        }
9252        #[automatically_derived]
9253        impl alloy_sol_types::SolCall for currentEpochCall {
9254            type Parameters<'a> = ();
9255            type Token<'a> = <Self::Parameters<
9256                'a,
9257            > as alloy_sol_types::SolType>::Token<'a>;
9258            type Return = u64;
9259            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9260            type ReturnToken<'a> = <Self::ReturnTuple<
9261                'a,
9262            > as alloy_sol_types::SolType>::Token<'a>;
9263            const SIGNATURE: &'static str = "currentEpoch()";
9264            const SELECTOR: [u8; 4] = [118u8, 103u8, 24u8, 8u8];
9265            #[inline]
9266            fn new<'a>(
9267                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9268            ) -> Self {
9269                tuple.into()
9270            }
9271            #[inline]
9272            fn tokenize(&self) -> Self::Token<'_> {
9273                ()
9274            }
9275            #[inline]
9276            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9277                (
9278                    <alloy::sol_types::sol_data::Uint<
9279                        64,
9280                    > as alloy_sol_types::SolType>::tokenize(ret),
9281                )
9282            }
9283            #[inline]
9284            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9285                <Self::ReturnTuple<
9286                    '_,
9287                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9288                    .map(|r| {
9289                        let r: currentEpochReturn = r.into();
9290                        r._0
9291                    })
9292            }
9293            #[inline]
9294            fn abi_decode_returns_validate(
9295                data: &[u8],
9296            ) -> alloy_sol_types::Result<Self::Return> {
9297                <Self::ReturnTuple<
9298                    '_,
9299                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9300                    .map(|r| {
9301                        let r: currentEpochReturn = r.into();
9302                        r._0
9303                    })
9304            }
9305        }
9306    };
9307    #[derive(serde::Serialize, serde::Deserialize)]
9308    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9309    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
9310```solidity
9311function disablePermissionedProverMode() external;
9312```*/
9313    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9314    #[derive(Clone)]
9315    pub struct disablePermissionedProverModeCall;
9316    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
9317    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9318    #[derive(Clone)]
9319    pub struct disablePermissionedProverModeReturn {}
9320    #[allow(
9321        non_camel_case_types,
9322        non_snake_case,
9323        clippy::pub_underscore_fields,
9324        clippy::style
9325    )]
9326    const _: () = {
9327        use alloy::sol_types as alloy_sol_types;
9328        {
9329            #[doc(hidden)]
9330            type UnderlyingSolTuple<'a> = ();
9331            #[doc(hidden)]
9332            type UnderlyingRustTuple<'a> = ();
9333            #[cfg(test)]
9334            #[allow(dead_code, unreachable_patterns)]
9335            fn _type_assertion(
9336                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9337            ) {
9338                match _t {
9339                    alloy_sol_types::private::AssertTypeEq::<
9340                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9341                    >(_) => {}
9342                }
9343            }
9344            #[automatically_derived]
9345            #[doc(hidden)]
9346            impl ::core::convert::From<disablePermissionedProverModeCall>
9347            for UnderlyingRustTuple<'_> {
9348                fn from(value: disablePermissionedProverModeCall) -> Self {
9349                    ()
9350                }
9351            }
9352            #[automatically_derived]
9353            #[doc(hidden)]
9354            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9355            for disablePermissionedProverModeCall {
9356                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9357                    Self
9358                }
9359            }
9360        }
9361        {
9362            #[doc(hidden)]
9363            type UnderlyingSolTuple<'a> = ();
9364            #[doc(hidden)]
9365            type UnderlyingRustTuple<'a> = ();
9366            #[cfg(test)]
9367            #[allow(dead_code, unreachable_patterns)]
9368            fn _type_assertion(
9369                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9370            ) {
9371                match _t {
9372                    alloy_sol_types::private::AssertTypeEq::<
9373                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9374                    >(_) => {}
9375                }
9376            }
9377            #[automatically_derived]
9378            #[doc(hidden)]
9379            impl ::core::convert::From<disablePermissionedProverModeReturn>
9380            for UnderlyingRustTuple<'_> {
9381                fn from(value: disablePermissionedProverModeReturn) -> Self {
9382                    ()
9383                }
9384            }
9385            #[automatically_derived]
9386            #[doc(hidden)]
9387            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9388            for disablePermissionedProverModeReturn {
9389                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9390                    Self {}
9391                }
9392            }
9393        }
9394        impl disablePermissionedProverModeReturn {
9395            fn _tokenize(
9396                &self,
9397            ) -> <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::ReturnToken<
9398                '_,
9399            > {
9400                ()
9401            }
9402        }
9403        #[automatically_derived]
9404        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
9405            type Parameters<'a> = ();
9406            type Token<'a> = <Self::Parameters<
9407                'a,
9408            > as alloy_sol_types::SolType>::Token<'a>;
9409            type Return = disablePermissionedProverModeReturn;
9410            type ReturnTuple<'a> = ();
9411            type ReturnToken<'a> = <Self::ReturnTuple<
9412                'a,
9413            > as alloy_sol_types::SolType>::Token<'a>;
9414            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
9415            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
9416            #[inline]
9417            fn new<'a>(
9418                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9419            ) -> Self {
9420                tuple.into()
9421            }
9422            #[inline]
9423            fn tokenize(&self) -> Self::Token<'_> {
9424                ()
9425            }
9426            #[inline]
9427            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9428                disablePermissionedProverModeReturn::_tokenize(ret)
9429            }
9430            #[inline]
9431            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9432                <Self::ReturnTuple<
9433                    '_,
9434                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9435                    .map(Into::into)
9436            }
9437            #[inline]
9438            fn abi_decode_returns_validate(
9439                data: &[u8],
9440            ) -> alloy_sol_types::Result<Self::Return> {
9441                <Self::ReturnTuple<
9442                    '_,
9443                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9444                    .map(Into::into)
9445            }
9446        }
9447    };
9448    #[derive(serde::Serialize, serde::Deserialize)]
9449    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9450    /**Function with signature `epochFromBlockNumber(uint64,uint64)` and selector `0x90c14390`.
9451```solidity
9452function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
9453```*/
9454    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9455    #[derive(Clone)]
9456    pub struct epochFromBlockNumberCall {
9457        #[allow(missing_docs)]
9458        pub _blockNum: u64,
9459        #[allow(missing_docs)]
9460        pub _blocksPerEpoch: u64,
9461    }
9462    #[derive(serde::Serialize, serde::Deserialize)]
9463    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9464    ///Container type for the return parameters of the [`epochFromBlockNumber(uint64,uint64)`](epochFromBlockNumberCall) function.
9465    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9466    #[derive(Clone)]
9467    pub struct epochFromBlockNumberReturn {
9468        #[allow(missing_docs)]
9469        pub _0: u64,
9470    }
9471    #[allow(
9472        non_camel_case_types,
9473        non_snake_case,
9474        clippy::pub_underscore_fields,
9475        clippy::style
9476    )]
9477    const _: () = {
9478        use alloy::sol_types as alloy_sol_types;
9479        {
9480            #[doc(hidden)]
9481            type UnderlyingSolTuple<'a> = (
9482                alloy::sol_types::sol_data::Uint<64>,
9483                alloy::sol_types::sol_data::Uint<64>,
9484            );
9485            #[doc(hidden)]
9486            type UnderlyingRustTuple<'a> = (u64, u64);
9487            #[cfg(test)]
9488            #[allow(dead_code, unreachable_patterns)]
9489            fn _type_assertion(
9490                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9491            ) {
9492                match _t {
9493                    alloy_sol_types::private::AssertTypeEq::<
9494                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9495                    >(_) => {}
9496                }
9497            }
9498            #[automatically_derived]
9499            #[doc(hidden)]
9500            impl ::core::convert::From<epochFromBlockNumberCall>
9501            for UnderlyingRustTuple<'_> {
9502                fn from(value: epochFromBlockNumberCall) -> Self {
9503                    (value._blockNum, value._blocksPerEpoch)
9504                }
9505            }
9506            #[automatically_derived]
9507            #[doc(hidden)]
9508            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9509            for epochFromBlockNumberCall {
9510                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9511                    Self {
9512                        _blockNum: tuple.0,
9513                        _blocksPerEpoch: tuple.1,
9514                    }
9515                }
9516            }
9517        }
9518        {
9519            #[doc(hidden)]
9520            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9521            #[doc(hidden)]
9522            type UnderlyingRustTuple<'a> = (u64,);
9523            #[cfg(test)]
9524            #[allow(dead_code, unreachable_patterns)]
9525            fn _type_assertion(
9526                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9527            ) {
9528                match _t {
9529                    alloy_sol_types::private::AssertTypeEq::<
9530                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9531                    >(_) => {}
9532                }
9533            }
9534            #[automatically_derived]
9535            #[doc(hidden)]
9536            impl ::core::convert::From<epochFromBlockNumberReturn>
9537            for UnderlyingRustTuple<'_> {
9538                fn from(value: epochFromBlockNumberReturn) -> Self {
9539                    (value._0,)
9540                }
9541            }
9542            #[automatically_derived]
9543            #[doc(hidden)]
9544            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9545            for epochFromBlockNumberReturn {
9546                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9547                    Self { _0: tuple.0 }
9548                }
9549            }
9550        }
9551        #[automatically_derived]
9552        impl alloy_sol_types::SolCall for epochFromBlockNumberCall {
9553            type Parameters<'a> = (
9554                alloy::sol_types::sol_data::Uint<64>,
9555                alloy::sol_types::sol_data::Uint<64>,
9556            );
9557            type Token<'a> = <Self::Parameters<
9558                'a,
9559            > as alloy_sol_types::SolType>::Token<'a>;
9560            type Return = u64;
9561            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9562            type ReturnToken<'a> = <Self::ReturnTuple<
9563                'a,
9564            > as alloy_sol_types::SolType>::Token<'a>;
9565            const SIGNATURE: &'static str = "epochFromBlockNumber(uint64,uint64)";
9566            const SELECTOR: [u8; 4] = [144u8, 193u8, 67u8, 144u8];
9567            #[inline]
9568            fn new<'a>(
9569                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9570            ) -> Self {
9571                tuple.into()
9572            }
9573            #[inline]
9574            fn tokenize(&self) -> Self::Token<'_> {
9575                (
9576                    <alloy::sol_types::sol_data::Uint<
9577                        64,
9578                    > as alloy_sol_types::SolType>::tokenize(&self._blockNum),
9579                    <alloy::sol_types::sol_data::Uint<
9580                        64,
9581                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
9582                )
9583            }
9584            #[inline]
9585            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9586                (
9587                    <alloy::sol_types::sol_data::Uint<
9588                        64,
9589                    > as alloy_sol_types::SolType>::tokenize(ret),
9590                )
9591            }
9592            #[inline]
9593            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9594                <Self::ReturnTuple<
9595                    '_,
9596                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9597                    .map(|r| {
9598                        let r: epochFromBlockNumberReturn = r.into();
9599                        r._0
9600                    })
9601            }
9602            #[inline]
9603            fn abi_decode_returns_validate(
9604                data: &[u8],
9605            ) -> alloy_sol_types::Result<Self::Return> {
9606                <Self::ReturnTuple<
9607                    '_,
9608                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9609                    .map(|r| {
9610                        let r: epochFromBlockNumberReturn = r.into();
9611                        r._0
9612                    })
9613            }
9614        }
9615    };
9616    #[derive(serde::Serialize, serde::Deserialize)]
9617    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9618    /**Function with signature `epochStartBlock()` and selector `0x3ed55b7b`.
9619```solidity
9620function epochStartBlock() external view returns (uint64);
9621```*/
9622    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9623    #[derive(Clone)]
9624    pub struct epochStartBlockCall;
9625    #[derive(serde::Serialize, serde::Deserialize)]
9626    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9627    ///Container type for the return parameters of the [`epochStartBlock()`](epochStartBlockCall) function.
9628    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9629    #[derive(Clone)]
9630    pub struct epochStartBlockReturn {
9631        #[allow(missing_docs)]
9632        pub _0: u64,
9633    }
9634    #[allow(
9635        non_camel_case_types,
9636        non_snake_case,
9637        clippy::pub_underscore_fields,
9638        clippy::style
9639    )]
9640    const _: () = {
9641        use alloy::sol_types as alloy_sol_types;
9642        {
9643            #[doc(hidden)]
9644            type UnderlyingSolTuple<'a> = ();
9645            #[doc(hidden)]
9646            type UnderlyingRustTuple<'a> = ();
9647            #[cfg(test)]
9648            #[allow(dead_code, unreachable_patterns)]
9649            fn _type_assertion(
9650                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9651            ) {
9652                match _t {
9653                    alloy_sol_types::private::AssertTypeEq::<
9654                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9655                    >(_) => {}
9656                }
9657            }
9658            #[automatically_derived]
9659            #[doc(hidden)]
9660            impl ::core::convert::From<epochStartBlockCall> for UnderlyingRustTuple<'_> {
9661                fn from(value: epochStartBlockCall) -> Self {
9662                    ()
9663                }
9664            }
9665            #[automatically_derived]
9666            #[doc(hidden)]
9667            impl ::core::convert::From<UnderlyingRustTuple<'_>> for epochStartBlockCall {
9668                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9669                    Self
9670                }
9671            }
9672        }
9673        {
9674            #[doc(hidden)]
9675            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9676            #[doc(hidden)]
9677            type UnderlyingRustTuple<'a> = (u64,);
9678            #[cfg(test)]
9679            #[allow(dead_code, unreachable_patterns)]
9680            fn _type_assertion(
9681                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9682            ) {
9683                match _t {
9684                    alloy_sol_types::private::AssertTypeEq::<
9685                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9686                    >(_) => {}
9687                }
9688            }
9689            #[automatically_derived]
9690            #[doc(hidden)]
9691            impl ::core::convert::From<epochStartBlockReturn>
9692            for UnderlyingRustTuple<'_> {
9693                fn from(value: epochStartBlockReturn) -> Self {
9694                    (value._0,)
9695                }
9696            }
9697            #[automatically_derived]
9698            #[doc(hidden)]
9699            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9700            for epochStartBlockReturn {
9701                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9702                    Self { _0: tuple.0 }
9703                }
9704            }
9705        }
9706        #[automatically_derived]
9707        impl alloy_sol_types::SolCall for epochStartBlockCall {
9708            type Parameters<'a> = ();
9709            type Token<'a> = <Self::Parameters<
9710                'a,
9711            > as alloy_sol_types::SolType>::Token<'a>;
9712            type Return = u64;
9713            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9714            type ReturnToken<'a> = <Self::ReturnTuple<
9715                'a,
9716            > as alloy_sol_types::SolType>::Token<'a>;
9717            const SIGNATURE: &'static str = "epochStartBlock()";
9718            const SELECTOR: [u8; 4] = [62u8, 213u8, 91u8, 123u8];
9719            #[inline]
9720            fn new<'a>(
9721                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9722            ) -> Self {
9723                tuple.into()
9724            }
9725            #[inline]
9726            fn tokenize(&self) -> Self::Token<'_> {
9727                ()
9728            }
9729            #[inline]
9730            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9731                (
9732                    <alloy::sol_types::sol_data::Uint<
9733                        64,
9734                    > as alloy_sol_types::SolType>::tokenize(ret),
9735                )
9736            }
9737            #[inline]
9738            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9739                <Self::ReturnTuple<
9740                    '_,
9741                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9742                    .map(|r| {
9743                        let r: epochStartBlockReturn = r.into();
9744                        r._0
9745                    })
9746            }
9747            #[inline]
9748            fn abi_decode_returns_validate(
9749                data: &[u8],
9750            ) -> alloy_sol_types::Result<Self::Return> {
9751                <Self::ReturnTuple<
9752                    '_,
9753                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9754                    .map(|r| {
9755                        let r: epochStartBlockReturn = r.into();
9756                        r._0
9757                    })
9758            }
9759        }
9760    };
9761    #[derive(serde::Serialize, serde::Deserialize)]
9762    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9763    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
9764```solidity
9765function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
9766```*/
9767    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9768    #[derive(Clone)]
9769    pub struct finalizedStateCall;
9770    #[derive(serde::Serialize, serde::Deserialize)]
9771    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9772    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
9773    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9774    #[derive(Clone)]
9775    pub struct finalizedStateReturn {
9776        #[allow(missing_docs)]
9777        pub viewNum: u64,
9778        #[allow(missing_docs)]
9779        pub blockHeight: u64,
9780        #[allow(missing_docs)]
9781        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9782    }
9783    #[allow(
9784        non_camel_case_types,
9785        non_snake_case,
9786        clippy::pub_underscore_fields,
9787        clippy::style
9788    )]
9789    const _: () = {
9790        use alloy::sol_types as alloy_sol_types;
9791        {
9792            #[doc(hidden)]
9793            type UnderlyingSolTuple<'a> = ();
9794            #[doc(hidden)]
9795            type UnderlyingRustTuple<'a> = ();
9796            #[cfg(test)]
9797            #[allow(dead_code, unreachable_patterns)]
9798            fn _type_assertion(
9799                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9800            ) {
9801                match _t {
9802                    alloy_sol_types::private::AssertTypeEq::<
9803                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9804                    >(_) => {}
9805                }
9806            }
9807            #[automatically_derived]
9808            #[doc(hidden)]
9809            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
9810                fn from(value: finalizedStateCall) -> Self {
9811                    ()
9812                }
9813            }
9814            #[automatically_derived]
9815            #[doc(hidden)]
9816            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
9817                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9818                    Self
9819                }
9820            }
9821        }
9822        {
9823            #[doc(hidden)]
9824            type UnderlyingSolTuple<'a> = (
9825                alloy::sol_types::sol_data::Uint<64>,
9826                alloy::sol_types::sol_data::Uint<64>,
9827                BN254::ScalarField,
9828            );
9829            #[doc(hidden)]
9830            type UnderlyingRustTuple<'a> = (
9831                u64,
9832                u64,
9833                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9834            );
9835            #[cfg(test)]
9836            #[allow(dead_code, unreachable_patterns)]
9837            fn _type_assertion(
9838                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9839            ) {
9840                match _t {
9841                    alloy_sol_types::private::AssertTypeEq::<
9842                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9843                    >(_) => {}
9844                }
9845            }
9846            #[automatically_derived]
9847            #[doc(hidden)]
9848            impl ::core::convert::From<finalizedStateReturn>
9849            for UnderlyingRustTuple<'_> {
9850                fn from(value: finalizedStateReturn) -> Self {
9851                    (value.viewNum, value.blockHeight, value.blockCommRoot)
9852                }
9853            }
9854            #[automatically_derived]
9855            #[doc(hidden)]
9856            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9857            for finalizedStateReturn {
9858                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9859                    Self {
9860                        viewNum: tuple.0,
9861                        blockHeight: tuple.1,
9862                        blockCommRoot: tuple.2,
9863                    }
9864                }
9865            }
9866        }
9867        impl finalizedStateReturn {
9868            fn _tokenize(
9869                &self,
9870            ) -> <finalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9871                (
9872                    <alloy::sol_types::sol_data::Uint<
9873                        64,
9874                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
9875                    <alloy::sol_types::sol_data::Uint<
9876                        64,
9877                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
9878                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9879                        &self.blockCommRoot,
9880                    ),
9881                )
9882            }
9883        }
9884        #[automatically_derived]
9885        impl alloy_sol_types::SolCall for finalizedStateCall {
9886            type Parameters<'a> = ();
9887            type Token<'a> = <Self::Parameters<
9888                'a,
9889            > as alloy_sol_types::SolType>::Token<'a>;
9890            type Return = finalizedStateReturn;
9891            type ReturnTuple<'a> = (
9892                alloy::sol_types::sol_data::Uint<64>,
9893                alloy::sol_types::sol_data::Uint<64>,
9894                BN254::ScalarField,
9895            );
9896            type ReturnToken<'a> = <Self::ReturnTuple<
9897                'a,
9898            > as alloy_sol_types::SolType>::Token<'a>;
9899            const SIGNATURE: &'static str = "finalizedState()";
9900            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
9901            #[inline]
9902            fn new<'a>(
9903                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9904            ) -> Self {
9905                tuple.into()
9906            }
9907            #[inline]
9908            fn tokenize(&self) -> Self::Token<'_> {
9909                ()
9910            }
9911            #[inline]
9912            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9913                finalizedStateReturn::_tokenize(ret)
9914            }
9915            #[inline]
9916            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9917                <Self::ReturnTuple<
9918                    '_,
9919                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9920                    .map(Into::into)
9921            }
9922            #[inline]
9923            fn abi_decode_returns_validate(
9924                data: &[u8],
9925            ) -> alloy_sol_types::Result<Self::Return> {
9926                <Self::ReturnTuple<
9927                    '_,
9928                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9929                    .map(Into::into)
9930            }
9931        }
9932    };
9933    #[derive(serde::Serialize, serde::Deserialize)]
9934    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9935    /**Function with signature `firstEpoch()` and selector `0x41682744`.
9936```solidity
9937function firstEpoch() external view returns (uint64);
9938```*/
9939    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9940    #[derive(Clone)]
9941    pub struct firstEpochCall;
9942    #[derive(serde::Serialize, serde::Deserialize)]
9943    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9944    ///Container type for the return parameters of the [`firstEpoch()`](firstEpochCall) function.
9945    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9946    #[derive(Clone)]
9947    pub struct firstEpochReturn {
9948        #[allow(missing_docs)]
9949        pub _0: u64,
9950    }
9951    #[allow(
9952        non_camel_case_types,
9953        non_snake_case,
9954        clippy::pub_underscore_fields,
9955        clippy::style
9956    )]
9957    const _: () = {
9958        use alloy::sol_types as alloy_sol_types;
9959        {
9960            #[doc(hidden)]
9961            type UnderlyingSolTuple<'a> = ();
9962            #[doc(hidden)]
9963            type UnderlyingRustTuple<'a> = ();
9964            #[cfg(test)]
9965            #[allow(dead_code, unreachable_patterns)]
9966            fn _type_assertion(
9967                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9968            ) {
9969                match _t {
9970                    alloy_sol_types::private::AssertTypeEq::<
9971                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9972                    >(_) => {}
9973                }
9974            }
9975            #[automatically_derived]
9976            #[doc(hidden)]
9977            impl ::core::convert::From<firstEpochCall> for UnderlyingRustTuple<'_> {
9978                fn from(value: firstEpochCall) -> Self {
9979                    ()
9980                }
9981            }
9982            #[automatically_derived]
9983            #[doc(hidden)]
9984            impl ::core::convert::From<UnderlyingRustTuple<'_>> for firstEpochCall {
9985                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9986                    Self
9987                }
9988            }
9989        }
9990        {
9991            #[doc(hidden)]
9992            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9993            #[doc(hidden)]
9994            type UnderlyingRustTuple<'a> = (u64,);
9995            #[cfg(test)]
9996            #[allow(dead_code, unreachable_patterns)]
9997            fn _type_assertion(
9998                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9999            ) {
10000                match _t {
10001                    alloy_sol_types::private::AssertTypeEq::<
10002                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10003                    >(_) => {}
10004                }
10005            }
10006            #[automatically_derived]
10007            #[doc(hidden)]
10008            impl ::core::convert::From<firstEpochReturn> for UnderlyingRustTuple<'_> {
10009                fn from(value: firstEpochReturn) -> Self {
10010                    (value._0,)
10011                }
10012            }
10013            #[automatically_derived]
10014            #[doc(hidden)]
10015            impl ::core::convert::From<UnderlyingRustTuple<'_>> for firstEpochReturn {
10016                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10017                    Self { _0: tuple.0 }
10018                }
10019            }
10020        }
10021        #[automatically_derived]
10022        impl alloy_sol_types::SolCall for firstEpochCall {
10023            type Parameters<'a> = ();
10024            type Token<'a> = <Self::Parameters<
10025                'a,
10026            > as alloy_sol_types::SolType>::Token<'a>;
10027            type Return = u64;
10028            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10029            type ReturnToken<'a> = <Self::ReturnTuple<
10030                'a,
10031            > as alloy_sol_types::SolType>::Token<'a>;
10032            const SIGNATURE: &'static str = "firstEpoch()";
10033            const SELECTOR: [u8; 4] = [65u8, 104u8, 39u8, 68u8];
10034            #[inline]
10035            fn new<'a>(
10036                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10037            ) -> Self {
10038                tuple.into()
10039            }
10040            #[inline]
10041            fn tokenize(&self) -> Self::Token<'_> {
10042                ()
10043            }
10044            #[inline]
10045            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10046                (
10047                    <alloy::sol_types::sol_data::Uint<
10048                        64,
10049                    > as alloy_sol_types::SolType>::tokenize(ret),
10050                )
10051            }
10052            #[inline]
10053            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10054                <Self::ReturnTuple<
10055                    '_,
10056                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10057                    .map(|r| {
10058                        let r: firstEpochReturn = r.into();
10059                        r._0
10060                    })
10061            }
10062            #[inline]
10063            fn abi_decode_returns_validate(
10064                data: &[u8],
10065            ) -> alloy_sol_types::Result<Self::Return> {
10066                <Self::ReturnTuple<
10067                    '_,
10068                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10069                    .map(|r| {
10070                        let r: firstEpochReturn = r.into();
10071                        r._0
10072                    })
10073            }
10074        }
10075    };
10076    #[derive(serde::Serialize, serde::Deserialize)]
10077    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10078    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
10079```solidity
10080function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
10081```*/
10082    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10083    #[derive(Clone)]
10084    pub struct genesisStakeTableStateCall;
10085    #[derive(serde::Serialize, serde::Deserialize)]
10086    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10087    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
10088    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10089    #[derive(Clone)]
10090    pub struct genesisStakeTableStateReturn {
10091        #[allow(missing_docs)]
10092        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
10093        #[allow(missing_docs)]
10094        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10095        #[allow(missing_docs)]
10096        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10097        #[allow(missing_docs)]
10098        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10099    }
10100    #[allow(
10101        non_camel_case_types,
10102        non_snake_case,
10103        clippy::pub_underscore_fields,
10104        clippy::style
10105    )]
10106    const _: () = {
10107        use alloy::sol_types as alloy_sol_types;
10108        {
10109            #[doc(hidden)]
10110            type UnderlyingSolTuple<'a> = ();
10111            #[doc(hidden)]
10112            type UnderlyingRustTuple<'a> = ();
10113            #[cfg(test)]
10114            #[allow(dead_code, unreachable_patterns)]
10115            fn _type_assertion(
10116                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10117            ) {
10118                match _t {
10119                    alloy_sol_types::private::AssertTypeEq::<
10120                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10121                    >(_) => {}
10122                }
10123            }
10124            #[automatically_derived]
10125            #[doc(hidden)]
10126            impl ::core::convert::From<genesisStakeTableStateCall>
10127            for UnderlyingRustTuple<'_> {
10128                fn from(value: genesisStakeTableStateCall) -> Self {
10129                    ()
10130                }
10131            }
10132            #[automatically_derived]
10133            #[doc(hidden)]
10134            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10135            for genesisStakeTableStateCall {
10136                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10137                    Self
10138                }
10139            }
10140        }
10141        {
10142            #[doc(hidden)]
10143            type UnderlyingSolTuple<'a> = (
10144                alloy::sol_types::sol_data::Uint<256>,
10145                BN254::ScalarField,
10146                BN254::ScalarField,
10147                BN254::ScalarField,
10148            );
10149            #[doc(hidden)]
10150            type UnderlyingRustTuple<'a> = (
10151                alloy::sol_types::private::primitives::aliases::U256,
10152                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10153                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10154                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10155            );
10156            #[cfg(test)]
10157            #[allow(dead_code, unreachable_patterns)]
10158            fn _type_assertion(
10159                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10160            ) {
10161                match _t {
10162                    alloy_sol_types::private::AssertTypeEq::<
10163                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10164                    >(_) => {}
10165                }
10166            }
10167            #[automatically_derived]
10168            #[doc(hidden)]
10169            impl ::core::convert::From<genesisStakeTableStateReturn>
10170            for UnderlyingRustTuple<'_> {
10171                fn from(value: genesisStakeTableStateReturn) -> Self {
10172                    (
10173                        value.threshold,
10174                        value.blsKeyComm,
10175                        value.schnorrKeyComm,
10176                        value.amountComm,
10177                    )
10178                }
10179            }
10180            #[automatically_derived]
10181            #[doc(hidden)]
10182            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10183            for genesisStakeTableStateReturn {
10184                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10185                    Self {
10186                        threshold: tuple.0,
10187                        blsKeyComm: tuple.1,
10188                        schnorrKeyComm: tuple.2,
10189                        amountComm: tuple.3,
10190                    }
10191                }
10192            }
10193        }
10194        impl genesisStakeTableStateReturn {
10195            fn _tokenize(
10196                &self,
10197            ) -> <genesisStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
10198                '_,
10199            > {
10200                (
10201                    <alloy::sol_types::sol_data::Uint<
10202                        256,
10203                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
10204                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
10205                        &self.blsKeyComm,
10206                    ),
10207                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
10208                        &self.schnorrKeyComm,
10209                    ),
10210                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
10211                        &self.amountComm,
10212                    ),
10213                )
10214            }
10215        }
10216        #[automatically_derived]
10217        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
10218            type Parameters<'a> = ();
10219            type Token<'a> = <Self::Parameters<
10220                'a,
10221            > as alloy_sol_types::SolType>::Token<'a>;
10222            type Return = genesisStakeTableStateReturn;
10223            type ReturnTuple<'a> = (
10224                alloy::sol_types::sol_data::Uint<256>,
10225                BN254::ScalarField,
10226                BN254::ScalarField,
10227                BN254::ScalarField,
10228            );
10229            type ReturnToken<'a> = <Self::ReturnTuple<
10230                'a,
10231            > as alloy_sol_types::SolType>::Token<'a>;
10232            const SIGNATURE: &'static str = "genesisStakeTableState()";
10233            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
10234            #[inline]
10235            fn new<'a>(
10236                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10237            ) -> Self {
10238                tuple.into()
10239            }
10240            #[inline]
10241            fn tokenize(&self) -> Self::Token<'_> {
10242                ()
10243            }
10244            #[inline]
10245            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10246                genesisStakeTableStateReturn::_tokenize(ret)
10247            }
10248            #[inline]
10249            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10250                <Self::ReturnTuple<
10251                    '_,
10252                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10253                    .map(Into::into)
10254            }
10255            #[inline]
10256            fn abi_decode_returns_validate(
10257                data: &[u8],
10258            ) -> alloy_sol_types::Result<Self::Return> {
10259                <Self::ReturnTuple<
10260                    '_,
10261                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10262                    .map(Into::into)
10263            }
10264        }
10265    };
10266    #[derive(serde::Serialize, serde::Deserialize)]
10267    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10268    /**Function with signature `genesisState()` and selector `0xd24d933d`.
10269```solidity
10270function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
10271```*/
10272    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10273    #[derive(Clone)]
10274    pub struct genesisStateCall;
10275    #[derive(serde::Serialize, serde::Deserialize)]
10276    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10277    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
10278    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10279    #[derive(Clone)]
10280    pub struct genesisStateReturn {
10281        #[allow(missing_docs)]
10282        pub viewNum: u64,
10283        #[allow(missing_docs)]
10284        pub blockHeight: u64,
10285        #[allow(missing_docs)]
10286        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10287    }
10288    #[allow(
10289        non_camel_case_types,
10290        non_snake_case,
10291        clippy::pub_underscore_fields,
10292        clippy::style
10293    )]
10294    const _: () = {
10295        use alloy::sol_types as alloy_sol_types;
10296        {
10297            #[doc(hidden)]
10298            type UnderlyingSolTuple<'a> = ();
10299            #[doc(hidden)]
10300            type UnderlyingRustTuple<'a> = ();
10301            #[cfg(test)]
10302            #[allow(dead_code, unreachable_patterns)]
10303            fn _type_assertion(
10304                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10305            ) {
10306                match _t {
10307                    alloy_sol_types::private::AssertTypeEq::<
10308                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10309                    >(_) => {}
10310                }
10311            }
10312            #[automatically_derived]
10313            #[doc(hidden)]
10314            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
10315                fn from(value: genesisStateCall) -> Self {
10316                    ()
10317                }
10318            }
10319            #[automatically_derived]
10320            #[doc(hidden)]
10321            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
10322                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10323                    Self
10324                }
10325            }
10326        }
10327        {
10328            #[doc(hidden)]
10329            type UnderlyingSolTuple<'a> = (
10330                alloy::sol_types::sol_data::Uint<64>,
10331                alloy::sol_types::sol_data::Uint<64>,
10332                BN254::ScalarField,
10333            );
10334            #[doc(hidden)]
10335            type UnderlyingRustTuple<'a> = (
10336                u64,
10337                u64,
10338                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10339            );
10340            #[cfg(test)]
10341            #[allow(dead_code, unreachable_patterns)]
10342            fn _type_assertion(
10343                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10344            ) {
10345                match _t {
10346                    alloy_sol_types::private::AssertTypeEq::<
10347                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10348                    >(_) => {}
10349                }
10350            }
10351            #[automatically_derived]
10352            #[doc(hidden)]
10353            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
10354                fn from(value: genesisStateReturn) -> Self {
10355                    (value.viewNum, value.blockHeight, value.blockCommRoot)
10356                }
10357            }
10358            #[automatically_derived]
10359            #[doc(hidden)]
10360            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
10361                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10362                    Self {
10363                        viewNum: tuple.0,
10364                        blockHeight: tuple.1,
10365                        blockCommRoot: tuple.2,
10366                    }
10367                }
10368            }
10369        }
10370        impl genesisStateReturn {
10371            fn _tokenize(
10372                &self,
10373            ) -> <genesisStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10374                (
10375                    <alloy::sol_types::sol_data::Uint<
10376                        64,
10377                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
10378                    <alloy::sol_types::sol_data::Uint<
10379                        64,
10380                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
10381                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
10382                        &self.blockCommRoot,
10383                    ),
10384                )
10385            }
10386        }
10387        #[automatically_derived]
10388        impl alloy_sol_types::SolCall for genesisStateCall {
10389            type Parameters<'a> = ();
10390            type Token<'a> = <Self::Parameters<
10391                'a,
10392            > as alloy_sol_types::SolType>::Token<'a>;
10393            type Return = genesisStateReturn;
10394            type ReturnTuple<'a> = (
10395                alloy::sol_types::sol_data::Uint<64>,
10396                alloy::sol_types::sol_data::Uint<64>,
10397                BN254::ScalarField,
10398            );
10399            type ReturnToken<'a> = <Self::ReturnTuple<
10400                'a,
10401            > as alloy_sol_types::SolType>::Token<'a>;
10402            const SIGNATURE: &'static str = "genesisState()";
10403            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
10404            #[inline]
10405            fn new<'a>(
10406                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10407            ) -> Self {
10408                tuple.into()
10409            }
10410            #[inline]
10411            fn tokenize(&self) -> Self::Token<'_> {
10412                ()
10413            }
10414            #[inline]
10415            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10416                genesisStateReturn::_tokenize(ret)
10417            }
10418            #[inline]
10419            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10420                <Self::ReturnTuple<
10421                    '_,
10422                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10423                    .map(Into::into)
10424            }
10425            #[inline]
10426            fn abi_decode_returns_validate(
10427                data: &[u8],
10428            ) -> alloy_sol_types::Result<Self::Return> {
10429                <Self::ReturnTuple<
10430                    '_,
10431                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10432                    .map(Into::into)
10433            }
10434        }
10435    };
10436    #[derive(serde::Serialize, serde::Deserialize)]
10437    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10438    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
10439```solidity
10440function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
10441```*/
10442    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10443    #[derive(Clone)]
10444    pub struct getHotShotCommitmentCall {
10445        #[allow(missing_docs)]
10446        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
10447    }
10448    #[derive(serde::Serialize, serde::Deserialize)]
10449    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10450    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
10451    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10452    #[derive(Clone)]
10453    pub struct getHotShotCommitmentReturn {
10454        #[allow(missing_docs)]
10455        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10456        #[allow(missing_docs)]
10457        pub hotshotBlockHeight: u64,
10458    }
10459    #[allow(
10460        non_camel_case_types,
10461        non_snake_case,
10462        clippy::pub_underscore_fields,
10463        clippy::style
10464    )]
10465    const _: () = {
10466        use alloy::sol_types as alloy_sol_types;
10467        {
10468            #[doc(hidden)]
10469            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10470            #[doc(hidden)]
10471            type UnderlyingRustTuple<'a> = (
10472                alloy::sol_types::private::primitives::aliases::U256,
10473            );
10474            #[cfg(test)]
10475            #[allow(dead_code, unreachable_patterns)]
10476            fn _type_assertion(
10477                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10478            ) {
10479                match _t {
10480                    alloy_sol_types::private::AssertTypeEq::<
10481                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10482                    >(_) => {}
10483                }
10484            }
10485            #[automatically_derived]
10486            #[doc(hidden)]
10487            impl ::core::convert::From<getHotShotCommitmentCall>
10488            for UnderlyingRustTuple<'_> {
10489                fn from(value: getHotShotCommitmentCall) -> Self {
10490                    (value.hotShotBlockHeight,)
10491                }
10492            }
10493            #[automatically_derived]
10494            #[doc(hidden)]
10495            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10496            for getHotShotCommitmentCall {
10497                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10498                    Self {
10499                        hotShotBlockHeight: tuple.0,
10500                    }
10501                }
10502            }
10503        }
10504        {
10505            #[doc(hidden)]
10506            type UnderlyingSolTuple<'a> = (
10507                BN254::ScalarField,
10508                alloy::sol_types::sol_data::Uint<64>,
10509            );
10510            #[doc(hidden)]
10511            type UnderlyingRustTuple<'a> = (
10512                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10513                u64,
10514            );
10515            #[cfg(test)]
10516            #[allow(dead_code, unreachable_patterns)]
10517            fn _type_assertion(
10518                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10519            ) {
10520                match _t {
10521                    alloy_sol_types::private::AssertTypeEq::<
10522                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10523                    >(_) => {}
10524                }
10525            }
10526            #[automatically_derived]
10527            #[doc(hidden)]
10528            impl ::core::convert::From<getHotShotCommitmentReturn>
10529            for UnderlyingRustTuple<'_> {
10530                fn from(value: getHotShotCommitmentReturn) -> Self {
10531                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
10532                }
10533            }
10534            #[automatically_derived]
10535            #[doc(hidden)]
10536            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10537            for getHotShotCommitmentReturn {
10538                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10539                    Self {
10540                        hotShotBlockCommRoot: tuple.0,
10541                        hotshotBlockHeight: tuple.1,
10542                    }
10543                }
10544            }
10545        }
10546        impl getHotShotCommitmentReturn {
10547            fn _tokenize(
10548                &self,
10549            ) -> <getHotShotCommitmentCall as alloy_sol_types::SolCall>::ReturnToken<
10550                '_,
10551            > {
10552                (
10553                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
10554                        &self.hotShotBlockCommRoot,
10555                    ),
10556                    <alloy::sol_types::sol_data::Uint<
10557                        64,
10558                    > as alloy_sol_types::SolType>::tokenize(&self.hotshotBlockHeight),
10559                )
10560            }
10561        }
10562        #[automatically_derived]
10563        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
10564            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10565            type Token<'a> = <Self::Parameters<
10566                'a,
10567            > as alloy_sol_types::SolType>::Token<'a>;
10568            type Return = getHotShotCommitmentReturn;
10569            type ReturnTuple<'a> = (
10570                BN254::ScalarField,
10571                alloy::sol_types::sol_data::Uint<64>,
10572            );
10573            type ReturnToken<'a> = <Self::ReturnTuple<
10574                'a,
10575            > as alloy_sol_types::SolType>::Token<'a>;
10576            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
10577            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
10578            #[inline]
10579            fn new<'a>(
10580                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10581            ) -> Self {
10582                tuple.into()
10583            }
10584            #[inline]
10585            fn tokenize(&self) -> Self::Token<'_> {
10586                (
10587                    <alloy::sol_types::sol_data::Uint<
10588                        256,
10589                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
10590                )
10591            }
10592            #[inline]
10593            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10594                getHotShotCommitmentReturn::_tokenize(ret)
10595            }
10596            #[inline]
10597            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10598                <Self::ReturnTuple<
10599                    '_,
10600                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10601                    .map(Into::into)
10602            }
10603            #[inline]
10604            fn abi_decode_returns_validate(
10605                data: &[u8],
10606            ) -> alloy_sol_types::Result<Self::Return> {
10607                <Self::ReturnTuple<
10608                    '_,
10609                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10610                    .map(Into::into)
10611            }
10612        }
10613    };
10614    #[derive(serde::Serialize, serde::Deserialize)]
10615    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10616    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
10617```solidity
10618function getStateHistoryCount() external view returns (uint256);
10619```*/
10620    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10621    #[derive(Clone)]
10622    pub struct getStateHistoryCountCall;
10623    #[derive(serde::Serialize, serde::Deserialize)]
10624    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10625    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
10626    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10627    #[derive(Clone)]
10628    pub struct getStateHistoryCountReturn {
10629        #[allow(missing_docs)]
10630        pub _0: alloy::sol_types::private::primitives::aliases::U256,
10631    }
10632    #[allow(
10633        non_camel_case_types,
10634        non_snake_case,
10635        clippy::pub_underscore_fields,
10636        clippy::style
10637    )]
10638    const _: () = {
10639        use alloy::sol_types as alloy_sol_types;
10640        {
10641            #[doc(hidden)]
10642            type UnderlyingSolTuple<'a> = ();
10643            #[doc(hidden)]
10644            type UnderlyingRustTuple<'a> = ();
10645            #[cfg(test)]
10646            #[allow(dead_code, unreachable_patterns)]
10647            fn _type_assertion(
10648                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10649            ) {
10650                match _t {
10651                    alloy_sol_types::private::AssertTypeEq::<
10652                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10653                    >(_) => {}
10654                }
10655            }
10656            #[automatically_derived]
10657            #[doc(hidden)]
10658            impl ::core::convert::From<getStateHistoryCountCall>
10659            for UnderlyingRustTuple<'_> {
10660                fn from(value: getStateHistoryCountCall) -> Self {
10661                    ()
10662                }
10663            }
10664            #[automatically_derived]
10665            #[doc(hidden)]
10666            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10667            for getStateHistoryCountCall {
10668                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10669                    Self
10670                }
10671            }
10672        }
10673        {
10674            #[doc(hidden)]
10675            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10676            #[doc(hidden)]
10677            type UnderlyingRustTuple<'a> = (
10678                alloy::sol_types::private::primitives::aliases::U256,
10679            );
10680            #[cfg(test)]
10681            #[allow(dead_code, unreachable_patterns)]
10682            fn _type_assertion(
10683                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10684            ) {
10685                match _t {
10686                    alloy_sol_types::private::AssertTypeEq::<
10687                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10688                    >(_) => {}
10689                }
10690            }
10691            #[automatically_derived]
10692            #[doc(hidden)]
10693            impl ::core::convert::From<getStateHistoryCountReturn>
10694            for UnderlyingRustTuple<'_> {
10695                fn from(value: getStateHistoryCountReturn) -> Self {
10696                    (value._0,)
10697                }
10698            }
10699            #[automatically_derived]
10700            #[doc(hidden)]
10701            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10702            for getStateHistoryCountReturn {
10703                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10704                    Self { _0: tuple.0 }
10705                }
10706            }
10707        }
10708        #[automatically_derived]
10709        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
10710            type Parameters<'a> = ();
10711            type Token<'a> = <Self::Parameters<
10712                'a,
10713            > as alloy_sol_types::SolType>::Token<'a>;
10714            type Return = alloy::sol_types::private::primitives::aliases::U256;
10715            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10716            type ReturnToken<'a> = <Self::ReturnTuple<
10717                'a,
10718            > as alloy_sol_types::SolType>::Token<'a>;
10719            const SIGNATURE: &'static str = "getStateHistoryCount()";
10720            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
10721            #[inline]
10722            fn new<'a>(
10723                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10724            ) -> Self {
10725                tuple.into()
10726            }
10727            #[inline]
10728            fn tokenize(&self) -> Self::Token<'_> {
10729                ()
10730            }
10731            #[inline]
10732            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10733                (
10734                    <alloy::sol_types::sol_data::Uint<
10735                        256,
10736                    > as alloy_sol_types::SolType>::tokenize(ret),
10737                )
10738            }
10739            #[inline]
10740            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10741                <Self::ReturnTuple<
10742                    '_,
10743                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10744                    .map(|r| {
10745                        let r: getStateHistoryCountReturn = r.into();
10746                        r._0
10747                    })
10748            }
10749            #[inline]
10750            fn abi_decode_returns_validate(
10751                data: &[u8],
10752            ) -> alloy_sol_types::Result<Self::Return> {
10753                <Self::ReturnTuple<
10754                    '_,
10755                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10756                    .map(|r| {
10757                        let r: getStateHistoryCountReturn = r.into();
10758                        r._0
10759                    })
10760            }
10761        }
10762    };
10763    #[derive(serde::Serialize, serde::Deserialize)]
10764    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10765    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
10766```solidity
10767function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
10768```*/
10769    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10770    #[derive(Clone)]
10771    pub struct getVersionCall;
10772    #[derive(serde::Serialize, serde::Deserialize)]
10773    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10774    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
10775    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10776    #[derive(Clone)]
10777    pub struct getVersionReturn {
10778        #[allow(missing_docs)]
10779        pub majorVersion: u8,
10780        #[allow(missing_docs)]
10781        pub minorVersion: u8,
10782        #[allow(missing_docs)]
10783        pub patchVersion: u8,
10784    }
10785    #[allow(
10786        non_camel_case_types,
10787        non_snake_case,
10788        clippy::pub_underscore_fields,
10789        clippy::style
10790    )]
10791    const _: () = {
10792        use alloy::sol_types as alloy_sol_types;
10793        {
10794            #[doc(hidden)]
10795            type UnderlyingSolTuple<'a> = ();
10796            #[doc(hidden)]
10797            type UnderlyingRustTuple<'a> = ();
10798            #[cfg(test)]
10799            #[allow(dead_code, unreachable_patterns)]
10800            fn _type_assertion(
10801                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10802            ) {
10803                match _t {
10804                    alloy_sol_types::private::AssertTypeEq::<
10805                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10806                    >(_) => {}
10807                }
10808            }
10809            #[automatically_derived]
10810            #[doc(hidden)]
10811            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
10812                fn from(value: getVersionCall) -> Self {
10813                    ()
10814                }
10815            }
10816            #[automatically_derived]
10817            #[doc(hidden)]
10818            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
10819                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10820                    Self
10821                }
10822            }
10823        }
10824        {
10825            #[doc(hidden)]
10826            type UnderlyingSolTuple<'a> = (
10827                alloy::sol_types::sol_data::Uint<8>,
10828                alloy::sol_types::sol_data::Uint<8>,
10829                alloy::sol_types::sol_data::Uint<8>,
10830            );
10831            #[doc(hidden)]
10832            type UnderlyingRustTuple<'a> = (u8, u8, u8);
10833            #[cfg(test)]
10834            #[allow(dead_code, unreachable_patterns)]
10835            fn _type_assertion(
10836                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10837            ) {
10838                match _t {
10839                    alloy_sol_types::private::AssertTypeEq::<
10840                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10841                    >(_) => {}
10842                }
10843            }
10844            #[automatically_derived]
10845            #[doc(hidden)]
10846            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
10847                fn from(value: getVersionReturn) -> Self {
10848                    (value.majorVersion, value.minorVersion, value.patchVersion)
10849                }
10850            }
10851            #[automatically_derived]
10852            #[doc(hidden)]
10853            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
10854                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10855                    Self {
10856                        majorVersion: tuple.0,
10857                        minorVersion: tuple.1,
10858                        patchVersion: tuple.2,
10859                    }
10860                }
10861            }
10862        }
10863        impl getVersionReturn {
10864            fn _tokenize(
10865                &self,
10866            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10867                (
10868                    <alloy::sol_types::sol_data::Uint<
10869                        8,
10870                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
10871                    <alloy::sol_types::sol_data::Uint<
10872                        8,
10873                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
10874                    <alloy::sol_types::sol_data::Uint<
10875                        8,
10876                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
10877                )
10878            }
10879        }
10880        #[automatically_derived]
10881        impl alloy_sol_types::SolCall for getVersionCall {
10882            type Parameters<'a> = ();
10883            type Token<'a> = <Self::Parameters<
10884                'a,
10885            > as alloy_sol_types::SolType>::Token<'a>;
10886            type Return = getVersionReturn;
10887            type ReturnTuple<'a> = (
10888                alloy::sol_types::sol_data::Uint<8>,
10889                alloy::sol_types::sol_data::Uint<8>,
10890                alloy::sol_types::sol_data::Uint<8>,
10891            );
10892            type ReturnToken<'a> = <Self::ReturnTuple<
10893                'a,
10894            > as alloy_sol_types::SolType>::Token<'a>;
10895            const SIGNATURE: &'static str = "getVersion()";
10896            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
10897            #[inline]
10898            fn new<'a>(
10899                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10900            ) -> Self {
10901                tuple.into()
10902            }
10903            #[inline]
10904            fn tokenize(&self) -> Self::Token<'_> {
10905                ()
10906            }
10907            #[inline]
10908            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10909                getVersionReturn::_tokenize(ret)
10910            }
10911            #[inline]
10912            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10913                <Self::ReturnTuple<
10914                    '_,
10915                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10916                    .map(Into::into)
10917            }
10918            #[inline]
10919            fn abi_decode_returns_validate(
10920                data: &[u8],
10921            ) -> alloy_sol_types::Result<Self::Return> {
10922                <Self::ReturnTuple<
10923                    '_,
10924                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10925                    .map(Into::into)
10926            }
10927        }
10928    };
10929    #[derive(serde::Serialize, serde::Deserialize)]
10930    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10931    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
10932```solidity
10933function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
10934```*/
10935    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10936    #[derive(Clone)]
10937    pub struct initializeCall {
10938        #[allow(missing_docs)]
10939        pub _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10940        #[allow(missing_docs)]
10941        pub _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10942        #[allow(missing_docs)]
10943        pub _stateHistoryRetentionPeriod: u32,
10944        #[allow(missing_docs)]
10945        pub owner: alloy::sol_types::private::Address,
10946    }
10947    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
10948    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10949    #[derive(Clone)]
10950    pub struct initializeReturn {}
10951    #[allow(
10952        non_camel_case_types,
10953        non_snake_case,
10954        clippy::pub_underscore_fields,
10955        clippy::style
10956    )]
10957    const _: () = {
10958        use alloy::sol_types as alloy_sol_types;
10959        {
10960            #[doc(hidden)]
10961            type UnderlyingSolTuple<'a> = (
10962                LightClient::LightClientState,
10963                LightClient::StakeTableState,
10964                alloy::sol_types::sol_data::Uint<32>,
10965                alloy::sol_types::sol_data::Address,
10966            );
10967            #[doc(hidden)]
10968            type UnderlyingRustTuple<'a> = (
10969                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10970                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10971                u32,
10972                alloy::sol_types::private::Address,
10973            );
10974            #[cfg(test)]
10975            #[allow(dead_code, unreachable_patterns)]
10976            fn _type_assertion(
10977                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10978            ) {
10979                match _t {
10980                    alloy_sol_types::private::AssertTypeEq::<
10981                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10982                    >(_) => {}
10983                }
10984            }
10985            #[automatically_derived]
10986            #[doc(hidden)]
10987            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
10988                fn from(value: initializeCall) -> Self {
10989                    (
10990                        value._genesis,
10991                        value._genesisStakeTableState,
10992                        value._stateHistoryRetentionPeriod,
10993                        value.owner,
10994                    )
10995                }
10996            }
10997            #[automatically_derived]
10998            #[doc(hidden)]
10999            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
11000                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11001                    Self {
11002                        _genesis: tuple.0,
11003                        _genesisStakeTableState: tuple.1,
11004                        _stateHistoryRetentionPeriod: tuple.2,
11005                        owner: tuple.3,
11006                    }
11007                }
11008            }
11009        }
11010        {
11011            #[doc(hidden)]
11012            type UnderlyingSolTuple<'a> = ();
11013            #[doc(hidden)]
11014            type UnderlyingRustTuple<'a> = ();
11015            #[cfg(test)]
11016            #[allow(dead_code, unreachable_patterns)]
11017            fn _type_assertion(
11018                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11019            ) {
11020                match _t {
11021                    alloy_sol_types::private::AssertTypeEq::<
11022                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11023                    >(_) => {}
11024                }
11025            }
11026            #[automatically_derived]
11027            #[doc(hidden)]
11028            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
11029                fn from(value: initializeReturn) -> Self {
11030                    ()
11031                }
11032            }
11033            #[automatically_derived]
11034            #[doc(hidden)]
11035            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
11036                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11037                    Self {}
11038                }
11039            }
11040        }
11041        impl initializeReturn {
11042            fn _tokenize(
11043                &self,
11044            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
11045                ()
11046            }
11047        }
11048        #[automatically_derived]
11049        impl alloy_sol_types::SolCall for initializeCall {
11050            type Parameters<'a> = (
11051                LightClient::LightClientState,
11052                LightClient::StakeTableState,
11053                alloy::sol_types::sol_data::Uint<32>,
11054                alloy::sol_types::sol_data::Address,
11055            );
11056            type Token<'a> = <Self::Parameters<
11057                'a,
11058            > as alloy_sol_types::SolType>::Token<'a>;
11059            type Return = initializeReturn;
11060            type ReturnTuple<'a> = ();
11061            type ReturnToken<'a> = <Self::ReturnTuple<
11062                'a,
11063            > as alloy_sol_types::SolType>::Token<'a>;
11064            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
11065            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
11066            #[inline]
11067            fn new<'a>(
11068                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11069            ) -> Self {
11070                tuple.into()
11071            }
11072            #[inline]
11073            fn tokenize(&self) -> Self::Token<'_> {
11074                (
11075                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
11076                        &self._genesis,
11077                    ),
11078                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
11079                        &self._genesisStakeTableState,
11080                    ),
11081                    <alloy::sol_types::sol_data::Uint<
11082                        32,
11083                    > as alloy_sol_types::SolType>::tokenize(
11084                        &self._stateHistoryRetentionPeriod,
11085                    ),
11086                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11087                        &self.owner,
11088                    ),
11089                )
11090            }
11091            #[inline]
11092            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11093                initializeReturn::_tokenize(ret)
11094            }
11095            #[inline]
11096            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11097                <Self::ReturnTuple<
11098                    '_,
11099                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11100                    .map(Into::into)
11101            }
11102            #[inline]
11103            fn abi_decode_returns_validate(
11104                data: &[u8],
11105            ) -> alloy_sol_types::Result<Self::Return> {
11106                <Self::ReturnTuple<
11107                    '_,
11108                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11109                    .map(Into::into)
11110            }
11111        }
11112    };
11113    #[derive(serde::Serialize, serde::Deserialize)]
11114    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11115    /**Function with signature `initializeV2(uint64,uint64)` and selector `0xb33bc491`.
11116```solidity
11117function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
11118```*/
11119    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11120    #[derive(Clone)]
11121    pub struct initializeV2Call {
11122        #[allow(missing_docs)]
11123        pub _blocksPerEpoch: u64,
11124        #[allow(missing_docs)]
11125        pub _epochStartBlock: u64,
11126    }
11127    ///Container type for the return parameters of the [`initializeV2(uint64,uint64)`](initializeV2Call) function.
11128    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11129    #[derive(Clone)]
11130    pub struct initializeV2Return {}
11131    #[allow(
11132        non_camel_case_types,
11133        non_snake_case,
11134        clippy::pub_underscore_fields,
11135        clippy::style
11136    )]
11137    const _: () = {
11138        use alloy::sol_types as alloy_sol_types;
11139        {
11140            #[doc(hidden)]
11141            type UnderlyingSolTuple<'a> = (
11142                alloy::sol_types::sol_data::Uint<64>,
11143                alloy::sol_types::sol_data::Uint<64>,
11144            );
11145            #[doc(hidden)]
11146            type UnderlyingRustTuple<'a> = (u64, u64);
11147            #[cfg(test)]
11148            #[allow(dead_code, unreachable_patterns)]
11149            fn _type_assertion(
11150                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11151            ) {
11152                match _t {
11153                    alloy_sol_types::private::AssertTypeEq::<
11154                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11155                    >(_) => {}
11156                }
11157            }
11158            #[automatically_derived]
11159            #[doc(hidden)]
11160            impl ::core::convert::From<initializeV2Call> for UnderlyingRustTuple<'_> {
11161                fn from(value: initializeV2Call) -> Self {
11162                    (value._blocksPerEpoch, value._epochStartBlock)
11163                }
11164            }
11165            #[automatically_derived]
11166            #[doc(hidden)]
11167            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Call {
11168                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11169                    Self {
11170                        _blocksPerEpoch: tuple.0,
11171                        _epochStartBlock: tuple.1,
11172                    }
11173                }
11174            }
11175        }
11176        {
11177            #[doc(hidden)]
11178            type UnderlyingSolTuple<'a> = ();
11179            #[doc(hidden)]
11180            type UnderlyingRustTuple<'a> = ();
11181            #[cfg(test)]
11182            #[allow(dead_code, unreachable_patterns)]
11183            fn _type_assertion(
11184                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11185            ) {
11186                match _t {
11187                    alloy_sol_types::private::AssertTypeEq::<
11188                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11189                    >(_) => {}
11190                }
11191            }
11192            #[automatically_derived]
11193            #[doc(hidden)]
11194            impl ::core::convert::From<initializeV2Return> for UnderlyingRustTuple<'_> {
11195                fn from(value: initializeV2Return) -> Self {
11196                    ()
11197                }
11198            }
11199            #[automatically_derived]
11200            #[doc(hidden)]
11201            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Return {
11202                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11203                    Self {}
11204                }
11205            }
11206        }
11207        impl initializeV2Return {
11208            fn _tokenize(
11209                &self,
11210            ) -> <initializeV2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
11211                ()
11212            }
11213        }
11214        #[automatically_derived]
11215        impl alloy_sol_types::SolCall for initializeV2Call {
11216            type Parameters<'a> = (
11217                alloy::sol_types::sol_data::Uint<64>,
11218                alloy::sol_types::sol_data::Uint<64>,
11219            );
11220            type Token<'a> = <Self::Parameters<
11221                'a,
11222            > as alloy_sol_types::SolType>::Token<'a>;
11223            type Return = initializeV2Return;
11224            type ReturnTuple<'a> = ();
11225            type ReturnToken<'a> = <Self::ReturnTuple<
11226                'a,
11227            > as alloy_sol_types::SolType>::Token<'a>;
11228            const SIGNATURE: &'static str = "initializeV2(uint64,uint64)";
11229            const SELECTOR: [u8; 4] = [179u8, 59u8, 196u8, 145u8];
11230            #[inline]
11231            fn new<'a>(
11232                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11233            ) -> Self {
11234                tuple.into()
11235            }
11236            #[inline]
11237            fn tokenize(&self) -> Self::Token<'_> {
11238                (
11239                    <alloy::sol_types::sol_data::Uint<
11240                        64,
11241                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
11242                    <alloy::sol_types::sol_data::Uint<
11243                        64,
11244                    > as alloy_sol_types::SolType>::tokenize(&self._epochStartBlock),
11245                )
11246            }
11247            #[inline]
11248            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11249                initializeV2Return::_tokenize(ret)
11250            }
11251            #[inline]
11252            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11253                <Self::ReturnTuple<
11254                    '_,
11255                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11256                    .map(Into::into)
11257            }
11258            #[inline]
11259            fn abi_decode_returns_validate(
11260                data: &[u8],
11261            ) -> alloy_sol_types::Result<Self::Return> {
11262                <Self::ReturnTuple<
11263                    '_,
11264                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11265                    .map(Into::into)
11266            }
11267        }
11268    };
11269    #[derive(serde::Serialize, serde::Deserialize)]
11270    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11271    /**Function with signature `initializeV3()` and selector `0x38e454b1`.
11272```solidity
11273function initializeV3() external;
11274```*/
11275    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11276    #[derive(Clone)]
11277    pub struct initializeV3Call;
11278    ///Container type for the return parameters of the [`initializeV3()`](initializeV3Call) function.
11279    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11280    #[derive(Clone)]
11281    pub struct initializeV3Return {}
11282    #[allow(
11283        non_camel_case_types,
11284        non_snake_case,
11285        clippy::pub_underscore_fields,
11286        clippy::style
11287    )]
11288    const _: () = {
11289        use alloy::sol_types as alloy_sol_types;
11290        {
11291            #[doc(hidden)]
11292            type UnderlyingSolTuple<'a> = ();
11293            #[doc(hidden)]
11294            type UnderlyingRustTuple<'a> = ();
11295            #[cfg(test)]
11296            #[allow(dead_code, unreachable_patterns)]
11297            fn _type_assertion(
11298                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11299            ) {
11300                match _t {
11301                    alloy_sol_types::private::AssertTypeEq::<
11302                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11303                    >(_) => {}
11304                }
11305            }
11306            #[automatically_derived]
11307            #[doc(hidden)]
11308            impl ::core::convert::From<initializeV3Call> for UnderlyingRustTuple<'_> {
11309                fn from(value: initializeV3Call) -> Self {
11310                    ()
11311                }
11312            }
11313            #[automatically_derived]
11314            #[doc(hidden)]
11315            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV3Call {
11316                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11317                    Self
11318                }
11319            }
11320        }
11321        {
11322            #[doc(hidden)]
11323            type UnderlyingSolTuple<'a> = ();
11324            #[doc(hidden)]
11325            type UnderlyingRustTuple<'a> = ();
11326            #[cfg(test)]
11327            #[allow(dead_code, unreachable_patterns)]
11328            fn _type_assertion(
11329                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11330            ) {
11331                match _t {
11332                    alloy_sol_types::private::AssertTypeEq::<
11333                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11334                    >(_) => {}
11335                }
11336            }
11337            #[automatically_derived]
11338            #[doc(hidden)]
11339            impl ::core::convert::From<initializeV3Return> for UnderlyingRustTuple<'_> {
11340                fn from(value: initializeV3Return) -> Self {
11341                    ()
11342                }
11343            }
11344            #[automatically_derived]
11345            #[doc(hidden)]
11346            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV3Return {
11347                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11348                    Self {}
11349                }
11350            }
11351        }
11352        impl initializeV3Return {
11353            fn _tokenize(
11354                &self,
11355            ) -> <initializeV3Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
11356                ()
11357            }
11358        }
11359        #[automatically_derived]
11360        impl alloy_sol_types::SolCall for initializeV3Call {
11361            type Parameters<'a> = ();
11362            type Token<'a> = <Self::Parameters<
11363                'a,
11364            > as alloy_sol_types::SolType>::Token<'a>;
11365            type Return = initializeV3Return;
11366            type ReturnTuple<'a> = ();
11367            type ReturnToken<'a> = <Self::ReturnTuple<
11368                'a,
11369            > as alloy_sol_types::SolType>::Token<'a>;
11370            const SIGNATURE: &'static str = "initializeV3()";
11371            const SELECTOR: [u8; 4] = [56u8, 228u8, 84u8, 177u8];
11372            #[inline]
11373            fn new<'a>(
11374                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11375            ) -> Self {
11376                tuple.into()
11377            }
11378            #[inline]
11379            fn tokenize(&self) -> Self::Token<'_> {
11380                ()
11381            }
11382            #[inline]
11383            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11384                initializeV3Return::_tokenize(ret)
11385            }
11386            #[inline]
11387            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11388                <Self::ReturnTuple<
11389                    '_,
11390                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11391                    .map(Into::into)
11392            }
11393            #[inline]
11394            fn abi_decode_returns_validate(
11395                data: &[u8],
11396            ) -> alloy_sol_types::Result<Self::Return> {
11397                <Self::ReturnTuple<
11398                    '_,
11399                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11400                    .map(Into::into)
11401            }
11402        }
11403    };
11404    #[derive(serde::Serialize, serde::Deserialize)]
11405    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11406    /**Function with signature `isEpochRoot(uint64)` and selector `0x25297427`.
11407```solidity
11408function isEpochRoot(uint64 blockHeight) external view returns (bool);
11409```*/
11410    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11411    #[derive(Clone)]
11412    pub struct isEpochRootCall {
11413        #[allow(missing_docs)]
11414        pub blockHeight: u64,
11415    }
11416    #[derive(serde::Serialize, serde::Deserialize)]
11417    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11418    ///Container type for the return parameters of the [`isEpochRoot(uint64)`](isEpochRootCall) function.
11419    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11420    #[derive(Clone)]
11421    pub struct isEpochRootReturn {
11422        #[allow(missing_docs)]
11423        pub _0: bool,
11424    }
11425    #[allow(
11426        non_camel_case_types,
11427        non_snake_case,
11428        clippy::pub_underscore_fields,
11429        clippy::style
11430    )]
11431    const _: () = {
11432        use alloy::sol_types as alloy_sol_types;
11433        {
11434            #[doc(hidden)]
11435            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11436            #[doc(hidden)]
11437            type UnderlyingRustTuple<'a> = (u64,);
11438            #[cfg(test)]
11439            #[allow(dead_code, unreachable_patterns)]
11440            fn _type_assertion(
11441                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11442            ) {
11443                match _t {
11444                    alloy_sol_types::private::AssertTypeEq::<
11445                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11446                    >(_) => {}
11447                }
11448            }
11449            #[automatically_derived]
11450            #[doc(hidden)]
11451            impl ::core::convert::From<isEpochRootCall> for UnderlyingRustTuple<'_> {
11452                fn from(value: isEpochRootCall) -> Self {
11453                    (value.blockHeight,)
11454                }
11455            }
11456            #[automatically_derived]
11457            #[doc(hidden)]
11458            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootCall {
11459                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11460                    Self { blockHeight: tuple.0 }
11461                }
11462            }
11463        }
11464        {
11465            #[doc(hidden)]
11466            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11467            #[doc(hidden)]
11468            type UnderlyingRustTuple<'a> = (bool,);
11469            #[cfg(test)]
11470            #[allow(dead_code, unreachable_patterns)]
11471            fn _type_assertion(
11472                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11473            ) {
11474                match _t {
11475                    alloy_sol_types::private::AssertTypeEq::<
11476                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11477                    >(_) => {}
11478                }
11479            }
11480            #[automatically_derived]
11481            #[doc(hidden)]
11482            impl ::core::convert::From<isEpochRootReturn> for UnderlyingRustTuple<'_> {
11483                fn from(value: isEpochRootReturn) -> Self {
11484                    (value._0,)
11485                }
11486            }
11487            #[automatically_derived]
11488            #[doc(hidden)]
11489            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootReturn {
11490                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11491                    Self { _0: tuple.0 }
11492                }
11493            }
11494        }
11495        #[automatically_derived]
11496        impl alloy_sol_types::SolCall for isEpochRootCall {
11497            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11498            type Token<'a> = <Self::Parameters<
11499                'a,
11500            > as alloy_sol_types::SolType>::Token<'a>;
11501            type Return = bool;
11502            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11503            type ReturnToken<'a> = <Self::ReturnTuple<
11504                'a,
11505            > as alloy_sol_types::SolType>::Token<'a>;
11506            const SIGNATURE: &'static str = "isEpochRoot(uint64)";
11507            const SELECTOR: [u8; 4] = [37u8, 41u8, 116u8, 39u8];
11508            #[inline]
11509            fn new<'a>(
11510                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11511            ) -> Self {
11512                tuple.into()
11513            }
11514            #[inline]
11515            fn tokenize(&self) -> Self::Token<'_> {
11516                (
11517                    <alloy::sol_types::sol_data::Uint<
11518                        64,
11519                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
11520                )
11521            }
11522            #[inline]
11523            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11524                (
11525                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11526                        ret,
11527                    ),
11528                )
11529            }
11530            #[inline]
11531            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11532                <Self::ReturnTuple<
11533                    '_,
11534                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11535                    .map(|r| {
11536                        let r: isEpochRootReturn = r.into();
11537                        r._0
11538                    })
11539            }
11540            #[inline]
11541            fn abi_decode_returns_validate(
11542                data: &[u8],
11543            ) -> alloy_sol_types::Result<Self::Return> {
11544                <Self::ReturnTuple<
11545                    '_,
11546                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11547                    .map(|r| {
11548                        let r: isEpochRootReturn = r.into();
11549                        r._0
11550                    })
11551            }
11552        }
11553    };
11554    #[derive(serde::Serialize, serde::Deserialize)]
11555    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11556    /**Function with signature `isGtEpochRoot(uint64)` and selector `0x300c89dd`.
11557```solidity
11558function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
11559```*/
11560    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11561    #[derive(Clone)]
11562    pub struct isGtEpochRootCall {
11563        #[allow(missing_docs)]
11564        pub blockHeight: u64,
11565    }
11566    #[derive(serde::Serialize, serde::Deserialize)]
11567    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11568    ///Container type for the return parameters of the [`isGtEpochRoot(uint64)`](isGtEpochRootCall) function.
11569    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11570    #[derive(Clone)]
11571    pub struct isGtEpochRootReturn {
11572        #[allow(missing_docs)]
11573        pub _0: bool,
11574    }
11575    #[allow(
11576        non_camel_case_types,
11577        non_snake_case,
11578        clippy::pub_underscore_fields,
11579        clippy::style
11580    )]
11581    const _: () = {
11582        use alloy::sol_types as alloy_sol_types;
11583        {
11584            #[doc(hidden)]
11585            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11586            #[doc(hidden)]
11587            type UnderlyingRustTuple<'a> = (u64,);
11588            #[cfg(test)]
11589            #[allow(dead_code, unreachable_patterns)]
11590            fn _type_assertion(
11591                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11592            ) {
11593                match _t {
11594                    alloy_sol_types::private::AssertTypeEq::<
11595                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11596                    >(_) => {}
11597                }
11598            }
11599            #[automatically_derived]
11600            #[doc(hidden)]
11601            impl ::core::convert::From<isGtEpochRootCall> for UnderlyingRustTuple<'_> {
11602                fn from(value: isGtEpochRootCall) -> Self {
11603                    (value.blockHeight,)
11604                }
11605            }
11606            #[automatically_derived]
11607            #[doc(hidden)]
11608            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootCall {
11609                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11610                    Self { blockHeight: tuple.0 }
11611                }
11612            }
11613        }
11614        {
11615            #[doc(hidden)]
11616            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11617            #[doc(hidden)]
11618            type UnderlyingRustTuple<'a> = (bool,);
11619            #[cfg(test)]
11620            #[allow(dead_code, unreachable_patterns)]
11621            fn _type_assertion(
11622                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11623            ) {
11624                match _t {
11625                    alloy_sol_types::private::AssertTypeEq::<
11626                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11627                    >(_) => {}
11628                }
11629            }
11630            #[automatically_derived]
11631            #[doc(hidden)]
11632            impl ::core::convert::From<isGtEpochRootReturn> for UnderlyingRustTuple<'_> {
11633                fn from(value: isGtEpochRootReturn) -> Self {
11634                    (value._0,)
11635                }
11636            }
11637            #[automatically_derived]
11638            #[doc(hidden)]
11639            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootReturn {
11640                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11641                    Self { _0: tuple.0 }
11642                }
11643            }
11644        }
11645        #[automatically_derived]
11646        impl alloy_sol_types::SolCall for isGtEpochRootCall {
11647            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11648            type Token<'a> = <Self::Parameters<
11649                'a,
11650            > as alloy_sol_types::SolType>::Token<'a>;
11651            type Return = bool;
11652            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11653            type ReturnToken<'a> = <Self::ReturnTuple<
11654                'a,
11655            > as alloy_sol_types::SolType>::Token<'a>;
11656            const SIGNATURE: &'static str = "isGtEpochRoot(uint64)";
11657            const SELECTOR: [u8; 4] = [48u8, 12u8, 137u8, 221u8];
11658            #[inline]
11659            fn new<'a>(
11660                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11661            ) -> Self {
11662                tuple.into()
11663            }
11664            #[inline]
11665            fn tokenize(&self) -> Self::Token<'_> {
11666                (
11667                    <alloy::sol_types::sol_data::Uint<
11668                        64,
11669                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
11670                )
11671            }
11672            #[inline]
11673            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11674                (
11675                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11676                        ret,
11677                    ),
11678                )
11679            }
11680            #[inline]
11681            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11682                <Self::ReturnTuple<
11683                    '_,
11684                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11685                    .map(|r| {
11686                        let r: isGtEpochRootReturn = r.into();
11687                        r._0
11688                    })
11689            }
11690            #[inline]
11691            fn abi_decode_returns_validate(
11692                data: &[u8],
11693            ) -> alloy_sol_types::Result<Self::Return> {
11694                <Self::ReturnTuple<
11695                    '_,
11696                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11697                    .map(|r| {
11698                        let r: isGtEpochRootReturn = r.into();
11699                        r._0
11700                    })
11701            }
11702        }
11703    };
11704    #[derive(serde::Serialize, serde::Deserialize)]
11705    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11706    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
11707```solidity
11708function isPermissionedProverEnabled() external view returns (bool);
11709```*/
11710    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11711    #[derive(Clone)]
11712    pub struct isPermissionedProverEnabledCall;
11713    #[derive(serde::Serialize, serde::Deserialize)]
11714    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11715    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
11716    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11717    #[derive(Clone)]
11718    pub struct isPermissionedProverEnabledReturn {
11719        #[allow(missing_docs)]
11720        pub _0: bool,
11721    }
11722    #[allow(
11723        non_camel_case_types,
11724        non_snake_case,
11725        clippy::pub_underscore_fields,
11726        clippy::style
11727    )]
11728    const _: () = {
11729        use alloy::sol_types as alloy_sol_types;
11730        {
11731            #[doc(hidden)]
11732            type UnderlyingSolTuple<'a> = ();
11733            #[doc(hidden)]
11734            type UnderlyingRustTuple<'a> = ();
11735            #[cfg(test)]
11736            #[allow(dead_code, unreachable_patterns)]
11737            fn _type_assertion(
11738                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11739            ) {
11740                match _t {
11741                    alloy_sol_types::private::AssertTypeEq::<
11742                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11743                    >(_) => {}
11744                }
11745            }
11746            #[automatically_derived]
11747            #[doc(hidden)]
11748            impl ::core::convert::From<isPermissionedProverEnabledCall>
11749            for UnderlyingRustTuple<'_> {
11750                fn from(value: isPermissionedProverEnabledCall) -> Self {
11751                    ()
11752                }
11753            }
11754            #[automatically_derived]
11755            #[doc(hidden)]
11756            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11757            for isPermissionedProverEnabledCall {
11758                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11759                    Self
11760                }
11761            }
11762        }
11763        {
11764            #[doc(hidden)]
11765            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11766            #[doc(hidden)]
11767            type UnderlyingRustTuple<'a> = (bool,);
11768            #[cfg(test)]
11769            #[allow(dead_code, unreachable_patterns)]
11770            fn _type_assertion(
11771                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11772            ) {
11773                match _t {
11774                    alloy_sol_types::private::AssertTypeEq::<
11775                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11776                    >(_) => {}
11777                }
11778            }
11779            #[automatically_derived]
11780            #[doc(hidden)]
11781            impl ::core::convert::From<isPermissionedProverEnabledReturn>
11782            for UnderlyingRustTuple<'_> {
11783                fn from(value: isPermissionedProverEnabledReturn) -> Self {
11784                    (value._0,)
11785                }
11786            }
11787            #[automatically_derived]
11788            #[doc(hidden)]
11789            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11790            for isPermissionedProverEnabledReturn {
11791                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11792                    Self { _0: tuple.0 }
11793                }
11794            }
11795        }
11796        #[automatically_derived]
11797        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
11798            type Parameters<'a> = ();
11799            type Token<'a> = <Self::Parameters<
11800                'a,
11801            > as alloy_sol_types::SolType>::Token<'a>;
11802            type Return = bool;
11803            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11804            type ReturnToken<'a> = <Self::ReturnTuple<
11805                'a,
11806            > as alloy_sol_types::SolType>::Token<'a>;
11807            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
11808            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
11809            #[inline]
11810            fn new<'a>(
11811                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11812            ) -> Self {
11813                tuple.into()
11814            }
11815            #[inline]
11816            fn tokenize(&self) -> Self::Token<'_> {
11817                ()
11818            }
11819            #[inline]
11820            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11821                (
11822                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11823                        ret,
11824                    ),
11825                )
11826            }
11827            #[inline]
11828            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11829                <Self::ReturnTuple<
11830                    '_,
11831                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11832                    .map(|r| {
11833                        let r: isPermissionedProverEnabledReturn = r.into();
11834                        r._0
11835                    })
11836            }
11837            #[inline]
11838            fn abi_decode_returns_validate(
11839                data: &[u8],
11840            ) -> alloy_sol_types::Result<Self::Return> {
11841                <Self::ReturnTuple<
11842                    '_,
11843                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11844                    .map(|r| {
11845                        let r: isPermissionedProverEnabledReturn = r.into();
11846                        r._0
11847                    })
11848            }
11849        }
11850    };
11851    #[derive(serde::Serialize, serde::Deserialize)]
11852    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11853    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
11854```solidity
11855function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 threshold) external view returns (bool);
11856```*/
11857    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11858    #[derive(Clone)]
11859    pub struct lagOverEscapeHatchThresholdCall {
11860        #[allow(missing_docs)]
11861        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
11862        #[allow(missing_docs)]
11863        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
11864    }
11865    #[derive(serde::Serialize, serde::Deserialize)]
11866    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11867    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
11868    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11869    #[derive(Clone)]
11870    pub struct lagOverEscapeHatchThresholdReturn {
11871        #[allow(missing_docs)]
11872        pub _0: bool,
11873    }
11874    #[allow(
11875        non_camel_case_types,
11876        non_snake_case,
11877        clippy::pub_underscore_fields,
11878        clippy::style
11879    )]
11880    const _: () = {
11881        use alloy::sol_types as alloy_sol_types;
11882        {
11883            #[doc(hidden)]
11884            type UnderlyingSolTuple<'a> = (
11885                alloy::sol_types::sol_data::Uint<256>,
11886                alloy::sol_types::sol_data::Uint<256>,
11887            );
11888            #[doc(hidden)]
11889            type UnderlyingRustTuple<'a> = (
11890                alloy::sol_types::private::primitives::aliases::U256,
11891                alloy::sol_types::private::primitives::aliases::U256,
11892            );
11893            #[cfg(test)]
11894            #[allow(dead_code, unreachable_patterns)]
11895            fn _type_assertion(
11896                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11897            ) {
11898                match _t {
11899                    alloy_sol_types::private::AssertTypeEq::<
11900                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11901                    >(_) => {}
11902                }
11903            }
11904            #[automatically_derived]
11905            #[doc(hidden)]
11906            impl ::core::convert::From<lagOverEscapeHatchThresholdCall>
11907            for UnderlyingRustTuple<'_> {
11908                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
11909                    (value.blockNumber, value.threshold)
11910                }
11911            }
11912            #[automatically_derived]
11913            #[doc(hidden)]
11914            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11915            for lagOverEscapeHatchThresholdCall {
11916                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11917                    Self {
11918                        blockNumber: tuple.0,
11919                        threshold: tuple.1,
11920                    }
11921                }
11922            }
11923        }
11924        {
11925            #[doc(hidden)]
11926            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11927            #[doc(hidden)]
11928            type UnderlyingRustTuple<'a> = (bool,);
11929            #[cfg(test)]
11930            #[allow(dead_code, unreachable_patterns)]
11931            fn _type_assertion(
11932                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11933            ) {
11934                match _t {
11935                    alloy_sol_types::private::AssertTypeEq::<
11936                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11937                    >(_) => {}
11938                }
11939            }
11940            #[automatically_derived]
11941            #[doc(hidden)]
11942            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn>
11943            for UnderlyingRustTuple<'_> {
11944                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
11945                    (value._0,)
11946                }
11947            }
11948            #[automatically_derived]
11949            #[doc(hidden)]
11950            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11951            for lagOverEscapeHatchThresholdReturn {
11952                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11953                    Self { _0: tuple.0 }
11954                }
11955            }
11956        }
11957        #[automatically_derived]
11958        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
11959            type Parameters<'a> = (
11960                alloy::sol_types::sol_data::Uint<256>,
11961                alloy::sol_types::sol_data::Uint<256>,
11962            );
11963            type Token<'a> = <Self::Parameters<
11964                'a,
11965            > as alloy_sol_types::SolType>::Token<'a>;
11966            type Return = bool;
11967            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11968            type ReturnToken<'a> = <Self::ReturnTuple<
11969                'a,
11970            > as alloy_sol_types::SolType>::Token<'a>;
11971            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
11972            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
11973            #[inline]
11974            fn new<'a>(
11975                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11976            ) -> Self {
11977                tuple.into()
11978            }
11979            #[inline]
11980            fn tokenize(&self) -> Self::Token<'_> {
11981                (
11982                    <alloy::sol_types::sol_data::Uint<
11983                        256,
11984                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
11985                    <alloy::sol_types::sol_data::Uint<
11986                        256,
11987                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
11988                )
11989            }
11990            #[inline]
11991            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11992                (
11993                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11994                        ret,
11995                    ),
11996                )
11997            }
11998            #[inline]
11999            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12000                <Self::ReturnTuple<
12001                    '_,
12002                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12003                    .map(|r| {
12004                        let r: lagOverEscapeHatchThresholdReturn = r.into();
12005                        r._0
12006                    })
12007            }
12008            #[inline]
12009            fn abi_decode_returns_validate(
12010                data: &[u8],
12011            ) -> alloy_sol_types::Result<Self::Return> {
12012                <Self::ReturnTuple<
12013                    '_,
12014                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12015                    .map(|r| {
12016                        let r: lagOverEscapeHatchThresholdReturn = r.into();
12017                        r._0
12018                    })
12019            }
12020        }
12021    };
12022    #[derive(serde::Serialize, serde::Deserialize)]
12023    #[derive()]
12024    /**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`.
12025```solidity
12026function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
12027```*/
12028    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12029    #[derive(Clone)]
12030    pub struct newFinalizedState_0Call {
12031        #[allow(missing_docs)]
12032        pub _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12033        #[allow(missing_docs)]
12034        pub _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
12035    }
12036    ///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.
12037    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12038    #[derive(Clone)]
12039    pub struct newFinalizedState_0Return {}
12040    #[allow(
12041        non_camel_case_types,
12042        non_snake_case,
12043        clippy::pub_underscore_fields,
12044        clippy::style
12045    )]
12046    const _: () = {
12047        use alloy::sol_types as alloy_sol_types;
12048        {
12049            #[doc(hidden)]
12050            type UnderlyingSolTuple<'a> = (
12051                LightClient::LightClientState,
12052                IPlonkVerifier::PlonkProof,
12053            );
12054            #[doc(hidden)]
12055            type UnderlyingRustTuple<'a> = (
12056                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12057                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
12058            );
12059            #[cfg(test)]
12060            #[allow(dead_code, unreachable_patterns)]
12061            fn _type_assertion(
12062                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12063            ) {
12064                match _t {
12065                    alloy_sol_types::private::AssertTypeEq::<
12066                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12067                    >(_) => {}
12068                }
12069            }
12070            #[automatically_derived]
12071            #[doc(hidden)]
12072            impl ::core::convert::From<newFinalizedState_0Call>
12073            for UnderlyingRustTuple<'_> {
12074                fn from(value: newFinalizedState_0Call) -> Self {
12075                    (value._0, value._1)
12076                }
12077            }
12078            #[automatically_derived]
12079            #[doc(hidden)]
12080            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12081            for newFinalizedState_0Call {
12082                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12083                    Self { _0: tuple.0, _1: tuple.1 }
12084                }
12085            }
12086        }
12087        {
12088            #[doc(hidden)]
12089            type UnderlyingSolTuple<'a> = ();
12090            #[doc(hidden)]
12091            type UnderlyingRustTuple<'a> = ();
12092            #[cfg(test)]
12093            #[allow(dead_code, unreachable_patterns)]
12094            fn _type_assertion(
12095                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12096            ) {
12097                match _t {
12098                    alloy_sol_types::private::AssertTypeEq::<
12099                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12100                    >(_) => {}
12101                }
12102            }
12103            #[automatically_derived]
12104            #[doc(hidden)]
12105            impl ::core::convert::From<newFinalizedState_0Return>
12106            for UnderlyingRustTuple<'_> {
12107                fn from(value: newFinalizedState_0Return) -> Self {
12108                    ()
12109                }
12110            }
12111            #[automatically_derived]
12112            #[doc(hidden)]
12113            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12114            for newFinalizedState_0Return {
12115                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12116                    Self {}
12117                }
12118            }
12119        }
12120        impl newFinalizedState_0Return {
12121            fn _tokenize(
12122                &self,
12123            ) -> <newFinalizedState_0Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
12124                ()
12125            }
12126        }
12127        #[automatically_derived]
12128        impl alloy_sol_types::SolCall for newFinalizedState_0Call {
12129            type Parameters<'a> = (
12130                LightClient::LightClientState,
12131                IPlonkVerifier::PlonkProof,
12132            );
12133            type Token<'a> = <Self::Parameters<
12134                'a,
12135            > as alloy_sol_types::SolType>::Token<'a>;
12136            type Return = newFinalizedState_0Return;
12137            type ReturnTuple<'a> = ();
12138            type ReturnToken<'a> = <Self::ReturnTuple<
12139                'a,
12140            > as alloy_sol_types::SolType>::Token<'a>;
12141            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))";
12142            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
12143            #[inline]
12144            fn new<'a>(
12145                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12146            ) -> Self {
12147                tuple.into()
12148            }
12149            #[inline]
12150            fn tokenize(&self) -> Self::Token<'_> {
12151                (
12152                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
12153                        &self._0,
12154                    ),
12155                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
12156                        &self._1,
12157                    ),
12158                )
12159            }
12160            #[inline]
12161            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12162                newFinalizedState_0Return::_tokenize(ret)
12163            }
12164            #[inline]
12165            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12166                <Self::ReturnTuple<
12167                    '_,
12168                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12169                    .map(Into::into)
12170            }
12171            #[inline]
12172            fn abi_decode_returns_validate(
12173                data: &[u8],
12174            ) -> alloy_sol_types::Result<Self::Return> {
12175                <Self::ReturnTuple<
12176                    '_,
12177                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12178                    .map(Into::into)
12179            }
12180        }
12181    };
12182    #[derive(serde::Serialize, serde::Deserialize)]
12183    #[derive()]
12184    /**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`.
12185```solidity
12186function newFinalizedState(LightClient.LightClientState memory, LightClient.StakeTableState memory, IPlonkVerifier.PlonkProof memory) external pure;
12187```*/
12188    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12189    #[derive(Clone)]
12190    pub struct newFinalizedState_1Call {
12191        #[allow(missing_docs)]
12192        pub _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12193        #[allow(missing_docs)]
12194        pub _1: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
12195        #[allow(missing_docs)]
12196        pub _2: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
12197    }
12198    ///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.
12199    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12200    #[derive(Clone)]
12201    pub struct newFinalizedState_1Return {}
12202    #[allow(
12203        non_camel_case_types,
12204        non_snake_case,
12205        clippy::pub_underscore_fields,
12206        clippy::style
12207    )]
12208    const _: () = {
12209        use alloy::sol_types as alloy_sol_types;
12210        {
12211            #[doc(hidden)]
12212            type UnderlyingSolTuple<'a> = (
12213                LightClient::LightClientState,
12214                LightClient::StakeTableState,
12215                IPlonkVerifier::PlonkProof,
12216            );
12217            #[doc(hidden)]
12218            type UnderlyingRustTuple<'a> = (
12219                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12220                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
12221                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
12222            );
12223            #[cfg(test)]
12224            #[allow(dead_code, unreachable_patterns)]
12225            fn _type_assertion(
12226                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12227            ) {
12228                match _t {
12229                    alloy_sol_types::private::AssertTypeEq::<
12230                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12231                    >(_) => {}
12232                }
12233            }
12234            #[automatically_derived]
12235            #[doc(hidden)]
12236            impl ::core::convert::From<newFinalizedState_1Call>
12237            for UnderlyingRustTuple<'_> {
12238                fn from(value: newFinalizedState_1Call) -> Self {
12239                    (value._0, value._1, value._2)
12240                }
12241            }
12242            #[automatically_derived]
12243            #[doc(hidden)]
12244            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12245            for newFinalizedState_1Call {
12246                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12247                    Self {
12248                        _0: tuple.0,
12249                        _1: tuple.1,
12250                        _2: tuple.2,
12251                    }
12252                }
12253            }
12254        }
12255        {
12256            #[doc(hidden)]
12257            type UnderlyingSolTuple<'a> = ();
12258            #[doc(hidden)]
12259            type UnderlyingRustTuple<'a> = ();
12260            #[cfg(test)]
12261            #[allow(dead_code, unreachable_patterns)]
12262            fn _type_assertion(
12263                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12264            ) {
12265                match _t {
12266                    alloy_sol_types::private::AssertTypeEq::<
12267                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12268                    >(_) => {}
12269                }
12270            }
12271            #[automatically_derived]
12272            #[doc(hidden)]
12273            impl ::core::convert::From<newFinalizedState_1Return>
12274            for UnderlyingRustTuple<'_> {
12275                fn from(value: newFinalizedState_1Return) -> Self {
12276                    ()
12277                }
12278            }
12279            #[automatically_derived]
12280            #[doc(hidden)]
12281            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12282            for newFinalizedState_1Return {
12283                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12284                    Self {}
12285                }
12286            }
12287        }
12288        impl newFinalizedState_1Return {
12289            fn _tokenize(
12290                &self,
12291            ) -> <newFinalizedState_1Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
12292                ()
12293            }
12294        }
12295        #[automatically_derived]
12296        impl alloy_sol_types::SolCall for newFinalizedState_1Call {
12297            type Parameters<'a> = (
12298                LightClient::LightClientState,
12299                LightClient::StakeTableState,
12300                IPlonkVerifier::PlonkProof,
12301            );
12302            type Token<'a> = <Self::Parameters<
12303                'a,
12304            > as alloy_sol_types::SolType>::Token<'a>;
12305            type Return = newFinalizedState_1Return;
12306            type ReturnTuple<'a> = ();
12307            type ReturnToken<'a> = <Self::ReturnTuple<
12308                'a,
12309            > as alloy_sol_types::SolType>::Token<'a>;
12310            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))";
12311            const SELECTOR: [u8; 4] = [117u8, 124u8, 55u8, 173u8];
12312            #[inline]
12313            fn new<'a>(
12314                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12315            ) -> Self {
12316                tuple.into()
12317            }
12318            #[inline]
12319            fn tokenize(&self) -> Self::Token<'_> {
12320                (
12321                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
12322                        &self._0,
12323                    ),
12324                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
12325                        &self._1,
12326                    ),
12327                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
12328                        &self._2,
12329                    ),
12330                )
12331            }
12332            #[inline]
12333            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12334                newFinalizedState_1Return::_tokenize(ret)
12335            }
12336            #[inline]
12337            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12338                <Self::ReturnTuple<
12339                    '_,
12340                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12341                    .map(Into::into)
12342            }
12343            #[inline]
12344            fn abi_decode_returns_validate(
12345                data: &[u8],
12346            ) -> alloy_sol_types::Result<Self::Return> {
12347                <Self::ReturnTuple<
12348                    '_,
12349                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12350                    .map(Into::into)
12351            }
12352        }
12353    };
12354    #[derive(serde::Serialize, serde::Deserialize)]
12355    #[derive()]
12356    /**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`.
12357```solidity
12358function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, uint256 newAuthRoot, IPlonkVerifier.PlonkProof memory proof) external;
12359```*/
12360    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12361    #[derive(Clone)]
12362    pub struct newFinalizedState_2Call {
12363        #[allow(missing_docs)]
12364        pub newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12365        #[allow(missing_docs)]
12366        pub nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
12367        #[allow(missing_docs)]
12368        pub newAuthRoot: alloy::sol_types::private::primitives::aliases::U256,
12369        #[allow(missing_docs)]
12370        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
12371    }
12372    ///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.
12373    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12374    #[derive(Clone)]
12375    pub struct newFinalizedState_2Return {}
12376    #[allow(
12377        non_camel_case_types,
12378        non_snake_case,
12379        clippy::pub_underscore_fields,
12380        clippy::style
12381    )]
12382    const _: () = {
12383        use alloy::sol_types as alloy_sol_types;
12384        {
12385            #[doc(hidden)]
12386            type UnderlyingSolTuple<'a> = (
12387                LightClient::LightClientState,
12388                LightClient::StakeTableState,
12389                alloy::sol_types::sol_data::Uint<256>,
12390                IPlonkVerifier::PlonkProof,
12391            );
12392            #[doc(hidden)]
12393            type UnderlyingRustTuple<'a> = (
12394                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12395                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
12396                alloy::sol_types::private::primitives::aliases::U256,
12397                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
12398            );
12399            #[cfg(test)]
12400            #[allow(dead_code, unreachable_patterns)]
12401            fn _type_assertion(
12402                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12403            ) {
12404                match _t {
12405                    alloy_sol_types::private::AssertTypeEq::<
12406                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12407                    >(_) => {}
12408                }
12409            }
12410            #[automatically_derived]
12411            #[doc(hidden)]
12412            impl ::core::convert::From<newFinalizedState_2Call>
12413            for UnderlyingRustTuple<'_> {
12414                fn from(value: newFinalizedState_2Call) -> Self {
12415                    (
12416                        value.newState,
12417                        value.nextStakeTable,
12418                        value.newAuthRoot,
12419                        value.proof,
12420                    )
12421                }
12422            }
12423            #[automatically_derived]
12424            #[doc(hidden)]
12425            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12426            for newFinalizedState_2Call {
12427                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12428                    Self {
12429                        newState: tuple.0,
12430                        nextStakeTable: tuple.1,
12431                        newAuthRoot: tuple.2,
12432                        proof: tuple.3,
12433                    }
12434                }
12435            }
12436        }
12437        {
12438            #[doc(hidden)]
12439            type UnderlyingSolTuple<'a> = ();
12440            #[doc(hidden)]
12441            type UnderlyingRustTuple<'a> = ();
12442            #[cfg(test)]
12443            #[allow(dead_code, unreachable_patterns)]
12444            fn _type_assertion(
12445                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12446            ) {
12447                match _t {
12448                    alloy_sol_types::private::AssertTypeEq::<
12449                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12450                    >(_) => {}
12451                }
12452            }
12453            #[automatically_derived]
12454            #[doc(hidden)]
12455            impl ::core::convert::From<newFinalizedState_2Return>
12456            for UnderlyingRustTuple<'_> {
12457                fn from(value: newFinalizedState_2Return) -> Self {
12458                    ()
12459                }
12460            }
12461            #[automatically_derived]
12462            #[doc(hidden)]
12463            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12464            for newFinalizedState_2Return {
12465                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12466                    Self {}
12467                }
12468            }
12469        }
12470        impl newFinalizedState_2Return {
12471            fn _tokenize(
12472                &self,
12473            ) -> <newFinalizedState_2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
12474                ()
12475            }
12476        }
12477        #[automatically_derived]
12478        impl alloy_sol_types::SolCall for newFinalizedState_2Call {
12479            type Parameters<'a> = (
12480                LightClient::LightClientState,
12481                LightClient::StakeTableState,
12482                alloy::sol_types::sol_data::Uint<256>,
12483                IPlonkVerifier::PlonkProof,
12484            );
12485            type Token<'a> = <Self::Parameters<
12486                'a,
12487            > as alloy_sol_types::SolType>::Token<'a>;
12488            type Return = newFinalizedState_2Return;
12489            type ReturnTuple<'a> = ();
12490            type ReturnToken<'a> = <Self::ReturnTuple<
12491                'a,
12492            > as alloy_sol_types::SolType>::Token<'a>;
12493            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))";
12494            const SELECTOR: [u8; 4] = [170u8, 189u8, 93u8, 179u8];
12495            #[inline]
12496            fn new<'a>(
12497                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12498            ) -> Self {
12499                tuple.into()
12500            }
12501            #[inline]
12502            fn tokenize(&self) -> Self::Token<'_> {
12503                (
12504                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
12505                        &self.newState,
12506                    ),
12507                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
12508                        &self.nextStakeTable,
12509                    ),
12510                    <alloy::sol_types::sol_data::Uint<
12511                        256,
12512                    > as alloy_sol_types::SolType>::tokenize(&self.newAuthRoot),
12513                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
12514                        &self.proof,
12515                    ),
12516                )
12517            }
12518            #[inline]
12519            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12520                newFinalizedState_2Return::_tokenize(ret)
12521            }
12522            #[inline]
12523            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12524                <Self::ReturnTuple<
12525                    '_,
12526                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12527                    .map(Into::into)
12528            }
12529            #[inline]
12530            fn abi_decode_returns_validate(
12531                data: &[u8],
12532            ) -> alloy_sol_types::Result<Self::Return> {
12533                <Self::ReturnTuple<
12534                    '_,
12535                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12536                    .map(Into::into)
12537            }
12538        }
12539    };
12540    #[derive(serde::Serialize, serde::Deserialize)]
12541    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12542    /**Function with signature `owner()` and selector `0x8da5cb5b`.
12543```solidity
12544function owner() external view returns (address);
12545```*/
12546    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12547    #[derive(Clone)]
12548    pub struct ownerCall;
12549    #[derive(serde::Serialize, serde::Deserialize)]
12550    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12551    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
12552    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12553    #[derive(Clone)]
12554    pub struct ownerReturn {
12555        #[allow(missing_docs)]
12556        pub _0: alloy::sol_types::private::Address,
12557    }
12558    #[allow(
12559        non_camel_case_types,
12560        non_snake_case,
12561        clippy::pub_underscore_fields,
12562        clippy::style
12563    )]
12564    const _: () = {
12565        use alloy::sol_types as alloy_sol_types;
12566        {
12567            #[doc(hidden)]
12568            type UnderlyingSolTuple<'a> = ();
12569            #[doc(hidden)]
12570            type UnderlyingRustTuple<'a> = ();
12571            #[cfg(test)]
12572            #[allow(dead_code, unreachable_patterns)]
12573            fn _type_assertion(
12574                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12575            ) {
12576                match _t {
12577                    alloy_sol_types::private::AssertTypeEq::<
12578                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12579                    >(_) => {}
12580                }
12581            }
12582            #[automatically_derived]
12583            #[doc(hidden)]
12584            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
12585                fn from(value: ownerCall) -> Self {
12586                    ()
12587                }
12588            }
12589            #[automatically_derived]
12590            #[doc(hidden)]
12591            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
12592                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12593                    Self
12594                }
12595            }
12596        }
12597        {
12598            #[doc(hidden)]
12599            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12600            #[doc(hidden)]
12601            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12602            #[cfg(test)]
12603            #[allow(dead_code, unreachable_patterns)]
12604            fn _type_assertion(
12605                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12606            ) {
12607                match _t {
12608                    alloy_sol_types::private::AssertTypeEq::<
12609                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12610                    >(_) => {}
12611                }
12612            }
12613            #[automatically_derived]
12614            #[doc(hidden)]
12615            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
12616                fn from(value: ownerReturn) -> Self {
12617                    (value._0,)
12618                }
12619            }
12620            #[automatically_derived]
12621            #[doc(hidden)]
12622            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
12623                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12624                    Self { _0: tuple.0 }
12625                }
12626            }
12627        }
12628        #[automatically_derived]
12629        impl alloy_sol_types::SolCall for ownerCall {
12630            type Parameters<'a> = ();
12631            type Token<'a> = <Self::Parameters<
12632                'a,
12633            > as alloy_sol_types::SolType>::Token<'a>;
12634            type Return = alloy::sol_types::private::Address;
12635            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
12636            type ReturnToken<'a> = <Self::ReturnTuple<
12637                'a,
12638            > as alloy_sol_types::SolType>::Token<'a>;
12639            const SIGNATURE: &'static str = "owner()";
12640            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
12641            #[inline]
12642            fn new<'a>(
12643                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12644            ) -> Self {
12645                tuple.into()
12646            }
12647            #[inline]
12648            fn tokenize(&self) -> Self::Token<'_> {
12649                ()
12650            }
12651            #[inline]
12652            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12653                (
12654                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12655                        ret,
12656                    ),
12657                )
12658            }
12659            #[inline]
12660            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12661                <Self::ReturnTuple<
12662                    '_,
12663                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12664                    .map(|r| {
12665                        let r: ownerReturn = r.into();
12666                        r._0
12667                    })
12668            }
12669            #[inline]
12670            fn abi_decode_returns_validate(
12671                data: &[u8],
12672            ) -> alloy_sol_types::Result<Self::Return> {
12673                <Self::ReturnTuple<
12674                    '_,
12675                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12676                    .map(|r| {
12677                        let r: ownerReturn = r.into();
12678                        r._0
12679                    })
12680            }
12681        }
12682    };
12683    #[derive(serde::Serialize, serde::Deserialize)]
12684    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12685    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
12686```solidity
12687function permissionedProver() external view returns (address);
12688```*/
12689    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12690    #[derive(Clone)]
12691    pub struct permissionedProverCall;
12692    #[derive(serde::Serialize, serde::Deserialize)]
12693    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12694    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
12695    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12696    #[derive(Clone)]
12697    pub struct permissionedProverReturn {
12698        #[allow(missing_docs)]
12699        pub _0: alloy::sol_types::private::Address,
12700    }
12701    #[allow(
12702        non_camel_case_types,
12703        non_snake_case,
12704        clippy::pub_underscore_fields,
12705        clippy::style
12706    )]
12707    const _: () = {
12708        use alloy::sol_types as alloy_sol_types;
12709        {
12710            #[doc(hidden)]
12711            type UnderlyingSolTuple<'a> = ();
12712            #[doc(hidden)]
12713            type UnderlyingRustTuple<'a> = ();
12714            #[cfg(test)]
12715            #[allow(dead_code, unreachable_patterns)]
12716            fn _type_assertion(
12717                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12718            ) {
12719                match _t {
12720                    alloy_sol_types::private::AssertTypeEq::<
12721                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12722                    >(_) => {}
12723                }
12724            }
12725            #[automatically_derived]
12726            #[doc(hidden)]
12727            impl ::core::convert::From<permissionedProverCall>
12728            for UnderlyingRustTuple<'_> {
12729                fn from(value: permissionedProverCall) -> Self {
12730                    ()
12731                }
12732            }
12733            #[automatically_derived]
12734            #[doc(hidden)]
12735            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12736            for permissionedProverCall {
12737                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12738                    Self
12739                }
12740            }
12741        }
12742        {
12743            #[doc(hidden)]
12744            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12745            #[doc(hidden)]
12746            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12747            #[cfg(test)]
12748            #[allow(dead_code, unreachable_patterns)]
12749            fn _type_assertion(
12750                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12751            ) {
12752                match _t {
12753                    alloy_sol_types::private::AssertTypeEq::<
12754                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12755                    >(_) => {}
12756                }
12757            }
12758            #[automatically_derived]
12759            #[doc(hidden)]
12760            impl ::core::convert::From<permissionedProverReturn>
12761            for UnderlyingRustTuple<'_> {
12762                fn from(value: permissionedProverReturn) -> Self {
12763                    (value._0,)
12764                }
12765            }
12766            #[automatically_derived]
12767            #[doc(hidden)]
12768            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12769            for permissionedProverReturn {
12770                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12771                    Self { _0: tuple.0 }
12772                }
12773            }
12774        }
12775        #[automatically_derived]
12776        impl alloy_sol_types::SolCall for permissionedProverCall {
12777            type Parameters<'a> = ();
12778            type Token<'a> = <Self::Parameters<
12779                'a,
12780            > as alloy_sol_types::SolType>::Token<'a>;
12781            type Return = alloy::sol_types::private::Address;
12782            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
12783            type ReturnToken<'a> = <Self::ReturnTuple<
12784                'a,
12785            > as alloy_sol_types::SolType>::Token<'a>;
12786            const SIGNATURE: &'static str = "permissionedProver()";
12787            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
12788            #[inline]
12789            fn new<'a>(
12790                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12791            ) -> Self {
12792                tuple.into()
12793            }
12794            #[inline]
12795            fn tokenize(&self) -> Self::Token<'_> {
12796                ()
12797            }
12798            #[inline]
12799            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12800                (
12801                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12802                        ret,
12803                    ),
12804                )
12805            }
12806            #[inline]
12807            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12808                <Self::ReturnTuple<
12809                    '_,
12810                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12811                    .map(|r| {
12812                        let r: permissionedProverReturn = r.into();
12813                        r._0
12814                    })
12815            }
12816            #[inline]
12817            fn abi_decode_returns_validate(
12818                data: &[u8],
12819            ) -> alloy_sol_types::Result<Self::Return> {
12820                <Self::ReturnTuple<
12821                    '_,
12822                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12823                    .map(|r| {
12824                        let r: permissionedProverReturn = r.into();
12825                        r._0
12826                    })
12827            }
12828        }
12829    };
12830    #[derive(serde::Serialize, serde::Deserialize)]
12831    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12832    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
12833```solidity
12834function proxiableUUID() external view returns (bytes32);
12835```*/
12836    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12837    #[derive(Clone)]
12838    pub struct proxiableUUIDCall;
12839    #[derive(serde::Serialize, serde::Deserialize)]
12840    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12841    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
12842    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12843    #[derive(Clone)]
12844    pub struct proxiableUUIDReturn {
12845        #[allow(missing_docs)]
12846        pub _0: alloy::sol_types::private::FixedBytes<32>,
12847    }
12848    #[allow(
12849        non_camel_case_types,
12850        non_snake_case,
12851        clippy::pub_underscore_fields,
12852        clippy::style
12853    )]
12854    const _: () = {
12855        use alloy::sol_types as alloy_sol_types;
12856        {
12857            #[doc(hidden)]
12858            type UnderlyingSolTuple<'a> = ();
12859            #[doc(hidden)]
12860            type UnderlyingRustTuple<'a> = ();
12861            #[cfg(test)]
12862            #[allow(dead_code, unreachable_patterns)]
12863            fn _type_assertion(
12864                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12865            ) {
12866                match _t {
12867                    alloy_sol_types::private::AssertTypeEq::<
12868                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12869                    >(_) => {}
12870                }
12871            }
12872            #[automatically_derived]
12873            #[doc(hidden)]
12874            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
12875                fn from(value: proxiableUUIDCall) -> Self {
12876                    ()
12877                }
12878            }
12879            #[automatically_derived]
12880            #[doc(hidden)]
12881            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
12882                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12883                    Self
12884                }
12885            }
12886        }
12887        {
12888            #[doc(hidden)]
12889            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12890            #[doc(hidden)]
12891            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
12892            #[cfg(test)]
12893            #[allow(dead_code, unreachable_patterns)]
12894            fn _type_assertion(
12895                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12896            ) {
12897                match _t {
12898                    alloy_sol_types::private::AssertTypeEq::<
12899                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12900                    >(_) => {}
12901                }
12902            }
12903            #[automatically_derived]
12904            #[doc(hidden)]
12905            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
12906                fn from(value: proxiableUUIDReturn) -> Self {
12907                    (value._0,)
12908                }
12909            }
12910            #[automatically_derived]
12911            #[doc(hidden)]
12912            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
12913                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12914                    Self { _0: tuple.0 }
12915                }
12916            }
12917        }
12918        #[automatically_derived]
12919        impl alloy_sol_types::SolCall for proxiableUUIDCall {
12920            type Parameters<'a> = ();
12921            type Token<'a> = <Self::Parameters<
12922                'a,
12923            > as alloy_sol_types::SolType>::Token<'a>;
12924            type Return = alloy::sol_types::private::FixedBytes<32>;
12925            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12926            type ReturnToken<'a> = <Self::ReturnTuple<
12927                'a,
12928            > as alloy_sol_types::SolType>::Token<'a>;
12929            const SIGNATURE: &'static str = "proxiableUUID()";
12930            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
12931            #[inline]
12932            fn new<'a>(
12933                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12934            ) -> Self {
12935                tuple.into()
12936            }
12937            #[inline]
12938            fn tokenize(&self) -> Self::Token<'_> {
12939                ()
12940            }
12941            #[inline]
12942            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12943                (
12944                    <alloy::sol_types::sol_data::FixedBytes<
12945                        32,
12946                    > as alloy_sol_types::SolType>::tokenize(ret),
12947                )
12948            }
12949            #[inline]
12950            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12951                <Self::ReturnTuple<
12952                    '_,
12953                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12954                    .map(|r| {
12955                        let r: proxiableUUIDReturn = r.into();
12956                        r._0
12957                    })
12958            }
12959            #[inline]
12960            fn abi_decode_returns_validate(
12961                data: &[u8],
12962            ) -> alloy_sol_types::Result<Self::Return> {
12963                <Self::ReturnTuple<
12964                    '_,
12965                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12966                    .map(|r| {
12967                        let r: proxiableUUIDReturn = r.into();
12968                        r._0
12969                    })
12970            }
12971        }
12972    };
12973    #[derive(serde::Serialize, serde::Deserialize)]
12974    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12975    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
12976```solidity
12977function renounceOwnership() external;
12978```*/
12979    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12980    #[derive(Clone)]
12981    pub struct renounceOwnershipCall;
12982    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
12983    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12984    #[derive(Clone)]
12985    pub struct renounceOwnershipReturn {}
12986    #[allow(
12987        non_camel_case_types,
12988        non_snake_case,
12989        clippy::pub_underscore_fields,
12990        clippy::style
12991    )]
12992    const _: () = {
12993        use alloy::sol_types as alloy_sol_types;
12994        {
12995            #[doc(hidden)]
12996            type UnderlyingSolTuple<'a> = ();
12997            #[doc(hidden)]
12998            type UnderlyingRustTuple<'a> = ();
12999            #[cfg(test)]
13000            #[allow(dead_code, unreachable_patterns)]
13001            fn _type_assertion(
13002                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13003            ) {
13004                match _t {
13005                    alloy_sol_types::private::AssertTypeEq::<
13006                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13007                    >(_) => {}
13008                }
13009            }
13010            #[automatically_derived]
13011            #[doc(hidden)]
13012            impl ::core::convert::From<renounceOwnershipCall>
13013            for UnderlyingRustTuple<'_> {
13014                fn from(value: renounceOwnershipCall) -> Self {
13015                    ()
13016                }
13017            }
13018            #[automatically_derived]
13019            #[doc(hidden)]
13020            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13021            for renounceOwnershipCall {
13022                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13023                    Self
13024                }
13025            }
13026        }
13027        {
13028            #[doc(hidden)]
13029            type UnderlyingSolTuple<'a> = ();
13030            #[doc(hidden)]
13031            type UnderlyingRustTuple<'a> = ();
13032            #[cfg(test)]
13033            #[allow(dead_code, unreachable_patterns)]
13034            fn _type_assertion(
13035                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13036            ) {
13037                match _t {
13038                    alloy_sol_types::private::AssertTypeEq::<
13039                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13040                    >(_) => {}
13041                }
13042            }
13043            #[automatically_derived]
13044            #[doc(hidden)]
13045            impl ::core::convert::From<renounceOwnershipReturn>
13046            for UnderlyingRustTuple<'_> {
13047                fn from(value: renounceOwnershipReturn) -> Self {
13048                    ()
13049                }
13050            }
13051            #[automatically_derived]
13052            #[doc(hidden)]
13053            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13054            for renounceOwnershipReturn {
13055                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13056                    Self {}
13057                }
13058            }
13059        }
13060        impl renounceOwnershipReturn {
13061            fn _tokenize(
13062                &self,
13063            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13064                ()
13065            }
13066        }
13067        #[automatically_derived]
13068        impl alloy_sol_types::SolCall for renounceOwnershipCall {
13069            type Parameters<'a> = ();
13070            type Token<'a> = <Self::Parameters<
13071                'a,
13072            > as alloy_sol_types::SolType>::Token<'a>;
13073            type Return = renounceOwnershipReturn;
13074            type ReturnTuple<'a> = ();
13075            type ReturnToken<'a> = <Self::ReturnTuple<
13076                'a,
13077            > as alloy_sol_types::SolType>::Token<'a>;
13078            const SIGNATURE: &'static str = "renounceOwnership()";
13079            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
13080            #[inline]
13081            fn new<'a>(
13082                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13083            ) -> Self {
13084                tuple.into()
13085            }
13086            #[inline]
13087            fn tokenize(&self) -> Self::Token<'_> {
13088                ()
13089            }
13090            #[inline]
13091            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13092                renounceOwnershipReturn::_tokenize(ret)
13093            }
13094            #[inline]
13095            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13096                <Self::ReturnTuple<
13097                    '_,
13098                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13099                    .map(Into::into)
13100            }
13101            #[inline]
13102            fn abi_decode_returns_validate(
13103                data: &[u8],
13104            ) -> alloy_sol_types::Result<Self::Return> {
13105                <Self::ReturnTuple<
13106                    '_,
13107                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13108                    .map(Into::into)
13109            }
13110        }
13111    };
13112    #[derive(serde::Serialize, serde::Deserialize)]
13113    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13114    /**Function with signature `setAuthRoot(uint256)` and selector `0x1af08034`.
13115```solidity
13116function setAuthRoot(uint256 newAuthRoot) external;
13117```*/
13118    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13119    #[derive(Clone)]
13120    pub struct setAuthRootCall {
13121        #[allow(missing_docs)]
13122        pub newAuthRoot: alloy::sol_types::private::primitives::aliases::U256,
13123    }
13124    ///Container type for the return parameters of the [`setAuthRoot(uint256)`](setAuthRootCall) function.
13125    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13126    #[derive(Clone)]
13127    pub struct setAuthRootReturn {}
13128    #[allow(
13129        non_camel_case_types,
13130        non_snake_case,
13131        clippy::pub_underscore_fields,
13132        clippy::style
13133    )]
13134    const _: () = {
13135        use alloy::sol_types as alloy_sol_types;
13136        {
13137            #[doc(hidden)]
13138            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13139            #[doc(hidden)]
13140            type UnderlyingRustTuple<'a> = (
13141                alloy::sol_types::private::primitives::aliases::U256,
13142            );
13143            #[cfg(test)]
13144            #[allow(dead_code, unreachable_patterns)]
13145            fn _type_assertion(
13146                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13147            ) {
13148                match _t {
13149                    alloy_sol_types::private::AssertTypeEq::<
13150                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13151                    >(_) => {}
13152                }
13153            }
13154            #[automatically_derived]
13155            #[doc(hidden)]
13156            impl ::core::convert::From<setAuthRootCall> for UnderlyingRustTuple<'_> {
13157                fn from(value: setAuthRootCall) -> Self {
13158                    (value.newAuthRoot,)
13159                }
13160            }
13161            #[automatically_derived]
13162            #[doc(hidden)]
13163            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setAuthRootCall {
13164                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13165                    Self { newAuthRoot: tuple.0 }
13166                }
13167            }
13168        }
13169        {
13170            #[doc(hidden)]
13171            type UnderlyingSolTuple<'a> = ();
13172            #[doc(hidden)]
13173            type UnderlyingRustTuple<'a> = ();
13174            #[cfg(test)]
13175            #[allow(dead_code, unreachable_patterns)]
13176            fn _type_assertion(
13177                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13178            ) {
13179                match _t {
13180                    alloy_sol_types::private::AssertTypeEq::<
13181                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13182                    >(_) => {}
13183                }
13184            }
13185            #[automatically_derived]
13186            #[doc(hidden)]
13187            impl ::core::convert::From<setAuthRootReturn> for UnderlyingRustTuple<'_> {
13188                fn from(value: setAuthRootReturn) -> Self {
13189                    ()
13190                }
13191            }
13192            #[automatically_derived]
13193            #[doc(hidden)]
13194            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setAuthRootReturn {
13195                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13196                    Self {}
13197                }
13198            }
13199        }
13200        impl setAuthRootReturn {
13201            fn _tokenize(
13202                &self,
13203            ) -> <setAuthRootCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13204                ()
13205            }
13206        }
13207        #[automatically_derived]
13208        impl alloy_sol_types::SolCall for setAuthRootCall {
13209            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13210            type Token<'a> = <Self::Parameters<
13211                'a,
13212            > as alloy_sol_types::SolType>::Token<'a>;
13213            type Return = setAuthRootReturn;
13214            type ReturnTuple<'a> = ();
13215            type ReturnToken<'a> = <Self::ReturnTuple<
13216                'a,
13217            > as alloy_sol_types::SolType>::Token<'a>;
13218            const SIGNATURE: &'static str = "setAuthRoot(uint256)";
13219            const SELECTOR: [u8; 4] = [26u8, 240u8, 128u8, 52u8];
13220            #[inline]
13221            fn new<'a>(
13222                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13223            ) -> Self {
13224                tuple.into()
13225            }
13226            #[inline]
13227            fn tokenize(&self) -> Self::Token<'_> {
13228                (
13229                    <alloy::sol_types::sol_data::Uint<
13230                        256,
13231                    > as alloy_sol_types::SolType>::tokenize(&self.newAuthRoot),
13232                )
13233            }
13234            #[inline]
13235            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13236                setAuthRootReturn::_tokenize(ret)
13237            }
13238            #[inline]
13239            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13240                <Self::ReturnTuple<
13241                    '_,
13242                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13243                    .map(Into::into)
13244            }
13245            #[inline]
13246            fn abi_decode_returns_validate(
13247                data: &[u8],
13248            ) -> alloy_sol_types::Result<Self::Return> {
13249                <Self::ReturnTuple<
13250                    '_,
13251                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13252                    .map(Into::into)
13253            }
13254        }
13255    };
13256    #[derive(serde::Serialize, serde::Deserialize)]
13257    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13258    /**Function with signature `setBlocksPerEpoch(uint64)` and selector `0x3c23b6db`.
13259```solidity
13260function setBlocksPerEpoch(uint64 newBlocksPerEpoch) external;
13261```*/
13262    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13263    #[derive(Clone)]
13264    pub struct setBlocksPerEpochCall {
13265        #[allow(missing_docs)]
13266        pub newBlocksPerEpoch: u64,
13267    }
13268    ///Container type for the return parameters of the [`setBlocksPerEpoch(uint64)`](setBlocksPerEpochCall) function.
13269    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13270    #[derive(Clone)]
13271    pub struct setBlocksPerEpochReturn {}
13272    #[allow(
13273        non_camel_case_types,
13274        non_snake_case,
13275        clippy::pub_underscore_fields,
13276        clippy::style
13277    )]
13278    const _: () = {
13279        use alloy::sol_types as alloy_sol_types;
13280        {
13281            #[doc(hidden)]
13282            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13283            #[doc(hidden)]
13284            type UnderlyingRustTuple<'a> = (u64,);
13285            #[cfg(test)]
13286            #[allow(dead_code, unreachable_patterns)]
13287            fn _type_assertion(
13288                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13289            ) {
13290                match _t {
13291                    alloy_sol_types::private::AssertTypeEq::<
13292                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13293                    >(_) => {}
13294                }
13295            }
13296            #[automatically_derived]
13297            #[doc(hidden)]
13298            impl ::core::convert::From<setBlocksPerEpochCall>
13299            for UnderlyingRustTuple<'_> {
13300                fn from(value: setBlocksPerEpochCall) -> Self {
13301                    (value.newBlocksPerEpoch,)
13302                }
13303            }
13304            #[automatically_derived]
13305            #[doc(hidden)]
13306            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13307            for setBlocksPerEpochCall {
13308                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13309                    Self { newBlocksPerEpoch: tuple.0 }
13310                }
13311            }
13312        }
13313        {
13314            #[doc(hidden)]
13315            type UnderlyingSolTuple<'a> = ();
13316            #[doc(hidden)]
13317            type UnderlyingRustTuple<'a> = ();
13318            #[cfg(test)]
13319            #[allow(dead_code, unreachable_patterns)]
13320            fn _type_assertion(
13321                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13322            ) {
13323                match _t {
13324                    alloy_sol_types::private::AssertTypeEq::<
13325                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13326                    >(_) => {}
13327                }
13328            }
13329            #[automatically_derived]
13330            #[doc(hidden)]
13331            impl ::core::convert::From<setBlocksPerEpochReturn>
13332            for UnderlyingRustTuple<'_> {
13333                fn from(value: setBlocksPerEpochReturn) -> Self {
13334                    ()
13335                }
13336            }
13337            #[automatically_derived]
13338            #[doc(hidden)]
13339            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13340            for setBlocksPerEpochReturn {
13341                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13342                    Self {}
13343                }
13344            }
13345        }
13346        impl setBlocksPerEpochReturn {
13347            fn _tokenize(
13348                &self,
13349            ) -> <setBlocksPerEpochCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13350                ()
13351            }
13352        }
13353        #[automatically_derived]
13354        impl alloy_sol_types::SolCall for setBlocksPerEpochCall {
13355            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13356            type Token<'a> = <Self::Parameters<
13357                'a,
13358            > as alloy_sol_types::SolType>::Token<'a>;
13359            type Return = setBlocksPerEpochReturn;
13360            type ReturnTuple<'a> = ();
13361            type ReturnToken<'a> = <Self::ReturnTuple<
13362                'a,
13363            > as alloy_sol_types::SolType>::Token<'a>;
13364            const SIGNATURE: &'static str = "setBlocksPerEpoch(uint64)";
13365            const SELECTOR: [u8; 4] = [60u8, 35u8, 182u8, 219u8];
13366            #[inline]
13367            fn new<'a>(
13368                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13369            ) -> Self {
13370                tuple.into()
13371            }
13372            #[inline]
13373            fn tokenize(&self) -> Self::Token<'_> {
13374                (
13375                    <alloy::sol_types::sol_data::Uint<
13376                        64,
13377                    > as alloy_sol_types::SolType>::tokenize(&self.newBlocksPerEpoch),
13378                )
13379            }
13380            #[inline]
13381            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13382                setBlocksPerEpochReturn::_tokenize(ret)
13383            }
13384            #[inline]
13385            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13386                <Self::ReturnTuple<
13387                    '_,
13388                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13389                    .map(Into::into)
13390            }
13391            #[inline]
13392            fn abi_decode_returns_validate(
13393                data: &[u8],
13394            ) -> alloy_sol_types::Result<Self::Return> {
13395                <Self::ReturnTuple<
13396                    '_,
13397                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13398                    .map(Into::into)
13399            }
13400        }
13401    };
13402    #[derive(serde::Serialize, serde::Deserialize)]
13403    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13404    /**Function with signature `setFinalizedState((uint64,uint64,uint256))` and selector `0xb5adea3c`.
13405```solidity
13406function setFinalizedState(LightClient.LightClientState memory state) external;
13407```*/
13408    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13409    #[derive(Clone)]
13410    pub struct setFinalizedStateCall {
13411        #[allow(missing_docs)]
13412        pub state: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
13413    }
13414    ///Container type for the return parameters of the [`setFinalizedState((uint64,uint64,uint256))`](setFinalizedStateCall) function.
13415    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13416    #[derive(Clone)]
13417    pub struct setFinalizedStateReturn {}
13418    #[allow(
13419        non_camel_case_types,
13420        non_snake_case,
13421        clippy::pub_underscore_fields,
13422        clippy::style
13423    )]
13424    const _: () = {
13425        use alloy::sol_types as alloy_sol_types;
13426        {
13427            #[doc(hidden)]
13428            type UnderlyingSolTuple<'a> = (LightClient::LightClientState,);
13429            #[doc(hidden)]
13430            type UnderlyingRustTuple<'a> = (
13431                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
13432            );
13433            #[cfg(test)]
13434            #[allow(dead_code, unreachable_patterns)]
13435            fn _type_assertion(
13436                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13437            ) {
13438                match _t {
13439                    alloy_sol_types::private::AssertTypeEq::<
13440                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13441                    >(_) => {}
13442                }
13443            }
13444            #[automatically_derived]
13445            #[doc(hidden)]
13446            impl ::core::convert::From<setFinalizedStateCall>
13447            for UnderlyingRustTuple<'_> {
13448                fn from(value: setFinalizedStateCall) -> Self {
13449                    (value.state,)
13450                }
13451            }
13452            #[automatically_derived]
13453            #[doc(hidden)]
13454            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13455            for setFinalizedStateCall {
13456                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13457                    Self { state: tuple.0 }
13458                }
13459            }
13460        }
13461        {
13462            #[doc(hidden)]
13463            type UnderlyingSolTuple<'a> = ();
13464            #[doc(hidden)]
13465            type UnderlyingRustTuple<'a> = ();
13466            #[cfg(test)]
13467            #[allow(dead_code, unreachable_patterns)]
13468            fn _type_assertion(
13469                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13470            ) {
13471                match _t {
13472                    alloy_sol_types::private::AssertTypeEq::<
13473                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13474                    >(_) => {}
13475                }
13476            }
13477            #[automatically_derived]
13478            #[doc(hidden)]
13479            impl ::core::convert::From<setFinalizedStateReturn>
13480            for UnderlyingRustTuple<'_> {
13481                fn from(value: setFinalizedStateReturn) -> Self {
13482                    ()
13483                }
13484            }
13485            #[automatically_derived]
13486            #[doc(hidden)]
13487            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13488            for setFinalizedStateReturn {
13489                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13490                    Self {}
13491                }
13492            }
13493        }
13494        impl setFinalizedStateReturn {
13495            fn _tokenize(
13496                &self,
13497            ) -> <setFinalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13498                ()
13499            }
13500        }
13501        #[automatically_derived]
13502        impl alloy_sol_types::SolCall for setFinalizedStateCall {
13503            type Parameters<'a> = (LightClient::LightClientState,);
13504            type Token<'a> = <Self::Parameters<
13505                'a,
13506            > as alloy_sol_types::SolType>::Token<'a>;
13507            type Return = setFinalizedStateReturn;
13508            type ReturnTuple<'a> = ();
13509            type ReturnToken<'a> = <Self::ReturnTuple<
13510                'a,
13511            > as alloy_sol_types::SolType>::Token<'a>;
13512            const SIGNATURE: &'static str = "setFinalizedState((uint64,uint64,uint256))";
13513            const SELECTOR: [u8; 4] = [181u8, 173u8, 234u8, 60u8];
13514            #[inline]
13515            fn new<'a>(
13516                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13517            ) -> Self {
13518                tuple.into()
13519            }
13520            #[inline]
13521            fn tokenize(&self) -> Self::Token<'_> {
13522                (
13523                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
13524                        &self.state,
13525                    ),
13526                )
13527            }
13528            #[inline]
13529            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13530                setFinalizedStateReturn::_tokenize(ret)
13531            }
13532            #[inline]
13533            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13534                <Self::ReturnTuple<
13535                    '_,
13536                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13537                    .map(Into::into)
13538            }
13539            #[inline]
13540            fn abi_decode_returns_validate(
13541                data: &[u8],
13542            ) -> alloy_sol_types::Result<Self::Return> {
13543                <Self::ReturnTuple<
13544                    '_,
13545                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13546                    .map(Into::into)
13547            }
13548        }
13549    };
13550    #[derive(serde::Serialize, serde::Deserialize)]
13551    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13552    /**Function with signature `setHotShotDownSince(uint256)` and selector `0x2d52aad6`.
13553```solidity
13554function setHotShotDownSince(uint256 l1Height) external;
13555```*/
13556    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13557    #[derive(Clone)]
13558    pub struct setHotShotDownSinceCall {
13559        #[allow(missing_docs)]
13560        pub l1Height: alloy::sol_types::private::primitives::aliases::U256,
13561    }
13562    ///Container type for the return parameters of the [`setHotShotDownSince(uint256)`](setHotShotDownSinceCall) function.
13563    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13564    #[derive(Clone)]
13565    pub struct setHotShotDownSinceReturn {}
13566    #[allow(
13567        non_camel_case_types,
13568        non_snake_case,
13569        clippy::pub_underscore_fields,
13570        clippy::style
13571    )]
13572    const _: () = {
13573        use alloy::sol_types as alloy_sol_types;
13574        {
13575            #[doc(hidden)]
13576            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13577            #[doc(hidden)]
13578            type UnderlyingRustTuple<'a> = (
13579                alloy::sol_types::private::primitives::aliases::U256,
13580            );
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<setHotShotDownSinceCall>
13595            for UnderlyingRustTuple<'_> {
13596                fn from(value: setHotShotDownSinceCall) -> Self {
13597                    (value.l1Height,)
13598                }
13599            }
13600            #[automatically_derived]
13601            #[doc(hidden)]
13602            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13603            for setHotShotDownSinceCall {
13604                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13605                    Self { l1Height: tuple.0 }
13606                }
13607            }
13608        }
13609        {
13610            #[doc(hidden)]
13611            type UnderlyingSolTuple<'a> = ();
13612            #[doc(hidden)]
13613            type UnderlyingRustTuple<'a> = ();
13614            #[cfg(test)]
13615            #[allow(dead_code, unreachable_patterns)]
13616            fn _type_assertion(
13617                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13618            ) {
13619                match _t {
13620                    alloy_sol_types::private::AssertTypeEq::<
13621                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13622                    >(_) => {}
13623                }
13624            }
13625            #[automatically_derived]
13626            #[doc(hidden)]
13627            impl ::core::convert::From<setHotShotDownSinceReturn>
13628            for UnderlyingRustTuple<'_> {
13629                fn from(value: setHotShotDownSinceReturn) -> Self {
13630                    ()
13631                }
13632            }
13633            #[automatically_derived]
13634            #[doc(hidden)]
13635            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13636            for setHotShotDownSinceReturn {
13637                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13638                    Self {}
13639                }
13640            }
13641        }
13642        impl setHotShotDownSinceReturn {
13643            fn _tokenize(
13644                &self,
13645            ) -> <setHotShotDownSinceCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13646                ()
13647            }
13648        }
13649        #[automatically_derived]
13650        impl alloy_sol_types::SolCall for setHotShotDownSinceCall {
13651            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13652            type Token<'a> = <Self::Parameters<
13653                'a,
13654            > as alloy_sol_types::SolType>::Token<'a>;
13655            type Return = setHotShotDownSinceReturn;
13656            type ReturnTuple<'a> = ();
13657            type ReturnToken<'a> = <Self::ReturnTuple<
13658                'a,
13659            > as alloy_sol_types::SolType>::Token<'a>;
13660            const SIGNATURE: &'static str = "setHotShotDownSince(uint256)";
13661            const SELECTOR: [u8; 4] = [45u8, 82u8, 170u8, 214u8];
13662            #[inline]
13663            fn new<'a>(
13664                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13665            ) -> Self {
13666                tuple.into()
13667            }
13668            #[inline]
13669            fn tokenize(&self) -> Self::Token<'_> {
13670                (
13671                    <alloy::sol_types::sol_data::Uint<
13672                        256,
13673                    > as alloy_sol_types::SolType>::tokenize(&self.l1Height),
13674                )
13675            }
13676            #[inline]
13677            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13678                setHotShotDownSinceReturn::_tokenize(ret)
13679            }
13680            #[inline]
13681            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13682                <Self::ReturnTuple<
13683                    '_,
13684                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13685                    .map(Into::into)
13686            }
13687            #[inline]
13688            fn abi_decode_returns_validate(
13689                data: &[u8],
13690            ) -> alloy_sol_types::Result<Self::Return> {
13691                <Self::ReturnTuple<
13692                    '_,
13693                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13694                    .map(Into::into)
13695            }
13696        }
13697    };
13698    #[derive(serde::Serialize, serde::Deserialize)]
13699    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13700    /**Function with signature `setHotShotUp()` and selector `0xc8e5e498`.
13701```solidity
13702function setHotShotUp() external;
13703```*/
13704    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13705    #[derive(Clone)]
13706    pub struct setHotShotUpCall;
13707    ///Container type for the return parameters of the [`setHotShotUp()`](setHotShotUpCall) function.
13708    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13709    #[derive(Clone)]
13710    pub struct setHotShotUpReturn {}
13711    #[allow(
13712        non_camel_case_types,
13713        non_snake_case,
13714        clippy::pub_underscore_fields,
13715        clippy::style
13716    )]
13717    const _: () = {
13718        use alloy::sol_types as alloy_sol_types;
13719        {
13720            #[doc(hidden)]
13721            type UnderlyingSolTuple<'a> = ();
13722            #[doc(hidden)]
13723            type UnderlyingRustTuple<'a> = ();
13724            #[cfg(test)]
13725            #[allow(dead_code, unreachable_patterns)]
13726            fn _type_assertion(
13727                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13728            ) {
13729                match _t {
13730                    alloy_sol_types::private::AssertTypeEq::<
13731                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13732                    >(_) => {}
13733                }
13734            }
13735            #[automatically_derived]
13736            #[doc(hidden)]
13737            impl ::core::convert::From<setHotShotUpCall> for UnderlyingRustTuple<'_> {
13738                fn from(value: setHotShotUpCall) -> Self {
13739                    ()
13740                }
13741            }
13742            #[automatically_derived]
13743            #[doc(hidden)]
13744            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotUpCall {
13745                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13746                    Self
13747                }
13748            }
13749        }
13750        {
13751            #[doc(hidden)]
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<setHotShotUpReturn> for UnderlyingRustTuple<'_> {
13769                fn from(value: setHotShotUpReturn) -> Self {
13770                    ()
13771                }
13772            }
13773            #[automatically_derived]
13774            #[doc(hidden)]
13775            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotUpReturn {
13776                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13777                    Self {}
13778                }
13779            }
13780        }
13781        impl setHotShotUpReturn {
13782            fn _tokenize(
13783                &self,
13784            ) -> <setHotShotUpCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13785                ()
13786            }
13787        }
13788        #[automatically_derived]
13789        impl alloy_sol_types::SolCall for setHotShotUpCall {
13790            type Parameters<'a> = ();
13791            type Token<'a> = <Self::Parameters<
13792                'a,
13793            > as alloy_sol_types::SolType>::Token<'a>;
13794            type Return = setHotShotUpReturn;
13795            type ReturnTuple<'a> = ();
13796            type ReturnToken<'a> = <Self::ReturnTuple<
13797                'a,
13798            > as alloy_sol_types::SolType>::Token<'a>;
13799            const SIGNATURE: &'static str = "setHotShotUp()";
13800            const SELECTOR: [u8; 4] = [200u8, 229u8, 228u8, 152u8];
13801            #[inline]
13802            fn new<'a>(
13803                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13804            ) -> Self {
13805                tuple.into()
13806            }
13807            #[inline]
13808            fn tokenize(&self) -> Self::Token<'_> {
13809                ()
13810            }
13811            #[inline]
13812            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13813                setHotShotUpReturn::_tokenize(ret)
13814            }
13815            #[inline]
13816            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13817                <Self::ReturnTuple<
13818                    '_,
13819                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13820                    .map(Into::into)
13821            }
13822            #[inline]
13823            fn abi_decode_returns_validate(
13824                data: &[u8],
13825            ) -> alloy_sol_types::Result<Self::Return> {
13826                <Self::ReturnTuple<
13827                    '_,
13828                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13829                    .map(Into::into)
13830            }
13831        }
13832    };
13833    #[derive(serde::Serialize, serde::Deserialize)]
13834    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13835    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
13836```solidity
13837function setPermissionedProver(address prover) external;
13838```*/
13839    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13840    #[derive(Clone)]
13841    pub struct setPermissionedProverCall {
13842        #[allow(missing_docs)]
13843        pub prover: alloy::sol_types::private::Address,
13844    }
13845    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
13846    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13847    #[derive(Clone)]
13848    pub struct setPermissionedProverReturn {}
13849    #[allow(
13850        non_camel_case_types,
13851        non_snake_case,
13852        clippy::pub_underscore_fields,
13853        clippy::style
13854    )]
13855    const _: () = {
13856        use alloy::sol_types as alloy_sol_types;
13857        {
13858            #[doc(hidden)]
13859            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
13860            #[doc(hidden)]
13861            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
13862            #[cfg(test)]
13863            #[allow(dead_code, unreachable_patterns)]
13864            fn _type_assertion(
13865                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13866            ) {
13867                match _t {
13868                    alloy_sol_types::private::AssertTypeEq::<
13869                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13870                    >(_) => {}
13871                }
13872            }
13873            #[automatically_derived]
13874            #[doc(hidden)]
13875            impl ::core::convert::From<setPermissionedProverCall>
13876            for UnderlyingRustTuple<'_> {
13877                fn from(value: setPermissionedProverCall) -> Self {
13878                    (value.prover,)
13879                }
13880            }
13881            #[automatically_derived]
13882            #[doc(hidden)]
13883            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13884            for setPermissionedProverCall {
13885                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13886                    Self { prover: tuple.0 }
13887                }
13888            }
13889        }
13890        {
13891            #[doc(hidden)]
13892            type UnderlyingSolTuple<'a> = ();
13893            #[doc(hidden)]
13894            type UnderlyingRustTuple<'a> = ();
13895            #[cfg(test)]
13896            #[allow(dead_code, unreachable_patterns)]
13897            fn _type_assertion(
13898                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13899            ) {
13900                match _t {
13901                    alloy_sol_types::private::AssertTypeEq::<
13902                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13903                    >(_) => {}
13904                }
13905            }
13906            #[automatically_derived]
13907            #[doc(hidden)]
13908            impl ::core::convert::From<setPermissionedProverReturn>
13909            for UnderlyingRustTuple<'_> {
13910                fn from(value: setPermissionedProverReturn) -> Self {
13911                    ()
13912                }
13913            }
13914            #[automatically_derived]
13915            #[doc(hidden)]
13916            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13917            for setPermissionedProverReturn {
13918                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13919                    Self {}
13920                }
13921            }
13922        }
13923        impl setPermissionedProverReturn {
13924            fn _tokenize(
13925                &self,
13926            ) -> <setPermissionedProverCall as alloy_sol_types::SolCall>::ReturnToken<
13927                '_,
13928            > {
13929                ()
13930            }
13931        }
13932        #[automatically_derived]
13933        impl alloy_sol_types::SolCall for setPermissionedProverCall {
13934            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
13935            type Token<'a> = <Self::Parameters<
13936                'a,
13937            > as alloy_sol_types::SolType>::Token<'a>;
13938            type Return = setPermissionedProverReturn;
13939            type ReturnTuple<'a> = ();
13940            type ReturnToken<'a> = <Self::ReturnTuple<
13941                'a,
13942            > as alloy_sol_types::SolType>::Token<'a>;
13943            const SIGNATURE: &'static str = "setPermissionedProver(address)";
13944            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
13945            #[inline]
13946            fn new<'a>(
13947                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13948            ) -> Self {
13949                tuple.into()
13950            }
13951            #[inline]
13952            fn tokenize(&self) -> Self::Token<'_> {
13953                (
13954                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13955                        &self.prover,
13956                    ),
13957                )
13958            }
13959            #[inline]
13960            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13961                setPermissionedProverReturn::_tokenize(ret)
13962            }
13963            #[inline]
13964            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13965                <Self::ReturnTuple<
13966                    '_,
13967                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13968                    .map(Into::into)
13969            }
13970            #[inline]
13971            fn abi_decode_returns_validate(
13972                data: &[u8],
13973            ) -> alloy_sol_types::Result<Self::Return> {
13974                <Self::ReturnTuple<
13975                    '_,
13976                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13977                    .map(Into::into)
13978            }
13979        }
13980    };
13981    #[derive(serde::Serialize, serde::Deserialize)]
13982    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13983    /**Function with signature `setStateHistory((uint64,uint64,uint64,uint256)[])` and selector `0xf5676160`.
13984```solidity
13985function setStateHistory(LightClient.StateHistoryCommitment[] memory _stateHistoryCommitments) external;
13986```*/
13987    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13988    #[derive(Clone)]
13989    pub struct setStateHistoryCall {
13990        #[allow(missing_docs)]
13991        pub _stateHistoryCommitments: alloy::sol_types::private::Vec<
13992            <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
13993        >,
13994    }
13995    ///Container type for the return parameters of the [`setStateHistory((uint64,uint64,uint64,uint256)[])`](setStateHistoryCall) function.
13996    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13997    #[derive(Clone)]
13998    pub struct setStateHistoryReturn {}
13999    #[allow(
14000        non_camel_case_types,
14001        non_snake_case,
14002        clippy::pub_underscore_fields,
14003        clippy::style
14004    )]
14005    const _: () = {
14006        use alloy::sol_types as alloy_sol_types;
14007        {
14008            #[doc(hidden)]
14009            type UnderlyingSolTuple<'a> = (
14010                alloy::sol_types::sol_data::Array<LightClient::StateHistoryCommitment>,
14011            );
14012            #[doc(hidden)]
14013            type UnderlyingRustTuple<'a> = (
14014                alloy::sol_types::private::Vec<
14015                    <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
14016                >,
14017            );
14018            #[cfg(test)]
14019            #[allow(dead_code, unreachable_patterns)]
14020            fn _type_assertion(
14021                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14022            ) {
14023                match _t {
14024                    alloy_sol_types::private::AssertTypeEq::<
14025                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14026                    >(_) => {}
14027                }
14028            }
14029            #[automatically_derived]
14030            #[doc(hidden)]
14031            impl ::core::convert::From<setStateHistoryCall> for UnderlyingRustTuple<'_> {
14032                fn from(value: setStateHistoryCall) -> Self {
14033                    (value._stateHistoryCommitments,)
14034                }
14035            }
14036            #[automatically_derived]
14037            #[doc(hidden)]
14038            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setStateHistoryCall {
14039                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14040                    Self {
14041                        _stateHistoryCommitments: tuple.0,
14042                    }
14043                }
14044            }
14045        }
14046        {
14047            #[doc(hidden)]
14048            type UnderlyingSolTuple<'a> = ();
14049            #[doc(hidden)]
14050            type UnderlyingRustTuple<'a> = ();
14051            #[cfg(test)]
14052            #[allow(dead_code, unreachable_patterns)]
14053            fn _type_assertion(
14054                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14055            ) {
14056                match _t {
14057                    alloy_sol_types::private::AssertTypeEq::<
14058                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14059                    >(_) => {}
14060                }
14061            }
14062            #[automatically_derived]
14063            #[doc(hidden)]
14064            impl ::core::convert::From<setStateHistoryReturn>
14065            for UnderlyingRustTuple<'_> {
14066                fn from(value: setStateHistoryReturn) -> Self {
14067                    ()
14068                }
14069            }
14070            #[automatically_derived]
14071            #[doc(hidden)]
14072            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14073            for setStateHistoryReturn {
14074                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14075                    Self {}
14076                }
14077            }
14078        }
14079        impl setStateHistoryReturn {
14080            fn _tokenize(
14081                &self,
14082            ) -> <setStateHistoryCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14083                ()
14084            }
14085        }
14086        #[automatically_derived]
14087        impl alloy_sol_types::SolCall for setStateHistoryCall {
14088            type Parameters<'a> = (
14089                alloy::sol_types::sol_data::Array<LightClient::StateHistoryCommitment>,
14090            );
14091            type Token<'a> = <Self::Parameters<
14092                'a,
14093            > as alloy_sol_types::SolType>::Token<'a>;
14094            type Return = setStateHistoryReturn;
14095            type ReturnTuple<'a> = ();
14096            type ReturnToken<'a> = <Self::ReturnTuple<
14097                'a,
14098            > as alloy_sol_types::SolType>::Token<'a>;
14099            const SIGNATURE: &'static str = "setStateHistory((uint64,uint64,uint64,uint256)[])";
14100            const SELECTOR: [u8; 4] = [245u8, 103u8, 97u8, 96u8];
14101            #[inline]
14102            fn new<'a>(
14103                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14104            ) -> Self {
14105                tuple.into()
14106            }
14107            #[inline]
14108            fn tokenize(&self) -> Self::Token<'_> {
14109                (
14110                    <alloy::sol_types::sol_data::Array<
14111                        LightClient::StateHistoryCommitment,
14112                    > as alloy_sol_types::SolType>::tokenize(
14113                        &self._stateHistoryCommitments,
14114                    ),
14115                )
14116            }
14117            #[inline]
14118            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14119                setStateHistoryReturn::_tokenize(ret)
14120            }
14121            #[inline]
14122            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14123                <Self::ReturnTuple<
14124                    '_,
14125                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14126                    .map(Into::into)
14127            }
14128            #[inline]
14129            fn abi_decode_returns_validate(
14130                data: &[u8],
14131            ) -> alloy_sol_types::Result<Self::Return> {
14132                <Self::ReturnTuple<
14133                    '_,
14134                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14135                    .map(Into::into)
14136            }
14137        }
14138    };
14139    #[derive(serde::Serialize, serde::Deserialize)]
14140    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14141    /**Function with signature `setStateHistoryRetentionPeriod(uint32)` and selector `0x433dba9f`.
14142```solidity
14143function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
14144```*/
14145    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14146    #[derive(Clone)]
14147    pub struct setStateHistoryRetentionPeriodCall {
14148        #[allow(missing_docs)]
14149        pub historySeconds: u32,
14150    }
14151    ///Container type for the return parameters of the [`setStateHistoryRetentionPeriod(uint32)`](setStateHistoryRetentionPeriodCall) function.
14152    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14153    #[derive(Clone)]
14154    pub struct setStateHistoryRetentionPeriodReturn {}
14155    #[allow(
14156        non_camel_case_types,
14157        non_snake_case,
14158        clippy::pub_underscore_fields,
14159        clippy::style
14160    )]
14161    const _: () = {
14162        use alloy::sol_types as alloy_sol_types;
14163        {
14164            #[doc(hidden)]
14165            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
14166            #[doc(hidden)]
14167            type UnderlyingRustTuple<'a> = (u32,);
14168            #[cfg(test)]
14169            #[allow(dead_code, unreachable_patterns)]
14170            fn _type_assertion(
14171                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14172            ) {
14173                match _t {
14174                    alloy_sol_types::private::AssertTypeEq::<
14175                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14176                    >(_) => {}
14177                }
14178            }
14179            #[automatically_derived]
14180            #[doc(hidden)]
14181            impl ::core::convert::From<setStateHistoryRetentionPeriodCall>
14182            for UnderlyingRustTuple<'_> {
14183                fn from(value: setStateHistoryRetentionPeriodCall) -> Self {
14184                    (value.historySeconds,)
14185                }
14186            }
14187            #[automatically_derived]
14188            #[doc(hidden)]
14189            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14190            for setStateHistoryRetentionPeriodCall {
14191                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14192                    Self { historySeconds: tuple.0 }
14193                }
14194            }
14195        }
14196        {
14197            #[doc(hidden)]
14198            type UnderlyingSolTuple<'a> = ();
14199            #[doc(hidden)]
14200            type UnderlyingRustTuple<'a> = ();
14201            #[cfg(test)]
14202            #[allow(dead_code, unreachable_patterns)]
14203            fn _type_assertion(
14204                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14205            ) {
14206                match _t {
14207                    alloy_sol_types::private::AssertTypeEq::<
14208                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14209                    >(_) => {}
14210                }
14211            }
14212            #[automatically_derived]
14213            #[doc(hidden)]
14214            impl ::core::convert::From<setStateHistoryRetentionPeriodReturn>
14215            for UnderlyingRustTuple<'_> {
14216                fn from(value: setStateHistoryRetentionPeriodReturn) -> Self {
14217                    ()
14218                }
14219            }
14220            #[automatically_derived]
14221            #[doc(hidden)]
14222            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14223            for setStateHistoryRetentionPeriodReturn {
14224                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14225                    Self {}
14226                }
14227            }
14228        }
14229        impl setStateHistoryRetentionPeriodReturn {
14230            fn _tokenize(
14231                &self,
14232            ) -> <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
14233                '_,
14234            > {
14235                ()
14236            }
14237        }
14238        #[automatically_derived]
14239        impl alloy_sol_types::SolCall for setStateHistoryRetentionPeriodCall {
14240            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
14241            type Token<'a> = <Self::Parameters<
14242                'a,
14243            > as alloy_sol_types::SolType>::Token<'a>;
14244            type Return = setStateHistoryRetentionPeriodReturn;
14245            type ReturnTuple<'a> = ();
14246            type ReturnToken<'a> = <Self::ReturnTuple<
14247                'a,
14248            > as alloy_sol_types::SolType>::Token<'a>;
14249            const SIGNATURE: &'static str = "setStateHistoryRetentionPeriod(uint32)";
14250            const SELECTOR: [u8; 4] = [67u8, 61u8, 186u8, 159u8];
14251            #[inline]
14252            fn new<'a>(
14253                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14254            ) -> Self {
14255                tuple.into()
14256            }
14257            #[inline]
14258            fn tokenize(&self) -> Self::Token<'_> {
14259                (
14260                    <alloy::sol_types::sol_data::Uint<
14261                        32,
14262                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
14263                )
14264            }
14265            #[inline]
14266            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14267                setStateHistoryRetentionPeriodReturn::_tokenize(ret)
14268            }
14269            #[inline]
14270            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14271                <Self::ReturnTuple<
14272                    '_,
14273                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14274                    .map(Into::into)
14275            }
14276            #[inline]
14277            fn abi_decode_returns_validate(
14278                data: &[u8],
14279            ) -> alloy_sol_types::Result<Self::Return> {
14280                <Self::ReturnTuple<
14281                    '_,
14282                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14283                    .map(Into::into)
14284            }
14285        }
14286    };
14287    #[derive(serde::Serialize, serde::Deserialize)]
14288    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14289    /**Function with signature `setVotingStakeTableState((uint256,uint256,uint256,uint256))` and selector `0x623a1338`.
14290```solidity
14291function setVotingStakeTableState(LightClient.StakeTableState memory stake) external;
14292```*/
14293    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14294    #[derive(Clone)]
14295    pub struct setVotingStakeTableStateCall {
14296        #[allow(missing_docs)]
14297        pub stake: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
14298    }
14299    ///Container type for the return parameters of the [`setVotingStakeTableState((uint256,uint256,uint256,uint256))`](setVotingStakeTableStateCall) function.
14300    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14301    #[derive(Clone)]
14302    pub struct setVotingStakeTableStateReturn {}
14303    #[allow(
14304        non_camel_case_types,
14305        non_snake_case,
14306        clippy::pub_underscore_fields,
14307        clippy::style
14308    )]
14309    const _: () = {
14310        use alloy::sol_types as alloy_sol_types;
14311        {
14312            #[doc(hidden)]
14313            type UnderlyingSolTuple<'a> = (LightClient::StakeTableState,);
14314            #[doc(hidden)]
14315            type UnderlyingRustTuple<'a> = (
14316                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
14317            );
14318            #[cfg(test)]
14319            #[allow(dead_code, unreachable_patterns)]
14320            fn _type_assertion(
14321                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14322            ) {
14323                match _t {
14324                    alloy_sol_types::private::AssertTypeEq::<
14325                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14326                    >(_) => {}
14327                }
14328            }
14329            #[automatically_derived]
14330            #[doc(hidden)]
14331            impl ::core::convert::From<setVotingStakeTableStateCall>
14332            for UnderlyingRustTuple<'_> {
14333                fn from(value: setVotingStakeTableStateCall) -> Self {
14334                    (value.stake,)
14335                }
14336            }
14337            #[automatically_derived]
14338            #[doc(hidden)]
14339            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14340            for setVotingStakeTableStateCall {
14341                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14342                    Self { stake: tuple.0 }
14343                }
14344            }
14345        }
14346        {
14347            #[doc(hidden)]
14348            type UnderlyingSolTuple<'a> = ();
14349            #[doc(hidden)]
14350            type UnderlyingRustTuple<'a> = ();
14351            #[cfg(test)]
14352            #[allow(dead_code, unreachable_patterns)]
14353            fn _type_assertion(
14354                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14355            ) {
14356                match _t {
14357                    alloy_sol_types::private::AssertTypeEq::<
14358                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14359                    >(_) => {}
14360                }
14361            }
14362            #[automatically_derived]
14363            #[doc(hidden)]
14364            impl ::core::convert::From<setVotingStakeTableStateReturn>
14365            for UnderlyingRustTuple<'_> {
14366                fn from(value: setVotingStakeTableStateReturn) -> Self {
14367                    ()
14368                }
14369            }
14370            #[automatically_derived]
14371            #[doc(hidden)]
14372            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14373            for setVotingStakeTableStateReturn {
14374                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14375                    Self {}
14376                }
14377            }
14378        }
14379        impl setVotingStakeTableStateReturn {
14380            fn _tokenize(
14381                &self,
14382            ) -> <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
14383                '_,
14384            > {
14385                ()
14386            }
14387        }
14388        #[automatically_derived]
14389        impl alloy_sol_types::SolCall for setVotingStakeTableStateCall {
14390            type Parameters<'a> = (LightClient::StakeTableState,);
14391            type Token<'a> = <Self::Parameters<
14392                'a,
14393            > as alloy_sol_types::SolType>::Token<'a>;
14394            type Return = setVotingStakeTableStateReturn;
14395            type ReturnTuple<'a> = ();
14396            type ReturnToken<'a> = <Self::ReturnTuple<
14397                'a,
14398            > as alloy_sol_types::SolType>::Token<'a>;
14399            const SIGNATURE: &'static str = "setVotingStakeTableState((uint256,uint256,uint256,uint256))";
14400            const SELECTOR: [u8; 4] = [98u8, 58u8, 19u8, 56u8];
14401            #[inline]
14402            fn new<'a>(
14403                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14404            ) -> Self {
14405                tuple.into()
14406            }
14407            #[inline]
14408            fn tokenize(&self) -> Self::Token<'_> {
14409                (
14410                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
14411                        &self.stake,
14412                    ),
14413                )
14414            }
14415            #[inline]
14416            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14417                setVotingStakeTableStateReturn::_tokenize(ret)
14418            }
14419            #[inline]
14420            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14421                <Self::ReturnTuple<
14422                    '_,
14423                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14424                    .map(Into::into)
14425            }
14426            #[inline]
14427            fn abi_decode_returns_validate(
14428                data: &[u8],
14429            ) -> alloy_sol_types::Result<Self::Return> {
14430                <Self::ReturnTuple<
14431                    '_,
14432                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14433                    .map(Into::into)
14434            }
14435        }
14436    };
14437    #[derive(serde::Serialize, serde::Deserialize)]
14438    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14439    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
14440```solidity
14441function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
14442```*/
14443    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14444    #[derive(Clone)]
14445    pub struct setstateHistoryRetentionPeriodCall {
14446        #[allow(missing_docs)]
14447        pub historySeconds: u32,
14448    }
14449    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
14450    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14451    #[derive(Clone)]
14452    pub struct setstateHistoryRetentionPeriodReturn {}
14453    #[allow(
14454        non_camel_case_types,
14455        non_snake_case,
14456        clippy::pub_underscore_fields,
14457        clippy::style
14458    )]
14459    const _: () = {
14460        use alloy::sol_types as alloy_sol_types;
14461        {
14462            #[doc(hidden)]
14463            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
14464            #[doc(hidden)]
14465            type UnderlyingRustTuple<'a> = (u32,);
14466            #[cfg(test)]
14467            #[allow(dead_code, unreachable_patterns)]
14468            fn _type_assertion(
14469                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14470            ) {
14471                match _t {
14472                    alloy_sol_types::private::AssertTypeEq::<
14473                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14474                    >(_) => {}
14475                }
14476            }
14477            #[automatically_derived]
14478            #[doc(hidden)]
14479            impl ::core::convert::From<setstateHistoryRetentionPeriodCall>
14480            for UnderlyingRustTuple<'_> {
14481                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
14482                    (value.historySeconds,)
14483                }
14484            }
14485            #[automatically_derived]
14486            #[doc(hidden)]
14487            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14488            for setstateHistoryRetentionPeriodCall {
14489                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14490                    Self { historySeconds: tuple.0 }
14491                }
14492            }
14493        }
14494        {
14495            #[doc(hidden)]
14496            type UnderlyingSolTuple<'a> = ();
14497            #[doc(hidden)]
14498            type UnderlyingRustTuple<'a> = ();
14499            #[cfg(test)]
14500            #[allow(dead_code, unreachable_patterns)]
14501            fn _type_assertion(
14502                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14503            ) {
14504                match _t {
14505                    alloy_sol_types::private::AssertTypeEq::<
14506                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14507                    >(_) => {}
14508                }
14509            }
14510            #[automatically_derived]
14511            #[doc(hidden)]
14512            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn>
14513            for UnderlyingRustTuple<'_> {
14514                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
14515                    ()
14516                }
14517            }
14518            #[automatically_derived]
14519            #[doc(hidden)]
14520            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14521            for setstateHistoryRetentionPeriodReturn {
14522                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14523                    Self {}
14524                }
14525            }
14526        }
14527        impl setstateHistoryRetentionPeriodReturn {
14528            fn _tokenize(
14529                &self,
14530            ) -> <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
14531                '_,
14532            > {
14533                ()
14534            }
14535        }
14536        #[automatically_derived]
14537        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
14538            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
14539            type Token<'a> = <Self::Parameters<
14540                'a,
14541            > as alloy_sol_types::SolType>::Token<'a>;
14542            type Return = setstateHistoryRetentionPeriodReturn;
14543            type ReturnTuple<'a> = ();
14544            type ReturnToken<'a> = <Self::ReturnTuple<
14545                'a,
14546            > as alloy_sol_types::SolType>::Token<'a>;
14547            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
14548            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
14549            #[inline]
14550            fn new<'a>(
14551                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14552            ) -> Self {
14553                tuple.into()
14554            }
14555            #[inline]
14556            fn tokenize(&self) -> Self::Token<'_> {
14557                (
14558                    <alloy::sol_types::sol_data::Uint<
14559                        32,
14560                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
14561                )
14562            }
14563            #[inline]
14564            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14565                setstateHistoryRetentionPeriodReturn::_tokenize(ret)
14566            }
14567            #[inline]
14568            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14569                <Self::ReturnTuple<
14570                    '_,
14571                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14572                    .map(Into::into)
14573            }
14574            #[inline]
14575            fn abi_decode_returns_validate(
14576                data: &[u8],
14577            ) -> alloy_sol_types::Result<Self::Return> {
14578                <Self::ReturnTuple<
14579                    '_,
14580                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14581                    .map(Into::into)
14582            }
14583        }
14584    };
14585    #[derive(serde::Serialize, serde::Deserialize)]
14586    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14587    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
14588```solidity
14589function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
14590```*/
14591    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14592    #[derive(Clone)]
14593    pub struct stateHistoryCommitmentsCall(
14594        pub alloy::sol_types::private::primitives::aliases::U256,
14595    );
14596    #[derive(serde::Serialize, serde::Deserialize)]
14597    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14598    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
14599    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14600    #[derive(Clone)]
14601    pub struct stateHistoryCommitmentsReturn {
14602        #[allow(missing_docs)]
14603        pub l1BlockHeight: u64,
14604        #[allow(missing_docs)]
14605        pub l1BlockTimestamp: u64,
14606        #[allow(missing_docs)]
14607        pub hotShotBlockHeight: u64,
14608        #[allow(missing_docs)]
14609        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14610    }
14611    #[allow(
14612        non_camel_case_types,
14613        non_snake_case,
14614        clippy::pub_underscore_fields,
14615        clippy::style
14616    )]
14617    const _: () = {
14618        use alloy::sol_types as alloy_sol_types;
14619        {
14620            #[doc(hidden)]
14621            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
14622            #[doc(hidden)]
14623            type UnderlyingRustTuple<'a> = (
14624                alloy::sol_types::private::primitives::aliases::U256,
14625            );
14626            #[cfg(test)]
14627            #[allow(dead_code, unreachable_patterns)]
14628            fn _type_assertion(
14629                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14630            ) {
14631                match _t {
14632                    alloy_sol_types::private::AssertTypeEq::<
14633                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14634                    >(_) => {}
14635                }
14636            }
14637            #[automatically_derived]
14638            #[doc(hidden)]
14639            impl ::core::convert::From<stateHistoryCommitmentsCall>
14640            for UnderlyingRustTuple<'_> {
14641                fn from(value: stateHistoryCommitmentsCall) -> Self {
14642                    (value.0,)
14643                }
14644            }
14645            #[automatically_derived]
14646            #[doc(hidden)]
14647            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14648            for stateHistoryCommitmentsCall {
14649                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14650                    Self(tuple.0)
14651                }
14652            }
14653        }
14654        {
14655            #[doc(hidden)]
14656            type UnderlyingSolTuple<'a> = (
14657                alloy::sol_types::sol_data::Uint<64>,
14658                alloy::sol_types::sol_data::Uint<64>,
14659                alloy::sol_types::sol_data::Uint<64>,
14660                BN254::ScalarField,
14661            );
14662            #[doc(hidden)]
14663            type UnderlyingRustTuple<'a> = (
14664                u64,
14665                u64,
14666                u64,
14667                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14668            );
14669            #[cfg(test)]
14670            #[allow(dead_code, unreachable_patterns)]
14671            fn _type_assertion(
14672                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14673            ) {
14674                match _t {
14675                    alloy_sol_types::private::AssertTypeEq::<
14676                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14677                    >(_) => {}
14678                }
14679            }
14680            #[automatically_derived]
14681            #[doc(hidden)]
14682            impl ::core::convert::From<stateHistoryCommitmentsReturn>
14683            for UnderlyingRustTuple<'_> {
14684                fn from(value: stateHistoryCommitmentsReturn) -> Self {
14685                    (
14686                        value.l1BlockHeight,
14687                        value.l1BlockTimestamp,
14688                        value.hotShotBlockHeight,
14689                        value.hotShotBlockCommRoot,
14690                    )
14691                }
14692            }
14693            #[automatically_derived]
14694            #[doc(hidden)]
14695            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14696            for stateHistoryCommitmentsReturn {
14697                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14698                    Self {
14699                        l1BlockHeight: tuple.0,
14700                        l1BlockTimestamp: tuple.1,
14701                        hotShotBlockHeight: tuple.2,
14702                        hotShotBlockCommRoot: tuple.3,
14703                    }
14704                }
14705            }
14706        }
14707        impl stateHistoryCommitmentsReturn {
14708            fn _tokenize(
14709                &self,
14710            ) -> <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::ReturnToken<
14711                '_,
14712            > {
14713                (
14714                    <alloy::sol_types::sol_data::Uint<
14715                        64,
14716                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
14717                    <alloy::sol_types::sol_data::Uint<
14718                        64,
14719                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
14720                    <alloy::sol_types::sol_data::Uint<
14721                        64,
14722                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
14723                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
14724                        &self.hotShotBlockCommRoot,
14725                    ),
14726                )
14727            }
14728        }
14729        #[automatically_derived]
14730        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
14731            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
14732            type Token<'a> = <Self::Parameters<
14733                'a,
14734            > as alloy_sol_types::SolType>::Token<'a>;
14735            type Return = stateHistoryCommitmentsReturn;
14736            type ReturnTuple<'a> = (
14737                alloy::sol_types::sol_data::Uint<64>,
14738                alloy::sol_types::sol_data::Uint<64>,
14739                alloy::sol_types::sol_data::Uint<64>,
14740                BN254::ScalarField,
14741            );
14742            type ReturnToken<'a> = <Self::ReturnTuple<
14743                'a,
14744            > as alloy_sol_types::SolType>::Token<'a>;
14745            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
14746            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
14747            #[inline]
14748            fn new<'a>(
14749                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14750            ) -> Self {
14751                tuple.into()
14752            }
14753            #[inline]
14754            fn tokenize(&self) -> Self::Token<'_> {
14755                (
14756                    <alloy::sol_types::sol_data::Uint<
14757                        256,
14758                    > as alloy_sol_types::SolType>::tokenize(&self.0),
14759                )
14760            }
14761            #[inline]
14762            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14763                stateHistoryCommitmentsReturn::_tokenize(ret)
14764            }
14765            #[inline]
14766            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14767                <Self::ReturnTuple<
14768                    '_,
14769                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14770                    .map(Into::into)
14771            }
14772            #[inline]
14773            fn abi_decode_returns_validate(
14774                data: &[u8],
14775            ) -> alloy_sol_types::Result<Self::Return> {
14776                <Self::ReturnTuple<
14777                    '_,
14778                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14779                    .map(Into::into)
14780            }
14781        }
14782    };
14783    #[derive(serde::Serialize, serde::Deserialize)]
14784    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14785    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
14786```solidity
14787function stateHistoryFirstIndex() external view returns (uint64);
14788```*/
14789    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14790    #[derive(Clone)]
14791    pub struct stateHistoryFirstIndexCall;
14792    #[derive(serde::Serialize, serde::Deserialize)]
14793    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14794    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
14795    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14796    #[derive(Clone)]
14797    pub struct stateHistoryFirstIndexReturn {
14798        #[allow(missing_docs)]
14799        pub _0: u64,
14800    }
14801    #[allow(
14802        non_camel_case_types,
14803        non_snake_case,
14804        clippy::pub_underscore_fields,
14805        clippy::style
14806    )]
14807    const _: () = {
14808        use alloy::sol_types as alloy_sol_types;
14809        {
14810            #[doc(hidden)]
14811            type UnderlyingSolTuple<'a> = ();
14812            #[doc(hidden)]
14813            type UnderlyingRustTuple<'a> = ();
14814            #[cfg(test)]
14815            #[allow(dead_code, unreachable_patterns)]
14816            fn _type_assertion(
14817                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14818            ) {
14819                match _t {
14820                    alloy_sol_types::private::AssertTypeEq::<
14821                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14822                    >(_) => {}
14823                }
14824            }
14825            #[automatically_derived]
14826            #[doc(hidden)]
14827            impl ::core::convert::From<stateHistoryFirstIndexCall>
14828            for UnderlyingRustTuple<'_> {
14829                fn from(value: stateHistoryFirstIndexCall) -> Self {
14830                    ()
14831                }
14832            }
14833            #[automatically_derived]
14834            #[doc(hidden)]
14835            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14836            for stateHistoryFirstIndexCall {
14837                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14838                    Self
14839                }
14840            }
14841        }
14842        {
14843            #[doc(hidden)]
14844            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
14845            #[doc(hidden)]
14846            type UnderlyingRustTuple<'a> = (u64,);
14847            #[cfg(test)]
14848            #[allow(dead_code, unreachable_patterns)]
14849            fn _type_assertion(
14850                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14851            ) {
14852                match _t {
14853                    alloy_sol_types::private::AssertTypeEq::<
14854                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14855                    >(_) => {}
14856                }
14857            }
14858            #[automatically_derived]
14859            #[doc(hidden)]
14860            impl ::core::convert::From<stateHistoryFirstIndexReturn>
14861            for UnderlyingRustTuple<'_> {
14862                fn from(value: stateHistoryFirstIndexReturn) -> Self {
14863                    (value._0,)
14864                }
14865            }
14866            #[automatically_derived]
14867            #[doc(hidden)]
14868            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14869            for stateHistoryFirstIndexReturn {
14870                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14871                    Self { _0: tuple.0 }
14872                }
14873            }
14874        }
14875        #[automatically_derived]
14876        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
14877            type Parameters<'a> = ();
14878            type Token<'a> = <Self::Parameters<
14879                'a,
14880            > as alloy_sol_types::SolType>::Token<'a>;
14881            type Return = u64;
14882            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
14883            type ReturnToken<'a> = <Self::ReturnTuple<
14884                'a,
14885            > as alloy_sol_types::SolType>::Token<'a>;
14886            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
14887            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
14888            #[inline]
14889            fn new<'a>(
14890                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14891            ) -> Self {
14892                tuple.into()
14893            }
14894            #[inline]
14895            fn tokenize(&self) -> Self::Token<'_> {
14896                ()
14897            }
14898            #[inline]
14899            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14900                (
14901                    <alloy::sol_types::sol_data::Uint<
14902                        64,
14903                    > as alloy_sol_types::SolType>::tokenize(ret),
14904                )
14905            }
14906            #[inline]
14907            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14908                <Self::ReturnTuple<
14909                    '_,
14910                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14911                    .map(|r| {
14912                        let r: stateHistoryFirstIndexReturn = r.into();
14913                        r._0
14914                    })
14915            }
14916            #[inline]
14917            fn abi_decode_returns_validate(
14918                data: &[u8],
14919            ) -> alloy_sol_types::Result<Self::Return> {
14920                <Self::ReturnTuple<
14921                    '_,
14922                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14923                    .map(|r| {
14924                        let r: stateHistoryFirstIndexReturn = r.into();
14925                        r._0
14926                    })
14927            }
14928        }
14929    };
14930    #[derive(serde::Serialize, serde::Deserialize)]
14931    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14932    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
14933```solidity
14934function stateHistoryRetentionPeriod() external view returns (uint32);
14935```*/
14936    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14937    #[derive(Clone)]
14938    pub struct stateHistoryRetentionPeriodCall;
14939    #[derive(serde::Serialize, serde::Deserialize)]
14940    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14941    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
14942    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14943    #[derive(Clone)]
14944    pub struct stateHistoryRetentionPeriodReturn {
14945        #[allow(missing_docs)]
14946        pub _0: u32,
14947    }
14948    #[allow(
14949        non_camel_case_types,
14950        non_snake_case,
14951        clippy::pub_underscore_fields,
14952        clippy::style
14953    )]
14954    const _: () = {
14955        use alloy::sol_types as alloy_sol_types;
14956        {
14957            #[doc(hidden)]
14958            type UnderlyingSolTuple<'a> = ();
14959            #[doc(hidden)]
14960            type UnderlyingRustTuple<'a> = ();
14961            #[cfg(test)]
14962            #[allow(dead_code, unreachable_patterns)]
14963            fn _type_assertion(
14964                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14965            ) {
14966                match _t {
14967                    alloy_sol_types::private::AssertTypeEq::<
14968                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14969                    >(_) => {}
14970                }
14971            }
14972            #[automatically_derived]
14973            #[doc(hidden)]
14974            impl ::core::convert::From<stateHistoryRetentionPeriodCall>
14975            for UnderlyingRustTuple<'_> {
14976                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
14977                    ()
14978                }
14979            }
14980            #[automatically_derived]
14981            #[doc(hidden)]
14982            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14983            for stateHistoryRetentionPeriodCall {
14984                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14985                    Self
14986                }
14987            }
14988        }
14989        {
14990            #[doc(hidden)]
14991            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
14992            #[doc(hidden)]
14993            type UnderlyingRustTuple<'a> = (u32,);
14994            #[cfg(test)]
14995            #[allow(dead_code, unreachable_patterns)]
14996            fn _type_assertion(
14997                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14998            ) {
14999                match _t {
15000                    alloy_sol_types::private::AssertTypeEq::<
15001                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15002                    >(_) => {}
15003                }
15004            }
15005            #[automatically_derived]
15006            #[doc(hidden)]
15007            impl ::core::convert::From<stateHistoryRetentionPeriodReturn>
15008            for UnderlyingRustTuple<'_> {
15009                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
15010                    (value._0,)
15011                }
15012            }
15013            #[automatically_derived]
15014            #[doc(hidden)]
15015            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15016            for stateHistoryRetentionPeriodReturn {
15017                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15018                    Self { _0: tuple.0 }
15019                }
15020            }
15021        }
15022        #[automatically_derived]
15023        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
15024            type Parameters<'a> = ();
15025            type Token<'a> = <Self::Parameters<
15026                'a,
15027            > as alloy_sol_types::SolType>::Token<'a>;
15028            type Return = u32;
15029            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
15030            type ReturnToken<'a> = <Self::ReturnTuple<
15031                'a,
15032            > as alloy_sol_types::SolType>::Token<'a>;
15033            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
15034            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
15035            #[inline]
15036            fn new<'a>(
15037                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15038            ) -> Self {
15039                tuple.into()
15040            }
15041            #[inline]
15042            fn tokenize(&self) -> Self::Token<'_> {
15043                ()
15044            }
15045            #[inline]
15046            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15047                (
15048                    <alloy::sol_types::sol_data::Uint<
15049                        32,
15050                    > as alloy_sol_types::SolType>::tokenize(ret),
15051                )
15052            }
15053            #[inline]
15054            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15055                <Self::ReturnTuple<
15056                    '_,
15057                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15058                    .map(|r| {
15059                        let r: stateHistoryRetentionPeriodReturn = r.into();
15060                        r._0
15061                    })
15062            }
15063            #[inline]
15064            fn abi_decode_returns_validate(
15065                data: &[u8],
15066            ) -> alloy_sol_types::Result<Self::Return> {
15067                <Self::ReturnTuple<
15068                    '_,
15069                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15070                    .map(|r| {
15071                        let r: stateHistoryRetentionPeriodReturn = r.into();
15072                        r._0
15073                    })
15074            }
15075        }
15076    };
15077    #[derive(serde::Serialize, serde::Deserialize)]
15078    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15079    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
15080```solidity
15081function transferOwnership(address newOwner) external;
15082```*/
15083    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15084    #[derive(Clone)]
15085    pub struct transferOwnershipCall {
15086        #[allow(missing_docs)]
15087        pub newOwner: alloy::sol_types::private::Address,
15088    }
15089    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
15090    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15091    #[derive(Clone)]
15092    pub struct transferOwnershipReturn {}
15093    #[allow(
15094        non_camel_case_types,
15095        non_snake_case,
15096        clippy::pub_underscore_fields,
15097        clippy::style
15098    )]
15099    const _: () = {
15100        use alloy::sol_types as alloy_sol_types;
15101        {
15102            #[doc(hidden)]
15103            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
15104            #[doc(hidden)]
15105            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
15106            #[cfg(test)]
15107            #[allow(dead_code, unreachable_patterns)]
15108            fn _type_assertion(
15109                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15110            ) {
15111                match _t {
15112                    alloy_sol_types::private::AssertTypeEq::<
15113                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15114                    >(_) => {}
15115                }
15116            }
15117            #[automatically_derived]
15118            #[doc(hidden)]
15119            impl ::core::convert::From<transferOwnershipCall>
15120            for UnderlyingRustTuple<'_> {
15121                fn from(value: transferOwnershipCall) -> Self {
15122                    (value.newOwner,)
15123                }
15124            }
15125            #[automatically_derived]
15126            #[doc(hidden)]
15127            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15128            for transferOwnershipCall {
15129                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15130                    Self { newOwner: tuple.0 }
15131                }
15132            }
15133        }
15134        {
15135            #[doc(hidden)]
15136            type UnderlyingSolTuple<'a> = ();
15137            #[doc(hidden)]
15138            type UnderlyingRustTuple<'a> = ();
15139            #[cfg(test)]
15140            #[allow(dead_code, unreachable_patterns)]
15141            fn _type_assertion(
15142                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15143            ) {
15144                match _t {
15145                    alloy_sol_types::private::AssertTypeEq::<
15146                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15147                    >(_) => {}
15148                }
15149            }
15150            #[automatically_derived]
15151            #[doc(hidden)]
15152            impl ::core::convert::From<transferOwnershipReturn>
15153            for UnderlyingRustTuple<'_> {
15154                fn from(value: transferOwnershipReturn) -> Self {
15155                    ()
15156                }
15157            }
15158            #[automatically_derived]
15159            #[doc(hidden)]
15160            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15161            for transferOwnershipReturn {
15162                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15163                    Self {}
15164                }
15165            }
15166        }
15167        impl transferOwnershipReturn {
15168            fn _tokenize(
15169                &self,
15170            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
15171                ()
15172            }
15173        }
15174        #[automatically_derived]
15175        impl alloy_sol_types::SolCall for transferOwnershipCall {
15176            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
15177            type Token<'a> = <Self::Parameters<
15178                'a,
15179            > as alloy_sol_types::SolType>::Token<'a>;
15180            type Return = transferOwnershipReturn;
15181            type ReturnTuple<'a> = ();
15182            type ReturnToken<'a> = <Self::ReturnTuple<
15183                'a,
15184            > as alloy_sol_types::SolType>::Token<'a>;
15185            const SIGNATURE: &'static str = "transferOwnership(address)";
15186            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
15187            #[inline]
15188            fn new<'a>(
15189                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15190            ) -> Self {
15191                tuple.into()
15192            }
15193            #[inline]
15194            fn tokenize(&self) -> Self::Token<'_> {
15195                (
15196                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15197                        &self.newOwner,
15198                    ),
15199                )
15200            }
15201            #[inline]
15202            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15203                transferOwnershipReturn::_tokenize(ret)
15204            }
15205            #[inline]
15206            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15207                <Self::ReturnTuple<
15208                    '_,
15209                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15210                    .map(Into::into)
15211            }
15212            #[inline]
15213            fn abi_decode_returns_validate(
15214                data: &[u8],
15215            ) -> alloy_sol_types::Result<Self::Return> {
15216                <Self::ReturnTuple<
15217                    '_,
15218                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15219                    .map(Into::into)
15220            }
15221        }
15222    };
15223    #[derive(serde::Serialize, serde::Deserialize)]
15224    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15225    /**Function with signature `updateEpochStartBlock(uint64)` and selector `0x167ac618`.
15226```solidity
15227function updateEpochStartBlock(uint64 newEpochStartBlock) external;
15228```*/
15229    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15230    #[derive(Clone)]
15231    pub struct updateEpochStartBlockCall {
15232        #[allow(missing_docs)]
15233        pub newEpochStartBlock: u64,
15234    }
15235    ///Container type for the return parameters of the [`updateEpochStartBlock(uint64)`](updateEpochStartBlockCall) function.
15236    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15237    #[derive(Clone)]
15238    pub struct updateEpochStartBlockReturn {}
15239    #[allow(
15240        non_camel_case_types,
15241        non_snake_case,
15242        clippy::pub_underscore_fields,
15243        clippy::style
15244    )]
15245    const _: () = {
15246        use alloy::sol_types as alloy_sol_types;
15247        {
15248            #[doc(hidden)]
15249            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
15250            #[doc(hidden)]
15251            type UnderlyingRustTuple<'a> = (u64,);
15252            #[cfg(test)]
15253            #[allow(dead_code, unreachable_patterns)]
15254            fn _type_assertion(
15255                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15256            ) {
15257                match _t {
15258                    alloy_sol_types::private::AssertTypeEq::<
15259                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15260                    >(_) => {}
15261                }
15262            }
15263            #[automatically_derived]
15264            #[doc(hidden)]
15265            impl ::core::convert::From<updateEpochStartBlockCall>
15266            for UnderlyingRustTuple<'_> {
15267                fn from(value: updateEpochStartBlockCall) -> Self {
15268                    (value.newEpochStartBlock,)
15269                }
15270            }
15271            #[automatically_derived]
15272            #[doc(hidden)]
15273            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15274            for updateEpochStartBlockCall {
15275                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15276                    Self {
15277                        newEpochStartBlock: tuple.0,
15278                    }
15279                }
15280            }
15281        }
15282        {
15283            #[doc(hidden)]
15284            type UnderlyingSolTuple<'a> = ();
15285            #[doc(hidden)]
15286            type UnderlyingRustTuple<'a> = ();
15287            #[cfg(test)]
15288            #[allow(dead_code, unreachable_patterns)]
15289            fn _type_assertion(
15290                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15291            ) {
15292                match _t {
15293                    alloy_sol_types::private::AssertTypeEq::<
15294                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15295                    >(_) => {}
15296                }
15297            }
15298            #[automatically_derived]
15299            #[doc(hidden)]
15300            impl ::core::convert::From<updateEpochStartBlockReturn>
15301            for UnderlyingRustTuple<'_> {
15302                fn from(value: updateEpochStartBlockReturn) -> Self {
15303                    ()
15304                }
15305            }
15306            #[automatically_derived]
15307            #[doc(hidden)]
15308            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15309            for updateEpochStartBlockReturn {
15310                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15311                    Self {}
15312                }
15313            }
15314        }
15315        impl updateEpochStartBlockReturn {
15316            fn _tokenize(
15317                &self,
15318            ) -> <updateEpochStartBlockCall as alloy_sol_types::SolCall>::ReturnToken<
15319                '_,
15320            > {
15321                ()
15322            }
15323        }
15324        #[automatically_derived]
15325        impl alloy_sol_types::SolCall for updateEpochStartBlockCall {
15326            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
15327            type Token<'a> = <Self::Parameters<
15328                'a,
15329            > as alloy_sol_types::SolType>::Token<'a>;
15330            type Return = updateEpochStartBlockReturn;
15331            type ReturnTuple<'a> = ();
15332            type ReturnToken<'a> = <Self::ReturnTuple<
15333                'a,
15334            > as alloy_sol_types::SolType>::Token<'a>;
15335            const SIGNATURE: &'static str = "updateEpochStartBlock(uint64)";
15336            const SELECTOR: [u8; 4] = [22u8, 122u8, 198u8, 24u8];
15337            #[inline]
15338            fn new<'a>(
15339                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15340            ) -> Self {
15341                tuple.into()
15342            }
15343            #[inline]
15344            fn tokenize(&self) -> Self::Token<'_> {
15345                (
15346                    <alloy::sol_types::sol_data::Uint<
15347                        64,
15348                    > as alloy_sol_types::SolType>::tokenize(&self.newEpochStartBlock),
15349                )
15350            }
15351            #[inline]
15352            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15353                updateEpochStartBlockReturn::_tokenize(ret)
15354            }
15355            #[inline]
15356            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15357                <Self::ReturnTuple<
15358                    '_,
15359                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15360                    .map(Into::into)
15361            }
15362            #[inline]
15363            fn abi_decode_returns_validate(
15364                data: &[u8],
15365            ) -> alloy_sol_types::Result<Self::Return> {
15366                <Self::ReturnTuple<
15367                    '_,
15368                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15369                    .map(Into::into)
15370            }
15371        }
15372    };
15373    #[derive(serde::Serialize, serde::Deserialize)]
15374    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15375    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
15376```solidity
15377function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
15378```*/
15379    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15380    #[derive(Clone)]
15381    pub struct upgradeToAndCallCall {
15382        #[allow(missing_docs)]
15383        pub newImplementation: alloy::sol_types::private::Address,
15384        #[allow(missing_docs)]
15385        pub data: alloy::sol_types::private::Bytes,
15386    }
15387    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
15388    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15389    #[derive(Clone)]
15390    pub struct upgradeToAndCallReturn {}
15391    #[allow(
15392        non_camel_case_types,
15393        non_snake_case,
15394        clippy::pub_underscore_fields,
15395        clippy::style
15396    )]
15397    const _: () = {
15398        use alloy::sol_types as alloy_sol_types;
15399        {
15400            #[doc(hidden)]
15401            type UnderlyingSolTuple<'a> = (
15402                alloy::sol_types::sol_data::Address,
15403                alloy::sol_types::sol_data::Bytes,
15404            );
15405            #[doc(hidden)]
15406            type UnderlyingRustTuple<'a> = (
15407                alloy::sol_types::private::Address,
15408                alloy::sol_types::private::Bytes,
15409            );
15410            #[cfg(test)]
15411            #[allow(dead_code, unreachable_patterns)]
15412            fn _type_assertion(
15413                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15414            ) {
15415                match _t {
15416                    alloy_sol_types::private::AssertTypeEq::<
15417                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15418                    >(_) => {}
15419                }
15420            }
15421            #[automatically_derived]
15422            #[doc(hidden)]
15423            impl ::core::convert::From<upgradeToAndCallCall>
15424            for UnderlyingRustTuple<'_> {
15425                fn from(value: upgradeToAndCallCall) -> Self {
15426                    (value.newImplementation, value.data)
15427                }
15428            }
15429            #[automatically_derived]
15430            #[doc(hidden)]
15431            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15432            for upgradeToAndCallCall {
15433                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15434                    Self {
15435                        newImplementation: tuple.0,
15436                        data: tuple.1,
15437                    }
15438                }
15439            }
15440        }
15441        {
15442            #[doc(hidden)]
15443            type UnderlyingSolTuple<'a> = ();
15444            #[doc(hidden)]
15445            type UnderlyingRustTuple<'a> = ();
15446            #[cfg(test)]
15447            #[allow(dead_code, unreachable_patterns)]
15448            fn _type_assertion(
15449                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15450            ) {
15451                match _t {
15452                    alloy_sol_types::private::AssertTypeEq::<
15453                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15454                    >(_) => {}
15455                }
15456            }
15457            #[automatically_derived]
15458            #[doc(hidden)]
15459            impl ::core::convert::From<upgradeToAndCallReturn>
15460            for UnderlyingRustTuple<'_> {
15461                fn from(value: upgradeToAndCallReturn) -> Self {
15462                    ()
15463                }
15464            }
15465            #[automatically_derived]
15466            #[doc(hidden)]
15467            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15468            for upgradeToAndCallReturn {
15469                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15470                    Self {}
15471                }
15472            }
15473        }
15474        impl upgradeToAndCallReturn {
15475            fn _tokenize(
15476                &self,
15477            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
15478                ()
15479            }
15480        }
15481        #[automatically_derived]
15482        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
15483            type Parameters<'a> = (
15484                alloy::sol_types::sol_data::Address,
15485                alloy::sol_types::sol_data::Bytes,
15486            );
15487            type Token<'a> = <Self::Parameters<
15488                'a,
15489            > as alloy_sol_types::SolType>::Token<'a>;
15490            type Return = upgradeToAndCallReturn;
15491            type ReturnTuple<'a> = ();
15492            type ReturnToken<'a> = <Self::ReturnTuple<
15493                'a,
15494            > as alloy_sol_types::SolType>::Token<'a>;
15495            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
15496            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
15497            #[inline]
15498            fn new<'a>(
15499                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15500            ) -> Self {
15501                tuple.into()
15502            }
15503            #[inline]
15504            fn tokenize(&self) -> Self::Token<'_> {
15505                (
15506                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15507                        &self.newImplementation,
15508                    ),
15509                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
15510                        &self.data,
15511                    ),
15512                )
15513            }
15514            #[inline]
15515            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15516                upgradeToAndCallReturn::_tokenize(ret)
15517            }
15518            #[inline]
15519            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15520                <Self::ReturnTuple<
15521                    '_,
15522                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15523                    .map(Into::into)
15524            }
15525            #[inline]
15526            fn abi_decode_returns_validate(
15527                data: &[u8],
15528            ) -> alloy_sol_types::Result<Self::Return> {
15529                <Self::ReturnTuple<
15530                    '_,
15531                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15532                    .map(Into::into)
15533            }
15534        }
15535    };
15536    #[derive(serde::Serialize, serde::Deserialize)]
15537    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15538    /**Function with signature `votingStakeTableState()` and selector `0x0625e19b`.
15539```solidity
15540function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
15541```*/
15542    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15543    #[derive(Clone)]
15544    pub struct votingStakeTableStateCall;
15545    #[derive(serde::Serialize, serde::Deserialize)]
15546    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15547    ///Container type for the return parameters of the [`votingStakeTableState()`](votingStakeTableStateCall) function.
15548    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15549    #[derive(Clone)]
15550    pub struct votingStakeTableStateReturn {
15551        #[allow(missing_docs)]
15552        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
15553        #[allow(missing_docs)]
15554        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
15555        #[allow(missing_docs)]
15556        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
15557        #[allow(missing_docs)]
15558        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
15559    }
15560    #[allow(
15561        non_camel_case_types,
15562        non_snake_case,
15563        clippy::pub_underscore_fields,
15564        clippy::style
15565    )]
15566    const _: () = {
15567        use alloy::sol_types as alloy_sol_types;
15568        {
15569            #[doc(hidden)]
15570            type UnderlyingSolTuple<'a> = ();
15571            #[doc(hidden)]
15572            type UnderlyingRustTuple<'a> = ();
15573            #[cfg(test)]
15574            #[allow(dead_code, unreachable_patterns)]
15575            fn _type_assertion(
15576                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15577            ) {
15578                match _t {
15579                    alloy_sol_types::private::AssertTypeEq::<
15580                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15581                    >(_) => {}
15582                }
15583            }
15584            #[automatically_derived]
15585            #[doc(hidden)]
15586            impl ::core::convert::From<votingStakeTableStateCall>
15587            for UnderlyingRustTuple<'_> {
15588                fn from(value: votingStakeTableStateCall) -> Self {
15589                    ()
15590                }
15591            }
15592            #[automatically_derived]
15593            #[doc(hidden)]
15594            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15595            for votingStakeTableStateCall {
15596                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15597                    Self
15598                }
15599            }
15600        }
15601        {
15602            #[doc(hidden)]
15603            type UnderlyingSolTuple<'a> = (
15604                alloy::sol_types::sol_data::Uint<256>,
15605                BN254::ScalarField,
15606                BN254::ScalarField,
15607                BN254::ScalarField,
15608            );
15609            #[doc(hidden)]
15610            type UnderlyingRustTuple<'a> = (
15611                alloy::sol_types::private::primitives::aliases::U256,
15612                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
15613                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
15614                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
15615            );
15616            #[cfg(test)]
15617            #[allow(dead_code, unreachable_patterns)]
15618            fn _type_assertion(
15619                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15620            ) {
15621                match _t {
15622                    alloy_sol_types::private::AssertTypeEq::<
15623                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15624                    >(_) => {}
15625                }
15626            }
15627            #[automatically_derived]
15628            #[doc(hidden)]
15629            impl ::core::convert::From<votingStakeTableStateReturn>
15630            for UnderlyingRustTuple<'_> {
15631                fn from(value: votingStakeTableStateReturn) -> Self {
15632                    (
15633                        value.threshold,
15634                        value.blsKeyComm,
15635                        value.schnorrKeyComm,
15636                        value.amountComm,
15637                    )
15638                }
15639            }
15640            #[automatically_derived]
15641            #[doc(hidden)]
15642            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15643            for votingStakeTableStateReturn {
15644                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15645                    Self {
15646                        threshold: tuple.0,
15647                        blsKeyComm: tuple.1,
15648                        schnorrKeyComm: tuple.2,
15649                        amountComm: tuple.3,
15650                    }
15651                }
15652            }
15653        }
15654        impl votingStakeTableStateReturn {
15655            fn _tokenize(
15656                &self,
15657            ) -> <votingStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
15658                '_,
15659            > {
15660                (
15661                    <alloy::sol_types::sol_data::Uint<
15662                        256,
15663                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
15664                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
15665                        &self.blsKeyComm,
15666                    ),
15667                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
15668                        &self.schnorrKeyComm,
15669                    ),
15670                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
15671                        &self.amountComm,
15672                    ),
15673                )
15674            }
15675        }
15676        #[automatically_derived]
15677        impl alloy_sol_types::SolCall for votingStakeTableStateCall {
15678            type Parameters<'a> = ();
15679            type Token<'a> = <Self::Parameters<
15680                'a,
15681            > as alloy_sol_types::SolType>::Token<'a>;
15682            type Return = votingStakeTableStateReturn;
15683            type ReturnTuple<'a> = (
15684                alloy::sol_types::sol_data::Uint<256>,
15685                BN254::ScalarField,
15686                BN254::ScalarField,
15687                BN254::ScalarField,
15688            );
15689            type ReturnToken<'a> = <Self::ReturnTuple<
15690                'a,
15691            > as alloy_sol_types::SolType>::Token<'a>;
15692            const SIGNATURE: &'static str = "votingStakeTableState()";
15693            const SELECTOR: [u8; 4] = [6u8, 37u8, 225u8, 155u8];
15694            #[inline]
15695            fn new<'a>(
15696                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15697            ) -> Self {
15698                tuple.into()
15699            }
15700            #[inline]
15701            fn tokenize(&self) -> Self::Token<'_> {
15702                ()
15703            }
15704            #[inline]
15705            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15706                votingStakeTableStateReturn::_tokenize(ret)
15707            }
15708            #[inline]
15709            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15710                <Self::ReturnTuple<
15711                    '_,
15712                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15713                    .map(Into::into)
15714            }
15715            #[inline]
15716            fn abi_decode_returns_validate(
15717                data: &[u8],
15718            ) -> alloy_sol_types::Result<Self::Return> {
15719                <Self::ReturnTuple<
15720                    '_,
15721                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15722                    .map(Into::into)
15723            }
15724        }
15725    };
15726    ///Container for all the [`LightClientV3Mock`](self) function calls.
15727    #[derive(serde::Serialize, serde::Deserialize)]
15728    #[derive()]
15729    pub enum LightClientV3MockCalls {
15730        #[allow(missing_docs)]
15731        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
15732        #[allow(missing_docs)]
15733        _getVk(_getVkCall),
15734        #[allow(missing_docs)]
15735        authRoot(authRootCall),
15736        #[allow(missing_docs)]
15737        blocksPerEpoch(blocksPerEpochCall),
15738        #[allow(missing_docs)]
15739        currentBlockNumber(currentBlockNumberCall),
15740        #[allow(missing_docs)]
15741        currentEpoch(currentEpochCall),
15742        #[allow(missing_docs)]
15743        disablePermissionedProverMode(disablePermissionedProverModeCall),
15744        #[allow(missing_docs)]
15745        epochFromBlockNumber(epochFromBlockNumberCall),
15746        #[allow(missing_docs)]
15747        epochStartBlock(epochStartBlockCall),
15748        #[allow(missing_docs)]
15749        finalizedState(finalizedStateCall),
15750        #[allow(missing_docs)]
15751        firstEpoch(firstEpochCall),
15752        #[allow(missing_docs)]
15753        genesisStakeTableState(genesisStakeTableStateCall),
15754        #[allow(missing_docs)]
15755        genesisState(genesisStateCall),
15756        #[allow(missing_docs)]
15757        getHotShotCommitment(getHotShotCommitmentCall),
15758        #[allow(missing_docs)]
15759        getStateHistoryCount(getStateHistoryCountCall),
15760        #[allow(missing_docs)]
15761        getVersion(getVersionCall),
15762        #[allow(missing_docs)]
15763        initialize(initializeCall),
15764        #[allow(missing_docs)]
15765        initializeV2(initializeV2Call),
15766        #[allow(missing_docs)]
15767        initializeV3(initializeV3Call),
15768        #[allow(missing_docs)]
15769        isEpochRoot(isEpochRootCall),
15770        #[allow(missing_docs)]
15771        isGtEpochRoot(isGtEpochRootCall),
15772        #[allow(missing_docs)]
15773        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
15774        #[allow(missing_docs)]
15775        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
15776        #[allow(missing_docs)]
15777        newFinalizedState_0(newFinalizedState_0Call),
15778        #[allow(missing_docs)]
15779        newFinalizedState_1(newFinalizedState_1Call),
15780        #[allow(missing_docs)]
15781        newFinalizedState_2(newFinalizedState_2Call),
15782        #[allow(missing_docs)]
15783        owner(ownerCall),
15784        #[allow(missing_docs)]
15785        permissionedProver(permissionedProverCall),
15786        #[allow(missing_docs)]
15787        proxiableUUID(proxiableUUIDCall),
15788        #[allow(missing_docs)]
15789        renounceOwnership(renounceOwnershipCall),
15790        #[allow(missing_docs)]
15791        setAuthRoot(setAuthRootCall),
15792        #[allow(missing_docs)]
15793        setBlocksPerEpoch(setBlocksPerEpochCall),
15794        #[allow(missing_docs)]
15795        setFinalizedState(setFinalizedStateCall),
15796        #[allow(missing_docs)]
15797        setHotShotDownSince(setHotShotDownSinceCall),
15798        #[allow(missing_docs)]
15799        setHotShotUp(setHotShotUpCall),
15800        #[allow(missing_docs)]
15801        setPermissionedProver(setPermissionedProverCall),
15802        #[allow(missing_docs)]
15803        setStateHistory(setStateHistoryCall),
15804        #[allow(missing_docs)]
15805        setStateHistoryRetentionPeriod(setStateHistoryRetentionPeriodCall),
15806        #[allow(missing_docs)]
15807        setVotingStakeTableState(setVotingStakeTableStateCall),
15808        #[allow(missing_docs)]
15809        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
15810        #[allow(missing_docs)]
15811        stateHistoryCommitments(stateHistoryCommitmentsCall),
15812        #[allow(missing_docs)]
15813        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
15814        #[allow(missing_docs)]
15815        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
15816        #[allow(missing_docs)]
15817        transferOwnership(transferOwnershipCall),
15818        #[allow(missing_docs)]
15819        updateEpochStartBlock(updateEpochStartBlockCall),
15820        #[allow(missing_docs)]
15821        upgradeToAndCall(upgradeToAndCallCall),
15822        #[allow(missing_docs)]
15823        votingStakeTableState(votingStakeTableStateCall),
15824    }
15825    #[automatically_derived]
15826    impl LightClientV3MockCalls {
15827        /// All the selectors of this enum.
15828        ///
15829        /// Note that the selectors might not be in the same order as the variants.
15830        /// No guarantees are made about the order of the selectors.
15831        ///
15832        /// Prefer using `SolInterface` methods instead.
15833        pub const SELECTORS: &'static [[u8; 4usize]] = &[
15834            [1u8, 63u8, 165u8, 252u8],
15835            [2u8, 181u8, 146u8, 243u8],
15836            [6u8, 37u8, 225u8, 155u8],
15837            [13u8, 142u8, 110u8, 44u8],
15838            [18u8, 23u8, 60u8, 44u8],
15839            [22u8, 122u8, 198u8, 24u8],
15840            [26u8, 240u8, 128u8, 52u8],
15841            [32u8, 99u8, 212u8, 247u8],
15842            [37u8, 41u8, 116u8, 39u8],
15843            [45u8, 82u8, 170u8, 214u8],
15844            [47u8, 121u8, 136u8, 157u8],
15845            [48u8, 12u8, 137u8, 221u8],
15846            [49u8, 61u8, 247u8, 177u8],
15847            [55u8, 142u8, 194u8, 59u8],
15848            [56u8, 228u8, 84u8, 177u8],
15849            [60u8, 35u8, 182u8, 219u8],
15850            [62u8, 213u8, 91u8, 123u8],
15851            [65u8, 104u8, 39u8, 68u8],
15852            [66u8, 109u8, 49u8, 148u8],
15853            [67u8, 61u8, 186u8, 159u8],
15854            [79u8, 30u8, 242u8, 134u8],
15855            [82u8, 209u8, 144u8, 45u8],
15856            [98u8, 58u8, 19u8, 56u8],
15857            [105u8, 204u8, 106u8, 4u8],
15858            [113u8, 80u8, 24u8, 166u8],
15859            [117u8, 124u8, 55u8, 173u8],
15860            [118u8, 103u8, 24u8, 8u8],
15861            [130u8, 110u8, 65u8, 252u8],
15862            [133u8, 132u8, 210u8, 63u8],
15863            [141u8, 165u8, 203u8, 91u8],
15864            [144u8, 193u8, 67u8, 144u8],
15865            [150u8, 193u8, 202u8, 97u8],
15866            [153u8, 131u8, 40u8, 232u8],
15867            [155u8, 170u8, 60u8, 201u8],
15868            [159u8, 219u8, 84u8, 167u8],
15869            [170u8, 189u8, 93u8, 179u8],
15870            [173u8, 60u8, 177u8, 204u8],
15871            [179u8, 59u8, 196u8, 145u8],
15872            [181u8, 173u8, 234u8, 60u8],
15873            [194u8, 59u8, 158u8, 158u8],
15874            [200u8, 229u8, 228u8, 152u8],
15875            [210u8, 77u8, 147u8, 61u8],
15876            [224u8, 48u8, 51u8, 1u8],
15877            [240u8, 104u8, 32u8, 84u8],
15878            [242u8, 253u8, 227u8, 139u8],
15879            [245u8, 103u8, 97u8, 96u8],
15880            [249u8, 229u8, 13u8, 25u8],
15881        ];
15882    }
15883    #[automatically_derived]
15884    impl alloy_sol_types::SolInterface for LightClientV3MockCalls {
15885        const NAME: &'static str = "LightClientV3MockCalls";
15886        const MIN_DATA_LENGTH: usize = 0usize;
15887        const COUNT: usize = 47usize;
15888        #[inline]
15889        fn selector(&self) -> [u8; 4] {
15890            match self {
15891                Self::UPGRADE_INTERFACE_VERSION(_) => {
15892                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
15893                }
15894                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
15895                Self::authRoot(_) => <authRootCall as alloy_sol_types::SolCall>::SELECTOR,
15896                Self::blocksPerEpoch(_) => {
15897                    <blocksPerEpochCall as alloy_sol_types::SolCall>::SELECTOR
15898                }
15899                Self::currentBlockNumber(_) => {
15900                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
15901                }
15902                Self::currentEpoch(_) => {
15903                    <currentEpochCall as alloy_sol_types::SolCall>::SELECTOR
15904                }
15905                Self::disablePermissionedProverMode(_) => {
15906                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
15907                }
15908                Self::epochFromBlockNumber(_) => {
15909                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
15910                }
15911                Self::epochStartBlock(_) => {
15912                    <epochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
15913                }
15914                Self::finalizedState(_) => {
15915                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
15916                }
15917                Self::firstEpoch(_) => {
15918                    <firstEpochCall as alloy_sol_types::SolCall>::SELECTOR
15919                }
15920                Self::genesisStakeTableState(_) => {
15921                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
15922                }
15923                Self::genesisState(_) => {
15924                    <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR
15925                }
15926                Self::getHotShotCommitment(_) => {
15927                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
15928                }
15929                Self::getStateHistoryCount(_) => {
15930                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
15931                }
15932                Self::getVersion(_) => {
15933                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
15934                }
15935                Self::initialize(_) => {
15936                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
15937                }
15938                Self::initializeV2(_) => {
15939                    <initializeV2Call as alloy_sol_types::SolCall>::SELECTOR
15940                }
15941                Self::initializeV3(_) => {
15942                    <initializeV3Call as alloy_sol_types::SolCall>::SELECTOR
15943                }
15944                Self::isEpochRoot(_) => {
15945                    <isEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
15946                }
15947                Self::isGtEpochRoot(_) => {
15948                    <isGtEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
15949                }
15950                Self::isPermissionedProverEnabled(_) => {
15951                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
15952                }
15953                Self::lagOverEscapeHatchThreshold(_) => {
15954                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
15955                }
15956                Self::newFinalizedState_0(_) => {
15957                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::SELECTOR
15958                }
15959                Self::newFinalizedState_1(_) => {
15960                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::SELECTOR
15961                }
15962                Self::newFinalizedState_2(_) => {
15963                    <newFinalizedState_2Call as alloy_sol_types::SolCall>::SELECTOR
15964                }
15965                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
15966                Self::permissionedProver(_) => {
15967                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
15968                }
15969                Self::proxiableUUID(_) => {
15970                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
15971                }
15972                Self::renounceOwnership(_) => {
15973                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
15974                }
15975                Self::setAuthRoot(_) => {
15976                    <setAuthRootCall as alloy_sol_types::SolCall>::SELECTOR
15977                }
15978                Self::setBlocksPerEpoch(_) => {
15979                    <setBlocksPerEpochCall as alloy_sol_types::SolCall>::SELECTOR
15980                }
15981                Self::setFinalizedState(_) => {
15982                    <setFinalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
15983                }
15984                Self::setHotShotDownSince(_) => {
15985                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::SELECTOR
15986                }
15987                Self::setHotShotUp(_) => {
15988                    <setHotShotUpCall as alloy_sol_types::SolCall>::SELECTOR
15989                }
15990                Self::setPermissionedProver(_) => {
15991                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
15992                }
15993                Self::setStateHistory(_) => {
15994                    <setStateHistoryCall as alloy_sol_types::SolCall>::SELECTOR
15995                }
15996                Self::setStateHistoryRetentionPeriod(_) => {
15997                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
15998                }
15999                Self::setVotingStakeTableState(_) => {
16000                    <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
16001                }
16002                Self::setstateHistoryRetentionPeriod(_) => {
16003                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
16004                }
16005                Self::stateHistoryCommitments(_) => {
16006                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
16007                }
16008                Self::stateHistoryFirstIndex(_) => {
16009                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
16010                }
16011                Self::stateHistoryRetentionPeriod(_) => {
16012                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
16013                }
16014                Self::transferOwnership(_) => {
16015                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
16016                }
16017                Self::updateEpochStartBlock(_) => {
16018                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
16019                }
16020                Self::upgradeToAndCall(_) => {
16021                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
16022                }
16023                Self::votingStakeTableState(_) => {
16024                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
16025                }
16026            }
16027        }
16028        #[inline]
16029        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
16030            Self::SELECTORS.get(i).copied()
16031        }
16032        #[inline]
16033        fn valid_selector(selector: [u8; 4]) -> bool {
16034            Self::SELECTORS.binary_search(&selector).is_ok()
16035        }
16036        #[inline]
16037        #[allow(non_snake_case)]
16038        fn abi_decode_raw(
16039            selector: [u8; 4],
16040            data: &[u8],
16041        ) -> alloy_sol_types::Result<Self> {
16042            static DECODE_SHIMS: &[fn(
16043                &[u8],
16044            ) -> alloy_sol_types::Result<LightClientV3MockCalls>] = &[
16045                {
16046                    fn setPermissionedProver(
16047                        data: &[u8],
16048                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16049                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
16050                                data,
16051                            )
16052                            .map(LightClientV3MockCalls::setPermissionedProver)
16053                    }
16054                    setPermissionedProver
16055                },
16056                {
16057                    fn stateHistoryCommitments(
16058                        data: &[u8],
16059                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16060                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
16061                                data,
16062                            )
16063                            .map(LightClientV3MockCalls::stateHistoryCommitments)
16064                    }
16065                    stateHistoryCommitments
16066                },
16067                {
16068                    fn votingStakeTableState(
16069                        data: &[u8],
16070                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16071                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
16072                                data,
16073                            )
16074                            .map(LightClientV3MockCalls::votingStakeTableState)
16075                    }
16076                    votingStakeTableState
16077                },
16078                {
16079                    fn getVersion(
16080                        data: &[u8],
16081                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16082                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
16083                                data,
16084                            )
16085                            .map(LightClientV3MockCalls::getVersion)
16086                    }
16087                    getVersion
16088                },
16089                {
16090                    fn _getVk(
16091                        data: &[u8],
16092                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16093                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
16094                            .map(LightClientV3MockCalls::_getVk)
16095                    }
16096                    _getVk
16097                },
16098                {
16099                    fn updateEpochStartBlock(
16100                        data: &[u8],
16101                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16102                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
16103                                data,
16104                            )
16105                            .map(LightClientV3MockCalls::updateEpochStartBlock)
16106                    }
16107                    updateEpochStartBlock
16108                },
16109                {
16110                    fn setAuthRoot(
16111                        data: &[u8],
16112                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16113                        <setAuthRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
16114                                data,
16115                            )
16116                            .map(LightClientV3MockCalls::setAuthRoot)
16117                    }
16118                    setAuthRoot
16119                },
16120                {
16121                    fn newFinalizedState_0(
16122                        data: &[u8],
16123                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16124                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw(
16125                                data,
16126                            )
16127                            .map(LightClientV3MockCalls::newFinalizedState_0)
16128                    }
16129                    newFinalizedState_0
16130                },
16131                {
16132                    fn isEpochRoot(
16133                        data: &[u8],
16134                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16135                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
16136                                data,
16137                            )
16138                            .map(LightClientV3MockCalls::isEpochRoot)
16139                    }
16140                    isEpochRoot
16141                },
16142                {
16143                    fn setHotShotDownSince(
16144                        data: &[u8],
16145                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16146                        <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_decode_raw(
16147                                data,
16148                            )
16149                            .map(LightClientV3MockCalls::setHotShotDownSince)
16150                    }
16151                    setHotShotDownSince
16152                },
16153                {
16154                    fn stateHistoryFirstIndex(
16155                        data: &[u8],
16156                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16157                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
16158                                data,
16159                            )
16160                            .map(LightClientV3MockCalls::stateHistoryFirstIndex)
16161                    }
16162                    stateHistoryFirstIndex
16163                },
16164                {
16165                    fn isGtEpochRoot(
16166                        data: &[u8],
16167                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16168                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
16169                                data,
16170                            )
16171                            .map(LightClientV3MockCalls::isGtEpochRoot)
16172                    }
16173                    isGtEpochRoot
16174                },
16175                {
16176                    fn permissionedProver(
16177                        data: &[u8],
16178                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16179                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
16180                                data,
16181                            )
16182                            .map(LightClientV3MockCalls::permissionedProver)
16183                    }
16184                    permissionedProver
16185                },
16186                {
16187                    fn currentBlockNumber(
16188                        data: &[u8],
16189                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16190                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
16191                                data,
16192                            )
16193                            .map(LightClientV3MockCalls::currentBlockNumber)
16194                    }
16195                    currentBlockNumber
16196                },
16197                {
16198                    fn initializeV3(
16199                        data: &[u8],
16200                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16201                        <initializeV3Call as alloy_sol_types::SolCall>::abi_decode_raw(
16202                                data,
16203                            )
16204                            .map(LightClientV3MockCalls::initializeV3)
16205                    }
16206                    initializeV3
16207                },
16208                {
16209                    fn setBlocksPerEpoch(
16210                        data: &[u8],
16211                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16212                        <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
16213                                data,
16214                            )
16215                            .map(LightClientV3MockCalls::setBlocksPerEpoch)
16216                    }
16217                    setBlocksPerEpoch
16218                },
16219                {
16220                    fn epochStartBlock(
16221                        data: &[u8],
16222                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16223                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
16224                                data,
16225                            )
16226                            .map(LightClientV3MockCalls::epochStartBlock)
16227                    }
16228                    epochStartBlock
16229                },
16230                {
16231                    fn firstEpoch(
16232                        data: &[u8],
16233                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16234                        <firstEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
16235                                data,
16236                            )
16237                            .map(LightClientV3MockCalls::firstEpoch)
16238                    }
16239                    firstEpoch
16240                },
16241                {
16242                    fn genesisStakeTableState(
16243                        data: &[u8],
16244                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16245                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
16246                                data,
16247                            )
16248                            .map(LightClientV3MockCalls::genesisStakeTableState)
16249                    }
16250                    genesisStakeTableState
16251                },
16252                {
16253                    fn setStateHistoryRetentionPeriod(
16254                        data: &[u8],
16255                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16256                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
16257                                data,
16258                            )
16259                            .map(LightClientV3MockCalls::setStateHistoryRetentionPeriod)
16260                    }
16261                    setStateHistoryRetentionPeriod
16262                },
16263                {
16264                    fn upgradeToAndCall(
16265                        data: &[u8],
16266                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16267                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
16268                                data,
16269                            )
16270                            .map(LightClientV3MockCalls::upgradeToAndCall)
16271                    }
16272                    upgradeToAndCall
16273                },
16274                {
16275                    fn proxiableUUID(
16276                        data: &[u8],
16277                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16278                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
16279                                data,
16280                            )
16281                            .map(LightClientV3MockCalls::proxiableUUID)
16282                    }
16283                    proxiableUUID
16284                },
16285                {
16286                    fn setVotingStakeTableState(
16287                        data: &[u8],
16288                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16289                        <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
16290                                data,
16291                            )
16292                            .map(LightClientV3MockCalls::setVotingStakeTableState)
16293                    }
16294                    setVotingStakeTableState
16295                },
16296                {
16297                    fn disablePermissionedProverMode(
16298                        data: &[u8],
16299                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16300                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
16301                                data,
16302                            )
16303                            .map(LightClientV3MockCalls::disablePermissionedProverMode)
16304                    }
16305                    disablePermissionedProverMode
16306                },
16307                {
16308                    fn renounceOwnership(
16309                        data: &[u8],
16310                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16311                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
16312                                data,
16313                            )
16314                            .map(LightClientV3MockCalls::renounceOwnership)
16315                    }
16316                    renounceOwnership
16317                },
16318                {
16319                    fn newFinalizedState_1(
16320                        data: &[u8],
16321                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16322                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw(
16323                                data,
16324                            )
16325                            .map(LightClientV3MockCalls::newFinalizedState_1)
16326                    }
16327                    newFinalizedState_1
16328                },
16329                {
16330                    fn currentEpoch(
16331                        data: &[u8],
16332                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16333                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
16334                                data,
16335                            )
16336                            .map(LightClientV3MockCalls::currentEpoch)
16337                    }
16338                    currentEpoch
16339                },
16340                {
16341                    fn isPermissionedProverEnabled(
16342                        data: &[u8],
16343                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16344                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
16345                                data,
16346                            )
16347                            .map(LightClientV3MockCalls::isPermissionedProverEnabled)
16348                    }
16349                    isPermissionedProverEnabled
16350                },
16351                {
16352                    fn getHotShotCommitment(
16353                        data: &[u8],
16354                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16355                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
16356                                data,
16357                            )
16358                            .map(LightClientV3MockCalls::getHotShotCommitment)
16359                    }
16360                    getHotShotCommitment
16361                },
16362                {
16363                    fn owner(
16364                        data: &[u8],
16365                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16366                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
16367                            .map(LightClientV3MockCalls::owner)
16368                    }
16369                    owner
16370                },
16371                {
16372                    fn epochFromBlockNumber(
16373                        data: &[u8],
16374                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16375                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
16376                                data,
16377                            )
16378                            .map(LightClientV3MockCalls::epochFromBlockNumber)
16379                    }
16380                    epochFromBlockNumber
16381                },
16382                {
16383                    fn setstateHistoryRetentionPeriod(
16384                        data: &[u8],
16385                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16386                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
16387                                data,
16388                            )
16389                            .map(LightClientV3MockCalls::setstateHistoryRetentionPeriod)
16390                    }
16391                    setstateHistoryRetentionPeriod
16392                },
16393                {
16394                    fn authRoot(
16395                        data: &[u8],
16396                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16397                        <authRootCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
16398                            .map(LightClientV3MockCalls::authRoot)
16399                    }
16400                    authRoot
16401                },
16402                {
16403                    fn initialize(
16404                        data: &[u8],
16405                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16406                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
16407                                data,
16408                            )
16409                            .map(LightClientV3MockCalls::initialize)
16410                    }
16411                    initialize
16412                },
16413                {
16414                    fn finalizedState(
16415                        data: &[u8],
16416                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16417                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
16418                                data,
16419                            )
16420                            .map(LightClientV3MockCalls::finalizedState)
16421                    }
16422                    finalizedState
16423                },
16424                {
16425                    fn newFinalizedState_2(
16426                        data: &[u8],
16427                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16428                        <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_decode_raw(
16429                                data,
16430                            )
16431                            .map(LightClientV3MockCalls::newFinalizedState_2)
16432                    }
16433                    newFinalizedState_2
16434                },
16435                {
16436                    fn UPGRADE_INTERFACE_VERSION(
16437                        data: &[u8],
16438                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16439                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
16440                                data,
16441                            )
16442                            .map(LightClientV3MockCalls::UPGRADE_INTERFACE_VERSION)
16443                    }
16444                    UPGRADE_INTERFACE_VERSION
16445                },
16446                {
16447                    fn initializeV2(
16448                        data: &[u8],
16449                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16450                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
16451                                data,
16452                            )
16453                            .map(LightClientV3MockCalls::initializeV2)
16454                    }
16455                    initializeV2
16456                },
16457                {
16458                    fn setFinalizedState(
16459                        data: &[u8],
16460                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16461                        <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
16462                                data,
16463                            )
16464                            .map(LightClientV3MockCalls::setFinalizedState)
16465                    }
16466                    setFinalizedState
16467                },
16468                {
16469                    fn stateHistoryRetentionPeriod(
16470                        data: &[u8],
16471                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16472                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
16473                                data,
16474                            )
16475                            .map(LightClientV3MockCalls::stateHistoryRetentionPeriod)
16476                    }
16477                    stateHistoryRetentionPeriod
16478                },
16479                {
16480                    fn setHotShotUp(
16481                        data: &[u8],
16482                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16483                        <setHotShotUpCall as alloy_sol_types::SolCall>::abi_decode_raw(
16484                                data,
16485                            )
16486                            .map(LightClientV3MockCalls::setHotShotUp)
16487                    }
16488                    setHotShotUp
16489                },
16490                {
16491                    fn genesisState(
16492                        data: &[u8],
16493                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16494                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
16495                                data,
16496                            )
16497                            .map(LightClientV3MockCalls::genesisState)
16498                    }
16499                    genesisState
16500                },
16501                {
16502                    fn lagOverEscapeHatchThreshold(
16503                        data: &[u8],
16504                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16505                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
16506                                data,
16507                            )
16508                            .map(LightClientV3MockCalls::lagOverEscapeHatchThreshold)
16509                    }
16510                    lagOverEscapeHatchThreshold
16511                },
16512                {
16513                    fn blocksPerEpoch(
16514                        data: &[u8],
16515                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16516                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
16517                                data,
16518                            )
16519                            .map(LightClientV3MockCalls::blocksPerEpoch)
16520                    }
16521                    blocksPerEpoch
16522                },
16523                {
16524                    fn transferOwnership(
16525                        data: &[u8],
16526                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16527                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
16528                                data,
16529                            )
16530                            .map(LightClientV3MockCalls::transferOwnership)
16531                    }
16532                    transferOwnership
16533                },
16534                {
16535                    fn setStateHistory(
16536                        data: &[u8],
16537                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16538                        <setStateHistoryCall as alloy_sol_types::SolCall>::abi_decode_raw(
16539                                data,
16540                            )
16541                            .map(LightClientV3MockCalls::setStateHistory)
16542                    }
16543                    setStateHistory
16544                },
16545                {
16546                    fn getStateHistoryCount(
16547                        data: &[u8],
16548                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16549                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
16550                                data,
16551                            )
16552                            .map(LightClientV3MockCalls::getStateHistoryCount)
16553                    }
16554                    getStateHistoryCount
16555                },
16556            ];
16557            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
16558                return Err(
16559                    alloy_sol_types::Error::unknown_selector(
16560                        <Self as alloy_sol_types::SolInterface>::NAME,
16561                        selector,
16562                    ),
16563                );
16564            };
16565            DECODE_SHIMS[idx](data)
16566        }
16567        #[inline]
16568        #[allow(non_snake_case)]
16569        fn abi_decode_raw_validate(
16570            selector: [u8; 4],
16571            data: &[u8],
16572        ) -> alloy_sol_types::Result<Self> {
16573            static DECODE_VALIDATE_SHIMS: &[fn(
16574                &[u8],
16575            ) -> alloy_sol_types::Result<LightClientV3MockCalls>] = &[
16576                {
16577                    fn setPermissionedProver(
16578                        data: &[u8],
16579                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16580                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16581                                data,
16582                            )
16583                            .map(LightClientV3MockCalls::setPermissionedProver)
16584                    }
16585                    setPermissionedProver
16586                },
16587                {
16588                    fn stateHistoryCommitments(
16589                        data: &[u8],
16590                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16591                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16592                                data,
16593                            )
16594                            .map(LightClientV3MockCalls::stateHistoryCommitments)
16595                    }
16596                    stateHistoryCommitments
16597                },
16598                {
16599                    fn votingStakeTableState(
16600                        data: &[u8],
16601                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16602                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16603                                data,
16604                            )
16605                            .map(LightClientV3MockCalls::votingStakeTableState)
16606                    }
16607                    votingStakeTableState
16608                },
16609                {
16610                    fn getVersion(
16611                        data: &[u8],
16612                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16613                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16614                                data,
16615                            )
16616                            .map(LightClientV3MockCalls::getVersion)
16617                    }
16618                    getVersion
16619                },
16620                {
16621                    fn _getVk(
16622                        data: &[u8],
16623                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16624                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16625                                data,
16626                            )
16627                            .map(LightClientV3MockCalls::_getVk)
16628                    }
16629                    _getVk
16630                },
16631                {
16632                    fn updateEpochStartBlock(
16633                        data: &[u8],
16634                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16635                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16636                                data,
16637                            )
16638                            .map(LightClientV3MockCalls::updateEpochStartBlock)
16639                    }
16640                    updateEpochStartBlock
16641                },
16642                {
16643                    fn setAuthRoot(
16644                        data: &[u8],
16645                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16646                        <setAuthRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16647                                data,
16648                            )
16649                            .map(LightClientV3MockCalls::setAuthRoot)
16650                    }
16651                    setAuthRoot
16652                },
16653                {
16654                    fn newFinalizedState_0(
16655                        data: &[u8],
16656                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16657                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16658                                data,
16659                            )
16660                            .map(LightClientV3MockCalls::newFinalizedState_0)
16661                    }
16662                    newFinalizedState_0
16663                },
16664                {
16665                    fn isEpochRoot(
16666                        data: &[u8],
16667                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16668                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16669                                data,
16670                            )
16671                            .map(LightClientV3MockCalls::isEpochRoot)
16672                    }
16673                    isEpochRoot
16674                },
16675                {
16676                    fn setHotShotDownSince(
16677                        data: &[u8],
16678                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16679                        <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16680                                data,
16681                            )
16682                            .map(LightClientV3MockCalls::setHotShotDownSince)
16683                    }
16684                    setHotShotDownSince
16685                },
16686                {
16687                    fn stateHistoryFirstIndex(
16688                        data: &[u8],
16689                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16690                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16691                                data,
16692                            )
16693                            .map(LightClientV3MockCalls::stateHistoryFirstIndex)
16694                    }
16695                    stateHistoryFirstIndex
16696                },
16697                {
16698                    fn isGtEpochRoot(
16699                        data: &[u8],
16700                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16701                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16702                                data,
16703                            )
16704                            .map(LightClientV3MockCalls::isGtEpochRoot)
16705                    }
16706                    isGtEpochRoot
16707                },
16708                {
16709                    fn permissionedProver(
16710                        data: &[u8],
16711                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16712                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16713                                data,
16714                            )
16715                            .map(LightClientV3MockCalls::permissionedProver)
16716                    }
16717                    permissionedProver
16718                },
16719                {
16720                    fn currentBlockNumber(
16721                        data: &[u8],
16722                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16723                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16724                                data,
16725                            )
16726                            .map(LightClientV3MockCalls::currentBlockNumber)
16727                    }
16728                    currentBlockNumber
16729                },
16730                {
16731                    fn initializeV3(
16732                        data: &[u8],
16733                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16734                        <initializeV3Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16735                                data,
16736                            )
16737                            .map(LightClientV3MockCalls::initializeV3)
16738                    }
16739                    initializeV3
16740                },
16741                {
16742                    fn setBlocksPerEpoch(
16743                        data: &[u8],
16744                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16745                        <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16746                                data,
16747                            )
16748                            .map(LightClientV3MockCalls::setBlocksPerEpoch)
16749                    }
16750                    setBlocksPerEpoch
16751                },
16752                {
16753                    fn epochStartBlock(
16754                        data: &[u8],
16755                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16756                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16757                                data,
16758                            )
16759                            .map(LightClientV3MockCalls::epochStartBlock)
16760                    }
16761                    epochStartBlock
16762                },
16763                {
16764                    fn firstEpoch(
16765                        data: &[u8],
16766                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16767                        <firstEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16768                                data,
16769                            )
16770                            .map(LightClientV3MockCalls::firstEpoch)
16771                    }
16772                    firstEpoch
16773                },
16774                {
16775                    fn genesisStakeTableState(
16776                        data: &[u8],
16777                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16778                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16779                                data,
16780                            )
16781                            .map(LightClientV3MockCalls::genesisStakeTableState)
16782                    }
16783                    genesisStakeTableState
16784                },
16785                {
16786                    fn setStateHistoryRetentionPeriod(
16787                        data: &[u8],
16788                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16789                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16790                                data,
16791                            )
16792                            .map(LightClientV3MockCalls::setStateHistoryRetentionPeriod)
16793                    }
16794                    setStateHistoryRetentionPeriod
16795                },
16796                {
16797                    fn upgradeToAndCall(
16798                        data: &[u8],
16799                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16800                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16801                                data,
16802                            )
16803                            .map(LightClientV3MockCalls::upgradeToAndCall)
16804                    }
16805                    upgradeToAndCall
16806                },
16807                {
16808                    fn proxiableUUID(
16809                        data: &[u8],
16810                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16811                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16812                                data,
16813                            )
16814                            .map(LightClientV3MockCalls::proxiableUUID)
16815                    }
16816                    proxiableUUID
16817                },
16818                {
16819                    fn setVotingStakeTableState(
16820                        data: &[u8],
16821                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16822                        <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16823                                data,
16824                            )
16825                            .map(LightClientV3MockCalls::setVotingStakeTableState)
16826                    }
16827                    setVotingStakeTableState
16828                },
16829                {
16830                    fn disablePermissionedProverMode(
16831                        data: &[u8],
16832                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16833                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16834                                data,
16835                            )
16836                            .map(LightClientV3MockCalls::disablePermissionedProverMode)
16837                    }
16838                    disablePermissionedProverMode
16839                },
16840                {
16841                    fn renounceOwnership(
16842                        data: &[u8],
16843                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16844                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16845                                data,
16846                            )
16847                            .map(LightClientV3MockCalls::renounceOwnership)
16848                    }
16849                    renounceOwnership
16850                },
16851                {
16852                    fn newFinalizedState_1(
16853                        data: &[u8],
16854                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16855                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16856                                data,
16857                            )
16858                            .map(LightClientV3MockCalls::newFinalizedState_1)
16859                    }
16860                    newFinalizedState_1
16861                },
16862                {
16863                    fn currentEpoch(
16864                        data: &[u8],
16865                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16866                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16867                                data,
16868                            )
16869                            .map(LightClientV3MockCalls::currentEpoch)
16870                    }
16871                    currentEpoch
16872                },
16873                {
16874                    fn isPermissionedProverEnabled(
16875                        data: &[u8],
16876                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16877                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16878                                data,
16879                            )
16880                            .map(LightClientV3MockCalls::isPermissionedProverEnabled)
16881                    }
16882                    isPermissionedProverEnabled
16883                },
16884                {
16885                    fn getHotShotCommitment(
16886                        data: &[u8],
16887                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16888                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16889                                data,
16890                            )
16891                            .map(LightClientV3MockCalls::getHotShotCommitment)
16892                    }
16893                    getHotShotCommitment
16894                },
16895                {
16896                    fn owner(
16897                        data: &[u8],
16898                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16899                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16900                                data,
16901                            )
16902                            .map(LightClientV3MockCalls::owner)
16903                    }
16904                    owner
16905                },
16906                {
16907                    fn epochFromBlockNumber(
16908                        data: &[u8],
16909                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16910                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16911                                data,
16912                            )
16913                            .map(LightClientV3MockCalls::epochFromBlockNumber)
16914                    }
16915                    epochFromBlockNumber
16916                },
16917                {
16918                    fn setstateHistoryRetentionPeriod(
16919                        data: &[u8],
16920                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16921                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16922                                data,
16923                            )
16924                            .map(LightClientV3MockCalls::setstateHistoryRetentionPeriod)
16925                    }
16926                    setstateHistoryRetentionPeriod
16927                },
16928                {
16929                    fn authRoot(
16930                        data: &[u8],
16931                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16932                        <authRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16933                                data,
16934                            )
16935                            .map(LightClientV3MockCalls::authRoot)
16936                    }
16937                    authRoot
16938                },
16939                {
16940                    fn initialize(
16941                        data: &[u8],
16942                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16943                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16944                                data,
16945                            )
16946                            .map(LightClientV3MockCalls::initialize)
16947                    }
16948                    initialize
16949                },
16950                {
16951                    fn finalizedState(
16952                        data: &[u8],
16953                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16954                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16955                                data,
16956                            )
16957                            .map(LightClientV3MockCalls::finalizedState)
16958                    }
16959                    finalizedState
16960                },
16961                {
16962                    fn newFinalizedState_2(
16963                        data: &[u8],
16964                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16965                        <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16966                                data,
16967                            )
16968                            .map(LightClientV3MockCalls::newFinalizedState_2)
16969                    }
16970                    newFinalizedState_2
16971                },
16972                {
16973                    fn UPGRADE_INTERFACE_VERSION(
16974                        data: &[u8],
16975                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16976                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16977                                data,
16978                            )
16979                            .map(LightClientV3MockCalls::UPGRADE_INTERFACE_VERSION)
16980                    }
16981                    UPGRADE_INTERFACE_VERSION
16982                },
16983                {
16984                    fn initializeV2(
16985                        data: &[u8],
16986                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16987                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16988                                data,
16989                            )
16990                            .map(LightClientV3MockCalls::initializeV2)
16991                    }
16992                    initializeV2
16993                },
16994                {
16995                    fn setFinalizedState(
16996                        data: &[u8],
16997                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16998                        <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16999                                data,
17000                            )
17001                            .map(LightClientV3MockCalls::setFinalizedState)
17002                    }
17003                    setFinalizedState
17004                },
17005                {
17006                    fn stateHistoryRetentionPeriod(
17007                        data: &[u8],
17008                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17009                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17010                                data,
17011                            )
17012                            .map(LightClientV3MockCalls::stateHistoryRetentionPeriod)
17013                    }
17014                    stateHistoryRetentionPeriod
17015                },
17016                {
17017                    fn setHotShotUp(
17018                        data: &[u8],
17019                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17020                        <setHotShotUpCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17021                                data,
17022                            )
17023                            .map(LightClientV3MockCalls::setHotShotUp)
17024                    }
17025                    setHotShotUp
17026                },
17027                {
17028                    fn genesisState(
17029                        data: &[u8],
17030                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17031                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17032                                data,
17033                            )
17034                            .map(LightClientV3MockCalls::genesisState)
17035                    }
17036                    genesisState
17037                },
17038                {
17039                    fn lagOverEscapeHatchThreshold(
17040                        data: &[u8],
17041                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17042                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17043                                data,
17044                            )
17045                            .map(LightClientV3MockCalls::lagOverEscapeHatchThreshold)
17046                    }
17047                    lagOverEscapeHatchThreshold
17048                },
17049                {
17050                    fn blocksPerEpoch(
17051                        data: &[u8],
17052                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17053                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17054                                data,
17055                            )
17056                            .map(LightClientV3MockCalls::blocksPerEpoch)
17057                    }
17058                    blocksPerEpoch
17059                },
17060                {
17061                    fn transferOwnership(
17062                        data: &[u8],
17063                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17064                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17065                                data,
17066                            )
17067                            .map(LightClientV3MockCalls::transferOwnership)
17068                    }
17069                    transferOwnership
17070                },
17071                {
17072                    fn setStateHistory(
17073                        data: &[u8],
17074                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17075                        <setStateHistoryCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17076                                data,
17077                            )
17078                            .map(LightClientV3MockCalls::setStateHistory)
17079                    }
17080                    setStateHistory
17081                },
17082                {
17083                    fn getStateHistoryCount(
17084                        data: &[u8],
17085                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17086                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17087                                data,
17088                            )
17089                            .map(LightClientV3MockCalls::getStateHistoryCount)
17090                    }
17091                    getStateHistoryCount
17092                },
17093            ];
17094            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
17095                return Err(
17096                    alloy_sol_types::Error::unknown_selector(
17097                        <Self as alloy_sol_types::SolInterface>::NAME,
17098                        selector,
17099                    ),
17100                );
17101            };
17102            DECODE_VALIDATE_SHIMS[idx](data)
17103        }
17104        #[inline]
17105        fn abi_encoded_size(&self) -> usize {
17106            match self {
17107                Self::UPGRADE_INTERFACE_VERSION(inner) => {
17108                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
17109                        inner,
17110                    )
17111                }
17112                Self::_getVk(inner) => {
17113                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
17114                }
17115                Self::authRoot(inner) => {
17116                    <authRootCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
17117                }
17118                Self::blocksPerEpoch(inner) => {
17119                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
17120                        inner,
17121                    )
17122                }
17123                Self::currentBlockNumber(inner) => {
17124                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
17125                        inner,
17126                    )
17127                }
17128                Self::currentEpoch(inner) => {
17129                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
17130                        inner,
17131                    )
17132                }
17133                Self::disablePermissionedProverMode(inner) => {
17134                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
17135                        inner,
17136                    )
17137                }
17138                Self::epochFromBlockNumber(inner) => {
17139                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
17140                        inner,
17141                    )
17142                }
17143                Self::epochStartBlock(inner) => {
17144                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
17145                        inner,
17146                    )
17147                }
17148                Self::finalizedState(inner) => {
17149                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
17150                        inner,
17151                    )
17152                }
17153                Self::firstEpoch(inner) => {
17154                    <firstEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
17155                }
17156                Self::genesisStakeTableState(inner) => {
17157                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
17158                        inner,
17159                    )
17160                }
17161                Self::genesisState(inner) => {
17162                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
17163                        inner,
17164                    )
17165                }
17166                Self::getHotShotCommitment(inner) => {
17167                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
17168                        inner,
17169                    )
17170                }
17171                Self::getStateHistoryCount(inner) => {
17172                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
17173                        inner,
17174                    )
17175                }
17176                Self::getVersion(inner) => {
17177                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
17178                }
17179                Self::initialize(inner) => {
17180                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
17181                }
17182                Self::initializeV2(inner) => {
17183                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
17184                        inner,
17185                    )
17186                }
17187                Self::initializeV3(inner) => {
17188                    <initializeV3Call as alloy_sol_types::SolCall>::abi_encoded_size(
17189                        inner,
17190                    )
17191                }
17192                Self::isEpochRoot(inner) => {
17193                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
17194                        inner,
17195                    )
17196                }
17197                Self::isGtEpochRoot(inner) => {
17198                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
17199                        inner,
17200                    )
17201                }
17202                Self::isPermissionedProverEnabled(inner) => {
17203                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
17204                        inner,
17205                    )
17206                }
17207                Self::lagOverEscapeHatchThreshold(inner) => {
17208                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
17209                        inner,
17210                    )
17211                }
17212                Self::newFinalizedState_0(inner) => {
17213                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encoded_size(
17214                        inner,
17215                    )
17216                }
17217                Self::newFinalizedState_1(inner) => {
17218                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encoded_size(
17219                        inner,
17220                    )
17221                }
17222                Self::newFinalizedState_2(inner) => {
17223                    <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_encoded_size(
17224                        inner,
17225                    )
17226                }
17227                Self::owner(inner) => {
17228                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
17229                }
17230                Self::permissionedProver(inner) => {
17231                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
17232                        inner,
17233                    )
17234                }
17235                Self::proxiableUUID(inner) => {
17236                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
17237                        inner,
17238                    )
17239                }
17240                Self::renounceOwnership(inner) => {
17241                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
17242                        inner,
17243                    )
17244                }
17245                Self::setAuthRoot(inner) => {
17246                    <setAuthRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
17247                        inner,
17248                    )
17249                }
17250                Self::setBlocksPerEpoch(inner) => {
17251                    <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
17252                        inner,
17253                    )
17254                }
17255                Self::setFinalizedState(inner) => {
17256                    <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
17257                        inner,
17258                    )
17259                }
17260                Self::setHotShotDownSince(inner) => {
17261                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_encoded_size(
17262                        inner,
17263                    )
17264                }
17265                Self::setHotShotUp(inner) => {
17266                    <setHotShotUpCall as alloy_sol_types::SolCall>::abi_encoded_size(
17267                        inner,
17268                    )
17269                }
17270                Self::setPermissionedProver(inner) => {
17271                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
17272                        inner,
17273                    )
17274                }
17275                Self::setStateHistory(inner) => {
17276                    <setStateHistoryCall as alloy_sol_types::SolCall>::abi_encoded_size(
17277                        inner,
17278                    )
17279                }
17280                Self::setStateHistoryRetentionPeriod(inner) => {
17281                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
17282                        inner,
17283                    )
17284                }
17285                Self::setVotingStakeTableState(inner) => {
17286                    <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
17287                        inner,
17288                    )
17289                }
17290                Self::setstateHistoryRetentionPeriod(inner) => {
17291                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
17292                        inner,
17293                    )
17294                }
17295                Self::stateHistoryCommitments(inner) => {
17296                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
17297                        inner,
17298                    )
17299                }
17300                Self::stateHistoryFirstIndex(inner) => {
17301                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
17302                        inner,
17303                    )
17304                }
17305                Self::stateHistoryRetentionPeriod(inner) => {
17306                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
17307                        inner,
17308                    )
17309                }
17310                Self::transferOwnership(inner) => {
17311                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
17312                        inner,
17313                    )
17314                }
17315                Self::updateEpochStartBlock(inner) => {
17316                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
17317                        inner,
17318                    )
17319                }
17320                Self::upgradeToAndCall(inner) => {
17321                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
17322                        inner,
17323                    )
17324                }
17325                Self::votingStakeTableState(inner) => {
17326                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
17327                        inner,
17328                    )
17329                }
17330            }
17331        }
17332        #[inline]
17333        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
17334            match self {
17335                Self::UPGRADE_INTERFACE_VERSION(inner) => {
17336                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
17337                        inner,
17338                        out,
17339                    )
17340                }
17341                Self::_getVk(inner) => {
17342                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
17343                }
17344                Self::authRoot(inner) => {
17345                    <authRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
17346                        inner,
17347                        out,
17348                    )
17349                }
17350                Self::blocksPerEpoch(inner) => {
17351                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
17352                        inner,
17353                        out,
17354                    )
17355                }
17356                Self::currentBlockNumber(inner) => {
17357                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
17358                        inner,
17359                        out,
17360                    )
17361                }
17362                Self::currentEpoch(inner) => {
17363                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
17364                        inner,
17365                        out,
17366                    )
17367                }
17368                Self::disablePermissionedProverMode(inner) => {
17369                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
17370                        inner,
17371                        out,
17372                    )
17373                }
17374                Self::epochFromBlockNumber(inner) => {
17375                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
17376                        inner,
17377                        out,
17378                    )
17379                }
17380                Self::epochStartBlock(inner) => {
17381                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
17382                        inner,
17383                        out,
17384                    )
17385                }
17386                Self::finalizedState(inner) => {
17387                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
17388                        inner,
17389                        out,
17390                    )
17391                }
17392                Self::firstEpoch(inner) => {
17393                    <firstEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
17394                        inner,
17395                        out,
17396                    )
17397                }
17398                Self::genesisStakeTableState(inner) => {
17399                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
17400                        inner,
17401                        out,
17402                    )
17403                }
17404                Self::genesisState(inner) => {
17405                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
17406                        inner,
17407                        out,
17408                    )
17409                }
17410                Self::getHotShotCommitment(inner) => {
17411                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
17412                        inner,
17413                        out,
17414                    )
17415                }
17416                Self::getStateHistoryCount(inner) => {
17417                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
17418                        inner,
17419                        out,
17420                    )
17421                }
17422                Self::getVersion(inner) => {
17423                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
17424                        inner,
17425                        out,
17426                    )
17427                }
17428                Self::initialize(inner) => {
17429                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
17430                        inner,
17431                        out,
17432                    )
17433                }
17434                Self::initializeV2(inner) => {
17435                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
17436                        inner,
17437                        out,
17438                    )
17439                }
17440                Self::initializeV3(inner) => {
17441                    <initializeV3Call as alloy_sol_types::SolCall>::abi_encode_raw(
17442                        inner,
17443                        out,
17444                    )
17445                }
17446                Self::isEpochRoot(inner) => {
17447                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
17448                        inner,
17449                        out,
17450                    )
17451                }
17452                Self::isGtEpochRoot(inner) => {
17453                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
17454                        inner,
17455                        out,
17456                    )
17457                }
17458                Self::isPermissionedProverEnabled(inner) => {
17459                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
17460                        inner,
17461                        out,
17462                    )
17463                }
17464                Self::lagOverEscapeHatchThreshold(inner) => {
17465                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
17466                        inner,
17467                        out,
17468                    )
17469                }
17470                Self::newFinalizedState_0(inner) => {
17471                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encode_raw(
17472                        inner,
17473                        out,
17474                    )
17475                }
17476                Self::newFinalizedState_1(inner) => {
17477                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encode_raw(
17478                        inner,
17479                        out,
17480                    )
17481                }
17482                Self::newFinalizedState_2(inner) => {
17483                    <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_encode_raw(
17484                        inner,
17485                        out,
17486                    )
17487                }
17488                Self::owner(inner) => {
17489                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
17490                }
17491                Self::permissionedProver(inner) => {
17492                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
17493                        inner,
17494                        out,
17495                    )
17496                }
17497                Self::proxiableUUID(inner) => {
17498                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
17499                        inner,
17500                        out,
17501                    )
17502                }
17503                Self::renounceOwnership(inner) => {
17504                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
17505                        inner,
17506                        out,
17507                    )
17508                }
17509                Self::setAuthRoot(inner) => {
17510                    <setAuthRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
17511                        inner,
17512                        out,
17513                    )
17514                }
17515                Self::setBlocksPerEpoch(inner) => {
17516                    <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
17517                        inner,
17518                        out,
17519                    )
17520                }
17521                Self::setFinalizedState(inner) => {
17522                    <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
17523                        inner,
17524                        out,
17525                    )
17526                }
17527                Self::setHotShotDownSince(inner) => {
17528                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_encode_raw(
17529                        inner,
17530                        out,
17531                    )
17532                }
17533                Self::setHotShotUp(inner) => {
17534                    <setHotShotUpCall as alloy_sol_types::SolCall>::abi_encode_raw(
17535                        inner,
17536                        out,
17537                    )
17538                }
17539                Self::setPermissionedProver(inner) => {
17540                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
17541                        inner,
17542                        out,
17543                    )
17544                }
17545                Self::setStateHistory(inner) => {
17546                    <setStateHistoryCall as alloy_sol_types::SolCall>::abi_encode_raw(
17547                        inner,
17548                        out,
17549                    )
17550                }
17551                Self::setStateHistoryRetentionPeriod(inner) => {
17552                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
17553                        inner,
17554                        out,
17555                    )
17556                }
17557                Self::setVotingStakeTableState(inner) => {
17558                    <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
17559                        inner,
17560                        out,
17561                    )
17562                }
17563                Self::setstateHistoryRetentionPeriod(inner) => {
17564                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
17565                        inner,
17566                        out,
17567                    )
17568                }
17569                Self::stateHistoryCommitments(inner) => {
17570                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
17571                        inner,
17572                        out,
17573                    )
17574                }
17575                Self::stateHistoryFirstIndex(inner) => {
17576                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
17577                        inner,
17578                        out,
17579                    )
17580                }
17581                Self::stateHistoryRetentionPeriod(inner) => {
17582                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
17583                        inner,
17584                        out,
17585                    )
17586                }
17587                Self::transferOwnership(inner) => {
17588                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
17589                        inner,
17590                        out,
17591                    )
17592                }
17593                Self::updateEpochStartBlock(inner) => {
17594                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
17595                        inner,
17596                        out,
17597                    )
17598                }
17599                Self::upgradeToAndCall(inner) => {
17600                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
17601                        inner,
17602                        out,
17603                    )
17604                }
17605                Self::votingStakeTableState(inner) => {
17606                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
17607                        inner,
17608                        out,
17609                    )
17610                }
17611            }
17612        }
17613    }
17614    ///Container for all the [`LightClientV3Mock`](self) custom errors.
17615    #[derive(serde::Serialize, serde::Deserialize)]
17616    #[derive(Debug, PartialEq, Eq, Hash)]
17617    pub enum LightClientV3MockErrors {
17618        #[allow(missing_docs)]
17619        AddressEmptyCode(AddressEmptyCode),
17620        #[allow(missing_docs)]
17621        DeprecatedApi(DeprecatedApi),
17622        #[allow(missing_docs)]
17623        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
17624        #[allow(missing_docs)]
17625        ERC1967NonPayable(ERC1967NonPayable),
17626        #[allow(missing_docs)]
17627        FailedInnerCall(FailedInnerCall),
17628        #[allow(missing_docs)]
17629        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
17630        #[allow(missing_docs)]
17631        InvalidAddress(InvalidAddress),
17632        #[allow(missing_docs)]
17633        InvalidArgs(InvalidArgs),
17634        #[allow(missing_docs)]
17635        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
17636        #[allow(missing_docs)]
17637        InvalidInitialization(InvalidInitialization),
17638        #[allow(missing_docs)]
17639        InvalidMaxStateHistory(InvalidMaxStateHistory),
17640        #[allow(missing_docs)]
17641        InvalidProof(InvalidProof),
17642        #[allow(missing_docs)]
17643        InvalidScalar(InvalidScalar),
17644        #[allow(missing_docs)]
17645        MissingEpochRootUpdate(MissingEpochRootUpdate),
17646        #[allow(missing_docs)]
17647        NoChangeRequired(NoChangeRequired),
17648        #[allow(missing_docs)]
17649        NotInitializing(NotInitializing),
17650        #[allow(missing_docs)]
17651        OutdatedState(OutdatedState),
17652        #[allow(missing_docs)]
17653        OwnableInvalidOwner(OwnableInvalidOwner),
17654        #[allow(missing_docs)]
17655        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
17656        #[allow(missing_docs)]
17657        OwnershipCannotBeRenounced(OwnershipCannotBeRenounced),
17658        #[allow(missing_docs)]
17659        ProverNotPermissioned(ProverNotPermissioned),
17660        #[allow(missing_docs)]
17661        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
17662        #[allow(missing_docs)]
17663        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
17664        #[allow(missing_docs)]
17665        WrongStakeTableUsed(WrongStakeTableUsed),
17666    }
17667    #[automatically_derived]
17668    impl LightClientV3MockErrors {
17669        /// All the selectors of this enum.
17670        ///
17671        /// Note that the selectors might not be in the same order as the variants.
17672        /// No guarantees are made about the order of the selectors.
17673        ///
17674        /// Prefer using `SolInterface` methods instead.
17675        pub const SELECTORS: &'static [[u8; 4usize]] = &[
17676            [5u8, 28u8, 70u8, 239u8],
17677            [5u8, 176u8, 92u8, 204u8],
17678            [8u8, 10u8, 232u8, 217u8],
17679            [9u8, 189u8, 227u8, 57u8],
17680            [17u8, 140u8, 218u8, 167u8],
17681            [20u8, 37u8, 234u8, 66u8],
17682            [30u8, 79u8, 189u8, 247u8],
17683            [47u8, 171u8, 146u8, 202u8],
17684            [76u8, 156u8, 140u8, 227u8],
17685            [78u8, 64u8, 92u8, 141u8],
17686            [81u8, 97u8, 128u8, 137u8],
17687            [97u8, 90u8, 146u8, 100u8],
17688            [153u8, 150u8, 179u8, 21u8],
17689            [161u8, 186u8, 7u8, 238u8],
17690            [163u8, 166u8, 71u8, 128u8],
17691            [168u8, 99u8, 174u8, 201u8],
17692            [170u8, 29u8, 73u8, 164u8],
17693            [176u8, 180u8, 56u8, 119u8],
17694            [179u8, 152u8, 151u8, 159u8],
17695            [215u8, 230u8, 188u8, 248u8],
17696            [224u8, 124u8, 141u8, 186u8],
17697            [230u8, 196u8, 36u8, 123u8],
17698            [244u8, 160u8, 238u8, 224u8],
17699            [249u8, 46u8, 232u8, 169u8],
17700        ];
17701    }
17702    #[automatically_derived]
17703    impl alloy_sol_types::SolInterface for LightClientV3MockErrors {
17704        const NAME: &'static str = "LightClientV3MockErrors";
17705        const MIN_DATA_LENGTH: usize = 0usize;
17706        const COUNT: usize = 24usize;
17707        #[inline]
17708        fn selector(&self) -> [u8; 4] {
17709            match self {
17710                Self::AddressEmptyCode(_) => {
17711                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
17712                }
17713                Self::DeprecatedApi(_) => {
17714                    <DeprecatedApi as alloy_sol_types::SolError>::SELECTOR
17715                }
17716                Self::ERC1967InvalidImplementation(_) => {
17717                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
17718                }
17719                Self::ERC1967NonPayable(_) => {
17720                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
17721                }
17722                Self::FailedInnerCall(_) => {
17723                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
17724                }
17725                Self::InsufficientSnapshotHistory(_) => {
17726                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
17727                }
17728                Self::InvalidAddress(_) => {
17729                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
17730                }
17731                Self::InvalidArgs(_) => {
17732                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
17733                }
17734                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
17735                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
17736                }
17737                Self::InvalidInitialization(_) => {
17738                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
17739                }
17740                Self::InvalidMaxStateHistory(_) => {
17741                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
17742                }
17743                Self::InvalidProof(_) => {
17744                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
17745                }
17746                Self::InvalidScalar(_) => {
17747                    <InvalidScalar as alloy_sol_types::SolError>::SELECTOR
17748                }
17749                Self::MissingEpochRootUpdate(_) => {
17750                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::SELECTOR
17751                }
17752                Self::NoChangeRequired(_) => {
17753                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
17754                }
17755                Self::NotInitializing(_) => {
17756                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
17757                }
17758                Self::OutdatedState(_) => {
17759                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
17760                }
17761                Self::OwnableInvalidOwner(_) => {
17762                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
17763                }
17764                Self::OwnableUnauthorizedAccount(_) => {
17765                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
17766                }
17767                Self::OwnershipCannotBeRenounced(_) => {
17768                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
17769                }
17770                Self::ProverNotPermissioned(_) => {
17771                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
17772                }
17773                Self::UUPSUnauthorizedCallContext(_) => {
17774                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
17775                }
17776                Self::UUPSUnsupportedProxiableUUID(_) => {
17777                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
17778                }
17779                Self::WrongStakeTableUsed(_) => {
17780                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
17781                }
17782            }
17783        }
17784        #[inline]
17785        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
17786            Self::SELECTORS.get(i).copied()
17787        }
17788        #[inline]
17789        fn valid_selector(selector: [u8; 4]) -> bool {
17790            Self::SELECTORS.binary_search(&selector).is_ok()
17791        }
17792        #[inline]
17793        #[allow(non_snake_case)]
17794        fn abi_decode_raw(
17795            selector: [u8; 4],
17796            data: &[u8],
17797        ) -> alloy_sol_types::Result<Self> {
17798            static DECODE_SHIMS: &[fn(
17799                &[u8],
17800            ) -> alloy_sol_types::Result<LightClientV3MockErrors>] = &[
17801                {
17802                    fn OutdatedState(
17803                        data: &[u8],
17804                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17805                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(
17806                                data,
17807                            )
17808                            .map(LightClientV3MockErrors::OutdatedState)
17809                    }
17810                    OutdatedState
17811                },
17812                {
17813                    fn InvalidScalar(
17814                        data: &[u8],
17815                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17816                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw(
17817                                data,
17818                            )
17819                            .map(LightClientV3MockErrors::InvalidScalar)
17820                    }
17821                    InvalidScalar
17822                },
17823                {
17824                    fn MissingEpochRootUpdate(
17825                        data: &[u8],
17826                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17827                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw(
17828                                data,
17829                            )
17830                            .map(LightClientV3MockErrors::MissingEpochRootUpdate)
17831                    }
17832                    MissingEpochRootUpdate
17833                },
17834                {
17835                    fn InvalidProof(
17836                        data: &[u8],
17837                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17838                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(data)
17839                            .map(LightClientV3MockErrors::InvalidProof)
17840                    }
17841                    InvalidProof
17842                },
17843                {
17844                    fn OwnableUnauthorizedAccount(
17845                        data: &[u8],
17846                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17847                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
17848                                data,
17849                            )
17850                            .map(LightClientV3MockErrors::OwnableUnauthorizedAccount)
17851                    }
17852                    OwnableUnauthorizedAccount
17853                },
17854                {
17855                    fn FailedInnerCall(
17856                        data: &[u8],
17857                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17858                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
17859                                data,
17860                            )
17861                            .map(LightClientV3MockErrors::FailedInnerCall)
17862                    }
17863                    FailedInnerCall
17864                },
17865                {
17866                    fn OwnableInvalidOwner(
17867                        data: &[u8],
17868                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17869                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
17870                                data,
17871                            )
17872                            .map(LightClientV3MockErrors::OwnableInvalidOwner)
17873                    }
17874                    OwnableInvalidOwner
17875                },
17876                {
17877                    fn OwnershipCannotBeRenounced(
17878                        data: &[u8],
17879                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17880                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw(
17881                                data,
17882                            )
17883                            .map(LightClientV3MockErrors::OwnershipCannotBeRenounced)
17884                    }
17885                    OwnershipCannotBeRenounced
17886                },
17887                {
17888                    fn ERC1967InvalidImplementation(
17889                        data: &[u8],
17890                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17891                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
17892                                data,
17893                            )
17894                            .map(LightClientV3MockErrors::ERC1967InvalidImplementation)
17895                    }
17896                    ERC1967InvalidImplementation
17897                },
17898                {
17899                    fn DeprecatedApi(
17900                        data: &[u8],
17901                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17902                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw(
17903                                data,
17904                            )
17905                            .map(LightClientV3MockErrors::DeprecatedApi)
17906                    }
17907                    DeprecatedApi
17908                },
17909                {
17910                    fn WrongStakeTableUsed(
17911                        data: &[u8],
17912                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17913                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
17914                                data,
17915                            )
17916                            .map(LightClientV3MockErrors::WrongStakeTableUsed)
17917                    }
17918                    WrongStakeTableUsed
17919                },
17920                {
17921                    fn InvalidHotShotBlockForCommitmentCheck(
17922                        data: &[u8],
17923                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17924                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
17925                                data,
17926                            )
17927                            .map(
17928                                LightClientV3MockErrors::InvalidHotShotBlockForCommitmentCheck,
17929                            )
17930                    }
17931                    InvalidHotShotBlockForCommitmentCheck
17932                },
17933                {
17934                    fn AddressEmptyCode(
17935                        data: &[u8],
17936                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17937                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
17938                                data,
17939                            )
17940                            .map(LightClientV3MockErrors::AddressEmptyCode)
17941                    }
17942                    AddressEmptyCode
17943                },
17944                {
17945                    fn InvalidArgs(
17946                        data: &[u8],
17947                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17948                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(data)
17949                            .map(LightClientV3MockErrors::InvalidArgs)
17950                    }
17951                    InvalidArgs
17952                },
17953                {
17954                    fn ProverNotPermissioned(
17955                        data: &[u8],
17956                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17957                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
17958                                data,
17959                            )
17960                            .map(LightClientV3MockErrors::ProverNotPermissioned)
17961                    }
17962                    ProverNotPermissioned
17963                },
17964                {
17965                    fn NoChangeRequired(
17966                        data: &[u8],
17967                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17968                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
17969                                data,
17970                            )
17971                            .map(LightClientV3MockErrors::NoChangeRequired)
17972                    }
17973                    NoChangeRequired
17974                },
17975                {
17976                    fn UUPSUnsupportedProxiableUUID(
17977                        data: &[u8],
17978                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17979                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
17980                                data,
17981                            )
17982                            .map(LightClientV3MockErrors::UUPSUnsupportedProxiableUUID)
17983                    }
17984                    UUPSUnsupportedProxiableUUID
17985                },
17986                {
17987                    fn InsufficientSnapshotHistory(
17988                        data: &[u8],
17989                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
17990                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
17991                                data,
17992                            )
17993                            .map(LightClientV3MockErrors::InsufficientSnapshotHistory)
17994                    }
17995                    InsufficientSnapshotHistory
17996                },
17997                {
17998                    fn ERC1967NonPayable(
17999                        data: &[u8],
18000                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18001                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
18002                                data,
18003                            )
18004                            .map(LightClientV3MockErrors::ERC1967NonPayable)
18005                    }
18006                    ERC1967NonPayable
18007                },
18008                {
18009                    fn NotInitializing(
18010                        data: &[u8],
18011                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18012                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
18013                                data,
18014                            )
18015                            .map(LightClientV3MockErrors::NotInitializing)
18016                    }
18017                    NotInitializing
18018                },
18019                {
18020                    fn UUPSUnauthorizedCallContext(
18021                        data: &[u8],
18022                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18023                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
18024                                data,
18025                            )
18026                            .map(LightClientV3MockErrors::UUPSUnauthorizedCallContext)
18027                    }
18028                    UUPSUnauthorizedCallContext
18029                },
18030                {
18031                    fn InvalidAddress(
18032                        data: &[u8],
18033                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18034                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
18035                                data,
18036                            )
18037                            .map(LightClientV3MockErrors::InvalidAddress)
18038                    }
18039                    InvalidAddress
18040                },
18041                {
18042                    fn InvalidMaxStateHistory(
18043                        data: &[u8],
18044                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18045                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
18046                                data,
18047                            )
18048                            .map(LightClientV3MockErrors::InvalidMaxStateHistory)
18049                    }
18050                    InvalidMaxStateHistory
18051                },
18052                {
18053                    fn InvalidInitialization(
18054                        data: &[u8],
18055                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18056                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
18057                                data,
18058                            )
18059                            .map(LightClientV3MockErrors::InvalidInitialization)
18060                    }
18061                    InvalidInitialization
18062                },
18063            ];
18064            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
18065                return Err(
18066                    alloy_sol_types::Error::unknown_selector(
18067                        <Self as alloy_sol_types::SolInterface>::NAME,
18068                        selector,
18069                    ),
18070                );
18071            };
18072            DECODE_SHIMS[idx](data)
18073        }
18074        #[inline]
18075        #[allow(non_snake_case)]
18076        fn abi_decode_raw_validate(
18077            selector: [u8; 4],
18078            data: &[u8],
18079        ) -> alloy_sol_types::Result<Self> {
18080            static DECODE_VALIDATE_SHIMS: &[fn(
18081                &[u8],
18082            ) -> alloy_sol_types::Result<LightClientV3MockErrors>] = &[
18083                {
18084                    fn OutdatedState(
18085                        data: &[u8],
18086                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18087                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw_validate(
18088                                data,
18089                            )
18090                            .map(LightClientV3MockErrors::OutdatedState)
18091                    }
18092                    OutdatedState
18093                },
18094                {
18095                    fn InvalidScalar(
18096                        data: &[u8],
18097                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18098                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw_validate(
18099                                data,
18100                            )
18101                            .map(LightClientV3MockErrors::InvalidScalar)
18102                    }
18103                    InvalidScalar
18104                },
18105                {
18106                    fn MissingEpochRootUpdate(
18107                        data: &[u8],
18108                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18109                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw_validate(
18110                                data,
18111                            )
18112                            .map(LightClientV3MockErrors::MissingEpochRootUpdate)
18113                    }
18114                    MissingEpochRootUpdate
18115                },
18116                {
18117                    fn InvalidProof(
18118                        data: &[u8],
18119                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18120                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw_validate(
18121                                data,
18122                            )
18123                            .map(LightClientV3MockErrors::InvalidProof)
18124                    }
18125                    InvalidProof
18126                },
18127                {
18128                    fn OwnableUnauthorizedAccount(
18129                        data: &[u8],
18130                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18131                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
18132                                data,
18133                            )
18134                            .map(LightClientV3MockErrors::OwnableUnauthorizedAccount)
18135                    }
18136                    OwnableUnauthorizedAccount
18137                },
18138                {
18139                    fn FailedInnerCall(
18140                        data: &[u8],
18141                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18142                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
18143                                data,
18144                            )
18145                            .map(LightClientV3MockErrors::FailedInnerCall)
18146                    }
18147                    FailedInnerCall
18148                },
18149                {
18150                    fn OwnableInvalidOwner(
18151                        data: &[u8],
18152                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18153                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
18154                                data,
18155                            )
18156                            .map(LightClientV3MockErrors::OwnableInvalidOwner)
18157                    }
18158                    OwnableInvalidOwner
18159                },
18160                {
18161                    fn OwnershipCannotBeRenounced(
18162                        data: &[u8],
18163                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18164                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_validate(
18165                                data,
18166                            )
18167                            .map(LightClientV3MockErrors::OwnershipCannotBeRenounced)
18168                    }
18169                    OwnershipCannotBeRenounced
18170                },
18171                {
18172                    fn ERC1967InvalidImplementation(
18173                        data: &[u8],
18174                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18175                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_validate(
18176                                data,
18177                            )
18178                            .map(LightClientV3MockErrors::ERC1967InvalidImplementation)
18179                    }
18180                    ERC1967InvalidImplementation
18181                },
18182                {
18183                    fn DeprecatedApi(
18184                        data: &[u8],
18185                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18186                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw_validate(
18187                                data,
18188                            )
18189                            .map(LightClientV3MockErrors::DeprecatedApi)
18190                    }
18191                    DeprecatedApi
18192                },
18193                {
18194                    fn WrongStakeTableUsed(
18195                        data: &[u8],
18196                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18197                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
18198                                data,
18199                            )
18200                            .map(LightClientV3MockErrors::WrongStakeTableUsed)
18201                    }
18202                    WrongStakeTableUsed
18203                },
18204                {
18205                    fn InvalidHotShotBlockForCommitmentCheck(
18206                        data: &[u8],
18207                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18208                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw_validate(
18209                                data,
18210                            )
18211                            .map(
18212                                LightClientV3MockErrors::InvalidHotShotBlockForCommitmentCheck,
18213                            )
18214                    }
18215                    InvalidHotShotBlockForCommitmentCheck
18216                },
18217                {
18218                    fn AddressEmptyCode(
18219                        data: &[u8],
18220                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18221                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_validate(
18222                                data,
18223                            )
18224                            .map(LightClientV3MockErrors::AddressEmptyCode)
18225                    }
18226                    AddressEmptyCode
18227                },
18228                {
18229                    fn InvalidArgs(
18230                        data: &[u8],
18231                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18232                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw_validate(
18233                                data,
18234                            )
18235                            .map(LightClientV3MockErrors::InvalidArgs)
18236                    }
18237                    InvalidArgs
18238                },
18239                {
18240                    fn ProverNotPermissioned(
18241                        data: &[u8],
18242                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18243                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw_validate(
18244                                data,
18245                            )
18246                            .map(LightClientV3MockErrors::ProverNotPermissioned)
18247                    }
18248                    ProverNotPermissioned
18249                },
18250                {
18251                    fn NoChangeRequired(
18252                        data: &[u8],
18253                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18254                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw_validate(
18255                                data,
18256                            )
18257                            .map(LightClientV3MockErrors::NoChangeRequired)
18258                    }
18259                    NoChangeRequired
18260                },
18261                {
18262                    fn UUPSUnsupportedProxiableUUID(
18263                        data: &[u8],
18264                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18265                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_validate(
18266                                data,
18267                            )
18268                            .map(LightClientV3MockErrors::UUPSUnsupportedProxiableUUID)
18269                    }
18270                    UUPSUnsupportedProxiableUUID
18271                },
18272                {
18273                    fn InsufficientSnapshotHistory(
18274                        data: &[u8],
18275                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18276                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
18277                                data,
18278                            )
18279                            .map(LightClientV3MockErrors::InsufficientSnapshotHistory)
18280                    }
18281                    InsufficientSnapshotHistory
18282                },
18283                {
18284                    fn ERC1967NonPayable(
18285                        data: &[u8],
18286                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18287                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_validate(
18288                                data,
18289                            )
18290                            .map(LightClientV3MockErrors::ERC1967NonPayable)
18291                    }
18292                    ERC1967NonPayable
18293                },
18294                {
18295                    fn NotInitializing(
18296                        data: &[u8],
18297                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18298                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_validate(
18299                                data,
18300                            )
18301                            .map(LightClientV3MockErrors::NotInitializing)
18302                    }
18303                    NotInitializing
18304                },
18305                {
18306                    fn UUPSUnauthorizedCallContext(
18307                        data: &[u8],
18308                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18309                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_validate(
18310                                data,
18311                            )
18312                            .map(LightClientV3MockErrors::UUPSUnauthorizedCallContext)
18313                    }
18314                    UUPSUnauthorizedCallContext
18315                },
18316                {
18317                    fn InvalidAddress(
18318                        data: &[u8],
18319                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18320                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
18321                                data,
18322                            )
18323                            .map(LightClientV3MockErrors::InvalidAddress)
18324                    }
18325                    InvalidAddress
18326                },
18327                {
18328                    fn InvalidMaxStateHistory(
18329                        data: &[u8],
18330                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18331                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
18332                                data,
18333                            )
18334                            .map(LightClientV3MockErrors::InvalidMaxStateHistory)
18335                    }
18336                    InvalidMaxStateHistory
18337                },
18338                {
18339                    fn InvalidInitialization(
18340                        data: &[u8],
18341                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18342                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_validate(
18343                                data,
18344                            )
18345                            .map(LightClientV3MockErrors::InvalidInitialization)
18346                    }
18347                    InvalidInitialization
18348                },
18349            ];
18350            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
18351                return Err(
18352                    alloy_sol_types::Error::unknown_selector(
18353                        <Self as alloy_sol_types::SolInterface>::NAME,
18354                        selector,
18355                    ),
18356                );
18357            };
18358            DECODE_VALIDATE_SHIMS[idx](data)
18359        }
18360        #[inline]
18361        fn abi_encoded_size(&self) -> usize {
18362            match self {
18363                Self::AddressEmptyCode(inner) => {
18364                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
18365                        inner,
18366                    )
18367                }
18368                Self::DeprecatedApi(inner) => {
18369                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encoded_size(inner)
18370                }
18371                Self::ERC1967InvalidImplementation(inner) => {
18372                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
18373                        inner,
18374                    )
18375                }
18376                Self::ERC1967NonPayable(inner) => {
18377                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
18378                        inner,
18379                    )
18380                }
18381                Self::FailedInnerCall(inner) => {
18382                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
18383                        inner,
18384                    )
18385                }
18386                Self::InsufficientSnapshotHistory(inner) => {
18387                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
18388                        inner,
18389                    )
18390                }
18391                Self::InvalidAddress(inner) => {
18392                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
18393                        inner,
18394                    )
18395                }
18396                Self::InvalidArgs(inner) => {
18397                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
18398                }
18399                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
18400                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
18401                        inner,
18402                    )
18403                }
18404                Self::InvalidInitialization(inner) => {
18405                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
18406                        inner,
18407                    )
18408                }
18409                Self::InvalidMaxStateHistory(inner) => {
18410                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
18411                        inner,
18412                    )
18413                }
18414                Self::InvalidProof(inner) => {
18415                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
18416                }
18417                Self::InvalidScalar(inner) => {
18418                    <InvalidScalar as alloy_sol_types::SolError>::abi_encoded_size(inner)
18419                }
18420                Self::MissingEpochRootUpdate(inner) => {
18421                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encoded_size(
18422                        inner,
18423                    )
18424                }
18425                Self::NoChangeRequired(inner) => {
18426                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
18427                        inner,
18428                    )
18429                }
18430                Self::NotInitializing(inner) => {
18431                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
18432                        inner,
18433                    )
18434                }
18435                Self::OutdatedState(inner) => {
18436                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
18437                }
18438                Self::OwnableInvalidOwner(inner) => {
18439                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
18440                        inner,
18441                    )
18442                }
18443                Self::OwnableUnauthorizedAccount(inner) => {
18444                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
18445                        inner,
18446                    )
18447                }
18448                Self::OwnershipCannotBeRenounced(inner) => {
18449                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
18450                        inner,
18451                    )
18452                }
18453                Self::ProverNotPermissioned(inner) => {
18454                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
18455                        inner,
18456                    )
18457                }
18458                Self::UUPSUnauthorizedCallContext(inner) => {
18459                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
18460                        inner,
18461                    )
18462                }
18463                Self::UUPSUnsupportedProxiableUUID(inner) => {
18464                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
18465                        inner,
18466                    )
18467                }
18468                Self::WrongStakeTableUsed(inner) => {
18469                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
18470                        inner,
18471                    )
18472                }
18473            }
18474        }
18475        #[inline]
18476        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
18477            match self {
18478                Self::AddressEmptyCode(inner) => {
18479                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
18480                        inner,
18481                        out,
18482                    )
18483                }
18484                Self::DeprecatedApi(inner) => {
18485                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encode_raw(
18486                        inner,
18487                        out,
18488                    )
18489                }
18490                Self::ERC1967InvalidImplementation(inner) => {
18491                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
18492                        inner,
18493                        out,
18494                    )
18495                }
18496                Self::ERC1967NonPayable(inner) => {
18497                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
18498                        inner,
18499                        out,
18500                    )
18501                }
18502                Self::FailedInnerCall(inner) => {
18503                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
18504                        inner,
18505                        out,
18506                    )
18507                }
18508                Self::InsufficientSnapshotHistory(inner) => {
18509                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
18510                        inner,
18511                        out,
18512                    )
18513                }
18514                Self::InvalidAddress(inner) => {
18515                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
18516                        inner,
18517                        out,
18518                    )
18519                }
18520                Self::InvalidArgs(inner) => {
18521                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
18522                        inner,
18523                        out,
18524                    )
18525                }
18526                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
18527                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
18528                        inner,
18529                        out,
18530                    )
18531                }
18532                Self::InvalidInitialization(inner) => {
18533                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
18534                        inner,
18535                        out,
18536                    )
18537                }
18538                Self::InvalidMaxStateHistory(inner) => {
18539                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
18540                        inner,
18541                        out,
18542                    )
18543                }
18544                Self::InvalidProof(inner) => {
18545                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
18546                        inner,
18547                        out,
18548                    )
18549                }
18550                Self::InvalidScalar(inner) => {
18551                    <InvalidScalar as alloy_sol_types::SolError>::abi_encode_raw(
18552                        inner,
18553                        out,
18554                    )
18555                }
18556                Self::MissingEpochRootUpdate(inner) => {
18557                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encode_raw(
18558                        inner,
18559                        out,
18560                    )
18561                }
18562                Self::NoChangeRequired(inner) => {
18563                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
18564                        inner,
18565                        out,
18566                    )
18567                }
18568                Self::NotInitializing(inner) => {
18569                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
18570                        inner,
18571                        out,
18572                    )
18573                }
18574                Self::OutdatedState(inner) => {
18575                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
18576                        inner,
18577                        out,
18578                    )
18579                }
18580                Self::OwnableInvalidOwner(inner) => {
18581                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
18582                        inner,
18583                        out,
18584                    )
18585                }
18586                Self::OwnableUnauthorizedAccount(inner) => {
18587                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
18588                        inner,
18589                        out,
18590                    )
18591                }
18592                Self::OwnershipCannotBeRenounced(inner) => {
18593                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
18594                        inner,
18595                        out,
18596                    )
18597                }
18598                Self::ProverNotPermissioned(inner) => {
18599                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
18600                        inner,
18601                        out,
18602                    )
18603                }
18604                Self::UUPSUnauthorizedCallContext(inner) => {
18605                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
18606                        inner,
18607                        out,
18608                    )
18609                }
18610                Self::UUPSUnsupportedProxiableUUID(inner) => {
18611                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
18612                        inner,
18613                        out,
18614                    )
18615                }
18616                Self::WrongStakeTableUsed(inner) => {
18617                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
18618                        inner,
18619                        out,
18620                    )
18621                }
18622            }
18623        }
18624    }
18625    ///Container for all the [`LightClientV3Mock`](self) events.
18626    #[derive(serde::Serialize, serde::Deserialize)]
18627    #[derive(Debug, PartialEq, Eq, Hash)]
18628    pub enum LightClientV3MockEvents {
18629        #[allow(missing_docs)]
18630        Initialized(Initialized),
18631        #[allow(missing_docs)]
18632        NewEpoch(NewEpoch),
18633        #[allow(missing_docs)]
18634        NewState(NewState),
18635        #[allow(missing_docs)]
18636        OwnershipTransferred(OwnershipTransferred),
18637        #[allow(missing_docs)]
18638        PermissionedProverNotRequired(PermissionedProverNotRequired),
18639        #[allow(missing_docs)]
18640        PermissionedProverRequired(PermissionedProverRequired),
18641        #[allow(missing_docs)]
18642        Upgrade(Upgrade),
18643        #[allow(missing_docs)]
18644        Upgraded(Upgraded),
18645    }
18646    #[automatically_derived]
18647    impl LightClientV3MockEvents {
18648        /// All the selectors of this enum.
18649        ///
18650        /// Note that the selectors might not be in the same order as the variants.
18651        /// No guarantees are made about the order of the selectors.
18652        ///
18653        /// Prefer using `SolInterface` methods instead.
18654        pub const SELECTORS: &'static [[u8; 32usize]] = &[
18655            [
18656                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
18657                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
18658                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
18659            ],
18660            [
18661                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
18662                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
18663                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
18664            ],
18665            [
18666                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
18667                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
18668                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
18669            ],
18670            [
18671                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
18672                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
18673                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
18674            ],
18675            [
18676                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
18677                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
18678                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
18679            ],
18680            [
18681                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
18682                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
18683                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
18684            ],
18685            [
18686                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
18687                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
18688                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
18689            ],
18690            [
18691                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
18692                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
18693                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
18694            ],
18695        ];
18696    }
18697    #[automatically_derived]
18698    impl alloy_sol_types::SolEventInterface for LightClientV3MockEvents {
18699        const NAME: &'static str = "LightClientV3MockEvents";
18700        const COUNT: usize = 8usize;
18701        fn decode_raw_log(
18702            topics: &[alloy_sol_types::Word],
18703            data: &[u8],
18704        ) -> alloy_sol_types::Result<Self> {
18705            match topics.first().copied() {
18706                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
18707                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
18708                            topics,
18709                            data,
18710                        )
18711                        .map(Self::Initialized)
18712                }
18713                Some(<NewEpoch as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
18714                    <NewEpoch as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
18715                        .map(Self::NewEpoch)
18716                }
18717                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
18718                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
18719                        .map(Self::NewState)
18720                }
18721                Some(
18722                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
18723                ) => {
18724                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
18725                            topics,
18726                            data,
18727                        )
18728                        .map(Self::OwnershipTransferred)
18729                }
18730                Some(
18731                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
18732                ) => {
18733                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
18734                            topics,
18735                            data,
18736                        )
18737                        .map(Self::PermissionedProverNotRequired)
18738                }
18739                Some(
18740                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
18741                ) => {
18742                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
18743                            topics,
18744                            data,
18745                        )
18746                        .map(Self::PermissionedProverRequired)
18747                }
18748                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
18749                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
18750                        .map(Self::Upgrade)
18751                }
18752                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
18753                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
18754                        .map(Self::Upgraded)
18755                }
18756                _ => {
18757                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
18758                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
18759                        log: alloy_sol_types::private::Box::new(
18760                            alloy_sol_types::private::LogData::new_unchecked(
18761                                topics.to_vec(),
18762                                data.to_vec().into(),
18763                            ),
18764                        ),
18765                    })
18766                }
18767            }
18768        }
18769    }
18770    #[automatically_derived]
18771    impl alloy_sol_types::private::IntoLogData for LightClientV3MockEvents {
18772        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
18773            match self {
18774                Self::Initialized(inner) => {
18775                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
18776                }
18777                Self::NewEpoch(inner) => {
18778                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
18779                }
18780                Self::NewState(inner) => {
18781                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
18782                }
18783                Self::OwnershipTransferred(inner) => {
18784                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
18785                }
18786                Self::PermissionedProverNotRequired(inner) => {
18787                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
18788                }
18789                Self::PermissionedProverRequired(inner) => {
18790                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
18791                }
18792                Self::Upgrade(inner) => {
18793                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
18794                }
18795                Self::Upgraded(inner) => {
18796                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
18797                }
18798            }
18799        }
18800        fn into_log_data(self) -> alloy_sol_types::private::LogData {
18801            match self {
18802                Self::Initialized(inner) => {
18803                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
18804                }
18805                Self::NewEpoch(inner) => {
18806                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
18807                }
18808                Self::NewState(inner) => {
18809                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
18810                }
18811                Self::OwnershipTransferred(inner) => {
18812                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
18813                }
18814                Self::PermissionedProverNotRequired(inner) => {
18815                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
18816                }
18817                Self::PermissionedProverRequired(inner) => {
18818                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
18819                }
18820                Self::Upgrade(inner) => {
18821                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
18822                }
18823                Self::Upgraded(inner) => {
18824                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
18825                }
18826            }
18827        }
18828    }
18829    use alloy::contract as alloy_contract;
18830    /**Creates a new wrapper around an on-chain [`LightClientV3Mock`](self) contract instance.
18831
18832See the [wrapper's documentation](`LightClientV3MockInstance`) for more details.*/
18833    #[inline]
18834    pub const fn new<
18835        P: alloy_contract::private::Provider<N>,
18836        N: alloy_contract::private::Network,
18837    >(
18838        address: alloy_sol_types::private::Address,
18839        provider: P,
18840    ) -> LightClientV3MockInstance<P, N> {
18841        LightClientV3MockInstance::<P, N>::new(address, provider)
18842    }
18843    /**Deploys this contract using the given `provider` and constructor arguments, if any.
18844
18845Returns a new instance of the contract, if the deployment was successful.
18846
18847For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
18848    #[inline]
18849    pub fn deploy<
18850        P: alloy_contract::private::Provider<N>,
18851        N: alloy_contract::private::Network,
18852    >(
18853        provider: P,
18854    ) -> impl ::core::future::Future<
18855        Output = alloy_contract::Result<LightClientV3MockInstance<P, N>>,
18856    > {
18857        LightClientV3MockInstance::<P, N>::deploy(provider)
18858    }
18859    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
18860and constructor arguments, if any.
18861
18862This is a simple wrapper around creating a `RawCallBuilder` with the data set to
18863the bytecode concatenated with the constructor's ABI-encoded arguments.*/
18864    #[inline]
18865    pub fn deploy_builder<
18866        P: alloy_contract::private::Provider<N>,
18867        N: alloy_contract::private::Network,
18868    >(provider: P) -> alloy_contract::RawCallBuilder<P, N> {
18869        LightClientV3MockInstance::<P, N>::deploy_builder(provider)
18870    }
18871    /**A [`LightClientV3Mock`](self) instance.
18872
18873Contains type-safe methods for interacting with an on-chain instance of the
18874[`LightClientV3Mock`](self) contract located at a given `address`, using a given
18875provider `P`.
18876
18877If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
18878documentation on how to provide it), the `deploy` and `deploy_builder` methods can
18879be used to deploy a new instance of the contract.
18880
18881See the [module-level documentation](self) for all the available methods.*/
18882    #[derive(Clone)]
18883    pub struct LightClientV3MockInstance<P, N = alloy_contract::private::Ethereum> {
18884        address: alloy_sol_types::private::Address,
18885        provider: P,
18886        _network: ::core::marker::PhantomData<N>,
18887    }
18888    #[automatically_derived]
18889    impl<P, N> ::core::fmt::Debug for LightClientV3MockInstance<P, N> {
18890        #[inline]
18891        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
18892            f.debug_tuple("LightClientV3MockInstance").field(&self.address).finish()
18893        }
18894    }
18895    /// Instantiation and getters/setters.
18896    #[automatically_derived]
18897    impl<
18898        P: alloy_contract::private::Provider<N>,
18899        N: alloy_contract::private::Network,
18900    > LightClientV3MockInstance<P, N> {
18901        /**Creates a new wrapper around an on-chain [`LightClientV3Mock`](self) contract instance.
18902
18903See the [wrapper's documentation](`LightClientV3MockInstance`) for more details.*/
18904        #[inline]
18905        pub const fn new(
18906            address: alloy_sol_types::private::Address,
18907            provider: P,
18908        ) -> Self {
18909            Self {
18910                address,
18911                provider,
18912                _network: ::core::marker::PhantomData,
18913            }
18914        }
18915        /**Deploys this contract using the given `provider` and constructor arguments, if any.
18916
18917Returns a new instance of the contract, if the deployment was successful.
18918
18919For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
18920        #[inline]
18921        pub async fn deploy(
18922            provider: P,
18923        ) -> alloy_contract::Result<LightClientV3MockInstance<P, N>> {
18924            let call_builder = Self::deploy_builder(provider);
18925            let contract_address = call_builder.deploy().await?;
18926            Ok(Self::new(contract_address, call_builder.provider))
18927        }
18928        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
18929and constructor arguments, if any.
18930
18931This is a simple wrapper around creating a `RawCallBuilder` with the data set to
18932the bytecode concatenated with the constructor's ABI-encoded arguments.*/
18933        #[inline]
18934        pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<P, N> {
18935            alloy_contract::RawCallBuilder::new_raw_deploy(
18936                provider,
18937                ::core::clone::Clone::clone(&BYTECODE),
18938            )
18939        }
18940        /// Returns a reference to the address.
18941        #[inline]
18942        pub const fn address(&self) -> &alloy_sol_types::private::Address {
18943            &self.address
18944        }
18945        /// Sets the address.
18946        #[inline]
18947        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
18948            self.address = address;
18949        }
18950        /// Sets the address and returns `self`.
18951        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
18952            self.set_address(address);
18953            self
18954        }
18955        /// Returns a reference to the provider.
18956        #[inline]
18957        pub const fn provider(&self) -> &P {
18958            &self.provider
18959        }
18960    }
18961    impl<P: ::core::clone::Clone, N> LightClientV3MockInstance<&P, N> {
18962        /// Clones the provider and returns a new instance with the cloned provider.
18963        #[inline]
18964        pub fn with_cloned_provider(self) -> LightClientV3MockInstance<P, N> {
18965            LightClientV3MockInstance {
18966                address: self.address,
18967                provider: ::core::clone::Clone::clone(&self.provider),
18968                _network: ::core::marker::PhantomData,
18969            }
18970        }
18971    }
18972    /// Function calls.
18973    #[automatically_derived]
18974    impl<
18975        P: alloy_contract::private::Provider<N>,
18976        N: alloy_contract::private::Network,
18977    > LightClientV3MockInstance<P, N> {
18978        /// Creates a new call builder using this contract instance's provider and address.
18979        ///
18980        /// Note that the call can be any function call, not just those defined in this
18981        /// contract. Prefer using the other methods for building type-safe contract calls.
18982        pub fn call_builder<C: alloy_sol_types::SolCall>(
18983            &self,
18984            call: &C,
18985        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
18986            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
18987        }
18988        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
18989        pub fn UPGRADE_INTERFACE_VERSION(
18990            &self,
18991        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
18992            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
18993        }
18994        ///Creates a new call builder for the [`_getVk`] function.
18995        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<&P, _getVkCall, N> {
18996            self.call_builder(&_getVkCall)
18997        }
18998        ///Creates a new call builder for the [`authRoot`] function.
18999        pub fn authRoot(&self) -> alloy_contract::SolCallBuilder<&P, authRootCall, N> {
19000            self.call_builder(&authRootCall)
19001        }
19002        ///Creates a new call builder for the [`blocksPerEpoch`] function.
19003        pub fn blocksPerEpoch(
19004            &self,
19005        ) -> alloy_contract::SolCallBuilder<&P, blocksPerEpochCall, N> {
19006            self.call_builder(&blocksPerEpochCall)
19007        }
19008        ///Creates a new call builder for the [`currentBlockNumber`] function.
19009        pub fn currentBlockNumber(
19010            &self,
19011        ) -> alloy_contract::SolCallBuilder<&P, currentBlockNumberCall, N> {
19012            self.call_builder(&currentBlockNumberCall)
19013        }
19014        ///Creates a new call builder for the [`currentEpoch`] function.
19015        pub fn currentEpoch(
19016            &self,
19017        ) -> alloy_contract::SolCallBuilder<&P, currentEpochCall, N> {
19018            self.call_builder(&currentEpochCall)
19019        }
19020        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
19021        pub fn disablePermissionedProverMode(
19022            &self,
19023        ) -> alloy_contract::SolCallBuilder<&P, disablePermissionedProverModeCall, N> {
19024            self.call_builder(&disablePermissionedProverModeCall)
19025        }
19026        ///Creates a new call builder for the [`epochFromBlockNumber`] function.
19027        pub fn epochFromBlockNumber(
19028            &self,
19029            _blockNum: u64,
19030            _blocksPerEpoch: u64,
19031        ) -> alloy_contract::SolCallBuilder<&P, epochFromBlockNumberCall, N> {
19032            self.call_builder(
19033                &epochFromBlockNumberCall {
19034                    _blockNum,
19035                    _blocksPerEpoch,
19036                },
19037            )
19038        }
19039        ///Creates a new call builder for the [`epochStartBlock`] function.
19040        pub fn epochStartBlock(
19041            &self,
19042        ) -> alloy_contract::SolCallBuilder<&P, epochStartBlockCall, N> {
19043            self.call_builder(&epochStartBlockCall)
19044        }
19045        ///Creates a new call builder for the [`finalizedState`] function.
19046        pub fn finalizedState(
19047            &self,
19048        ) -> alloy_contract::SolCallBuilder<&P, finalizedStateCall, N> {
19049            self.call_builder(&finalizedStateCall)
19050        }
19051        ///Creates a new call builder for the [`firstEpoch`] function.
19052        pub fn firstEpoch(
19053            &self,
19054        ) -> alloy_contract::SolCallBuilder<&P, firstEpochCall, N> {
19055            self.call_builder(&firstEpochCall)
19056        }
19057        ///Creates a new call builder for the [`genesisStakeTableState`] function.
19058        pub fn genesisStakeTableState(
19059            &self,
19060        ) -> alloy_contract::SolCallBuilder<&P, genesisStakeTableStateCall, N> {
19061            self.call_builder(&genesisStakeTableStateCall)
19062        }
19063        ///Creates a new call builder for the [`genesisState`] function.
19064        pub fn genesisState(
19065            &self,
19066        ) -> alloy_contract::SolCallBuilder<&P, genesisStateCall, N> {
19067            self.call_builder(&genesisStateCall)
19068        }
19069        ///Creates a new call builder for the [`getHotShotCommitment`] function.
19070        pub fn getHotShotCommitment(
19071            &self,
19072            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
19073        ) -> alloy_contract::SolCallBuilder<&P, getHotShotCommitmentCall, N> {
19074            self.call_builder(
19075                &getHotShotCommitmentCall {
19076                    hotShotBlockHeight,
19077                },
19078            )
19079        }
19080        ///Creates a new call builder for the [`getStateHistoryCount`] function.
19081        pub fn getStateHistoryCount(
19082            &self,
19083        ) -> alloy_contract::SolCallBuilder<&P, getStateHistoryCountCall, N> {
19084            self.call_builder(&getStateHistoryCountCall)
19085        }
19086        ///Creates a new call builder for the [`getVersion`] function.
19087        pub fn getVersion(
19088            &self,
19089        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
19090            self.call_builder(&getVersionCall)
19091        }
19092        ///Creates a new call builder for the [`initialize`] function.
19093        pub fn initialize(
19094            &self,
19095            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
19096            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
19097            _stateHistoryRetentionPeriod: u32,
19098            owner: alloy::sol_types::private::Address,
19099        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
19100            self.call_builder(
19101                &initializeCall {
19102                    _genesis,
19103                    _genesisStakeTableState,
19104                    _stateHistoryRetentionPeriod,
19105                    owner,
19106                },
19107            )
19108        }
19109        ///Creates a new call builder for the [`initializeV2`] function.
19110        pub fn initializeV2(
19111            &self,
19112            _blocksPerEpoch: u64,
19113            _epochStartBlock: u64,
19114        ) -> alloy_contract::SolCallBuilder<&P, initializeV2Call, N> {
19115            self.call_builder(
19116                &initializeV2Call {
19117                    _blocksPerEpoch,
19118                    _epochStartBlock,
19119                },
19120            )
19121        }
19122        ///Creates a new call builder for the [`initializeV3`] function.
19123        pub fn initializeV3(
19124            &self,
19125        ) -> alloy_contract::SolCallBuilder<&P, initializeV3Call, N> {
19126            self.call_builder(&initializeV3Call)
19127        }
19128        ///Creates a new call builder for the [`isEpochRoot`] function.
19129        pub fn isEpochRoot(
19130            &self,
19131            blockHeight: u64,
19132        ) -> alloy_contract::SolCallBuilder<&P, isEpochRootCall, N> {
19133            self.call_builder(&isEpochRootCall { blockHeight })
19134        }
19135        ///Creates a new call builder for the [`isGtEpochRoot`] function.
19136        pub fn isGtEpochRoot(
19137            &self,
19138            blockHeight: u64,
19139        ) -> alloy_contract::SolCallBuilder<&P, isGtEpochRootCall, N> {
19140            self.call_builder(&isGtEpochRootCall { blockHeight })
19141        }
19142        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
19143        pub fn isPermissionedProverEnabled(
19144            &self,
19145        ) -> alloy_contract::SolCallBuilder<&P, isPermissionedProverEnabledCall, N> {
19146            self.call_builder(&isPermissionedProverEnabledCall)
19147        }
19148        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
19149        pub fn lagOverEscapeHatchThreshold(
19150            &self,
19151            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
19152            threshold: alloy::sol_types::private::primitives::aliases::U256,
19153        ) -> alloy_contract::SolCallBuilder<&P, lagOverEscapeHatchThresholdCall, N> {
19154            self.call_builder(
19155                &lagOverEscapeHatchThresholdCall {
19156                    blockNumber,
19157                    threshold,
19158                },
19159            )
19160        }
19161        ///Creates a new call builder for the [`newFinalizedState_0`] function.
19162        pub fn newFinalizedState_0(
19163            &self,
19164            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
19165            _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
19166        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_0Call, N> {
19167            self.call_builder(&newFinalizedState_0Call { _0, _1 })
19168        }
19169        ///Creates a new call builder for the [`newFinalizedState_1`] function.
19170        pub fn newFinalizedState_1(
19171            &self,
19172            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
19173            _1: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
19174            _2: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
19175        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_1Call, N> {
19176            self.call_builder(
19177                &newFinalizedState_1Call {
19178                    _0,
19179                    _1,
19180                    _2,
19181                },
19182            )
19183        }
19184        ///Creates a new call builder for the [`newFinalizedState_2`] function.
19185        pub fn newFinalizedState_2(
19186            &self,
19187            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
19188            nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
19189            newAuthRoot: alloy::sol_types::private::primitives::aliases::U256,
19190            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
19191        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_2Call, N> {
19192            self.call_builder(
19193                &newFinalizedState_2Call {
19194                    newState,
19195                    nextStakeTable,
19196                    newAuthRoot,
19197                    proof,
19198                },
19199            )
19200        }
19201        ///Creates a new call builder for the [`owner`] function.
19202        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
19203            self.call_builder(&ownerCall)
19204        }
19205        ///Creates a new call builder for the [`permissionedProver`] function.
19206        pub fn permissionedProver(
19207            &self,
19208        ) -> alloy_contract::SolCallBuilder<&P, permissionedProverCall, N> {
19209            self.call_builder(&permissionedProverCall)
19210        }
19211        ///Creates a new call builder for the [`proxiableUUID`] function.
19212        pub fn proxiableUUID(
19213            &self,
19214        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
19215            self.call_builder(&proxiableUUIDCall)
19216        }
19217        ///Creates a new call builder for the [`renounceOwnership`] function.
19218        pub fn renounceOwnership(
19219            &self,
19220        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
19221            self.call_builder(&renounceOwnershipCall)
19222        }
19223        ///Creates a new call builder for the [`setAuthRoot`] function.
19224        pub fn setAuthRoot(
19225            &self,
19226            newAuthRoot: alloy::sol_types::private::primitives::aliases::U256,
19227        ) -> alloy_contract::SolCallBuilder<&P, setAuthRootCall, N> {
19228            self.call_builder(&setAuthRootCall { newAuthRoot })
19229        }
19230        ///Creates a new call builder for the [`setBlocksPerEpoch`] function.
19231        pub fn setBlocksPerEpoch(
19232            &self,
19233            newBlocksPerEpoch: u64,
19234        ) -> alloy_contract::SolCallBuilder<&P, setBlocksPerEpochCall, N> {
19235            self.call_builder(
19236                &setBlocksPerEpochCall {
19237                    newBlocksPerEpoch,
19238                },
19239            )
19240        }
19241        ///Creates a new call builder for the [`setFinalizedState`] function.
19242        pub fn setFinalizedState(
19243            &self,
19244            state: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
19245        ) -> alloy_contract::SolCallBuilder<&P, setFinalizedStateCall, N> {
19246            self.call_builder(&setFinalizedStateCall { state })
19247        }
19248        ///Creates a new call builder for the [`setHotShotDownSince`] function.
19249        pub fn setHotShotDownSince(
19250            &self,
19251            l1Height: alloy::sol_types::private::primitives::aliases::U256,
19252        ) -> alloy_contract::SolCallBuilder<&P, setHotShotDownSinceCall, N> {
19253            self.call_builder(
19254                &setHotShotDownSinceCall {
19255                    l1Height,
19256                },
19257            )
19258        }
19259        ///Creates a new call builder for the [`setHotShotUp`] function.
19260        pub fn setHotShotUp(
19261            &self,
19262        ) -> alloy_contract::SolCallBuilder<&P, setHotShotUpCall, N> {
19263            self.call_builder(&setHotShotUpCall)
19264        }
19265        ///Creates a new call builder for the [`setPermissionedProver`] function.
19266        pub fn setPermissionedProver(
19267            &self,
19268            prover: alloy::sol_types::private::Address,
19269        ) -> alloy_contract::SolCallBuilder<&P, setPermissionedProverCall, N> {
19270            self.call_builder(
19271                &setPermissionedProverCall {
19272                    prover,
19273                },
19274            )
19275        }
19276        ///Creates a new call builder for the [`setStateHistory`] function.
19277        pub fn setStateHistory(
19278            &self,
19279            _stateHistoryCommitments: alloy::sol_types::private::Vec<
19280                <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
19281            >,
19282        ) -> alloy_contract::SolCallBuilder<&P, setStateHistoryCall, N> {
19283            self.call_builder(
19284                &setStateHistoryCall {
19285                    _stateHistoryCommitments,
19286                },
19287            )
19288        }
19289        ///Creates a new call builder for the [`setStateHistoryRetentionPeriod`] function.
19290        pub fn setStateHistoryRetentionPeriod(
19291            &self,
19292            historySeconds: u32,
19293        ) -> alloy_contract::SolCallBuilder<&P, setStateHistoryRetentionPeriodCall, N> {
19294            self.call_builder(
19295                &setStateHistoryRetentionPeriodCall {
19296                    historySeconds,
19297                },
19298            )
19299        }
19300        ///Creates a new call builder for the [`setVotingStakeTableState`] function.
19301        pub fn setVotingStakeTableState(
19302            &self,
19303            stake: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
19304        ) -> alloy_contract::SolCallBuilder<&P, setVotingStakeTableStateCall, N> {
19305            self.call_builder(
19306                &setVotingStakeTableStateCall {
19307                    stake,
19308                },
19309            )
19310        }
19311        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
19312        pub fn setstateHistoryRetentionPeriod(
19313            &self,
19314            historySeconds: u32,
19315        ) -> alloy_contract::SolCallBuilder<&P, setstateHistoryRetentionPeriodCall, N> {
19316            self.call_builder(
19317                &setstateHistoryRetentionPeriodCall {
19318                    historySeconds,
19319                },
19320            )
19321        }
19322        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
19323        pub fn stateHistoryCommitments(
19324            &self,
19325            _0: alloy::sol_types::private::primitives::aliases::U256,
19326        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryCommitmentsCall, N> {
19327            self.call_builder(&stateHistoryCommitmentsCall(_0))
19328        }
19329        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
19330        pub fn stateHistoryFirstIndex(
19331            &self,
19332        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryFirstIndexCall, N> {
19333            self.call_builder(&stateHistoryFirstIndexCall)
19334        }
19335        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
19336        pub fn stateHistoryRetentionPeriod(
19337            &self,
19338        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryRetentionPeriodCall, N> {
19339            self.call_builder(&stateHistoryRetentionPeriodCall)
19340        }
19341        ///Creates a new call builder for the [`transferOwnership`] function.
19342        pub fn transferOwnership(
19343            &self,
19344            newOwner: alloy::sol_types::private::Address,
19345        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
19346            self.call_builder(&transferOwnershipCall { newOwner })
19347        }
19348        ///Creates a new call builder for the [`updateEpochStartBlock`] function.
19349        pub fn updateEpochStartBlock(
19350            &self,
19351            newEpochStartBlock: u64,
19352        ) -> alloy_contract::SolCallBuilder<&P, updateEpochStartBlockCall, N> {
19353            self.call_builder(
19354                &updateEpochStartBlockCall {
19355                    newEpochStartBlock,
19356                },
19357            )
19358        }
19359        ///Creates a new call builder for the [`upgradeToAndCall`] function.
19360        pub fn upgradeToAndCall(
19361            &self,
19362            newImplementation: alloy::sol_types::private::Address,
19363            data: alloy::sol_types::private::Bytes,
19364        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
19365            self.call_builder(
19366                &upgradeToAndCallCall {
19367                    newImplementation,
19368                    data,
19369                },
19370            )
19371        }
19372        ///Creates a new call builder for the [`votingStakeTableState`] function.
19373        pub fn votingStakeTableState(
19374            &self,
19375        ) -> alloy_contract::SolCallBuilder<&P, votingStakeTableStateCall, N> {
19376            self.call_builder(&votingStakeTableStateCall)
19377        }
19378    }
19379    /// Event filters.
19380    #[automatically_derived]
19381    impl<
19382        P: alloy_contract::private::Provider<N>,
19383        N: alloy_contract::private::Network,
19384    > LightClientV3MockInstance<P, N> {
19385        /// Creates a new event filter using this contract instance's provider and address.
19386        ///
19387        /// Note that the type can be any event, not just those defined in this contract.
19388        /// Prefer using the other methods for building type-safe event filters.
19389        pub fn event_filter<E: alloy_sol_types::SolEvent>(
19390            &self,
19391        ) -> alloy_contract::Event<&P, E, N> {
19392            alloy_contract::Event::new_sol(&self.provider, &self.address)
19393        }
19394        ///Creates a new event filter for the [`Initialized`] event.
19395        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
19396            self.event_filter::<Initialized>()
19397        }
19398        ///Creates a new event filter for the [`NewEpoch`] event.
19399        pub fn NewEpoch_filter(&self) -> alloy_contract::Event<&P, NewEpoch, N> {
19400            self.event_filter::<NewEpoch>()
19401        }
19402        ///Creates a new event filter for the [`NewState`] event.
19403        pub fn NewState_filter(&self) -> alloy_contract::Event<&P, NewState, N> {
19404            self.event_filter::<NewState>()
19405        }
19406        ///Creates a new event filter for the [`OwnershipTransferred`] event.
19407        pub fn OwnershipTransferred_filter(
19408            &self,
19409        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
19410            self.event_filter::<OwnershipTransferred>()
19411        }
19412        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
19413        pub fn PermissionedProverNotRequired_filter(
19414            &self,
19415        ) -> alloy_contract::Event<&P, PermissionedProverNotRequired, N> {
19416            self.event_filter::<PermissionedProverNotRequired>()
19417        }
19418        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
19419        pub fn PermissionedProverRequired_filter(
19420            &self,
19421        ) -> alloy_contract::Event<&P, PermissionedProverRequired, N> {
19422            self.event_filter::<PermissionedProverRequired>()
19423        }
19424        ///Creates a new event filter for the [`Upgrade`] event.
19425        pub fn Upgrade_filter(&self) -> alloy_contract::Event<&P, Upgrade, N> {
19426            self.event_filter::<Upgrade>()
19427        }
19428        ///Creates a new event filter for the [`Upgraded`] event.
19429        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
19430            self.event_filter::<Upgraded>()
19431        }
19432    }
19433}