hotshot_contract_adapter/bindings/
light_client_v3.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}
2247```*/
2248#[allow(
2249    non_camel_case_types,
2250    non_snake_case,
2251    clippy::pub_underscore_fields,
2252    clippy::style,
2253    clippy::empty_structs_with_brackets
2254)]
2255pub mod LightClient {
2256    use super::*;
2257    use alloy::sol_types as alloy_sol_types;
2258    #[derive(serde::Serialize, serde::Deserialize)]
2259    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2260    /**```solidity
2261struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2262```*/
2263    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2264    #[derive(Clone)]
2265    pub struct LightClientState {
2266        #[allow(missing_docs)]
2267        pub viewNum: u64,
2268        #[allow(missing_docs)]
2269        pub blockHeight: u64,
2270        #[allow(missing_docs)]
2271        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2272    }
2273    #[allow(
2274        non_camel_case_types,
2275        non_snake_case,
2276        clippy::pub_underscore_fields,
2277        clippy::style
2278    )]
2279    const _: () = {
2280        use alloy::sol_types as alloy_sol_types;
2281        #[doc(hidden)]
2282        type UnderlyingSolTuple<'a> = (
2283            alloy::sol_types::sol_data::Uint<64>,
2284            alloy::sol_types::sol_data::Uint<64>,
2285            BN254::ScalarField,
2286        );
2287        #[doc(hidden)]
2288        type UnderlyingRustTuple<'a> = (
2289            u64,
2290            u64,
2291            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2292        );
2293        #[cfg(test)]
2294        #[allow(dead_code, unreachable_patterns)]
2295        fn _type_assertion(
2296            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2297        ) {
2298            match _t {
2299                alloy_sol_types::private::AssertTypeEq::<
2300                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2301                >(_) => {}
2302            }
2303        }
2304        #[automatically_derived]
2305        #[doc(hidden)]
2306        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
2307            fn from(value: LightClientState) -> Self {
2308                (value.viewNum, value.blockHeight, value.blockCommRoot)
2309            }
2310        }
2311        #[automatically_derived]
2312        #[doc(hidden)]
2313        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
2314            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2315                Self {
2316                    viewNum: tuple.0,
2317                    blockHeight: tuple.1,
2318                    blockCommRoot: tuple.2,
2319                }
2320            }
2321        }
2322        #[automatically_derived]
2323        impl alloy_sol_types::SolValue for LightClientState {
2324            type SolType = Self;
2325        }
2326        #[automatically_derived]
2327        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
2328            #[inline]
2329            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2330                (
2331                    <alloy::sol_types::sol_data::Uint<
2332                        64,
2333                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
2334                    <alloy::sol_types::sol_data::Uint<
2335                        64,
2336                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
2337                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2338                        &self.blockCommRoot,
2339                    ),
2340                )
2341            }
2342            #[inline]
2343            fn stv_abi_encoded_size(&self) -> usize {
2344                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2345                    return size;
2346                }
2347                let tuple = <UnderlyingRustTuple<
2348                    '_,
2349                > as ::core::convert::From<Self>>::from(self.clone());
2350                <UnderlyingSolTuple<
2351                    '_,
2352                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2353            }
2354            #[inline]
2355            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2356                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2357            }
2358            #[inline]
2359            fn stv_abi_encode_packed_to(
2360                &self,
2361                out: &mut alloy_sol_types::private::Vec<u8>,
2362            ) {
2363                let tuple = <UnderlyingRustTuple<
2364                    '_,
2365                > as ::core::convert::From<Self>>::from(self.clone());
2366                <UnderlyingSolTuple<
2367                    '_,
2368                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2369            }
2370            #[inline]
2371            fn stv_abi_packed_encoded_size(&self) -> usize {
2372                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2373                    return size;
2374                }
2375                let tuple = <UnderlyingRustTuple<
2376                    '_,
2377                > as ::core::convert::From<Self>>::from(self.clone());
2378                <UnderlyingSolTuple<
2379                    '_,
2380                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2381            }
2382        }
2383        #[automatically_derived]
2384        impl alloy_sol_types::SolType for LightClientState {
2385            type RustType = Self;
2386            type Token<'a> = <UnderlyingSolTuple<
2387                'a,
2388            > as alloy_sol_types::SolType>::Token<'a>;
2389            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2390            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2391                '_,
2392            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2393            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2394                '_,
2395            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2396            #[inline]
2397            fn valid_token(token: &Self::Token<'_>) -> bool {
2398                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2399            }
2400            #[inline]
2401            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2402                let tuple = <UnderlyingSolTuple<
2403                    '_,
2404                > as alloy_sol_types::SolType>::detokenize(token);
2405                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2406            }
2407        }
2408        #[automatically_derived]
2409        impl alloy_sol_types::SolStruct for LightClientState {
2410            const NAME: &'static str = "LightClientState";
2411            #[inline]
2412            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2413                alloy_sol_types::private::Cow::Borrowed(
2414                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
2415                )
2416            }
2417            #[inline]
2418            fn eip712_components() -> alloy_sol_types::private::Vec<
2419                alloy_sol_types::private::Cow<'static, str>,
2420            > {
2421                alloy_sol_types::private::Vec::new()
2422            }
2423            #[inline]
2424            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2425                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2426            }
2427            #[inline]
2428            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2429                [
2430                    <alloy::sol_types::sol_data::Uint<
2431                        64,
2432                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
2433                        .0,
2434                    <alloy::sol_types::sol_data::Uint<
2435                        64,
2436                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
2437                        .0,
2438                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2439                            &self.blockCommRoot,
2440                        )
2441                        .0,
2442                ]
2443                    .concat()
2444            }
2445        }
2446        #[automatically_derived]
2447        impl alloy_sol_types::EventTopic for LightClientState {
2448            #[inline]
2449            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2450                0usize
2451                    + <alloy::sol_types::sol_data::Uint<
2452                        64,
2453                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2454                        &rust.viewNum,
2455                    )
2456                    + <alloy::sol_types::sol_data::Uint<
2457                        64,
2458                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2459                        &rust.blockHeight,
2460                    )
2461                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2462                        &rust.blockCommRoot,
2463                    )
2464            }
2465            #[inline]
2466            fn encode_topic_preimage(
2467                rust: &Self::RustType,
2468                out: &mut alloy_sol_types::private::Vec<u8>,
2469            ) {
2470                out.reserve(
2471                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2472                );
2473                <alloy::sol_types::sol_data::Uint<
2474                    64,
2475                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2476                    &rust.viewNum,
2477                    out,
2478                );
2479                <alloy::sol_types::sol_data::Uint<
2480                    64,
2481                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2482                    &rust.blockHeight,
2483                    out,
2484                );
2485                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2486                    &rust.blockCommRoot,
2487                    out,
2488                );
2489            }
2490            #[inline]
2491            fn encode_topic(
2492                rust: &Self::RustType,
2493            ) -> alloy_sol_types::abi::token::WordToken {
2494                let mut out = alloy_sol_types::private::Vec::new();
2495                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2496                    rust,
2497                    &mut out,
2498                );
2499                alloy_sol_types::abi::token::WordToken(
2500                    alloy_sol_types::private::keccak256(out),
2501                )
2502            }
2503        }
2504    };
2505    #[derive(serde::Serialize, serde::Deserialize)]
2506    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2507    /**```solidity
2508struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2509```*/
2510    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2511    #[derive(Clone)]
2512    pub struct StakeTableState {
2513        #[allow(missing_docs)]
2514        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
2515        #[allow(missing_docs)]
2516        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2517        #[allow(missing_docs)]
2518        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2519        #[allow(missing_docs)]
2520        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2521    }
2522    #[allow(
2523        non_camel_case_types,
2524        non_snake_case,
2525        clippy::pub_underscore_fields,
2526        clippy::style
2527    )]
2528    const _: () = {
2529        use alloy::sol_types as alloy_sol_types;
2530        #[doc(hidden)]
2531        type UnderlyingSolTuple<'a> = (
2532            alloy::sol_types::sol_data::Uint<256>,
2533            BN254::ScalarField,
2534            BN254::ScalarField,
2535            BN254::ScalarField,
2536        );
2537        #[doc(hidden)]
2538        type UnderlyingRustTuple<'a> = (
2539            alloy::sol_types::private::primitives::aliases::U256,
2540            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2541            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2542            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2543        );
2544        #[cfg(test)]
2545        #[allow(dead_code, unreachable_patterns)]
2546        fn _type_assertion(
2547            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2548        ) {
2549            match _t {
2550                alloy_sol_types::private::AssertTypeEq::<
2551                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2552                >(_) => {}
2553            }
2554        }
2555        #[automatically_derived]
2556        #[doc(hidden)]
2557        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
2558            fn from(value: StakeTableState) -> Self {
2559                (
2560                    value.threshold,
2561                    value.blsKeyComm,
2562                    value.schnorrKeyComm,
2563                    value.amountComm,
2564                )
2565            }
2566        }
2567        #[automatically_derived]
2568        #[doc(hidden)]
2569        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
2570            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2571                Self {
2572                    threshold: tuple.0,
2573                    blsKeyComm: tuple.1,
2574                    schnorrKeyComm: tuple.2,
2575                    amountComm: tuple.3,
2576                }
2577            }
2578        }
2579        #[automatically_derived]
2580        impl alloy_sol_types::SolValue for StakeTableState {
2581            type SolType = Self;
2582        }
2583        #[automatically_derived]
2584        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
2585            #[inline]
2586            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2587                (
2588                    <alloy::sol_types::sol_data::Uint<
2589                        256,
2590                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
2591                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2592                        &self.blsKeyComm,
2593                    ),
2594                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2595                        &self.schnorrKeyComm,
2596                    ),
2597                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2598                        &self.amountComm,
2599                    ),
2600                )
2601            }
2602            #[inline]
2603            fn stv_abi_encoded_size(&self) -> usize {
2604                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2605                    return size;
2606                }
2607                let tuple = <UnderlyingRustTuple<
2608                    '_,
2609                > as ::core::convert::From<Self>>::from(self.clone());
2610                <UnderlyingSolTuple<
2611                    '_,
2612                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2613            }
2614            #[inline]
2615            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2616                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2617            }
2618            #[inline]
2619            fn stv_abi_encode_packed_to(
2620                &self,
2621                out: &mut alloy_sol_types::private::Vec<u8>,
2622            ) {
2623                let tuple = <UnderlyingRustTuple<
2624                    '_,
2625                > as ::core::convert::From<Self>>::from(self.clone());
2626                <UnderlyingSolTuple<
2627                    '_,
2628                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2629            }
2630            #[inline]
2631            fn stv_abi_packed_encoded_size(&self) -> usize {
2632                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2633                    return size;
2634                }
2635                let tuple = <UnderlyingRustTuple<
2636                    '_,
2637                > as ::core::convert::From<Self>>::from(self.clone());
2638                <UnderlyingSolTuple<
2639                    '_,
2640                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2641            }
2642        }
2643        #[automatically_derived]
2644        impl alloy_sol_types::SolType for StakeTableState {
2645            type RustType = Self;
2646            type Token<'a> = <UnderlyingSolTuple<
2647                'a,
2648            > as alloy_sol_types::SolType>::Token<'a>;
2649            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2650            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2651                '_,
2652            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2653            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2654                '_,
2655            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2656            #[inline]
2657            fn valid_token(token: &Self::Token<'_>) -> bool {
2658                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2659            }
2660            #[inline]
2661            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2662                let tuple = <UnderlyingSolTuple<
2663                    '_,
2664                > as alloy_sol_types::SolType>::detokenize(token);
2665                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2666            }
2667        }
2668        #[automatically_derived]
2669        impl alloy_sol_types::SolStruct for StakeTableState {
2670            const NAME: &'static str = "StakeTableState";
2671            #[inline]
2672            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2673                alloy_sol_types::private::Cow::Borrowed(
2674                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
2675                )
2676            }
2677            #[inline]
2678            fn eip712_components() -> alloy_sol_types::private::Vec<
2679                alloy_sol_types::private::Cow<'static, str>,
2680            > {
2681                alloy_sol_types::private::Vec::new()
2682            }
2683            #[inline]
2684            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2685                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2686            }
2687            #[inline]
2688            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2689                [
2690                    <alloy::sol_types::sol_data::Uint<
2691                        256,
2692                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
2693                        .0,
2694                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2695                            &self.blsKeyComm,
2696                        )
2697                        .0,
2698                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2699                            &self.schnorrKeyComm,
2700                        )
2701                        .0,
2702                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2703                            &self.amountComm,
2704                        )
2705                        .0,
2706                ]
2707                    .concat()
2708            }
2709        }
2710        #[automatically_derived]
2711        impl alloy_sol_types::EventTopic for StakeTableState {
2712            #[inline]
2713            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2714                0usize
2715                    + <alloy::sol_types::sol_data::Uint<
2716                        256,
2717                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2718                        &rust.threshold,
2719                    )
2720                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2721                        &rust.blsKeyComm,
2722                    )
2723                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2724                        &rust.schnorrKeyComm,
2725                    )
2726                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2727                        &rust.amountComm,
2728                    )
2729            }
2730            #[inline]
2731            fn encode_topic_preimage(
2732                rust: &Self::RustType,
2733                out: &mut alloy_sol_types::private::Vec<u8>,
2734            ) {
2735                out.reserve(
2736                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2737                );
2738                <alloy::sol_types::sol_data::Uint<
2739                    256,
2740                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2741                    &rust.threshold,
2742                    out,
2743                );
2744                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2745                    &rust.blsKeyComm,
2746                    out,
2747                );
2748                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2749                    &rust.schnorrKeyComm,
2750                    out,
2751                );
2752                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2753                    &rust.amountComm,
2754                    out,
2755                );
2756            }
2757            #[inline]
2758            fn encode_topic(
2759                rust: &Self::RustType,
2760            ) -> alloy_sol_types::abi::token::WordToken {
2761                let mut out = alloy_sol_types::private::Vec::new();
2762                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2763                    rust,
2764                    &mut out,
2765                );
2766                alloy_sol_types::abi::token::WordToken(
2767                    alloy_sol_types::private::keccak256(out),
2768                )
2769            }
2770        }
2771    };
2772    use alloy::contract as alloy_contract;
2773    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2774
2775See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2776    #[inline]
2777    pub const fn new<
2778        P: alloy_contract::private::Provider<N>,
2779        N: alloy_contract::private::Network,
2780    >(
2781        address: alloy_sol_types::private::Address,
2782        provider: P,
2783    ) -> LightClientInstance<P, N> {
2784        LightClientInstance::<P, N>::new(address, provider)
2785    }
2786    /**A [`LightClient`](self) instance.
2787
2788Contains type-safe methods for interacting with an on-chain instance of the
2789[`LightClient`](self) contract located at a given `address`, using a given
2790provider `P`.
2791
2792If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2793documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2794be used to deploy a new instance of the contract.
2795
2796See the [module-level documentation](self) for all the available methods.*/
2797    #[derive(Clone)]
2798    pub struct LightClientInstance<P, N = alloy_contract::private::Ethereum> {
2799        address: alloy_sol_types::private::Address,
2800        provider: P,
2801        _network: ::core::marker::PhantomData<N>,
2802    }
2803    #[automatically_derived]
2804    impl<P, N> ::core::fmt::Debug for LightClientInstance<P, N> {
2805        #[inline]
2806        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2807            f.debug_tuple("LightClientInstance").field(&self.address).finish()
2808        }
2809    }
2810    /// Instantiation and getters/setters.
2811    #[automatically_derived]
2812    impl<
2813        P: alloy_contract::private::Provider<N>,
2814        N: alloy_contract::private::Network,
2815    > LightClientInstance<P, N> {
2816        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2817
2818See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2819        #[inline]
2820        pub const fn new(
2821            address: alloy_sol_types::private::Address,
2822            provider: P,
2823        ) -> Self {
2824            Self {
2825                address,
2826                provider,
2827                _network: ::core::marker::PhantomData,
2828            }
2829        }
2830        /// Returns a reference to the address.
2831        #[inline]
2832        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2833            &self.address
2834        }
2835        /// Sets the address.
2836        #[inline]
2837        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2838            self.address = address;
2839        }
2840        /// Sets the address and returns `self`.
2841        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2842            self.set_address(address);
2843            self
2844        }
2845        /// Returns a reference to the provider.
2846        #[inline]
2847        pub const fn provider(&self) -> &P {
2848            &self.provider
2849        }
2850    }
2851    impl<P: ::core::clone::Clone, N> LightClientInstance<&P, N> {
2852        /// Clones the provider and returns a new instance with the cloned provider.
2853        #[inline]
2854        pub fn with_cloned_provider(self) -> LightClientInstance<P, N> {
2855            LightClientInstance {
2856                address: self.address,
2857                provider: ::core::clone::Clone::clone(&self.provider),
2858                _network: ::core::marker::PhantomData,
2859            }
2860        }
2861    }
2862    /// Function calls.
2863    #[automatically_derived]
2864    impl<
2865        P: alloy_contract::private::Provider<N>,
2866        N: alloy_contract::private::Network,
2867    > LightClientInstance<P, N> {
2868        /// Creates a new call builder using this contract instance's provider and address.
2869        ///
2870        /// Note that the call can be any function call, not just those defined in this
2871        /// contract. Prefer using the other methods for building type-safe contract calls.
2872        pub fn call_builder<C: alloy_sol_types::SolCall>(
2873            &self,
2874            call: &C,
2875        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2876            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2877        }
2878    }
2879    /// Event filters.
2880    #[automatically_derived]
2881    impl<
2882        P: alloy_contract::private::Provider<N>,
2883        N: alloy_contract::private::Network,
2884    > LightClientInstance<P, N> {
2885        /// Creates a new event filter using this contract instance's provider and address.
2886        ///
2887        /// Note that the type can be any event, not just those defined in this contract.
2888        /// Prefer using the other methods for building type-safe event filters.
2889        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2890            &self,
2891        ) -> alloy_contract::Event<&P, E, N> {
2892            alloy_contract::Event::new_sol(&self.provider, &self.address)
2893        }
2894    }
2895}
2896/**
2897
2898Generated by the following Solidity interface...
2899```solidity
2900library BN254 {
2901    type BaseField is uint256;
2902    type ScalarField is uint256;
2903    struct G1Point {
2904        BaseField x;
2905        BaseField y;
2906    }
2907}
2908
2909library IPlonkVerifier {
2910    struct PlonkProof {
2911        BN254.G1Point wire0;
2912        BN254.G1Point wire1;
2913        BN254.G1Point wire2;
2914        BN254.G1Point wire3;
2915        BN254.G1Point wire4;
2916        BN254.G1Point prodPerm;
2917        BN254.G1Point split0;
2918        BN254.G1Point split1;
2919        BN254.G1Point split2;
2920        BN254.G1Point split3;
2921        BN254.G1Point split4;
2922        BN254.G1Point zeta;
2923        BN254.G1Point zetaOmega;
2924        BN254.ScalarField wireEval0;
2925        BN254.ScalarField wireEval1;
2926        BN254.ScalarField wireEval2;
2927        BN254.ScalarField wireEval3;
2928        BN254.ScalarField wireEval4;
2929        BN254.ScalarField sigmaEval0;
2930        BN254.ScalarField sigmaEval1;
2931        BN254.ScalarField sigmaEval2;
2932        BN254.ScalarField sigmaEval3;
2933        BN254.ScalarField prodPermZetaOmegaEval;
2934    }
2935    struct VerifyingKey {
2936        uint256 domainSize;
2937        uint256 numInputs;
2938        BN254.G1Point sigma0;
2939        BN254.G1Point sigma1;
2940        BN254.G1Point sigma2;
2941        BN254.G1Point sigma3;
2942        BN254.G1Point sigma4;
2943        BN254.G1Point q1;
2944        BN254.G1Point q2;
2945        BN254.G1Point q3;
2946        BN254.G1Point q4;
2947        BN254.G1Point qM12;
2948        BN254.G1Point qM34;
2949        BN254.G1Point qO;
2950        BN254.G1Point qC;
2951        BN254.G1Point qH1;
2952        BN254.G1Point qH2;
2953        BN254.G1Point qH3;
2954        BN254.G1Point qH4;
2955        BN254.G1Point qEcc;
2956        bytes32 g2LSB;
2957        bytes32 g2MSB;
2958    }
2959}
2960
2961library LightClient {
2962    struct LightClientState {
2963        uint64 viewNum;
2964        uint64 blockHeight;
2965        BN254.ScalarField blockCommRoot;
2966    }
2967    struct StakeTableState {
2968        uint256 threshold;
2969        BN254.ScalarField blsKeyComm;
2970        BN254.ScalarField schnorrKeyComm;
2971        BN254.ScalarField amountComm;
2972    }
2973}
2974
2975interface LightClientV3 {
2976    error AddressEmptyCode(address target);
2977    error DeprecatedApi();
2978    error ERC1967InvalidImplementation(address implementation);
2979    error ERC1967NonPayable();
2980    error FailedInnerCall();
2981    error InsufficientSnapshotHistory();
2982    error InvalidAddress();
2983    error InvalidArgs();
2984    error InvalidHotShotBlockForCommitmentCheck();
2985    error InvalidInitialization();
2986    error InvalidMaxStateHistory();
2987    error InvalidProof();
2988    error InvalidScalar();
2989    error MissingEpochRootUpdate();
2990    error NoChangeRequired();
2991    error NotInitializing();
2992    error OutdatedState();
2993    error OwnableInvalidOwner(address owner);
2994    error OwnableUnauthorizedAccount(address account);
2995    error OwnershipCannotBeRenounced();
2996    error ProverNotPermissioned();
2997    error UUPSUnauthorizedCallContext();
2998    error UUPSUnsupportedProxiableUUID(bytes32 slot);
2999    error WrongStakeTableUsed();
3000
3001    event Initialized(uint64 version);
3002    event NewEpoch(uint64 epoch);
3003    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
3004    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
3005    event PermissionedProverNotRequired();
3006    event PermissionedProverRequired(address permissionedProver);
3007    event Upgrade(address implementation);
3008    event Upgraded(address indexed implementation);
3009
3010    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
3011    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
3012    function authRoot() external view returns (uint256);
3013    function blocksPerEpoch() external view returns (uint64);
3014    function currentBlockNumber() external view returns (uint256);
3015    function currentEpoch() external view returns (uint64);
3016    function disablePermissionedProverMode() external;
3017    function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
3018    function epochStartBlock() external view returns (uint64);
3019    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3020    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3021    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3022    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
3023    function getStateHistoryCount() external view returns (uint256);
3024    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
3025    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
3026    function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
3027    function initializeV3() external;
3028    function isEpochRoot(uint64 blockHeight) external view returns (bool);
3029    function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
3030    function isPermissionedProverEnabled() external view returns (bool);
3031    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
3032    function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
3033    function newFinalizedState(LightClient.LightClientState memory, LightClient.StakeTableState memory, IPlonkVerifier.PlonkProof memory) external pure;
3034    function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, uint256 newAuthRoot, IPlonkVerifier.PlonkProof memory proof) external;
3035    function owner() external view returns (address);
3036    function permissionedProver() external view returns (address);
3037    function proxiableUUID() external view returns (bytes32);
3038    function renounceOwnership() external;
3039    function setPermissionedProver(address prover) external;
3040    function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
3041    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
3042    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
3043    function stateHistoryFirstIndex() external view returns (uint64);
3044    function stateHistoryRetentionPeriod() external view returns (uint32);
3045    function transferOwnership(address newOwner) external;
3046    function updateEpochStartBlock(uint64 newEpochStartBlock) external;
3047    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
3048    function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3049}
3050```
3051
3052...which was generated by the following JSON ABI:
3053```json
3054[
3055  {
3056    "type": "function",
3057    "name": "UPGRADE_INTERFACE_VERSION",
3058    "inputs": [],
3059    "outputs": [
3060      {
3061        "name": "",
3062        "type": "string",
3063        "internalType": "string"
3064      }
3065    ],
3066    "stateMutability": "view"
3067  },
3068  {
3069    "type": "function",
3070    "name": "_getVk",
3071    "inputs": [],
3072    "outputs": [
3073      {
3074        "name": "vk",
3075        "type": "tuple",
3076        "internalType": "struct IPlonkVerifier.VerifyingKey",
3077        "components": [
3078          {
3079            "name": "domainSize",
3080            "type": "uint256",
3081            "internalType": "uint256"
3082          },
3083          {
3084            "name": "numInputs",
3085            "type": "uint256",
3086            "internalType": "uint256"
3087          },
3088          {
3089            "name": "sigma0",
3090            "type": "tuple",
3091            "internalType": "struct BN254.G1Point",
3092            "components": [
3093              {
3094                "name": "x",
3095                "type": "uint256",
3096                "internalType": "BN254.BaseField"
3097              },
3098              {
3099                "name": "y",
3100                "type": "uint256",
3101                "internalType": "BN254.BaseField"
3102              }
3103            ]
3104          },
3105          {
3106            "name": "sigma1",
3107            "type": "tuple",
3108            "internalType": "struct BN254.G1Point",
3109            "components": [
3110              {
3111                "name": "x",
3112                "type": "uint256",
3113                "internalType": "BN254.BaseField"
3114              },
3115              {
3116                "name": "y",
3117                "type": "uint256",
3118                "internalType": "BN254.BaseField"
3119              }
3120            ]
3121          },
3122          {
3123            "name": "sigma2",
3124            "type": "tuple",
3125            "internalType": "struct BN254.G1Point",
3126            "components": [
3127              {
3128                "name": "x",
3129                "type": "uint256",
3130                "internalType": "BN254.BaseField"
3131              },
3132              {
3133                "name": "y",
3134                "type": "uint256",
3135                "internalType": "BN254.BaseField"
3136              }
3137            ]
3138          },
3139          {
3140            "name": "sigma3",
3141            "type": "tuple",
3142            "internalType": "struct BN254.G1Point",
3143            "components": [
3144              {
3145                "name": "x",
3146                "type": "uint256",
3147                "internalType": "BN254.BaseField"
3148              },
3149              {
3150                "name": "y",
3151                "type": "uint256",
3152                "internalType": "BN254.BaseField"
3153              }
3154            ]
3155          },
3156          {
3157            "name": "sigma4",
3158            "type": "tuple",
3159            "internalType": "struct BN254.G1Point",
3160            "components": [
3161              {
3162                "name": "x",
3163                "type": "uint256",
3164                "internalType": "BN254.BaseField"
3165              },
3166              {
3167                "name": "y",
3168                "type": "uint256",
3169                "internalType": "BN254.BaseField"
3170              }
3171            ]
3172          },
3173          {
3174            "name": "q1",
3175            "type": "tuple",
3176            "internalType": "struct BN254.G1Point",
3177            "components": [
3178              {
3179                "name": "x",
3180                "type": "uint256",
3181                "internalType": "BN254.BaseField"
3182              },
3183              {
3184                "name": "y",
3185                "type": "uint256",
3186                "internalType": "BN254.BaseField"
3187              }
3188            ]
3189          },
3190          {
3191            "name": "q2",
3192            "type": "tuple",
3193            "internalType": "struct BN254.G1Point",
3194            "components": [
3195              {
3196                "name": "x",
3197                "type": "uint256",
3198                "internalType": "BN254.BaseField"
3199              },
3200              {
3201                "name": "y",
3202                "type": "uint256",
3203                "internalType": "BN254.BaseField"
3204              }
3205            ]
3206          },
3207          {
3208            "name": "q3",
3209            "type": "tuple",
3210            "internalType": "struct BN254.G1Point",
3211            "components": [
3212              {
3213                "name": "x",
3214                "type": "uint256",
3215                "internalType": "BN254.BaseField"
3216              },
3217              {
3218                "name": "y",
3219                "type": "uint256",
3220                "internalType": "BN254.BaseField"
3221              }
3222            ]
3223          },
3224          {
3225            "name": "q4",
3226            "type": "tuple",
3227            "internalType": "struct BN254.G1Point",
3228            "components": [
3229              {
3230                "name": "x",
3231                "type": "uint256",
3232                "internalType": "BN254.BaseField"
3233              },
3234              {
3235                "name": "y",
3236                "type": "uint256",
3237                "internalType": "BN254.BaseField"
3238              }
3239            ]
3240          },
3241          {
3242            "name": "qM12",
3243            "type": "tuple",
3244            "internalType": "struct BN254.G1Point",
3245            "components": [
3246              {
3247                "name": "x",
3248                "type": "uint256",
3249                "internalType": "BN254.BaseField"
3250              },
3251              {
3252                "name": "y",
3253                "type": "uint256",
3254                "internalType": "BN254.BaseField"
3255              }
3256            ]
3257          },
3258          {
3259            "name": "qM34",
3260            "type": "tuple",
3261            "internalType": "struct BN254.G1Point",
3262            "components": [
3263              {
3264                "name": "x",
3265                "type": "uint256",
3266                "internalType": "BN254.BaseField"
3267              },
3268              {
3269                "name": "y",
3270                "type": "uint256",
3271                "internalType": "BN254.BaseField"
3272              }
3273            ]
3274          },
3275          {
3276            "name": "qO",
3277            "type": "tuple",
3278            "internalType": "struct BN254.G1Point",
3279            "components": [
3280              {
3281                "name": "x",
3282                "type": "uint256",
3283                "internalType": "BN254.BaseField"
3284              },
3285              {
3286                "name": "y",
3287                "type": "uint256",
3288                "internalType": "BN254.BaseField"
3289              }
3290            ]
3291          },
3292          {
3293            "name": "qC",
3294            "type": "tuple",
3295            "internalType": "struct BN254.G1Point",
3296            "components": [
3297              {
3298                "name": "x",
3299                "type": "uint256",
3300                "internalType": "BN254.BaseField"
3301              },
3302              {
3303                "name": "y",
3304                "type": "uint256",
3305                "internalType": "BN254.BaseField"
3306              }
3307            ]
3308          },
3309          {
3310            "name": "qH1",
3311            "type": "tuple",
3312            "internalType": "struct BN254.G1Point",
3313            "components": [
3314              {
3315                "name": "x",
3316                "type": "uint256",
3317                "internalType": "BN254.BaseField"
3318              },
3319              {
3320                "name": "y",
3321                "type": "uint256",
3322                "internalType": "BN254.BaseField"
3323              }
3324            ]
3325          },
3326          {
3327            "name": "qH2",
3328            "type": "tuple",
3329            "internalType": "struct BN254.G1Point",
3330            "components": [
3331              {
3332                "name": "x",
3333                "type": "uint256",
3334                "internalType": "BN254.BaseField"
3335              },
3336              {
3337                "name": "y",
3338                "type": "uint256",
3339                "internalType": "BN254.BaseField"
3340              }
3341            ]
3342          },
3343          {
3344            "name": "qH3",
3345            "type": "tuple",
3346            "internalType": "struct BN254.G1Point",
3347            "components": [
3348              {
3349                "name": "x",
3350                "type": "uint256",
3351                "internalType": "BN254.BaseField"
3352              },
3353              {
3354                "name": "y",
3355                "type": "uint256",
3356                "internalType": "BN254.BaseField"
3357              }
3358            ]
3359          },
3360          {
3361            "name": "qH4",
3362            "type": "tuple",
3363            "internalType": "struct BN254.G1Point",
3364            "components": [
3365              {
3366                "name": "x",
3367                "type": "uint256",
3368                "internalType": "BN254.BaseField"
3369              },
3370              {
3371                "name": "y",
3372                "type": "uint256",
3373                "internalType": "BN254.BaseField"
3374              }
3375            ]
3376          },
3377          {
3378            "name": "qEcc",
3379            "type": "tuple",
3380            "internalType": "struct BN254.G1Point",
3381            "components": [
3382              {
3383                "name": "x",
3384                "type": "uint256",
3385                "internalType": "BN254.BaseField"
3386              },
3387              {
3388                "name": "y",
3389                "type": "uint256",
3390                "internalType": "BN254.BaseField"
3391              }
3392            ]
3393          },
3394          {
3395            "name": "g2LSB",
3396            "type": "bytes32",
3397            "internalType": "bytes32"
3398          },
3399          {
3400            "name": "g2MSB",
3401            "type": "bytes32",
3402            "internalType": "bytes32"
3403          }
3404        ]
3405      }
3406    ],
3407    "stateMutability": "pure"
3408  },
3409  {
3410    "type": "function",
3411    "name": "authRoot",
3412    "inputs": [],
3413    "outputs": [
3414      {
3415        "name": "",
3416        "type": "uint256",
3417        "internalType": "uint256"
3418      }
3419    ],
3420    "stateMutability": "view"
3421  },
3422  {
3423    "type": "function",
3424    "name": "blocksPerEpoch",
3425    "inputs": [],
3426    "outputs": [
3427      {
3428        "name": "",
3429        "type": "uint64",
3430        "internalType": "uint64"
3431      }
3432    ],
3433    "stateMutability": "view"
3434  },
3435  {
3436    "type": "function",
3437    "name": "currentBlockNumber",
3438    "inputs": [],
3439    "outputs": [
3440      {
3441        "name": "",
3442        "type": "uint256",
3443        "internalType": "uint256"
3444      }
3445    ],
3446    "stateMutability": "view"
3447  },
3448  {
3449    "type": "function",
3450    "name": "currentEpoch",
3451    "inputs": [],
3452    "outputs": [
3453      {
3454        "name": "",
3455        "type": "uint64",
3456        "internalType": "uint64"
3457      }
3458    ],
3459    "stateMutability": "view"
3460  },
3461  {
3462    "type": "function",
3463    "name": "disablePermissionedProverMode",
3464    "inputs": [],
3465    "outputs": [],
3466    "stateMutability": "nonpayable"
3467  },
3468  {
3469    "type": "function",
3470    "name": "epochFromBlockNumber",
3471    "inputs": [
3472      {
3473        "name": "_blockNum",
3474        "type": "uint64",
3475        "internalType": "uint64"
3476      },
3477      {
3478        "name": "_blocksPerEpoch",
3479        "type": "uint64",
3480        "internalType": "uint64"
3481      }
3482    ],
3483    "outputs": [
3484      {
3485        "name": "",
3486        "type": "uint64",
3487        "internalType": "uint64"
3488      }
3489    ],
3490    "stateMutability": "pure"
3491  },
3492  {
3493    "type": "function",
3494    "name": "epochStartBlock",
3495    "inputs": [],
3496    "outputs": [
3497      {
3498        "name": "",
3499        "type": "uint64",
3500        "internalType": "uint64"
3501      }
3502    ],
3503    "stateMutability": "view"
3504  },
3505  {
3506    "type": "function",
3507    "name": "finalizedState",
3508    "inputs": [],
3509    "outputs": [
3510      {
3511        "name": "viewNum",
3512        "type": "uint64",
3513        "internalType": "uint64"
3514      },
3515      {
3516        "name": "blockHeight",
3517        "type": "uint64",
3518        "internalType": "uint64"
3519      },
3520      {
3521        "name": "blockCommRoot",
3522        "type": "uint256",
3523        "internalType": "BN254.ScalarField"
3524      }
3525    ],
3526    "stateMutability": "view"
3527  },
3528  {
3529    "type": "function",
3530    "name": "genesisStakeTableState",
3531    "inputs": [],
3532    "outputs": [
3533      {
3534        "name": "threshold",
3535        "type": "uint256",
3536        "internalType": "uint256"
3537      },
3538      {
3539        "name": "blsKeyComm",
3540        "type": "uint256",
3541        "internalType": "BN254.ScalarField"
3542      },
3543      {
3544        "name": "schnorrKeyComm",
3545        "type": "uint256",
3546        "internalType": "BN254.ScalarField"
3547      },
3548      {
3549        "name": "amountComm",
3550        "type": "uint256",
3551        "internalType": "BN254.ScalarField"
3552      }
3553    ],
3554    "stateMutability": "view"
3555  },
3556  {
3557    "type": "function",
3558    "name": "genesisState",
3559    "inputs": [],
3560    "outputs": [
3561      {
3562        "name": "viewNum",
3563        "type": "uint64",
3564        "internalType": "uint64"
3565      },
3566      {
3567        "name": "blockHeight",
3568        "type": "uint64",
3569        "internalType": "uint64"
3570      },
3571      {
3572        "name": "blockCommRoot",
3573        "type": "uint256",
3574        "internalType": "BN254.ScalarField"
3575      }
3576    ],
3577    "stateMutability": "view"
3578  },
3579  {
3580    "type": "function",
3581    "name": "getHotShotCommitment",
3582    "inputs": [
3583      {
3584        "name": "hotShotBlockHeight",
3585        "type": "uint256",
3586        "internalType": "uint256"
3587      }
3588    ],
3589    "outputs": [
3590      {
3591        "name": "hotShotBlockCommRoot",
3592        "type": "uint256",
3593        "internalType": "BN254.ScalarField"
3594      },
3595      {
3596        "name": "hotshotBlockHeight",
3597        "type": "uint64",
3598        "internalType": "uint64"
3599      }
3600    ],
3601    "stateMutability": "view"
3602  },
3603  {
3604    "type": "function",
3605    "name": "getStateHistoryCount",
3606    "inputs": [],
3607    "outputs": [
3608      {
3609        "name": "",
3610        "type": "uint256",
3611        "internalType": "uint256"
3612      }
3613    ],
3614    "stateMutability": "view"
3615  },
3616  {
3617    "type": "function",
3618    "name": "getVersion",
3619    "inputs": [],
3620    "outputs": [
3621      {
3622        "name": "majorVersion",
3623        "type": "uint8",
3624        "internalType": "uint8"
3625      },
3626      {
3627        "name": "minorVersion",
3628        "type": "uint8",
3629        "internalType": "uint8"
3630      },
3631      {
3632        "name": "patchVersion",
3633        "type": "uint8",
3634        "internalType": "uint8"
3635      }
3636    ],
3637    "stateMutability": "pure"
3638  },
3639  {
3640    "type": "function",
3641    "name": "initialize",
3642    "inputs": [
3643      {
3644        "name": "_genesis",
3645        "type": "tuple",
3646        "internalType": "struct LightClient.LightClientState",
3647        "components": [
3648          {
3649            "name": "viewNum",
3650            "type": "uint64",
3651            "internalType": "uint64"
3652          },
3653          {
3654            "name": "blockHeight",
3655            "type": "uint64",
3656            "internalType": "uint64"
3657          },
3658          {
3659            "name": "blockCommRoot",
3660            "type": "uint256",
3661            "internalType": "BN254.ScalarField"
3662          }
3663        ]
3664      },
3665      {
3666        "name": "_genesisStakeTableState",
3667        "type": "tuple",
3668        "internalType": "struct LightClient.StakeTableState",
3669        "components": [
3670          {
3671            "name": "threshold",
3672            "type": "uint256",
3673            "internalType": "uint256"
3674          },
3675          {
3676            "name": "blsKeyComm",
3677            "type": "uint256",
3678            "internalType": "BN254.ScalarField"
3679          },
3680          {
3681            "name": "schnorrKeyComm",
3682            "type": "uint256",
3683            "internalType": "BN254.ScalarField"
3684          },
3685          {
3686            "name": "amountComm",
3687            "type": "uint256",
3688            "internalType": "BN254.ScalarField"
3689          }
3690        ]
3691      },
3692      {
3693        "name": "_stateHistoryRetentionPeriod",
3694        "type": "uint32",
3695        "internalType": "uint32"
3696      },
3697      {
3698        "name": "owner",
3699        "type": "address",
3700        "internalType": "address"
3701      }
3702    ],
3703    "outputs": [],
3704    "stateMutability": "nonpayable"
3705  },
3706  {
3707    "type": "function",
3708    "name": "initializeV2",
3709    "inputs": [
3710      {
3711        "name": "_blocksPerEpoch",
3712        "type": "uint64",
3713        "internalType": "uint64"
3714      },
3715      {
3716        "name": "_epochStartBlock",
3717        "type": "uint64",
3718        "internalType": "uint64"
3719      }
3720    ],
3721    "outputs": [],
3722    "stateMutability": "nonpayable"
3723  },
3724  {
3725    "type": "function",
3726    "name": "initializeV3",
3727    "inputs": [],
3728    "outputs": [],
3729    "stateMutability": "nonpayable"
3730  },
3731  {
3732    "type": "function",
3733    "name": "isEpochRoot",
3734    "inputs": [
3735      {
3736        "name": "blockHeight",
3737        "type": "uint64",
3738        "internalType": "uint64"
3739      }
3740    ],
3741    "outputs": [
3742      {
3743        "name": "",
3744        "type": "bool",
3745        "internalType": "bool"
3746      }
3747    ],
3748    "stateMutability": "view"
3749  },
3750  {
3751    "type": "function",
3752    "name": "isGtEpochRoot",
3753    "inputs": [
3754      {
3755        "name": "blockHeight",
3756        "type": "uint64",
3757        "internalType": "uint64"
3758      }
3759    ],
3760    "outputs": [
3761      {
3762        "name": "",
3763        "type": "bool",
3764        "internalType": "bool"
3765      }
3766    ],
3767    "stateMutability": "view"
3768  },
3769  {
3770    "type": "function",
3771    "name": "isPermissionedProverEnabled",
3772    "inputs": [],
3773    "outputs": [
3774      {
3775        "name": "",
3776        "type": "bool",
3777        "internalType": "bool"
3778      }
3779    ],
3780    "stateMutability": "view"
3781  },
3782  {
3783    "type": "function",
3784    "name": "lagOverEscapeHatchThreshold",
3785    "inputs": [
3786      {
3787        "name": "blockNumber",
3788        "type": "uint256",
3789        "internalType": "uint256"
3790      },
3791      {
3792        "name": "blockThreshold",
3793        "type": "uint256",
3794        "internalType": "uint256"
3795      }
3796    ],
3797    "outputs": [
3798      {
3799        "name": "",
3800        "type": "bool",
3801        "internalType": "bool"
3802      }
3803    ],
3804    "stateMutability": "view"
3805  },
3806  {
3807    "type": "function",
3808    "name": "newFinalizedState",
3809    "inputs": [
3810      {
3811        "name": "",
3812        "type": "tuple",
3813        "internalType": "struct LightClient.LightClientState",
3814        "components": [
3815          {
3816            "name": "viewNum",
3817            "type": "uint64",
3818            "internalType": "uint64"
3819          },
3820          {
3821            "name": "blockHeight",
3822            "type": "uint64",
3823            "internalType": "uint64"
3824          },
3825          {
3826            "name": "blockCommRoot",
3827            "type": "uint256",
3828            "internalType": "BN254.ScalarField"
3829          }
3830        ]
3831      },
3832      {
3833        "name": "",
3834        "type": "tuple",
3835        "internalType": "struct IPlonkVerifier.PlonkProof",
3836        "components": [
3837          {
3838            "name": "wire0",
3839            "type": "tuple",
3840            "internalType": "struct BN254.G1Point",
3841            "components": [
3842              {
3843                "name": "x",
3844                "type": "uint256",
3845                "internalType": "BN254.BaseField"
3846              },
3847              {
3848                "name": "y",
3849                "type": "uint256",
3850                "internalType": "BN254.BaseField"
3851              }
3852            ]
3853          },
3854          {
3855            "name": "wire1",
3856            "type": "tuple",
3857            "internalType": "struct BN254.G1Point",
3858            "components": [
3859              {
3860                "name": "x",
3861                "type": "uint256",
3862                "internalType": "BN254.BaseField"
3863              },
3864              {
3865                "name": "y",
3866                "type": "uint256",
3867                "internalType": "BN254.BaseField"
3868              }
3869            ]
3870          },
3871          {
3872            "name": "wire2",
3873            "type": "tuple",
3874            "internalType": "struct BN254.G1Point",
3875            "components": [
3876              {
3877                "name": "x",
3878                "type": "uint256",
3879                "internalType": "BN254.BaseField"
3880              },
3881              {
3882                "name": "y",
3883                "type": "uint256",
3884                "internalType": "BN254.BaseField"
3885              }
3886            ]
3887          },
3888          {
3889            "name": "wire3",
3890            "type": "tuple",
3891            "internalType": "struct BN254.G1Point",
3892            "components": [
3893              {
3894                "name": "x",
3895                "type": "uint256",
3896                "internalType": "BN254.BaseField"
3897              },
3898              {
3899                "name": "y",
3900                "type": "uint256",
3901                "internalType": "BN254.BaseField"
3902              }
3903            ]
3904          },
3905          {
3906            "name": "wire4",
3907            "type": "tuple",
3908            "internalType": "struct BN254.G1Point",
3909            "components": [
3910              {
3911                "name": "x",
3912                "type": "uint256",
3913                "internalType": "BN254.BaseField"
3914              },
3915              {
3916                "name": "y",
3917                "type": "uint256",
3918                "internalType": "BN254.BaseField"
3919              }
3920            ]
3921          },
3922          {
3923            "name": "prodPerm",
3924            "type": "tuple",
3925            "internalType": "struct BN254.G1Point",
3926            "components": [
3927              {
3928                "name": "x",
3929                "type": "uint256",
3930                "internalType": "BN254.BaseField"
3931              },
3932              {
3933                "name": "y",
3934                "type": "uint256",
3935                "internalType": "BN254.BaseField"
3936              }
3937            ]
3938          },
3939          {
3940            "name": "split0",
3941            "type": "tuple",
3942            "internalType": "struct BN254.G1Point",
3943            "components": [
3944              {
3945                "name": "x",
3946                "type": "uint256",
3947                "internalType": "BN254.BaseField"
3948              },
3949              {
3950                "name": "y",
3951                "type": "uint256",
3952                "internalType": "BN254.BaseField"
3953              }
3954            ]
3955          },
3956          {
3957            "name": "split1",
3958            "type": "tuple",
3959            "internalType": "struct BN254.G1Point",
3960            "components": [
3961              {
3962                "name": "x",
3963                "type": "uint256",
3964                "internalType": "BN254.BaseField"
3965              },
3966              {
3967                "name": "y",
3968                "type": "uint256",
3969                "internalType": "BN254.BaseField"
3970              }
3971            ]
3972          },
3973          {
3974            "name": "split2",
3975            "type": "tuple",
3976            "internalType": "struct BN254.G1Point",
3977            "components": [
3978              {
3979                "name": "x",
3980                "type": "uint256",
3981                "internalType": "BN254.BaseField"
3982              },
3983              {
3984                "name": "y",
3985                "type": "uint256",
3986                "internalType": "BN254.BaseField"
3987              }
3988            ]
3989          },
3990          {
3991            "name": "split3",
3992            "type": "tuple",
3993            "internalType": "struct BN254.G1Point",
3994            "components": [
3995              {
3996                "name": "x",
3997                "type": "uint256",
3998                "internalType": "BN254.BaseField"
3999              },
4000              {
4001                "name": "y",
4002                "type": "uint256",
4003                "internalType": "BN254.BaseField"
4004              }
4005            ]
4006          },
4007          {
4008            "name": "split4",
4009            "type": "tuple",
4010            "internalType": "struct BN254.G1Point",
4011            "components": [
4012              {
4013                "name": "x",
4014                "type": "uint256",
4015                "internalType": "BN254.BaseField"
4016              },
4017              {
4018                "name": "y",
4019                "type": "uint256",
4020                "internalType": "BN254.BaseField"
4021              }
4022            ]
4023          },
4024          {
4025            "name": "zeta",
4026            "type": "tuple",
4027            "internalType": "struct BN254.G1Point",
4028            "components": [
4029              {
4030                "name": "x",
4031                "type": "uint256",
4032                "internalType": "BN254.BaseField"
4033              },
4034              {
4035                "name": "y",
4036                "type": "uint256",
4037                "internalType": "BN254.BaseField"
4038              }
4039            ]
4040          },
4041          {
4042            "name": "zetaOmega",
4043            "type": "tuple",
4044            "internalType": "struct BN254.G1Point",
4045            "components": [
4046              {
4047                "name": "x",
4048                "type": "uint256",
4049                "internalType": "BN254.BaseField"
4050              },
4051              {
4052                "name": "y",
4053                "type": "uint256",
4054                "internalType": "BN254.BaseField"
4055              }
4056            ]
4057          },
4058          {
4059            "name": "wireEval0",
4060            "type": "uint256",
4061            "internalType": "BN254.ScalarField"
4062          },
4063          {
4064            "name": "wireEval1",
4065            "type": "uint256",
4066            "internalType": "BN254.ScalarField"
4067          },
4068          {
4069            "name": "wireEval2",
4070            "type": "uint256",
4071            "internalType": "BN254.ScalarField"
4072          },
4073          {
4074            "name": "wireEval3",
4075            "type": "uint256",
4076            "internalType": "BN254.ScalarField"
4077          },
4078          {
4079            "name": "wireEval4",
4080            "type": "uint256",
4081            "internalType": "BN254.ScalarField"
4082          },
4083          {
4084            "name": "sigmaEval0",
4085            "type": "uint256",
4086            "internalType": "BN254.ScalarField"
4087          },
4088          {
4089            "name": "sigmaEval1",
4090            "type": "uint256",
4091            "internalType": "BN254.ScalarField"
4092          },
4093          {
4094            "name": "sigmaEval2",
4095            "type": "uint256",
4096            "internalType": "BN254.ScalarField"
4097          },
4098          {
4099            "name": "sigmaEval3",
4100            "type": "uint256",
4101            "internalType": "BN254.ScalarField"
4102          },
4103          {
4104            "name": "prodPermZetaOmegaEval",
4105            "type": "uint256",
4106            "internalType": "BN254.ScalarField"
4107          }
4108        ]
4109      }
4110    ],
4111    "outputs": [],
4112    "stateMutability": "pure"
4113  },
4114  {
4115    "type": "function",
4116    "name": "newFinalizedState",
4117    "inputs": [
4118      {
4119        "name": "",
4120        "type": "tuple",
4121        "internalType": "struct LightClient.LightClientState",
4122        "components": [
4123          {
4124            "name": "viewNum",
4125            "type": "uint64",
4126            "internalType": "uint64"
4127          },
4128          {
4129            "name": "blockHeight",
4130            "type": "uint64",
4131            "internalType": "uint64"
4132          },
4133          {
4134            "name": "blockCommRoot",
4135            "type": "uint256",
4136            "internalType": "BN254.ScalarField"
4137          }
4138        ]
4139      },
4140      {
4141        "name": "",
4142        "type": "tuple",
4143        "internalType": "struct LightClient.StakeTableState",
4144        "components": [
4145          {
4146            "name": "threshold",
4147            "type": "uint256",
4148            "internalType": "uint256"
4149          },
4150          {
4151            "name": "blsKeyComm",
4152            "type": "uint256",
4153            "internalType": "BN254.ScalarField"
4154          },
4155          {
4156            "name": "schnorrKeyComm",
4157            "type": "uint256",
4158            "internalType": "BN254.ScalarField"
4159          },
4160          {
4161            "name": "amountComm",
4162            "type": "uint256",
4163            "internalType": "BN254.ScalarField"
4164          }
4165        ]
4166      },
4167      {
4168        "name": "",
4169        "type": "tuple",
4170        "internalType": "struct IPlonkVerifier.PlonkProof",
4171        "components": [
4172          {
4173            "name": "wire0",
4174            "type": "tuple",
4175            "internalType": "struct BN254.G1Point",
4176            "components": [
4177              {
4178                "name": "x",
4179                "type": "uint256",
4180                "internalType": "BN254.BaseField"
4181              },
4182              {
4183                "name": "y",
4184                "type": "uint256",
4185                "internalType": "BN254.BaseField"
4186              }
4187            ]
4188          },
4189          {
4190            "name": "wire1",
4191            "type": "tuple",
4192            "internalType": "struct BN254.G1Point",
4193            "components": [
4194              {
4195                "name": "x",
4196                "type": "uint256",
4197                "internalType": "BN254.BaseField"
4198              },
4199              {
4200                "name": "y",
4201                "type": "uint256",
4202                "internalType": "BN254.BaseField"
4203              }
4204            ]
4205          },
4206          {
4207            "name": "wire2",
4208            "type": "tuple",
4209            "internalType": "struct BN254.G1Point",
4210            "components": [
4211              {
4212                "name": "x",
4213                "type": "uint256",
4214                "internalType": "BN254.BaseField"
4215              },
4216              {
4217                "name": "y",
4218                "type": "uint256",
4219                "internalType": "BN254.BaseField"
4220              }
4221            ]
4222          },
4223          {
4224            "name": "wire3",
4225            "type": "tuple",
4226            "internalType": "struct BN254.G1Point",
4227            "components": [
4228              {
4229                "name": "x",
4230                "type": "uint256",
4231                "internalType": "BN254.BaseField"
4232              },
4233              {
4234                "name": "y",
4235                "type": "uint256",
4236                "internalType": "BN254.BaseField"
4237              }
4238            ]
4239          },
4240          {
4241            "name": "wire4",
4242            "type": "tuple",
4243            "internalType": "struct BN254.G1Point",
4244            "components": [
4245              {
4246                "name": "x",
4247                "type": "uint256",
4248                "internalType": "BN254.BaseField"
4249              },
4250              {
4251                "name": "y",
4252                "type": "uint256",
4253                "internalType": "BN254.BaseField"
4254              }
4255            ]
4256          },
4257          {
4258            "name": "prodPerm",
4259            "type": "tuple",
4260            "internalType": "struct BN254.G1Point",
4261            "components": [
4262              {
4263                "name": "x",
4264                "type": "uint256",
4265                "internalType": "BN254.BaseField"
4266              },
4267              {
4268                "name": "y",
4269                "type": "uint256",
4270                "internalType": "BN254.BaseField"
4271              }
4272            ]
4273          },
4274          {
4275            "name": "split0",
4276            "type": "tuple",
4277            "internalType": "struct BN254.G1Point",
4278            "components": [
4279              {
4280                "name": "x",
4281                "type": "uint256",
4282                "internalType": "BN254.BaseField"
4283              },
4284              {
4285                "name": "y",
4286                "type": "uint256",
4287                "internalType": "BN254.BaseField"
4288              }
4289            ]
4290          },
4291          {
4292            "name": "split1",
4293            "type": "tuple",
4294            "internalType": "struct BN254.G1Point",
4295            "components": [
4296              {
4297                "name": "x",
4298                "type": "uint256",
4299                "internalType": "BN254.BaseField"
4300              },
4301              {
4302                "name": "y",
4303                "type": "uint256",
4304                "internalType": "BN254.BaseField"
4305              }
4306            ]
4307          },
4308          {
4309            "name": "split2",
4310            "type": "tuple",
4311            "internalType": "struct BN254.G1Point",
4312            "components": [
4313              {
4314                "name": "x",
4315                "type": "uint256",
4316                "internalType": "BN254.BaseField"
4317              },
4318              {
4319                "name": "y",
4320                "type": "uint256",
4321                "internalType": "BN254.BaseField"
4322              }
4323            ]
4324          },
4325          {
4326            "name": "split3",
4327            "type": "tuple",
4328            "internalType": "struct BN254.G1Point",
4329            "components": [
4330              {
4331                "name": "x",
4332                "type": "uint256",
4333                "internalType": "BN254.BaseField"
4334              },
4335              {
4336                "name": "y",
4337                "type": "uint256",
4338                "internalType": "BN254.BaseField"
4339              }
4340            ]
4341          },
4342          {
4343            "name": "split4",
4344            "type": "tuple",
4345            "internalType": "struct BN254.G1Point",
4346            "components": [
4347              {
4348                "name": "x",
4349                "type": "uint256",
4350                "internalType": "BN254.BaseField"
4351              },
4352              {
4353                "name": "y",
4354                "type": "uint256",
4355                "internalType": "BN254.BaseField"
4356              }
4357            ]
4358          },
4359          {
4360            "name": "zeta",
4361            "type": "tuple",
4362            "internalType": "struct BN254.G1Point",
4363            "components": [
4364              {
4365                "name": "x",
4366                "type": "uint256",
4367                "internalType": "BN254.BaseField"
4368              },
4369              {
4370                "name": "y",
4371                "type": "uint256",
4372                "internalType": "BN254.BaseField"
4373              }
4374            ]
4375          },
4376          {
4377            "name": "zetaOmega",
4378            "type": "tuple",
4379            "internalType": "struct BN254.G1Point",
4380            "components": [
4381              {
4382                "name": "x",
4383                "type": "uint256",
4384                "internalType": "BN254.BaseField"
4385              },
4386              {
4387                "name": "y",
4388                "type": "uint256",
4389                "internalType": "BN254.BaseField"
4390              }
4391            ]
4392          },
4393          {
4394            "name": "wireEval0",
4395            "type": "uint256",
4396            "internalType": "BN254.ScalarField"
4397          },
4398          {
4399            "name": "wireEval1",
4400            "type": "uint256",
4401            "internalType": "BN254.ScalarField"
4402          },
4403          {
4404            "name": "wireEval2",
4405            "type": "uint256",
4406            "internalType": "BN254.ScalarField"
4407          },
4408          {
4409            "name": "wireEval3",
4410            "type": "uint256",
4411            "internalType": "BN254.ScalarField"
4412          },
4413          {
4414            "name": "wireEval4",
4415            "type": "uint256",
4416            "internalType": "BN254.ScalarField"
4417          },
4418          {
4419            "name": "sigmaEval0",
4420            "type": "uint256",
4421            "internalType": "BN254.ScalarField"
4422          },
4423          {
4424            "name": "sigmaEval1",
4425            "type": "uint256",
4426            "internalType": "BN254.ScalarField"
4427          },
4428          {
4429            "name": "sigmaEval2",
4430            "type": "uint256",
4431            "internalType": "BN254.ScalarField"
4432          },
4433          {
4434            "name": "sigmaEval3",
4435            "type": "uint256",
4436            "internalType": "BN254.ScalarField"
4437          },
4438          {
4439            "name": "prodPermZetaOmegaEval",
4440            "type": "uint256",
4441            "internalType": "BN254.ScalarField"
4442          }
4443        ]
4444      }
4445    ],
4446    "outputs": [],
4447    "stateMutability": "pure"
4448  },
4449  {
4450    "type": "function",
4451    "name": "newFinalizedState",
4452    "inputs": [
4453      {
4454        "name": "newState",
4455        "type": "tuple",
4456        "internalType": "struct LightClient.LightClientState",
4457        "components": [
4458          {
4459            "name": "viewNum",
4460            "type": "uint64",
4461            "internalType": "uint64"
4462          },
4463          {
4464            "name": "blockHeight",
4465            "type": "uint64",
4466            "internalType": "uint64"
4467          },
4468          {
4469            "name": "blockCommRoot",
4470            "type": "uint256",
4471            "internalType": "BN254.ScalarField"
4472          }
4473        ]
4474      },
4475      {
4476        "name": "nextStakeTable",
4477        "type": "tuple",
4478        "internalType": "struct LightClient.StakeTableState",
4479        "components": [
4480          {
4481            "name": "threshold",
4482            "type": "uint256",
4483            "internalType": "uint256"
4484          },
4485          {
4486            "name": "blsKeyComm",
4487            "type": "uint256",
4488            "internalType": "BN254.ScalarField"
4489          },
4490          {
4491            "name": "schnorrKeyComm",
4492            "type": "uint256",
4493            "internalType": "BN254.ScalarField"
4494          },
4495          {
4496            "name": "amountComm",
4497            "type": "uint256",
4498            "internalType": "BN254.ScalarField"
4499          }
4500        ]
4501      },
4502      {
4503        "name": "newAuthRoot",
4504        "type": "uint256",
4505        "internalType": "uint256"
4506      },
4507      {
4508        "name": "proof",
4509        "type": "tuple",
4510        "internalType": "struct IPlonkVerifier.PlonkProof",
4511        "components": [
4512          {
4513            "name": "wire0",
4514            "type": "tuple",
4515            "internalType": "struct BN254.G1Point",
4516            "components": [
4517              {
4518                "name": "x",
4519                "type": "uint256",
4520                "internalType": "BN254.BaseField"
4521              },
4522              {
4523                "name": "y",
4524                "type": "uint256",
4525                "internalType": "BN254.BaseField"
4526              }
4527            ]
4528          },
4529          {
4530            "name": "wire1",
4531            "type": "tuple",
4532            "internalType": "struct BN254.G1Point",
4533            "components": [
4534              {
4535                "name": "x",
4536                "type": "uint256",
4537                "internalType": "BN254.BaseField"
4538              },
4539              {
4540                "name": "y",
4541                "type": "uint256",
4542                "internalType": "BN254.BaseField"
4543              }
4544            ]
4545          },
4546          {
4547            "name": "wire2",
4548            "type": "tuple",
4549            "internalType": "struct BN254.G1Point",
4550            "components": [
4551              {
4552                "name": "x",
4553                "type": "uint256",
4554                "internalType": "BN254.BaseField"
4555              },
4556              {
4557                "name": "y",
4558                "type": "uint256",
4559                "internalType": "BN254.BaseField"
4560              }
4561            ]
4562          },
4563          {
4564            "name": "wire3",
4565            "type": "tuple",
4566            "internalType": "struct BN254.G1Point",
4567            "components": [
4568              {
4569                "name": "x",
4570                "type": "uint256",
4571                "internalType": "BN254.BaseField"
4572              },
4573              {
4574                "name": "y",
4575                "type": "uint256",
4576                "internalType": "BN254.BaseField"
4577              }
4578            ]
4579          },
4580          {
4581            "name": "wire4",
4582            "type": "tuple",
4583            "internalType": "struct BN254.G1Point",
4584            "components": [
4585              {
4586                "name": "x",
4587                "type": "uint256",
4588                "internalType": "BN254.BaseField"
4589              },
4590              {
4591                "name": "y",
4592                "type": "uint256",
4593                "internalType": "BN254.BaseField"
4594              }
4595            ]
4596          },
4597          {
4598            "name": "prodPerm",
4599            "type": "tuple",
4600            "internalType": "struct BN254.G1Point",
4601            "components": [
4602              {
4603                "name": "x",
4604                "type": "uint256",
4605                "internalType": "BN254.BaseField"
4606              },
4607              {
4608                "name": "y",
4609                "type": "uint256",
4610                "internalType": "BN254.BaseField"
4611              }
4612            ]
4613          },
4614          {
4615            "name": "split0",
4616            "type": "tuple",
4617            "internalType": "struct BN254.G1Point",
4618            "components": [
4619              {
4620                "name": "x",
4621                "type": "uint256",
4622                "internalType": "BN254.BaseField"
4623              },
4624              {
4625                "name": "y",
4626                "type": "uint256",
4627                "internalType": "BN254.BaseField"
4628              }
4629            ]
4630          },
4631          {
4632            "name": "split1",
4633            "type": "tuple",
4634            "internalType": "struct BN254.G1Point",
4635            "components": [
4636              {
4637                "name": "x",
4638                "type": "uint256",
4639                "internalType": "BN254.BaseField"
4640              },
4641              {
4642                "name": "y",
4643                "type": "uint256",
4644                "internalType": "BN254.BaseField"
4645              }
4646            ]
4647          },
4648          {
4649            "name": "split2",
4650            "type": "tuple",
4651            "internalType": "struct BN254.G1Point",
4652            "components": [
4653              {
4654                "name": "x",
4655                "type": "uint256",
4656                "internalType": "BN254.BaseField"
4657              },
4658              {
4659                "name": "y",
4660                "type": "uint256",
4661                "internalType": "BN254.BaseField"
4662              }
4663            ]
4664          },
4665          {
4666            "name": "split3",
4667            "type": "tuple",
4668            "internalType": "struct BN254.G1Point",
4669            "components": [
4670              {
4671                "name": "x",
4672                "type": "uint256",
4673                "internalType": "BN254.BaseField"
4674              },
4675              {
4676                "name": "y",
4677                "type": "uint256",
4678                "internalType": "BN254.BaseField"
4679              }
4680            ]
4681          },
4682          {
4683            "name": "split4",
4684            "type": "tuple",
4685            "internalType": "struct BN254.G1Point",
4686            "components": [
4687              {
4688                "name": "x",
4689                "type": "uint256",
4690                "internalType": "BN254.BaseField"
4691              },
4692              {
4693                "name": "y",
4694                "type": "uint256",
4695                "internalType": "BN254.BaseField"
4696              }
4697            ]
4698          },
4699          {
4700            "name": "zeta",
4701            "type": "tuple",
4702            "internalType": "struct BN254.G1Point",
4703            "components": [
4704              {
4705                "name": "x",
4706                "type": "uint256",
4707                "internalType": "BN254.BaseField"
4708              },
4709              {
4710                "name": "y",
4711                "type": "uint256",
4712                "internalType": "BN254.BaseField"
4713              }
4714            ]
4715          },
4716          {
4717            "name": "zetaOmega",
4718            "type": "tuple",
4719            "internalType": "struct BN254.G1Point",
4720            "components": [
4721              {
4722                "name": "x",
4723                "type": "uint256",
4724                "internalType": "BN254.BaseField"
4725              },
4726              {
4727                "name": "y",
4728                "type": "uint256",
4729                "internalType": "BN254.BaseField"
4730              }
4731            ]
4732          },
4733          {
4734            "name": "wireEval0",
4735            "type": "uint256",
4736            "internalType": "BN254.ScalarField"
4737          },
4738          {
4739            "name": "wireEval1",
4740            "type": "uint256",
4741            "internalType": "BN254.ScalarField"
4742          },
4743          {
4744            "name": "wireEval2",
4745            "type": "uint256",
4746            "internalType": "BN254.ScalarField"
4747          },
4748          {
4749            "name": "wireEval3",
4750            "type": "uint256",
4751            "internalType": "BN254.ScalarField"
4752          },
4753          {
4754            "name": "wireEval4",
4755            "type": "uint256",
4756            "internalType": "BN254.ScalarField"
4757          },
4758          {
4759            "name": "sigmaEval0",
4760            "type": "uint256",
4761            "internalType": "BN254.ScalarField"
4762          },
4763          {
4764            "name": "sigmaEval1",
4765            "type": "uint256",
4766            "internalType": "BN254.ScalarField"
4767          },
4768          {
4769            "name": "sigmaEval2",
4770            "type": "uint256",
4771            "internalType": "BN254.ScalarField"
4772          },
4773          {
4774            "name": "sigmaEval3",
4775            "type": "uint256",
4776            "internalType": "BN254.ScalarField"
4777          },
4778          {
4779            "name": "prodPermZetaOmegaEval",
4780            "type": "uint256",
4781            "internalType": "BN254.ScalarField"
4782          }
4783        ]
4784      }
4785    ],
4786    "outputs": [],
4787    "stateMutability": "nonpayable"
4788  },
4789  {
4790    "type": "function",
4791    "name": "owner",
4792    "inputs": [],
4793    "outputs": [
4794      {
4795        "name": "",
4796        "type": "address",
4797        "internalType": "address"
4798      }
4799    ],
4800    "stateMutability": "view"
4801  },
4802  {
4803    "type": "function",
4804    "name": "permissionedProver",
4805    "inputs": [],
4806    "outputs": [
4807      {
4808        "name": "",
4809        "type": "address",
4810        "internalType": "address"
4811      }
4812    ],
4813    "stateMutability": "view"
4814  },
4815  {
4816    "type": "function",
4817    "name": "proxiableUUID",
4818    "inputs": [],
4819    "outputs": [
4820      {
4821        "name": "",
4822        "type": "bytes32",
4823        "internalType": "bytes32"
4824      }
4825    ],
4826    "stateMutability": "view"
4827  },
4828  {
4829    "type": "function",
4830    "name": "renounceOwnership",
4831    "inputs": [],
4832    "outputs": [],
4833    "stateMutability": "nonpayable"
4834  },
4835  {
4836    "type": "function",
4837    "name": "setPermissionedProver",
4838    "inputs": [
4839      {
4840        "name": "prover",
4841        "type": "address",
4842        "internalType": "address"
4843      }
4844    ],
4845    "outputs": [],
4846    "stateMutability": "nonpayable"
4847  },
4848  {
4849    "type": "function",
4850    "name": "setStateHistoryRetentionPeriod",
4851    "inputs": [
4852      {
4853        "name": "historySeconds",
4854        "type": "uint32",
4855        "internalType": "uint32"
4856      }
4857    ],
4858    "outputs": [],
4859    "stateMutability": "nonpayable"
4860  },
4861  {
4862    "type": "function",
4863    "name": "setstateHistoryRetentionPeriod",
4864    "inputs": [
4865      {
4866        "name": "historySeconds",
4867        "type": "uint32",
4868        "internalType": "uint32"
4869      }
4870    ],
4871    "outputs": [],
4872    "stateMutability": "nonpayable"
4873  },
4874  {
4875    "type": "function",
4876    "name": "stateHistoryCommitments",
4877    "inputs": [
4878      {
4879        "name": "",
4880        "type": "uint256",
4881        "internalType": "uint256"
4882      }
4883    ],
4884    "outputs": [
4885      {
4886        "name": "l1BlockHeight",
4887        "type": "uint64",
4888        "internalType": "uint64"
4889      },
4890      {
4891        "name": "l1BlockTimestamp",
4892        "type": "uint64",
4893        "internalType": "uint64"
4894      },
4895      {
4896        "name": "hotShotBlockHeight",
4897        "type": "uint64",
4898        "internalType": "uint64"
4899      },
4900      {
4901        "name": "hotShotBlockCommRoot",
4902        "type": "uint256",
4903        "internalType": "BN254.ScalarField"
4904      }
4905    ],
4906    "stateMutability": "view"
4907  },
4908  {
4909    "type": "function",
4910    "name": "stateHistoryFirstIndex",
4911    "inputs": [],
4912    "outputs": [
4913      {
4914        "name": "",
4915        "type": "uint64",
4916        "internalType": "uint64"
4917      }
4918    ],
4919    "stateMutability": "view"
4920  },
4921  {
4922    "type": "function",
4923    "name": "stateHistoryRetentionPeriod",
4924    "inputs": [],
4925    "outputs": [
4926      {
4927        "name": "",
4928        "type": "uint32",
4929        "internalType": "uint32"
4930      }
4931    ],
4932    "stateMutability": "view"
4933  },
4934  {
4935    "type": "function",
4936    "name": "transferOwnership",
4937    "inputs": [
4938      {
4939        "name": "newOwner",
4940        "type": "address",
4941        "internalType": "address"
4942      }
4943    ],
4944    "outputs": [],
4945    "stateMutability": "nonpayable"
4946  },
4947  {
4948    "type": "function",
4949    "name": "updateEpochStartBlock",
4950    "inputs": [
4951      {
4952        "name": "newEpochStartBlock",
4953        "type": "uint64",
4954        "internalType": "uint64"
4955      }
4956    ],
4957    "outputs": [],
4958    "stateMutability": "nonpayable"
4959  },
4960  {
4961    "type": "function",
4962    "name": "upgradeToAndCall",
4963    "inputs": [
4964      {
4965        "name": "newImplementation",
4966        "type": "address",
4967        "internalType": "address"
4968      },
4969      {
4970        "name": "data",
4971        "type": "bytes",
4972        "internalType": "bytes"
4973      }
4974    ],
4975    "outputs": [],
4976    "stateMutability": "payable"
4977  },
4978  {
4979    "type": "function",
4980    "name": "votingStakeTableState",
4981    "inputs": [],
4982    "outputs": [
4983      {
4984        "name": "threshold",
4985        "type": "uint256",
4986        "internalType": "uint256"
4987      },
4988      {
4989        "name": "blsKeyComm",
4990        "type": "uint256",
4991        "internalType": "BN254.ScalarField"
4992      },
4993      {
4994        "name": "schnorrKeyComm",
4995        "type": "uint256",
4996        "internalType": "BN254.ScalarField"
4997      },
4998      {
4999        "name": "amountComm",
5000        "type": "uint256",
5001        "internalType": "BN254.ScalarField"
5002      }
5003    ],
5004    "stateMutability": "view"
5005  },
5006  {
5007    "type": "event",
5008    "name": "Initialized",
5009    "inputs": [
5010      {
5011        "name": "version",
5012        "type": "uint64",
5013        "indexed": false,
5014        "internalType": "uint64"
5015      }
5016    ],
5017    "anonymous": false
5018  },
5019  {
5020    "type": "event",
5021    "name": "NewEpoch",
5022    "inputs": [
5023      {
5024        "name": "epoch",
5025        "type": "uint64",
5026        "indexed": false,
5027        "internalType": "uint64"
5028      }
5029    ],
5030    "anonymous": false
5031  },
5032  {
5033    "type": "event",
5034    "name": "NewState",
5035    "inputs": [
5036      {
5037        "name": "viewNum",
5038        "type": "uint64",
5039        "indexed": true,
5040        "internalType": "uint64"
5041      },
5042      {
5043        "name": "blockHeight",
5044        "type": "uint64",
5045        "indexed": true,
5046        "internalType": "uint64"
5047      },
5048      {
5049        "name": "blockCommRoot",
5050        "type": "uint256",
5051        "indexed": false,
5052        "internalType": "BN254.ScalarField"
5053      }
5054    ],
5055    "anonymous": false
5056  },
5057  {
5058    "type": "event",
5059    "name": "OwnershipTransferred",
5060    "inputs": [
5061      {
5062        "name": "previousOwner",
5063        "type": "address",
5064        "indexed": true,
5065        "internalType": "address"
5066      },
5067      {
5068        "name": "newOwner",
5069        "type": "address",
5070        "indexed": true,
5071        "internalType": "address"
5072      }
5073    ],
5074    "anonymous": false
5075  },
5076  {
5077    "type": "event",
5078    "name": "PermissionedProverNotRequired",
5079    "inputs": [],
5080    "anonymous": false
5081  },
5082  {
5083    "type": "event",
5084    "name": "PermissionedProverRequired",
5085    "inputs": [
5086      {
5087        "name": "permissionedProver",
5088        "type": "address",
5089        "indexed": false,
5090        "internalType": "address"
5091      }
5092    ],
5093    "anonymous": false
5094  },
5095  {
5096    "type": "event",
5097    "name": "Upgrade",
5098    "inputs": [
5099      {
5100        "name": "implementation",
5101        "type": "address",
5102        "indexed": false,
5103        "internalType": "address"
5104      }
5105    ],
5106    "anonymous": false
5107  },
5108  {
5109    "type": "event",
5110    "name": "Upgraded",
5111    "inputs": [
5112      {
5113        "name": "implementation",
5114        "type": "address",
5115        "indexed": true,
5116        "internalType": "address"
5117      }
5118    ],
5119    "anonymous": false
5120  },
5121  {
5122    "type": "error",
5123    "name": "AddressEmptyCode",
5124    "inputs": [
5125      {
5126        "name": "target",
5127        "type": "address",
5128        "internalType": "address"
5129      }
5130    ]
5131  },
5132  {
5133    "type": "error",
5134    "name": "DeprecatedApi",
5135    "inputs": []
5136  },
5137  {
5138    "type": "error",
5139    "name": "ERC1967InvalidImplementation",
5140    "inputs": [
5141      {
5142        "name": "implementation",
5143        "type": "address",
5144        "internalType": "address"
5145      }
5146    ]
5147  },
5148  {
5149    "type": "error",
5150    "name": "ERC1967NonPayable",
5151    "inputs": []
5152  },
5153  {
5154    "type": "error",
5155    "name": "FailedInnerCall",
5156    "inputs": []
5157  },
5158  {
5159    "type": "error",
5160    "name": "InsufficientSnapshotHistory",
5161    "inputs": []
5162  },
5163  {
5164    "type": "error",
5165    "name": "InvalidAddress",
5166    "inputs": []
5167  },
5168  {
5169    "type": "error",
5170    "name": "InvalidArgs",
5171    "inputs": []
5172  },
5173  {
5174    "type": "error",
5175    "name": "InvalidHotShotBlockForCommitmentCheck",
5176    "inputs": []
5177  },
5178  {
5179    "type": "error",
5180    "name": "InvalidInitialization",
5181    "inputs": []
5182  },
5183  {
5184    "type": "error",
5185    "name": "InvalidMaxStateHistory",
5186    "inputs": []
5187  },
5188  {
5189    "type": "error",
5190    "name": "InvalidProof",
5191    "inputs": []
5192  },
5193  {
5194    "type": "error",
5195    "name": "InvalidScalar",
5196    "inputs": []
5197  },
5198  {
5199    "type": "error",
5200    "name": "MissingEpochRootUpdate",
5201    "inputs": []
5202  },
5203  {
5204    "type": "error",
5205    "name": "NoChangeRequired",
5206    "inputs": []
5207  },
5208  {
5209    "type": "error",
5210    "name": "NotInitializing",
5211    "inputs": []
5212  },
5213  {
5214    "type": "error",
5215    "name": "OutdatedState",
5216    "inputs": []
5217  },
5218  {
5219    "type": "error",
5220    "name": "OwnableInvalidOwner",
5221    "inputs": [
5222      {
5223        "name": "owner",
5224        "type": "address",
5225        "internalType": "address"
5226      }
5227    ]
5228  },
5229  {
5230    "type": "error",
5231    "name": "OwnableUnauthorizedAccount",
5232    "inputs": [
5233      {
5234        "name": "account",
5235        "type": "address",
5236        "internalType": "address"
5237      }
5238    ]
5239  },
5240  {
5241    "type": "error",
5242    "name": "OwnershipCannotBeRenounced",
5243    "inputs": []
5244  },
5245  {
5246    "type": "error",
5247    "name": "ProverNotPermissioned",
5248    "inputs": []
5249  },
5250  {
5251    "type": "error",
5252    "name": "UUPSUnauthorizedCallContext",
5253    "inputs": []
5254  },
5255  {
5256    "type": "error",
5257    "name": "UUPSUnsupportedProxiableUUID",
5258    "inputs": [
5259      {
5260        "name": "slot",
5261        "type": "bytes32",
5262        "internalType": "bytes32"
5263      }
5264    ]
5265  },
5266  {
5267    "type": "error",
5268    "name": "WrongStakeTableUsed",
5269    "inputs": []
5270  }
5271]
5272```*/
5273#[allow(
5274    non_camel_case_types,
5275    non_snake_case,
5276    clippy::pub_underscore_fields,
5277    clippy::style,
5278    clippy::empty_structs_with_brackets
5279)]
5280pub mod LightClientV3 {
5281    use super::*;
5282    use alloy::sol_types as alloy_sol_types;
5283    /// The creation / init bytecode of the contract.
5284    ///
5285    /// ```text
5286    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516136c86100f95f395f8181611c6b01528181611c940152611e1101526136c85ff3fe608060405260043610610228575f3560e01c8063715018a6116101295780639fdb54a7116100a8578063d24d933d1161006d578063d24d933d1461075d578063e03033011461078c578063f0682054146107ab578063f2fde38b146107ca578063f9e50d19146107e9575f5ffd5b80639fdb54a714610655578063aabd5db3146106aa578063ad3cb1cc146106c9578063b33bc49114610706578063c23b9e9e14610725575f5ffd5b80638da5cb5b116100ee5780638da5cb5b146105a757806390c14390146105e357806396c1ca6114610602578063998328e8146106215780639baa3cc914610636575f5ffd5b8063715018a61461050a578063757c37ad1461051e5780637667180814610538578063826e41fc1461054c5780638584d23f1461056b575f5ffd5b8063300c89dd116101b5578063426d31941161017a578063426d31941461048f578063433dba9f146104b05780634f1ef286146104cf57806352d1902d146104e257806369cc6a04146104f6575f5ffd5b8063300c89dd146103e3578063313df7b114610402578063378ec23b1461043957806338e454b1146104555780633ed55b7b14610469575f5ffd5b806312173c2c116101fb57806312173c2c14610317578063167ac618146103385780632063d4f71461035757806325297427146103765780632f79889d146103a5575f5ffd5b8063013fa5fc1461022c57806302b592f31461024d5780630625e19b146102aa5780630d8e6e2c146102ec575b5f5ffd5b348015610237575f5ffd5b5061024b610246366004612900565b6107fd565b005b348015610258575f5ffd5b5061026c610267366004612919565b6108b0565b6040516102a194939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156102b5575f5ffd5b50600b54600c54600d54600e546102cc9392919084565b6040805194855260208501939093529183015260608201526080016102a1565b3480156102f7575f5ffd5b5060408051600381525f60208201819052918101919091526060016102a1565b348015610322575f5ffd5b5061032b6108f9565b6040516102a19190612930565b348015610343575f5ffd5b5061024b610352366004612b47565b61090e565b348015610362575f5ffd5b5061024b610371366004612e09565b610985565b348015610381575f5ffd5b50610395610390366004612b47565b61099e565b60405190151581526020016102a1565b3480156103b0575f5ffd5b506008546103cb90600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016102a1565b3480156103ee575f5ffd5b506103956103fd366004612b47565b610a00565b34801561040d575f5ffd5b50600854610421906001600160a01b031681565b6040516001600160a01b0390911681526020016102a1565b348015610444575f5ffd5b50435b6040519081526020016102a1565b348015610460575f5ffd5b5061024b610a95565b348015610474575f5ffd5b50600a546103cb90600160401b90046001600160401b031681565b34801561049a575f5ffd5b505f546001546002546003546102cc9392919084565b3480156104bb575f5ffd5b5061024b6104ca366004612e50565b610b8c565b61024b6104dd366004612e69565b610ba0565b3480156104ed575f5ffd5b50610447610bbf565b348015610501575f5ffd5b5061024b610bda565b348015610515575f5ffd5b5061024b610c48565b348015610529575f5ffd5b5061024b610371366004612f6c565b348015610543575f5ffd5b506103cb610c69565b348015610557575f5ffd5b506008546001600160a01b03161515610395565b348015610576575f5ffd5b5061058a610585366004612919565b610c8e565b604080519283526001600160401b039091166020830152016102a1565b3480156105b2575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610421565b3480156105ee575f5ffd5b506103cb6105fd366004612fb0565b610db9565b34801561060d575f5ffd5b5061024b61061c366004612e50565b610e28565b34801561062c575f5ffd5b50610447600f5481565b348015610641575f5ffd5b5061024b610650366004612fd8565b610eb1565b348015610660575f5ffd5b50600654600754610684916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016102a1565b3480156106b5575f5ffd5b5061024b6106c436600461302d565b610fc0565b3480156106d4575f5ffd5b506106f9604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102a19190613071565b348015610711575f5ffd5b5061024b610720366004612fb0565b6112e5565b348015610730575f5ffd5b5060085461074890600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016102a1565b348015610768575f5ffd5b50600454600554610684916001600160401b0380821692600160401b909204169083565b348015610797575f5ffd5b506103956107a63660046130a6565b61143e565b3480156107b6575f5ffd5b50600a546103cb906001600160401b031681565b3480156107d5575f5ffd5b5061024b6107e4366004612900565b611596565b3480156107f4575f5ffd5b50600954610447565b6108056115d5565b6001600160a01b03811661082c5760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b039081169082160361085b5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b600981815481106108bf575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b610901612667565b610909611630565b905090565b6109166115d5565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b0385811682029283179485905561095c94919091048116928116911617610db9565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806109be5750600a546001600160401b0316155b156109ca57505f919050565b600a546001600160401b03166109e18360056130da565b6109eb919061310d565b6001600160401b03161592915050565b919050565b5f6001600160401b0382161580610a205750600a546001600160401b0316155b15610a2c57505f919050565b600a54610a42906001600160401b03168361310d565b6001600160401b03161580610a8f5750600a54610a6a906005906001600160401b031661313a565b600a546001600160401b0391821691610a8491168461310d565b6001600160401b0316115b92915050565b610a9d6115d5565b5f51602061369c5f395f51905f52805460039190600160401b900460ff1680610ad3575080546001600160401b03808416911610155b15610af15760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b9081178355600a54610b2b9291810482169116610db9565b6010805467ffffffffffffffff19166001600160401b03928316179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050565b610b946115d5565b610b9d81610e28565b50565b610ba8611c60565b610bb182611d04565b610bbb8282611d45565b5050565b5f610bc8611e06565b505f51602061367c5f395f51905f5290565b610be26115d5565b6008546001600160a01b031615610c2d57600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b610c506115d5565b6040516317d5c96560e11b815260040160405180910390fd5b600654600a545f91610909916001600160401b03600160401b90920482169116610db9565b600980545f91829190610ca2600183613159565b81548110610cb257610cb261316c565b5f918252602090912060029091020154600160801b90046001600160401b03168410610cf157604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610db2578460098281548110610d2157610d2161316c565b5f918252602090912060029091020154600160801b90046001600160401b03161115610daa5760098181548110610d5a57610d5a61316c565b905f5260205f2090600202016001015460098281548110610d7d57610d7d61316c565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610d05565b5050915091565b5f816001600160401b03165f03610dd157505f610a8f565b826001600160401b03165f03610de957506001610a8f565b610df3828461310d565b6001600160401b03165f03610e1357610e0c8284613180565b9050610a8f565b610e1d8284613180565b610e0c9060016130da565b610e306115d5565b610e108163ffffffff161080610e4f57506301e133808163ffffffff16115b80610e6d575060085463ffffffff600160a01b909104811690821611155b15610e8b576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b5f51602061369c5f395f51905f528054600160401b810460ff1615906001600160401b03165f81158015610ee25750825b90505f826001600160401b03166001148015610efd5750303b155b905081158015610f0b575080155b15610f295760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610f5357845460ff60401b1916600160401b1785555b610f5c86611e4f565b610f64611e60565b610f6f898989611e68565b8315610fb557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6008546001600160a01b031615158015610fe557506008546001600160a01b03163314155b15611003576040516301474c8f60e71b815260040160405180910390fd5b60065484516001600160401b03918216911611158061103c575060065460208501516001600160401b03600160401b9092048216911611155b1561105a5760405163051c46ef60e01b815260040160405180910390fd5b6110678460400151611f94565b6110748360200151611f94565b6110818360400151611f94565b61108e8360600151611f94565b5f611097610c69565b6020860151600a549192505f916110b791906001600160401b0316610db9565b6010549091506001600160401b03908116908216106110fb576110dd8660200151610a00565b156110fb5760405163080ae8d960e01b815260040160405180910390fd5b6010546001600160401b0390811690821611156111a757600261111e838361313a565b6001600160401b0316106111455760405163080ae8d960e01b815260040160405180910390fd5b6111508260016130da565b6001600160401b0316816001600160401b0316148015611189575060065461118790600160401b90046001600160401b031661099e565b155b156111a75760405163080ae8d960e01b815260040160405180910390fd5b6111b386868686611fd5565b85516006805460208901516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040870151600755600f8590556010548116908216108015906112105750611210866020015161099e565b1561127a578451600b556020850151600c556040850151600d556060850151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b61125e8260016130da565b6040516001600160401b03909116815260200160405180910390a15b6112854342886121ff565b85602001516001600160401b0316865f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae688604001516040516112d591815260200190565b60405180910390a3505050505050565b6112ed6115d5565b5f51602061369c5f395f51905f52805460029190600160401b900460ff1680611323575080546001600160401b03808416911610155b156113415760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b178255600590851611611389576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b0319909216908716171790556113d28385610db9565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6009545f904384118061144f575080155b806114995750600854600980549091600160c01b90046001600160401b031690811061147d5761147d61316c565b5f9182526020909120600290910201546001600160401b031684105b156114b75760405163b0b4387760e01b815260040160405180910390fd5b5f80806114c5600185613159565b90505b8161156157600854600160c01b90046001600160401b031681106115615786600982815481106114fa576114fa61316c565b5f9182526020909120600290910201546001600160401b03161161154f57600191506009818154811061152f5761152f61316c565b5f9182526020909120600290910201546001600160401b03169250611561565b80611559816131ad565b9150506114c8565b8161157f5760405163b0b4387760e01b815260040160405180910390fd5b8561158a8489613159565b11979650505050505050565b61159e6115d5565b6001600160a01b0381166115cc57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610b9d816123e8565b336116077f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610c465760405163118cdaa760e01b81523360048201526024016115c3565b611638612667565b621000008152600560208201527f2949260dc9e9621bb41dcb96ba7054b4bd5e7e230fdba5f3411260401c55f59d6040820151527f05d036973845e2e9d2ad9a795b351535a2576d51d27f21ff8372be92bd6f39466020604083015101527f0ba2c5ae9360efec9e3968e33f57fd33059e57385c1ea7db6430426b82e0871a6060820151527f1e333b5398c953194076772a861b7bf6a4c80c4a4c2e54eb9ca67aec5ff19fc96020606083015101527f0d9e9b9f38dd9fbbd5cd8b5a1d1c8aa4e777e526e06efe39345bf3ce4c5bb4aa6080820151527f10417eaf9ba330bbf56caf331a362114153a9c95ae914fbd1f99cb84d59fbf566020608083015101527f155dfc3a039f16ab99fa9663569ff06e5bfda91748a79821d80dafc7f1d92e5e60a0820151527f15daee81e8ffcac886bf9cc7453d659a987da1feb893c1fe9a94583f337f6dfa602060a083015101527f1c6f995727083f56734a4863c3bf4433b5353ad8d20f15d554a8cd2be28ef92d60c0820151527f0736ebbf0d73d42c428d5dd66ba4d9d9513a642d94147db629964d6d032776a8602060c083015101527f2c4aa1a42d17f226532742b7da21ed908ee6a1c13d824b269d21abcd59c8672360e0820151527f05c4163ca9cab2e65abbb41b6175591cf92460000c96fb9daa1f01d50af4936c602060e083015101527f215ecf683c65ee3dca3c2fc04b4864b1f2a538ef923af6380d420fa6b5a9f496610100820151527f1d03c378f3d7063d12c459ac659ce7a27c439cd6ad184c172352815f3a380d37602061010083015101527f20bc29548f10bd07fde418d49a5692f8919694571ab64c90f583dc434a5fec0c610120820151527f244e5fcb51c747a56fe6fdb32f0b01ef3bc55627f6f9afcd98dddbede50308a3602061012083015101527f0e3646b352d00a3482e89811f4966fb646889dadb561ebb7bb7c223e8196d5b3610140820151527f1b10219a6293abaf30388f39e4c7b925f89b6f57cb81654e1ad755294e790f09602061014083015101527f2b29b36cd6d33062a9a86e24bd178d69b1cebdc1a39c7977d547e7617b5747f9610160820151527f17062161c0a63cd17cee5b14821d7820e7fa432323b122ba59c44dd01f6a9238602061016083015101527f1198db3cec1a66ccdb90886bb96fcf175316c6ea78f73f23f4a11bcf4320e11a610180820151527f063b1f963e732bd20d86e1fef855788c1aacf26babb526d84e30633a2b5a9469602061018083015101527f23809a6a5bb0bf088f97efe15168a39471a3a4e41b8d6db0100e15fa68b09f636101a0820151527f0aba7b69ab7fdda68dac9065a5ee9fb50abfe57bdb5ab359cc5b56dff65cbea160206101a083015101527f1f038064d3ca1f37c56ecfe41701f15a412c63d3c9ad52fcfd3fd4c64da8b5f26101c0820151527f2689fe5cc59e4be112c2479969c25a7f603a5d71a2e7924480c9f4eafc2c298f60206101c083015101527f113021e93328a91531e40871481c4714e0b99a6afb10c779eeb2b07a7ae6f4e76101e0820151527f1a36bb2620cdb40c4dad25257716a9d8eb1e45f715ada98e424697aaf4d95c8660206101e083015101527f08f3f88ffb9e43261294b7faf582c513f9c7d0749db6dcc434d7493b8c975b2f610200820151527f2e3e0458741119ad1422072b6815fda80a3896640f018d282c88f1506b54e0e6602061020083015101527f100a5c0a4e1ac2791d1f68bc9c25b39ccfbb5d628c53d5547f89aa0cab8324d2610220820151527f05bf9e97428c387fbbc5f9cbf6effb33b57655494c2ab9f7cc5d445a0ea56bea602061022083015101527f067f3e0ce69cbbe32337f0538bf6119c72f7fd4d92857b785caf04a225b94d46610240820151527f211a076271069fb1fae1522ab8a4779480b50ed8c4648d201341e444e8ee2d15602061024083015101527f0b931b96997d9db8bc198c750098cad2960df407880f7b2cb51c85376d5fc849610260820151527f0e9121af76d7d9616432ded6a4de93cf146f5b7353a74f8a7265d6377fd4edc7602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611ce657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611cda5f51602061367c5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610c465760405163703e46dd60e11b815260040160405180910390fd5b611d0c6115d5565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d906020016108a5565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d9f575060408051601f3d908101601f19168201909252611d9c918101906131c2565b60015b611dc757604051634c9c8ce360e01b81526001600160a01b03831660048201526024016115c3565b5f51602061367c5f395f51905f528114611df757604051632a87526960e21b8152600481018290526024016115c3565b611e018383612458565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c465760405163703e46dd60e11b815260040160405180910390fd5b611e576124ad565b610b9d816124e3565b610c466124ad565b82516001600160401b0316151580611e8c575060208301516001600160401b031615155b80611e9957506020820151155b80611ea657506040820151155b80611eb357506060820151155b80611ebd57508151155b80611ecf5750610e108163ffffffff16105b80611ee357506301e133808163ffffffff16115b15611f01576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001811080610bbb5760405163016c173360e21b815260040160405180910390fd5b5f611fde6108f9565b9050611fe86128cc565b600c548152600d54602080830191909152600e546040830152600b54606080840191909152600a549188015190916001600160401b03600160401b90910481169116108015906120405750612040876020015161099e565b15612089576040805187516020808301919091528801518183015290870151606080830191909152870151608082015260a00160405160208183030381529060405290506120c4565b60408051600b546020820152600c5491810191909152600d546060820152600e54608082015260a00160405160208183030381529060405290505b6040805188516001600160401b039081166020808401919091528a015116818301529088015160608201525f9060800160408051601f198184030181529082905261211591849089906020016131f0565b60408051601f19818403018152919052805160209091012090506121597f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182613212565b60808401526040516354e8bd6760e01b815273ffffffffffffffffffffffffffffffffffffffff906354e8bd679061219990879087908a90600401613407565b602060405180830381865af41580156121b4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121d89190613627565b6121f5576040516309bde33960e01b815260040160405180910390fd5b5050505050505050565b60095415801590612274575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b031690811061223f5761223f61316c565b5f91825260209091206002909102015461226990600160401b90046001600160401b03168461313a565b6001600160401b0316115b1561230757600854600980549091600160c01b90046001600160401b03169081106122a1576122a161316c565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b03169060186122e183613646565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b612461826124eb565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156124a557611e01828261254e565b610bbb6125c0565b5f51602061369c5f395f51905f5254600160401b900460ff16610c4657604051631afcd79f60e31b815260040160405180910390fd5b61159e6124ad565b806001600160a01b03163b5f0361252057604051634c9c8ce360e01b81526001600160a01b03821660048201526024016115c3565b5f51602061367c5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161256a9190613670565b5f60405180830381855af49150503d805f81146125a2576040519150601f19603f3d011682016040523d82523d5f602084013e6125a7565b606091505b50915091506125b78583836125df565b95945050505050565b3415610c465760405163b398979f60e01b815260040160405180910390fd5b6060826125f4576125ef8261263e565b612637565b815115801561260b57506001600160a01b0384163b155b1561263457604051639996b31560e01b81526001600160a01b03851660048201526024016115c3565b50805b9392505050565b80511561264e5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161269a60405180604001604052805f81526020015f81525090565b81526020016126ba60405180604001604052805f81526020015f81525090565b81526020016126da60405180604001604052805f81526020015f81525090565b81526020016126fa60405180604001604052805f81526020015f81525090565b815260200161271a60405180604001604052805f81526020015f81525090565b815260200161273a60405180604001604052805f81526020015f81525090565b815260200161275a60405180604001604052805f81526020015f81525090565b815260200161277a60405180604001604052805f81526020015f81525090565b815260200161279a60405180604001604052805f81526020015f81525090565b81526020016127ba60405180604001604052805f81526020015f81525090565b81526020016127da60405180604001604052805f81526020015f81525090565b81526020016127fa60405180604001604052805f81526020015f81525090565b815260200161281a60405180604001604052805f81526020015f81525090565b815260200161283a60405180604001604052805f81526020015f81525090565b815260200161285a60405180604001604052805f81526020015f81525090565b815260200161287a60405180604001604052805f81526020015f81525090565b815260200161289a60405180604001604052805f81526020015f81525090565b81526020016128ba60405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b6040518060a001604052806005906020820280368337509192915050565b80356001600160a01b03811681146109fb575f5ffd5b5f60208284031215612910575f5ffd5b612637826128ea565b5f60208284031215612929575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612962604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b03811681146109fb575f5ffd5b5f60208284031215612b57575f5ffd5b61263782612b31565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612b9757612b97612b60565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612bc557612bc5612b60565b604052919050565b5f60608284031215612bdd575f5ffd5b604051606081016001600160401b0381118282101715612bff57612bff612b60565b604052905080612c0e83612b31565b8152612c1c60208401612b31565b6020820152604092830135920191909152919050565b5f60408284031215612c42575f5ffd5b604080519081016001600160401b0381118282101715612c6457612c64612b60565b604052823581526020928301359281019290925250919050565b5f6104808284031215612c8f575f5ffd5b612c97612b74565b9050612ca38383612c32565b8152612cb28360408401612c32565b6020820152612cc48360808401612c32565b6040820152612cd68360c08401612c32565b6060820152612ce9836101008401612c32565b6080820152612cfc836101408401612c32565b60a0820152612d0f836101808401612c32565b60c0820152612d22836101c08401612c32565b60e0820152612d35836102008401612c32565b610100820152612d49836102408401612c32565b610120820152612d5d836102808401612c32565b610140820152612d71836102c08401612c32565b610160820152612d85836103008401612c32565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612e1b575f5ffd5b612e258484612bcd565b9150612e348460608501612c7e565b90509250929050565b803563ffffffff811681146109fb575f5ffd5b5f60208284031215612e60575f5ffd5b61263782612e3d565b5f5f60408385031215612e7a575f5ffd5b612e83836128ea565b915060208301356001600160401b03811115612e9d575f5ffd5b8301601f81018513612ead575f5ffd5b80356001600160401b03811115612ec657612ec6612b60565b612ed9601f8201601f1916602001612b9d565b818152866020838501011115612eed575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215612f1c575f5ffd5b604051608081016001600160401b0381118282101715612f3e57612f3e612b60565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f5f5f6105608486031215612f7f575f5ffd5b612f898585612bcd565b9250612f988560608601612f0c565b9150612fa78560e08601612c7e565b90509250925092565b5f5f60408385031215612fc1575f5ffd5b612fca83612b31565b9150612e3460208401612b31565b5f5f5f5f6101208587031215612fec575f5ffd5b612ff68686612bcd565b93506130058660608701612f0c565b925061301360e08601612e3d565b915061302261010086016128ea565b905092959194509250565b5f5f5f5f6105808587031215613041575f5ffd5b61304b8686612bcd565b935061305a8660608701612f0c565b925060e08501359150613022866101008701612c7e565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f604083850312156130b7575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115610a8f57610a8f6130c6565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b03831680613125576131256130f9565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115610a8f57610a8f6130c6565b81810381811115610a8f57610a8f6130c6565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b03831680613198576131986130f9565b806001600160401b0384160491505092915050565b5f816131bb576131bb6130c6565b505f190190565b5f602082840312156131d2575f5ffd5b5051919050565b5f81518060208401855e5f93019283525090919050565b5f6132046131fe83876131d9565b856131d9565b928352505060200192915050565b5f82613220576132206130f9565b500690565b805f5b6005811015613247578151845260209384019390910190600101613228565b50505050565b61326282825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a208201905084518252602085015160208301526040850151613439604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152613611610500830185613225565b61361f6105a083018461324d565b949350505050565b5f60208284031215613637575f5ffd5b81518015158114612637575f5ffd5b5f6001600160401b0382166001600160401b038103613667576136676130c6565b60010192915050565b5f61263782846131d956fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c634300081c000a
5287    /// ```
5288    #[rustfmt::skip]
5289    #[allow(clippy::all)]
5290    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
5291        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[`\x80Qa6\xC8a\0\xF9_9_\x81\x81a\x1Ck\x01R\x81\x81a\x1C\x94\x01Ra\x1E\x11\x01Ra6\xC8_\xF3\xFE`\x80`@R`\x046\x10a\x02(W_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01)W\x80c\x9F\xDBT\xA7\x11a\0\xA8W\x80c\xD2M\x93=\x11a\0mW\x80c\xD2M\x93=\x14a\x07]W\x80c\xE003\x01\x14a\x07\x8CW\x80c\xF0h T\x14a\x07\xABW\x80c\xF2\xFD\xE3\x8B\x14a\x07\xCAW\x80c\xF9\xE5\r\x19\x14a\x07\xE9W__\xFD[\x80c\x9F\xDBT\xA7\x14a\x06UW\x80c\xAA\xBD]\xB3\x14a\x06\xAAW\x80c\xAD<\xB1\xCC\x14a\x06\xC9W\x80c\xB3;\xC4\x91\x14a\x07\x06W\x80c\xC2;\x9E\x9E\x14a\x07%W__\xFD[\x80c\x8D\xA5\xCB[\x11a\0\xEEW\x80c\x8D\xA5\xCB[\x14a\x05\xA7W\x80c\x90\xC1C\x90\x14a\x05\xE3W\x80c\x96\xC1\xCAa\x14a\x06\x02W\x80c\x99\x83(\xE8\x14a\x06!W\x80c\x9B\xAA<\xC9\x14a\x066W__\xFD[\x80cqP\x18\xA6\x14a\x05\nW\x80cu|7\xAD\x14a\x05\x1EW\x80cvg\x18\x08\x14a\x058W\x80c\x82nA\xFC\x14a\x05LW\x80c\x85\x84\xD2?\x14a\x05kW__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\xB5W\x80cBm1\x94\x11a\x01zW\x80cBm1\x94\x14a\x04\x8FW\x80cC=\xBA\x9F\x14a\x04\xB0W\x80cO\x1E\xF2\x86\x14a\x04\xCFW\x80cR\xD1\x90-\x14a\x04\xE2W\x80ci\xCCj\x04\x14a\x04\xF6W__\xFD[\x80c0\x0C\x89\xDD\x14a\x03\xE3W\x80c1=\xF7\xB1\x14a\x04\x02W\x80c7\x8E\xC2;\x14a\x049W\x80c8\xE4T\xB1\x14a\x04UW\x80c>\xD5[{\x14a\x04iW__\xFD[\x80c\x12\x17<,\x11a\x01\xFBW\x80c\x12\x17<,\x14a\x03\x17W\x80c\x16z\xC6\x18\x14a\x038W\x80c c\xD4\xF7\x14a\x03WW\x80c%)t'\x14a\x03vW\x80c/y\x88\x9D\x14a\x03\xA5W__\xFD[\x80c\x01?\xA5\xFC\x14a\x02,W\x80c\x02\xB5\x92\xF3\x14a\x02MW\x80c\x06%\xE1\x9B\x14a\x02\xAAW\x80c\r\x8En,\x14a\x02\xECW[__\xFD[4\x80\x15a\x027W__\xFD[Pa\x02Ka\x02F6`\x04a)\0V[a\x07\xFDV[\0[4\x80\x15a\x02XW__\xFD[Pa\x02la\x02g6`\x04a)\x19V[a\x08\xB0V[`@Qa\x02\xA1\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\x02\xB5W__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x02\xCC\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\xA1V[4\x80\x15a\x02\xF7W__\xFD[P`@\x80Q`\x03\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\xA1V[4\x80\x15a\x03\"W__\xFD[Pa\x03+a\x08\xF9V[`@Qa\x02\xA1\x91\x90a)0V[4\x80\x15a\x03CW__\xFD[Pa\x02Ka\x03R6`\x04a+GV[a\t\x0EV[4\x80\x15a\x03bW__\xFD[Pa\x02Ka\x03q6`\x04a.\tV[a\t\x85V[4\x80\x15a\x03\x81W__\xFD[Pa\x03\x95a\x03\x906`\x04a+GV[a\t\x9EV[`@Q\x90\x15\x15\x81R` \x01a\x02\xA1V[4\x80\x15a\x03\xB0W__\xFD[P`\x08Ta\x03\xCB\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xA1V[4\x80\x15a\x03\xEEW__\xFD[Pa\x03\x95a\x03\xFD6`\x04a+GV[a\n\0V[4\x80\x15a\x04\rW__\xFD[P`\x08Ta\x04!\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xA1V[4\x80\x15a\x04DW__\xFD[PC[`@Q\x90\x81R` \x01a\x02\xA1V[4\x80\x15a\x04`W__\xFD[Pa\x02Ka\n\x95V[4\x80\x15a\x04tW__\xFD[P`\nTa\x03\xCB\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x04\x9AW__\xFD[P_T`\x01T`\x02T`\x03Ta\x02\xCC\x93\x92\x91\x90\x84V[4\x80\x15a\x04\xBBW__\xFD[Pa\x02Ka\x04\xCA6`\x04a.PV[a\x0B\x8CV[a\x02Ka\x04\xDD6`\x04a.iV[a\x0B\xA0V[4\x80\x15a\x04\xEDW__\xFD[Pa\x04Ga\x0B\xBFV[4\x80\x15a\x05\x01W__\xFD[Pa\x02Ka\x0B\xDAV[4\x80\x15a\x05\x15W__\xFD[Pa\x02Ka\x0CHV[4\x80\x15a\x05)W__\xFD[Pa\x02Ka\x03q6`\x04a/lV[4\x80\x15a\x05CW__\xFD[Pa\x03\xCBa\x0CiV[4\x80\x15a\x05WW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03\x95V[4\x80\x15a\x05vW__\xFD[Pa\x05\x8Aa\x05\x856`\x04a)\x19V[a\x0C\x8EV[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\xA1V[4\x80\x15a\x05\xB2W__\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!V[4\x80\x15a\x05\xEEW__\xFD[Pa\x03\xCBa\x05\xFD6`\x04a/\xB0V[a\r\xB9V[4\x80\x15a\x06\rW__\xFD[Pa\x02Ka\x06\x1C6`\x04a.PV[a\x0E(V[4\x80\x15a\x06,W__\xFD[Pa\x04G`\x0FT\x81V[4\x80\x15a\x06AW__\xFD[Pa\x02Ka\x06P6`\x04a/\xD8V[a\x0E\xB1V[4\x80\x15a\x06`W__\xFD[P`\x06T`\x07Ta\x06\x84\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\xA1V[4\x80\x15a\x06\xB5W__\xFD[Pa\x02Ka\x06\xC46`\x04a0-V[a\x0F\xC0V[4\x80\x15a\x06\xD4W__\xFD[Pa\x06\xF9`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\xA1\x91\x90a0qV[4\x80\x15a\x07\x11W__\xFD[Pa\x02Ka\x07 6`\x04a/\xB0V[a\x12\xE5V[4\x80\x15a\x070W__\xFD[P`\x08Ta\x07H\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\xA1V[4\x80\x15a\x07hW__\xFD[P`\x04T`\x05Ta\x06\x84\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x07\x97W__\xFD[Pa\x03\x95a\x07\xA66`\x04a0\xA6V[a\x14>V[4\x80\x15a\x07\xB6W__\xFD[P`\nTa\x03\xCB\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x07\xD5W__\xFD[Pa\x02Ka\x07\xE46`\x04a)\0V[a\x15\x96V[4\x80\x15a\x07\xF4W__\xFD[P`\tTa\x04GV[a\x08\x05a\x15\xD5V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x08,W`@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\x08[W`@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\x08\xBFW_\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\t\x01a&gV[a\t\ta\x160V[\x90P\x90V[a\t\x16a\x15\xD5V[`\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\t\\\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\r\xB9V[`\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\t\xBEWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\t\xCAWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\t\xE1\x83`\x05a0\xDAV[a\t\xEB\x91\x90a1\rV[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\n WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\n,WP_\x91\x90PV[`\nTa\nB\x90`\x01`\x01`@\x1B\x03\x16\x83a1\rV[`\x01`\x01`@\x1B\x03\x16\x15\x80a\n\x8FWP`\nTa\nj\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a1:V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\n\x84\x91\x16\x84a1\rV[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[a\n\x9Da\x15\xD5V[_Q` a6\x9C_9_Q\x90_R\x80T`\x03\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\n\xD3WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\n\xF1W`@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\x0B+\x92\x91\x81\x04\x82\x16\x91\x16a\r\xB9V[`\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\x0B\x94a\x15\xD5V[a\x0B\x9D\x81a\x0E(V[PV[a\x0B\xA8a\x1C`V[a\x0B\xB1\x82a\x1D\x04V[a\x0B\xBB\x82\x82a\x1DEV[PPV[_a\x0B\xC8a\x1E\x06V[P_Q` a6|_9_Q\x90_R\x90V[a\x0B\xE2a\x15\xD5V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0C-W`\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\x0CPa\x15\xD5V[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T`\nT_\x91a\t\t\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\r\xB9V[`\t\x80T_\x91\x82\x91\x90a\x0C\xA2`\x01\x83a1YV[\x81T\x81\x10a\x0C\xB2Wa\x0C\xB2a1lV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x0C\xF1W`@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\r\xB2W\x84`\t\x82\x81T\x81\x10a\r!Wa\r!a1lV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\r\xAAW`\t\x81\x81T\x81\x10a\rZWa\rZa1lV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\r}Wa\r}a1lV[\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\r\x05V[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\r\xD1WP_a\n\x8FV[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\r\xE9WP`\x01a\n\x8FV[a\r\xF3\x82\x84a1\rV[`\x01`\x01`@\x1B\x03\x16_\x03a\x0E\x13Wa\x0E\x0C\x82\x84a1\x80V[\x90Pa\n\x8FV[a\x0E\x1D\x82\x84a1\x80V[a\x0E\x0C\x90`\x01a0\xDAV[a\x0E0a\x15\xD5V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x0EOWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x0EmWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x0E\x8BW`@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` a6\x9C_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x0E\xE2WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0E\xFDWP0;\x15[\x90P\x81\x15\x80\x15a\x0F\x0BWP\x80\x15[\x15a\x0F)W`@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\x0FSW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0F\\\x86a\x1EOV[a\x0Fda\x1E`V[a\x0Fo\x89\x89\x89a\x1EhV[\x83\x15a\x0F\xB5W\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\x0F\xE5WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x10\x03W`@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\x10<WP`\x06T` \x85\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x10ZW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x10g\x84`@\x01Qa\x1F\x94V[a\x10t\x83` \x01Qa\x1F\x94V[a\x10\x81\x83`@\x01Qa\x1F\x94V[a\x10\x8E\x83``\x01Qa\x1F\x94V[_a\x10\x97a\x0CiV[` \x86\x01Q`\nT\x91\x92P_\x91a\x10\xB7\x91\x90`\x01`\x01`@\x1B\x03\x16a\r\xB9V[`\x10T\x90\x91P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x10a\x10\xFBWa\x10\xDD\x86` \x01Qa\n\0V[\x15a\x10\xFBW`@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\x11\xA7W`\x02a\x11\x1E\x83\x83a1:V[`\x01`\x01`@\x1B\x03\x16\x10a\x11EW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11P\x82`\x01a0\xDAV[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x11\x89WP`\x06Ta\x11\x87\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\t\x9EV[\x15[\x15a\x11\xA7W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xB3\x86\x86\x86\x86a\x1F\xD5V[\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\x12\x10WPa\x12\x10\x86` \x01Qa\t\x9EV[\x15a\x12zW\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\x12^\x82`\x01a0\xDAV[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x12\x85CB\x88a!\xFFV[\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\x12\xD5\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPPV[a\x12\xEDa\x15\xD5V[_Q` a6\x9C_9_Q\x90_R\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x13#WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x13AW`@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\x13\x89W`@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\x13\xD2\x83\x85a\r\xB9V[`\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[`\tT_\x90C\x84\x11\x80a\x14OWP\x80\x15[\x80a\x14\x99WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x14}Wa\x14}a1lV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x14\xB7W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x14\xC5`\x01\x85a1YV[\x90P[\x81a\x15aW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x15aW\x86`\t\x82\x81T\x81\x10a\x14\xFAWa\x14\xFAa1lV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x15OW`\x01\x91P`\t\x81\x81T\x81\x10a\x15/Wa\x15/a1lV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x15aV[\x80a\x15Y\x81a1\xADV[\x91PPa\x14\xC8V[\x81a\x15\x7FW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x15\x8A\x84\x89a1YV[\x11\x97\x96PPPPPPPV[a\x15\x9Ea\x15\xD5V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x15\xCCW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x0B\x9D\x81a#\xE8V[3a\x16\x07\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\x0CFW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x15\xC3V[a\x168a&gV[b\x10\0\0\x81R`\x05` \x82\x01R\x7F)I&\r\xC9\xE9b\x1B\xB4\x1D\xCB\x96\xBApT\xB4\xBD^~#\x0F\xDB\xA5\xF3A\x12`@\x1CU\xF5\x9D`@\x82\x01QR\x7F\x05\xD06\x978E\xE2\xE9\xD2\xAD\x9Ay[5\x155\xA2WmQ\xD2\x7F!\xFF\x83r\xBE\x92\xBDo9F` `@\x83\x01Q\x01R\x7F\x0B\xA2\xC5\xAE\x93`\xEF\xEC\x9E9h\xE3?W\xFD3\x05\x9EW8\\\x1E\xA7\xDBd0Bk\x82\xE0\x87\x1A``\x82\x01QR\x7F\x1E3;S\x98\xC9S\x19@vw*\x86\x1B{\xF6\xA4\xC8\x0CJL.T\xEB\x9C\xA6z\xEC_\xF1\x9F\xC9` ``\x83\x01Q\x01R\x7F\r\x9E\x9B\x9F8\xDD\x9F\xBB\xD5\xCD\x8BZ\x1D\x1C\x8A\xA4\xE7w\xE5&\xE0n\xFE94[\xF3\xCEL[\xB4\xAA`\x80\x82\x01QR\x7F\x10A~\xAF\x9B\xA30\xBB\xF5l\xAF3\x1A6!\x14\x15:\x9C\x95\xAE\x91O\xBD\x1F\x99\xCB\x84\xD5\x9F\xBFV` `\x80\x83\x01Q\x01R\x7F\x15]\xFC:\x03\x9F\x16\xAB\x99\xFA\x96cV\x9F\xF0n[\xFD\xA9\x17H\xA7\x98!\xD8\r\xAF\xC7\xF1\xD9.^`\xA0\x82\x01QR\x7F\x15\xDA\xEE\x81\xE8\xFF\xCA\xC8\x86\xBF\x9C\xC7E=e\x9A\x98}\xA1\xFE\xB8\x93\xC1\xFE\x9A\x94X?3\x7Fm\xFA` `\xA0\x83\x01Q\x01R\x7F\x1Co\x99W'\x08?VsJHc\xC3\xBFD3\xB55:\xD8\xD2\x0F\x15\xD5T\xA8\xCD+\xE2\x8E\xF9-`\xC0\x82\x01QR\x7F\x076\xEB\xBF\rs\xD4,B\x8D]\xD6k\xA4\xD9\xD9Q:d-\x94\x14}\xB6)\x96Mm\x03'v\xA8` `\xC0\x83\x01Q\x01R\x7F,J\xA1\xA4-\x17\xF2&S'B\xB7\xDA!\xED\x90\x8E\xE6\xA1\xC1=\x82K&\x9D!\xAB\xCDY\xC8g#`\xE0\x82\x01QR\x7F\x05\xC4\x16<\xA9\xCA\xB2\xE6Z\xBB\xB4\x1BauY\x1C\xF9$`\0\x0C\x96\xFB\x9D\xAA\x1F\x01\xD5\n\xF4\x93l` `\xE0\x83\x01Q\x01R\x7F!^\xCFh<e\xEE=\xCA</\xC0KHd\xB1\xF2\xA58\xEF\x92:\xF68\rB\x0F\xA6\xB5\xA9\xF4\x96a\x01\0\x82\x01QR\x7F\x1D\x03\xC3x\xF3\xD7\x06=\x12\xC4Y\xACe\x9C\xE7\xA2|C\x9C\xD6\xAD\x18L\x17#R\x81_:8\r7` a\x01\0\x83\x01Q\x01R\x7F \xBC)T\x8F\x10\xBD\x07\xFD\xE4\x18\xD4\x9AV\x92\xF8\x91\x96\x94W\x1A\xB6L\x90\xF5\x83\xDCCJ_\xEC\x0Ca\x01 \x82\x01QR\x7F$N_\xCBQ\xC7G\xA5o\xE6\xFD\xB3/\x0B\x01\xEF;\xC5V'\xF6\xF9\xAF\xCD\x98\xDD\xDB\xED\xE5\x03\x08\xA3` a\x01 \x83\x01Q\x01R\x7F\x0E6F\xB3R\xD0\n4\x82\xE8\x98\x11\xF4\x96o\xB6F\x88\x9D\xAD\xB5a\xEB\xB7\xBB|\">\x81\x96\xD5\xB3a\x01@\x82\x01QR\x7F\x1B\x10!\x9Ab\x93\xAB\xAF08\x8F9\xE4\xC7\xB9%\xF8\x9BoW\xCB\x81eN\x1A\xD7U)Ny\x0F\t` a\x01@\x83\x01Q\x01R\x7F+)\xB3l\xD6\xD30b\xA9\xA8n$\xBD\x17\x8Di\xB1\xCE\xBD\xC1\xA3\x9Cyw\xD5G\xE7a{WG\xF9a\x01`\x82\x01QR\x7F\x17\x06!a\xC0\xA6<\xD1|\xEE[\x14\x82\x1Dx \xE7\xFAC##\xB1\"\xBAY\xC4M\xD0\x1Fj\x928` a\x01`\x83\x01Q\x01R\x7F\x11\x98\xDB<\xEC\x1Af\xCC\xDB\x90\x88k\xB9o\xCF\x17S\x16\xC6\xEAx\xF7?#\xF4\xA1\x1B\xCFC \xE1\x1Aa\x01\x80\x82\x01QR\x7F\x06;\x1F\x96>s+\xD2\r\x86\xE1\xFE\xF8Ux\x8C\x1A\xAC\xF2k\xAB\xB5&\xD8N0c:+Z\x94i` a\x01\x80\x83\x01Q\x01R\x7F#\x80\x9Aj[\xB0\xBF\x08\x8F\x97\xEF\xE1Qh\xA3\x94q\xA3\xA4\xE4\x1B\x8Dm\xB0\x10\x0E\x15\xFAh\xB0\x9Fca\x01\xA0\x82\x01QR\x7F\n\xBA{i\xAB\x7F\xDD\xA6\x8D\xAC\x90e\xA5\xEE\x9F\xB5\n\xBF\xE5{\xDBZ\xB3Y\xCC[V\xDF\xF6\\\xBE\xA1` a\x01\xA0\x83\x01Q\x01R\x7F\x1F\x03\x80d\xD3\xCA\x1F7\xC5n\xCF\xE4\x17\x01\xF1ZA,c\xD3\xC9\xADR\xFC\xFD?\xD4\xC6M\xA8\xB5\xF2a\x01\xC0\x82\x01QR\x7F&\x89\xFE\\\xC5\x9EK\xE1\x12\xC2G\x99i\xC2Z\x7F`:]q\xA2\xE7\x92D\x80\xC9\xF4\xEA\xFC,)\x8F` a\x01\xC0\x83\x01Q\x01R\x7F\x110!\xE93(\xA9\x151\xE4\x08qH\x1CG\x14\xE0\xB9\x9Aj\xFB\x10\xC7y\xEE\xB2\xB0zz\xE6\xF4\xE7a\x01\xE0\x82\x01QR\x7F\x1A6\xBB& \xCD\xB4\x0CM\xAD%%w\x16\xA9\xD8\xEB\x1EE\xF7\x15\xAD\xA9\x8EBF\x97\xAA\xF4\xD9\\\x86` a\x01\xE0\x83\x01Q\x01R\x7F\x08\xF3\xF8\x8F\xFB\x9EC&\x12\x94\xB7\xFA\xF5\x82\xC5\x13\xF9\xC7\xD0t\x9D\xB6\xDC\xC44\xD7I;\x8C\x97[/a\x02\0\x82\x01QR\x7F.>\x04Xt\x11\x19\xAD\x14\"\x07+h\x15\xFD\xA8\n8\x96d\x0F\x01\x8D(,\x88\xF1PkT\xE0\xE6` a\x02\0\x83\x01Q\x01R\x7F\x10\n\\\nN\x1A\xC2y\x1D\x1Fh\xBC\x9C%\xB3\x9C\xCF\xBB]b\x8CS\xD5T\x7F\x89\xAA\x0C\xAB\x83$\xD2a\x02 \x82\x01QR\x7F\x05\xBF\x9E\x97B\x8C8\x7F\xBB\xC5\xF9\xCB\xF6\xEF\xFB3\xB5vUIL*\xB9\xF7\xCC]DZ\x0E\xA5k\xEA` a\x02 \x83\x01Q\x01R\x7F\x06\x7F>\x0C\xE6\x9C\xBB\xE3#7\xF0S\x8B\xF6\x11\x9Cr\xF7\xFDM\x92\x85{x\\\xAF\x04\xA2%\xB9MFa\x02@\x82\x01QR\x7F!\x1A\x07bq\x06\x9F\xB1\xFA\xE1R*\xB8\xA4w\x94\x80\xB5\x0E\xD8\xC4d\x8D \x13A\xE4D\xE8\xEE-\x15` a\x02@\x83\x01Q\x01R\x7F\x0B\x93\x1B\x96\x99}\x9D\xB8\xBC\x19\x8Cu\0\x98\xCA\xD2\x96\r\xF4\x07\x88\x0F{,\xB5\x1C\x857m_\xC8Ia\x02`\x82\x01QR\x7F\x0E\x91!\xAFv\xD7\xD9ad2\xDE\xD6\xA4\xDE\x93\xCF\x14o[sS\xA7O\x8Are\xD67\x7F\xD4\xED\xC7` 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[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\x1C\xE6WP\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\x1C\xDA_Q` a6|_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x0CFW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1D\x0Ca\x15\xD5V[`@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\x08\xA5V[\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\x1D\x9FWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1D\x9C\x91\x81\x01\x90a1\xC2V[`\x01[a\x1D\xC7W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x15\xC3V[_Q` a6|_9_Q\x90_R\x81\x14a\x1D\xF7W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x15\xC3V[a\x1E\x01\x83\x83a$XV[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\x0CFW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1EWa$\xADV[a\x0B\x9D\x81a$\xE3V[a\x0CFa$\xADV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x1E\x8CWP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x1E\x99WP` \x82\x01Q\x15[\x80a\x1E\xA6WP`@\x82\x01Q\x15[\x80a\x1E\xB3WP``\x82\x01Q\x15[\x80a\x1E\xBDWP\x81Q\x15[\x80a\x1E\xCFWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x1E\xE3WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x1F\x01W`@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\x0B\xBBW`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1F\xDEa\x08\xF9V[\x90Pa\x1F\xE8a(\xCCV[`\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 @WPa @\x87` \x01Qa\t\x9EV[\x15a \x89W`@\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 \xC4V[`@\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!\x15\x91\x84\x90\x89\x90` \x01a1\xF0V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x90Pa!Y\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x82a2\x12V[`\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!\x99\x90\x87\x90\x87\x90\x8A\x90`\x04\x01a4\x07V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a!\xB4W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a!\xD8\x91\x90a6'V[a!\xF5W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPPV[`\tT\x15\x80\x15\x90a\"tWP`\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\"?Wa\"?a1lV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\"i\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a1:V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a#\x07W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\"\xA1Wa\"\xA1a1lV[_\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\"\xE1\x83a6FV[\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[\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$a\x82a$\xEBV[`@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$\xA5Wa\x1E\x01\x82\x82a%NV[a\x0B\xBBa%\xC0V[_Q` a6\x9C_9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a\x0CFW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x15\x9Ea$\xADV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a% W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x15\xC3V[_Q` a6|_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%j\x91\x90a6pV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a%\xA2W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a%\xA7V[``\x91P[P\x91P\x91Pa%\xB7\x85\x83\x83a%\xDFV[\x95\x94PPPPPV[4\x15a\x0CFW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a%\xF4Wa%\xEF\x82a&>V[a&7V[\x81Q\x15\x80\x15a&\x0BWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a&4W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x15\xC3V[P\x80[\x93\x92PPPV[\x80Q\x15a&NW\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&\x9A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xBA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xDA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xFA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x1A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a':`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'Z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x9A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xBA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xDA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xFA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x1A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(:`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(Z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x9A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xBA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\xA0\x01`@R\x80`\x05\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\xFBW__\xFD[_` \x82\x84\x03\x12\x15a)\x10W__\xFD[a&7\x82a(\xEAV[_` \x82\x84\x03\x12\x15a))W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa)b`@\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\t\xFBW__\xFD[_` \x82\x84\x03\x12\x15a+WW__\xFD[a&7\x82a+1V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+\x97Wa+\x97a+`V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+\xC5Wa+\xC5a+`V[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a+\xDDW__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+\xFFWa+\xFFa+`V[`@R\x90P\x80a,\x0E\x83a+1V[\x81Ra,\x1C` \x84\x01a+1V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a,BW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,dWa,da+`V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a,\x8FW__\xFD[a,\x97a+tV[\x90Pa,\xA3\x83\x83a,2V[\x81Ra,\xB2\x83`@\x84\x01a,2V[` \x82\x01Ra,\xC4\x83`\x80\x84\x01a,2V[`@\x82\x01Ra,\xD6\x83`\xC0\x84\x01a,2V[``\x82\x01Ra,\xE9\x83a\x01\0\x84\x01a,2V[`\x80\x82\x01Ra,\xFC\x83a\x01@\x84\x01a,2V[`\xA0\x82\x01Ra-\x0F\x83a\x01\x80\x84\x01a,2V[`\xC0\x82\x01Ra-\"\x83a\x01\xC0\x84\x01a,2V[`\xE0\x82\x01Ra-5\x83a\x02\0\x84\x01a,2V[a\x01\0\x82\x01Ra-I\x83a\x02@\x84\x01a,2V[a\x01 \x82\x01Ra-]\x83a\x02\x80\x84\x01a,2V[a\x01@\x82\x01Ra-q\x83a\x02\xC0\x84\x01a,2V[a\x01`\x82\x01Ra-\x85\x83a\x03\0\x84\x01a,2V[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\x15a.\x1BW__\xFD[a.%\x84\x84a+\xCDV[\x91Pa.4\x84``\x85\x01a,~V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\t\xFBW__\xFD[_` \x82\x84\x03\x12\x15a.`W__\xFD[a&7\x82a.=V[__`@\x83\x85\x03\x12\x15a.zW__\xFD[a.\x83\x83a(\xEAV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x9DW__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a.\xADW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xC6Wa.\xC6a+`V[a.\xD9`\x1F\x82\x01`\x1F\x19\x16` \x01a+\x9DV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a.\xEDW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a/\x1CW__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/>Wa/>a+`V[`@\x90\x81R\x835\x82R` \x80\x85\x015\x90\x83\x01R\x83\x81\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[___a\x05`\x84\x86\x03\x12\x15a/\x7FW__\xFD[a/\x89\x85\x85a+\xCDV[\x92Pa/\x98\x85``\x86\x01a/\x0CV[\x91Pa/\xA7\x85`\xE0\x86\x01a,~V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a/\xC1W__\xFD[a/\xCA\x83a+1V[\x91Pa.4` \x84\x01a+1V[____a\x01 \x85\x87\x03\x12\x15a/\xECW__\xFD[a/\xF6\x86\x86a+\xCDV[\x93Pa0\x05\x86``\x87\x01a/\x0CV[\x92Pa0\x13`\xE0\x86\x01a.=V[\x91Pa0\"a\x01\0\x86\x01a(\xEAV[\x90P\x92\x95\x91\x94P\x92PV[____a\x05\x80\x85\x87\x03\x12\x15a0AW__\xFD[a0K\x86\x86a+\xCDV[\x93Pa0Z\x86``\x87\x01a/\x0CV[\x92P`\xE0\x85\x015\x91Pa0\"\x86a\x01\0\x87\x01a,~V[` \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[__`@\x83\x85\x03\x12\x15a0\xB7W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\n\x8FWa\n\x8Fa0\xC6V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a1%Wa1%a0\xF9V[\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\n\x8FWa\n\x8Fa0\xC6V[\x81\x81\x03\x81\x81\x11\x15a\n\x8FWa\n\x8Fa0\xC6V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a1\x98Wa1\x98a0\xF9V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_\x81a1\xBBWa1\xBBa0\xC6V[P_\x19\x01\x90V[_` \x82\x84\x03\x12\x15a1\xD2W__\xFD[PQ\x91\x90PV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a2\x04a1\xFE\x83\x87a1\xD9V[\x85a1\xD9V[\x92\x83RPP` \x01\x92\x91PPV[_\x82a2 Wa2 a0\xF9V[P\x06\x90V[\x80_[`\x05\x81\x10\x15a2GW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a2(V[PPPPV[a2b\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\x01Qa49`@\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\x01Ra6\x11a\x05\0\x83\x01\x85a2%V[a6\x1Fa\x05\xA0\x83\x01\x84a2MV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a67W__\xFD[\x81Q\x80\x15\x15\x81\x14a&7W__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a6gWa6ga0\xC6V[`\x01\x01\x92\x91PPV[_a&7\x82\x84a1\xD9V\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",
5292    );
5293    /// The runtime bytecode of the contract, as deployed on the network.
5294    ///
5295    /// ```text
5296    ///0x608060405260043610610228575f3560e01c8063715018a6116101295780639fdb54a7116100a8578063d24d933d1161006d578063d24d933d1461075d578063e03033011461078c578063f0682054146107ab578063f2fde38b146107ca578063f9e50d19146107e9575f5ffd5b80639fdb54a714610655578063aabd5db3146106aa578063ad3cb1cc146106c9578063b33bc49114610706578063c23b9e9e14610725575f5ffd5b80638da5cb5b116100ee5780638da5cb5b146105a757806390c14390146105e357806396c1ca6114610602578063998328e8146106215780639baa3cc914610636575f5ffd5b8063715018a61461050a578063757c37ad1461051e5780637667180814610538578063826e41fc1461054c5780638584d23f1461056b575f5ffd5b8063300c89dd116101b5578063426d31941161017a578063426d31941461048f578063433dba9f146104b05780634f1ef286146104cf57806352d1902d146104e257806369cc6a04146104f6575f5ffd5b8063300c89dd146103e3578063313df7b114610402578063378ec23b1461043957806338e454b1146104555780633ed55b7b14610469575f5ffd5b806312173c2c116101fb57806312173c2c14610317578063167ac618146103385780632063d4f71461035757806325297427146103765780632f79889d146103a5575f5ffd5b8063013fa5fc1461022c57806302b592f31461024d5780630625e19b146102aa5780630d8e6e2c146102ec575b5f5ffd5b348015610237575f5ffd5b5061024b610246366004612900565b6107fd565b005b348015610258575f5ffd5b5061026c610267366004612919565b6108b0565b6040516102a194939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156102b5575f5ffd5b50600b54600c54600d54600e546102cc9392919084565b6040805194855260208501939093529183015260608201526080016102a1565b3480156102f7575f5ffd5b5060408051600381525f60208201819052918101919091526060016102a1565b348015610322575f5ffd5b5061032b6108f9565b6040516102a19190612930565b348015610343575f5ffd5b5061024b610352366004612b47565b61090e565b348015610362575f5ffd5b5061024b610371366004612e09565b610985565b348015610381575f5ffd5b50610395610390366004612b47565b61099e565b60405190151581526020016102a1565b3480156103b0575f5ffd5b506008546103cb90600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016102a1565b3480156103ee575f5ffd5b506103956103fd366004612b47565b610a00565b34801561040d575f5ffd5b50600854610421906001600160a01b031681565b6040516001600160a01b0390911681526020016102a1565b348015610444575f5ffd5b50435b6040519081526020016102a1565b348015610460575f5ffd5b5061024b610a95565b348015610474575f5ffd5b50600a546103cb90600160401b90046001600160401b031681565b34801561049a575f5ffd5b505f546001546002546003546102cc9392919084565b3480156104bb575f5ffd5b5061024b6104ca366004612e50565b610b8c565b61024b6104dd366004612e69565b610ba0565b3480156104ed575f5ffd5b50610447610bbf565b348015610501575f5ffd5b5061024b610bda565b348015610515575f5ffd5b5061024b610c48565b348015610529575f5ffd5b5061024b610371366004612f6c565b348015610543575f5ffd5b506103cb610c69565b348015610557575f5ffd5b506008546001600160a01b03161515610395565b348015610576575f5ffd5b5061058a610585366004612919565b610c8e565b604080519283526001600160401b039091166020830152016102a1565b3480156105b2575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610421565b3480156105ee575f5ffd5b506103cb6105fd366004612fb0565b610db9565b34801561060d575f5ffd5b5061024b61061c366004612e50565b610e28565b34801561062c575f5ffd5b50610447600f5481565b348015610641575f5ffd5b5061024b610650366004612fd8565b610eb1565b348015610660575f5ffd5b50600654600754610684916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016102a1565b3480156106b5575f5ffd5b5061024b6106c436600461302d565b610fc0565b3480156106d4575f5ffd5b506106f9604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102a19190613071565b348015610711575f5ffd5b5061024b610720366004612fb0565b6112e5565b348015610730575f5ffd5b5060085461074890600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016102a1565b348015610768575f5ffd5b50600454600554610684916001600160401b0380821692600160401b909204169083565b348015610797575f5ffd5b506103956107a63660046130a6565b61143e565b3480156107b6575f5ffd5b50600a546103cb906001600160401b031681565b3480156107d5575f5ffd5b5061024b6107e4366004612900565b611596565b3480156107f4575f5ffd5b50600954610447565b6108056115d5565b6001600160a01b03811661082c5760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b039081169082160361085b5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b600981815481106108bf575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b610901612667565b610909611630565b905090565b6109166115d5565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b0385811682029283179485905561095c94919091048116928116911617610db9565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806109be5750600a546001600160401b0316155b156109ca57505f919050565b600a546001600160401b03166109e18360056130da565b6109eb919061310d565b6001600160401b03161592915050565b919050565b5f6001600160401b0382161580610a205750600a546001600160401b0316155b15610a2c57505f919050565b600a54610a42906001600160401b03168361310d565b6001600160401b03161580610a8f5750600a54610a6a906005906001600160401b031661313a565b600a546001600160401b0391821691610a8491168461310d565b6001600160401b0316115b92915050565b610a9d6115d5565b5f51602061369c5f395f51905f52805460039190600160401b900460ff1680610ad3575080546001600160401b03808416911610155b15610af15760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b9081178355600a54610b2b9291810482169116610db9565b6010805467ffffffffffffffff19166001600160401b03928316179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050565b610b946115d5565b610b9d81610e28565b50565b610ba8611c60565b610bb182611d04565b610bbb8282611d45565b5050565b5f610bc8611e06565b505f51602061367c5f395f51905f5290565b610be26115d5565b6008546001600160a01b031615610c2d57600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b610c506115d5565b6040516317d5c96560e11b815260040160405180910390fd5b600654600a545f91610909916001600160401b03600160401b90920482169116610db9565b600980545f91829190610ca2600183613159565b81548110610cb257610cb261316c565b5f918252602090912060029091020154600160801b90046001600160401b03168410610cf157604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610db2578460098281548110610d2157610d2161316c565b5f918252602090912060029091020154600160801b90046001600160401b03161115610daa5760098181548110610d5a57610d5a61316c565b905f5260205f2090600202016001015460098281548110610d7d57610d7d61316c565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610d05565b5050915091565b5f816001600160401b03165f03610dd157505f610a8f565b826001600160401b03165f03610de957506001610a8f565b610df3828461310d565b6001600160401b03165f03610e1357610e0c8284613180565b9050610a8f565b610e1d8284613180565b610e0c9060016130da565b610e306115d5565b610e108163ffffffff161080610e4f57506301e133808163ffffffff16115b80610e6d575060085463ffffffff600160a01b909104811690821611155b15610e8b576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b5f51602061369c5f395f51905f528054600160401b810460ff1615906001600160401b03165f81158015610ee25750825b90505f826001600160401b03166001148015610efd5750303b155b905081158015610f0b575080155b15610f295760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610f5357845460ff60401b1916600160401b1785555b610f5c86611e4f565b610f64611e60565b610f6f898989611e68565b8315610fb557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6008546001600160a01b031615158015610fe557506008546001600160a01b03163314155b15611003576040516301474c8f60e71b815260040160405180910390fd5b60065484516001600160401b03918216911611158061103c575060065460208501516001600160401b03600160401b9092048216911611155b1561105a5760405163051c46ef60e01b815260040160405180910390fd5b6110678460400151611f94565b6110748360200151611f94565b6110818360400151611f94565b61108e8360600151611f94565b5f611097610c69565b6020860151600a549192505f916110b791906001600160401b0316610db9565b6010549091506001600160401b03908116908216106110fb576110dd8660200151610a00565b156110fb5760405163080ae8d960e01b815260040160405180910390fd5b6010546001600160401b0390811690821611156111a757600261111e838361313a565b6001600160401b0316106111455760405163080ae8d960e01b815260040160405180910390fd5b6111508260016130da565b6001600160401b0316816001600160401b0316148015611189575060065461118790600160401b90046001600160401b031661099e565b155b156111a75760405163080ae8d960e01b815260040160405180910390fd5b6111b386868686611fd5565b85516006805460208901516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040870151600755600f8590556010548116908216108015906112105750611210866020015161099e565b1561127a578451600b556020850151600c556040850151600d556060850151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b61125e8260016130da565b6040516001600160401b03909116815260200160405180910390a15b6112854342886121ff565b85602001516001600160401b0316865f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae688604001516040516112d591815260200190565b60405180910390a3505050505050565b6112ed6115d5565b5f51602061369c5f395f51905f52805460029190600160401b900460ff1680611323575080546001600160401b03808416911610155b156113415760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b178255600590851611611389576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b0319909216908716171790556113d28385610db9565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6009545f904384118061144f575080155b806114995750600854600980549091600160c01b90046001600160401b031690811061147d5761147d61316c565b5f9182526020909120600290910201546001600160401b031684105b156114b75760405163b0b4387760e01b815260040160405180910390fd5b5f80806114c5600185613159565b90505b8161156157600854600160c01b90046001600160401b031681106115615786600982815481106114fa576114fa61316c565b5f9182526020909120600290910201546001600160401b03161161154f57600191506009818154811061152f5761152f61316c565b5f9182526020909120600290910201546001600160401b03169250611561565b80611559816131ad565b9150506114c8565b8161157f5760405163b0b4387760e01b815260040160405180910390fd5b8561158a8489613159565b11979650505050505050565b61159e6115d5565b6001600160a01b0381166115cc57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610b9d816123e8565b336116077f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610c465760405163118cdaa760e01b81523360048201526024016115c3565b611638612667565b621000008152600560208201527f2949260dc9e9621bb41dcb96ba7054b4bd5e7e230fdba5f3411260401c55f59d6040820151527f05d036973845e2e9d2ad9a795b351535a2576d51d27f21ff8372be92bd6f39466020604083015101527f0ba2c5ae9360efec9e3968e33f57fd33059e57385c1ea7db6430426b82e0871a6060820151527f1e333b5398c953194076772a861b7bf6a4c80c4a4c2e54eb9ca67aec5ff19fc96020606083015101527f0d9e9b9f38dd9fbbd5cd8b5a1d1c8aa4e777e526e06efe39345bf3ce4c5bb4aa6080820151527f10417eaf9ba330bbf56caf331a362114153a9c95ae914fbd1f99cb84d59fbf566020608083015101527f155dfc3a039f16ab99fa9663569ff06e5bfda91748a79821d80dafc7f1d92e5e60a0820151527f15daee81e8ffcac886bf9cc7453d659a987da1feb893c1fe9a94583f337f6dfa602060a083015101527f1c6f995727083f56734a4863c3bf4433b5353ad8d20f15d554a8cd2be28ef92d60c0820151527f0736ebbf0d73d42c428d5dd66ba4d9d9513a642d94147db629964d6d032776a8602060c083015101527f2c4aa1a42d17f226532742b7da21ed908ee6a1c13d824b269d21abcd59c8672360e0820151527f05c4163ca9cab2e65abbb41b6175591cf92460000c96fb9daa1f01d50af4936c602060e083015101527f215ecf683c65ee3dca3c2fc04b4864b1f2a538ef923af6380d420fa6b5a9f496610100820151527f1d03c378f3d7063d12c459ac659ce7a27c439cd6ad184c172352815f3a380d37602061010083015101527f20bc29548f10bd07fde418d49a5692f8919694571ab64c90f583dc434a5fec0c610120820151527f244e5fcb51c747a56fe6fdb32f0b01ef3bc55627f6f9afcd98dddbede50308a3602061012083015101527f0e3646b352d00a3482e89811f4966fb646889dadb561ebb7bb7c223e8196d5b3610140820151527f1b10219a6293abaf30388f39e4c7b925f89b6f57cb81654e1ad755294e790f09602061014083015101527f2b29b36cd6d33062a9a86e24bd178d69b1cebdc1a39c7977d547e7617b5747f9610160820151527f17062161c0a63cd17cee5b14821d7820e7fa432323b122ba59c44dd01f6a9238602061016083015101527f1198db3cec1a66ccdb90886bb96fcf175316c6ea78f73f23f4a11bcf4320e11a610180820151527f063b1f963e732bd20d86e1fef855788c1aacf26babb526d84e30633a2b5a9469602061018083015101527f23809a6a5bb0bf088f97efe15168a39471a3a4e41b8d6db0100e15fa68b09f636101a0820151527f0aba7b69ab7fdda68dac9065a5ee9fb50abfe57bdb5ab359cc5b56dff65cbea160206101a083015101527f1f038064d3ca1f37c56ecfe41701f15a412c63d3c9ad52fcfd3fd4c64da8b5f26101c0820151527f2689fe5cc59e4be112c2479969c25a7f603a5d71a2e7924480c9f4eafc2c298f60206101c083015101527f113021e93328a91531e40871481c4714e0b99a6afb10c779eeb2b07a7ae6f4e76101e0820151527f1a36bb2620cdb40c4dad25257716a9d8eb1e45f715ada98e424697aaf4d95c8660206101e083015101527f08f3f88ffb9e43261294b7faf582c513f9c7d0749db6dcc434d7493b8c975b2f610200820151527f2e3e0458741119ad1422072b6815fda80a3896640f018d282c88f1506b54e0e6602061020083015101527f100a5c0a4e1ac2791d1f68bc9c25b39ccfbb5d628c53d5547f89aa0cab8324d2610220820151527f05bf9e97428c387fbbc5f9cbf6effb33b57655494c2ab9f7cc5d445a0ea56bea602061022083015101527f067f3e0ce69cbbe32337f0538bf6119c72f7fd4d92857b785caf04a225b94d46610240820151527f211a076271069fb1fae1522ab8a4779480b50ed8c4648d201341e444e8ee2d15602061024083015101527f0b931b96997d9db8bc198c750098cad2960df407880f7b2cb51c85376d5fc849610260820151527f0e9121af76d7d9616432ded6a4de93cf146f5b7353a74f8a7265d6377fd4edc7602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611ce657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611cda5f51602061367c5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610c465760405163703e46dd60e11b815260040160405180910390fd5b611d0c6115d5565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d906020016108a5565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d9f575060408051601f3d908101601f19168201909252611d9c918101906131c2565b60015b611dc757604051634c9c8ce360e01b81526001600160a01b03831660048201526024016115c3565b5f51602061367c5f395f51905f528114611df757604051632a87526960e21b8152600481018290526024016115c3565b611e018383612458565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c465760405163703e46dd60e11b815260040160405180910390fd5b611e576124ad565b610b9d816124e3565b610c466124ad565b82516001600160401b0316151580611e8c575060208301516001600160401b031615155b80611e9957506020820151155b80611ea657506040820151155b80611eb357506060820151155b80611ebd57508151155b80611ecf5750610e108163ffffffff16105b80611ee357506301e133808163ffffffff16115b15611f01576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001811080610bbb5760405163016c173360e21b815260040160405180910390fd5b5f611fde6108f9565b9050611fe86128cc565b600c548152600d54602080830191909152600e546040830152600b54606080840191909152600a549188015190916001600160401b03600160401b90910481169116108015906120405750612040876020015161099e565b15612089576040805187516020808301919091528801518183015290870151606080830191909152870151608082015260a00160405160208183030381529060405290506120c4565b60408051600b546020820152600c5491810191909152600d546060820152600e54608082015260a00160405160208183030381529060405290505b6040805188516001600160401b039081166020808401919091528a015116818301529088015160608201525f9060800160408051601f198184030181529082905261211591849089906020016131f0565b60408051601f19818403018152919052805160209091012090506121597f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182613212565b60808401526040516354e8bd6760e01b815273ffffffffffffffffffffffffffffffffffffffff906354e8bd679061219990879087908a90600401613407565b602060405180830381865af41580156121b4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121d89190613627565b6121f5576040516309bde33960e01b815260040160405180910390fd5b5050505050505050565b60095415801590612274575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b031690811061223f5761223f61316c565b5f91825260209091206002909102015461226990600160401b90046001600160401b03168461313a565b6001600160401b0316115b1561230757600854600980549091600160c01b90046001600160401b03169081106122a1576122a161316c565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b03169060186122e183613646565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b612461826124eb565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156124a557611e01828261254e565b610bbb6125c0565b5f51602061369c5f395f51905f5254600160401b900460ff16610c4657604051631afcd79f60e31b815260040160405180910390fd5b61159e6124ad565b806001600160a01b03163b5f0361252057604051634c9c8ce360e01b81526001600160a01b03821660048201526024016115c3565b5f51602061367c5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161256a9190613670565b5f60405180830381855af49150503d805f81146125a2576040519150601f19603f3d011682016040523d82523d5f602084013e6125a7565b606091505b50915091506125b78583836125df565b95945050505050565b3415610c465760405163b398979f60e01b815260040160405180910390fd5b6060826125f4576125ef8261263e565b612637565b815115801561260b57506001600160a01b0384163b155b1561263457604051639996b31560e01b81526001600160a01b03851660048201526024016115c3565b50805b9392505050565b80511561264e5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161269a60405180604001604052805f81526020015f81525090565b81526020016126ba60405180604001604052805f81526020015f81525090565b81526020016126da60405180604001604052805f81526020015f81525090565b81526020016126fa60405180604001604052805f81526020015f81525090565b815260200161271a60405180604001604052805f81526020015f81525090565b815260200161273a60405180604001604052805f81526020015f81525090565b815260200161275a60405180604001604052805f81526020015f81525090565b815260200161277a60405180604001604052805f81526020015f81525090565b815260200161279a60405180604001604052805f81526020015f81525090565b81526020016127ba60405180604001604052805f81526020015f81525090565b81526020016127da60405180604001604052805f81526020015f81525090565b81526020016127fa60405180604001604052805f81526020015f81525090565b815260200161281a60405180604001604052805f81526020015f81525090565b815260200161283a60405180604001604052805f81526020015f81525090565b815260200161285a60405180604001604052805f81526020015f81525090565b815260200161287a60405180604001604052805f81526020015f81525090565b815260200161289a60405180604001604052805f81526020015f81525090565b81526020016128ba60405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b6040518060a001604052806005906020820280368337509192915050565b80356001600160a01b03811681146109fb575f5ffd5b5f60208284031215612910575f5ffd5b612637826128ea565b5f60208284031215612929575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612962604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b03811681146109fb575f5ffd5b5f60208284031215612b57575f5ffd5b61263782612b31565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612b9757612b97612b60565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612bc557612bc5612b60565b604052919050565b5f60608284031215612bdd575f5ffd5b604051606081016001600160401b0381118282101715612bff57612bff612b60565b604052905080612c0e83612b31565b8152612c1c60208401612b31565b6020820152604092830135920191909152919050565b5f60408284031215612c42575f5ffd5b604080519081016001600160401b0381118282101715612c6457612c64612b60565b604052823581526020928301359281019290925250919050565b5f6104808284031215612c8f575f5ffd5b612c97612b74565b9050612ca38383612c32565b8152612cb28360408401612c32565b6020820152612cc48360808401612c32565b6040820152612cd68360c08401612c32565b6060820152612ce9836101008401612c32565b6080820152612cfc836101408401612c32565b60a0820152612d0f836101808401612c32565b60c0820152612d22836101c08401612c32565b60e0820152612d35836102008401612c32565b610100820152612d49836102408401612c32565b610120820152612d5d836102808401612c32565b610140820152612d71836102c08401612c32565b610160820152612d85836103008401612c32565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612e1b575f5ffd5b612e258484612bcd565b9150612e348460608501612c7e565b90509250929050565b803563ffffffff811681146109fb575f5ffd5b5f60208284031215612e60575f5ffd5b61263782612e3d565b5f5f60408385031215612e7a575f5ffd5b612e83836128ea565b915060208301356001600160401b03811115612e9d575f5ffd5b8301601f81018513612ead575f5ffd5b80356001600160401b03811115612ec657612ec6612b60565b612ed9601f8201601f1916602001612b9d565b818152866020838501011115612eed575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215612f1c575f5ffd5b604051608081016001600160401b0381118282101715612f3e57612f3e612b60565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f5f5f6105608486031215612f7f575f5ffd5b612f898585612bcd565b9250612f988560608601612f0c565b9150612fa78560e08601612c7e565b90509250925092565b5f5f60408385031215612fc1575f5ffd5b612fca83612b31565b9150612e3460208401612b31565b5f5f5f5f6101208587031215612fec575f5ffd5b612ff68686612bcd565b93506130058660608701612f0c565b925061301360e08601612e3d565b915061302261010086016128ea565b905092959194509250565b5f5f5f5f6105808587031215613041575f5ffd5b61304b8686612bcd565b935061305a8660608701612f0c565b925060e08501359150613022866101008701612c7e565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f604083850312156130b7575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115610a8f57610a8f6130c6565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b03831680613125576131256130f9565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115610a8f57610a8f6130c6565b81810381811115610a8f57610a8f6130c6565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b03831680613198576131986130f9565b806001600160401b0384160491505092915050565b5f816131bb576131bb6130c6565b505f190190565b5f602082840312156131d2575f5ffd5b5051919050565b5f81518060208401855e5f93019283525090919050565b5f6132046131fe83876131d9565b856131d9565b928352505060200192915050565b5f82613220576132206130f9565b500690565b805f5b6005811015613247578151845260209384019390910190600101613228565b50505050565b61326282825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a208201905084518252602085015160208301526040850151613439604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152613611610500830185613225565b61361f6105a083018461324d565b949350505050565b5f60208284031215613637575f5ffd5b81518015158114612637575f5ffd5b5f6001600160401b0382166001600160401b038103613667576136676130c6565b60010192915050565b5f61263782846131d956fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c634300081c000a
5297    /// ```
5298    #[rustfmt::skip]
5299    #[allow(clippy::all)]
5300    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
5301        b"`\x80`@R`\x046\x10a\x02(W_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01)W\x80c\x9F\xDBT\xA7\x11a\0\xA8W\x80c\xD2M\x93=\x11a\0mW\x80c\xD2M\x93=\x14a\x07]W\x80c\xE003\x01\x14a\x07\x8CW\x80c\xF0h T\x14a\x07\xABW\x80c\xF2\xFD\xE3\x8B\x14a\x07\xCAW\x80c\xF9\xE5\r\x19\x14a\x07\xE9W__\xFD[\x80c\x9F\xDBT\xA7\x14a\x06UW\x80c\xAA\xBD]\xB3\x14a\x06\xAAW\x80c\xAD<\xB1\xCC\x14a\x06\xC9W\x80c\xB3;\xC4\x91\x14a\x07\x06W\x80c\xC2;\x9E\x9E\x14a\x07%W__\xFD[\x80c\x8D\xA5\xCB[\x11a\0\xEEW\x80c\x8D\xA5\xCB[\x14a\x05\xA7W\x80c\x90\xC1C\x90\x14a\x05\xE3W\x80c\x96\xC1\xCAa\x14a\x06\x02W\x80c\x99\x83(\xE8\x14a\x06!W\x80c\x9B\xAA<\xC9\x14a\x066W__\xFD[\x80cqP\x18\xA6\x14a\x05\nW\x80cu|7\xAD\x14a\x05\x1EW\x80cvg\x18\x08\x14a\x058W\x80c\x82nA\xFC\x14a\x05LW\x80c\x85\x84\xD2?\x14a\x05kW__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\xB5W\x80cBm1\x94\x11a\x01zW\x80cBm1\x94\x14a\x04\x8FW\x80cC=\xBA\x9F\x14a\x04\xB0W\x80cO\x1E\xF2\x86\x14a\x04\xCFW\x80cR\xD1\x90-\x14a\x04\xE2W\x80ci\xCCj\x04\x14a\x04\xF6W__\xFD[\x80c0\x0C\x89\xDD\x14a\x03\xE3W\x80c1=\xF7\xB1\x14a\x04\x02W\x80c7\x8E\xC2;\x14a\x049W\x80c8\xE4T\xB1\x14a\x04UW\x80c>\xD5[{\x14a\x04iW__\xFD[\x80c\x12\x17<,\x11a\x01\xFBW\x80c\x12\x17<,\x14a\x03\x17W\x80c\x16z\xC6\x18\x14a\x038W\x80c c\xD4\xF7\x14a\x03WW\x80c%)t'\x14a\x03vW\x80c/y\x88\x9D\x14a\x03\xA5W__\xFD[\x80c\x01?\xA5\xFC\x14a\x02,W\x80c\x02\xB5\x92\xF3\x14a\x02MW\x80c\x06%\xE1\x9B\x14a\x02\xAAW\x80c\r\x8En,\x14a\x02\xECW[__\xFD[4\x80\x15a\x027W__\xFD[Pa\x02Ka\x02F6`\x04a)\0V[a\x07\xFDV[\0[4\x80\x15a\x02XW__\xFD[Pa\x02la\x02g6`\x04a)\x19V[a\x08\xB0V[`@Qa\x02\xA1\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\x02\xB5W__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x02\xCC\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\xA1V[4\x80\x15a\x02\xF7W__\xFD[P`@\x80Q`\x03\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\xA1V[4\x80\x15a\x03\"W__\xFD[Pa\x03+a\x08\xF9V[`@Qa\x02\xA1\x91\x90a)0V[4\x80\x15a\x03CW__\xFD[Pa\x02Ka\x03R6`\x04a+GV[a\t\x0EV[4\x80\x15a\x03bW__\xFD[Pa\x02Ka\x03q6`\x04a.\tV[a\t\x85V[4\x80\x15a\x03\x81W__\xFD[Pa\x03\x95a\x03\x906`\x04a+GV[a\t\x9EV[`@Q\x90\x15\x15\x81R` \x01a\x02\xA1V[4\x80\x15a\x03\xB0W__\xFD[P`\x08Ta\x03\xCB\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xA1V[4\x80\x15a\x03\xEEW__\xFD[Pa\x03\x95a\x03\xFD6`\x04a+GV[a\n\0V[4\x80\x15a\x04\rW__\xFD[P`\x08Ta\x04!\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xA1V[4\x80\x15a\x04DW__\xFD[PC[`@Q\x90\x81R` \x01a\x02\xA1V[4\x80\x15a\x04`W__\xFD[Pa\x02Ka\n\x95V[4\x80\x15a\x04tW__\xFD[P`\nTa\x03\xCB\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x04\x9AW__\xFD[P_T`\x01T`\x02T`\x03Ta\x02\xCC\x93\x92\x91\x90\x84V[4\x80\x15a\x04\xBBW__\xFD[Pa\x02Ka\x04\xCA6`\x04a.PV[a\x0B\x8CV[a\x02Ka\x04\xDD6`\x04a.iV[a\x0B\xA0V[4\x80\x15a\x04\xEDW__\xFD[Pa\x04Ga\x0B\xBFV[4\x80\x15a\x05\x01W__\xFD[Pa\x02Ka\x0B\xDAV[4\x80\x15a\x05\x15W__\xFD[Pa\x02Ka\x0CHV[4\x80\x15a\x05)W__\xFD[Pa\x02Ka\x03q6`\x04a/lV[4\x80\x15a\x05CW__\xFD[Pa\x03\xCBa\x0CiV[4\x80\x15a\x05WW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03\x95V[4\x80\x15a\x05vW__\xFD[Pa\x05\x8Aa\x05\x856`\x04a)\x19V[a\x0C\x8EV[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\xA1V[4\x80\x15a\x05\xB2W__\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!V[4\x80\x15a\x05\xEEW__\xFD[Pa\x03\xCBa\x05\xFD6`\x04a/\xB0V[a\r\xB9V[4\x80\x15a\x06\rW__\xFD[Pa\x02Ka\x06\x1C6`\x04a.PV[a\x0E(V[4\x80\x15a\x06,W__\xFD[Pa\x04G`\x0FT\x81V[4\x80\x15a\x06AW__\xFD[Pa\x02Ka\x06P6`\x04a/\xD8V[a\x0E\xB1V[4\x80\x15a\x06`W__\xFD[P`\x06T`\x07Ta\x06\x84\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\xA1V[4\x80\x15a\x06\xB5W__\xFD[Pa\x02Ka\x06\xC46`\x04a0-V[a\x0F\xC0V[4\x80\x15a\x06\xD4W__\xFD[Pa\x06\xF9`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\xA1\x91\x90a0qV[4\x80\x15a\x07\x11W__\xFD[Pa\x02Ka\x07 6`\x04a/\xB0V[a\x12\xE5V[4\x80\x15a\x070W__\xFD[P`\x08Ta\x07H\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\xA1V[4\x80\x15a\x07hW__\xFD[P`\x04T`\x05Ta\x06\x84\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x07\x97W__\xFD[Pa\x03\x95a\x07\xA66`\x04a0\xA6V[a\x14>V[4\x80\x15a\x07\xB6W__\xFD[P`\nTa\x03\xCB\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x07\xD5W__\xFD[Pa\x02Ka\x07\xE46`\x04a)\0V[a\x15\x96V[4\x80\x15a\x07\xF4W__\xFD[P`\tTa\x04GV[a\x08\x05a\x15\xD5V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x08,W`@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\x08[W`@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\x08\xBFW_\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\t\x01a&gV[a\t\ta\x160V[\x90P\x90V[a\t\x16a\x15\xD5V[`\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\t\\\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\r\xB9V[`\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\t\xBEWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\t\xCAWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\t\xE1\x83`\x05a0\xDAV[a\t\xEB\x91\x90a1\rV[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\n WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\n,WP_\x91\x90PV[`\nTa\nB\x90`\x01`\x01`@\x1B\x03\x16\x83a1\rV[`\x01`\x01`@\x1B\x03\x16\x15\x80a\n\x8FWP`\nTa\nj\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a1:V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\n\x84\x91\x16\x84a1\rV[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[a\n\x9Da\x15\xD5V[_Q` a6\x9C_9_Q\x90_R\x80T`\x03\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\n\xD3WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\n\xF1W`@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\x0B+\x92\x91\x81\x04\x82\x16\x91\x16a\r\xB9V[`\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\x0B\x94a\x15\xD5V[a\x0B\x9D\x81a\x0E(V[PV[a\x0B\xA8a\x1C`V[a\x0B\xB1\x82a\x1D\x04V[a\x0B\xBB\x82\x82a\x1DEV[PPV[_a\x0B\xC8a\x1E\x06V[P_Q` a6|_9_Q\x90_R\x90V[a\x0B\xE2a\x15\xD5V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0C-W`\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\x0CPa\x15\xD5V[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T`\nT_\x91a\t\t\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\r\xB9V[`\t\x80T_\x91\x82\x91\x90a\x0C\xA2`\x01\x83a1YV[\x81T\x81\x10a\x0C\xB2Wa\x0C\xB2a1lV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x0C\xF1W`@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\r\xB2W\x84`\t\x82\x81T\x81\x10a\r!Wa\r!a1lV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\r\xAAW`\t\x81\x81T\x81\x10a\rZWa\rZa1lV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\r}Wa\r}a1lV[\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\r\x05V[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\r\xD1WP_a\n\x8FV[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\r\xE9WP`\x01a\n\x8FV[a\r\xF3\x82\x84a1\rV[`\x01`\x01`@\x1B\x03\x16_\x03a\x0E\x13Wa\x0E\x0C\x82\x84a1\x80V[\x90Pa\n\x8FV[a\x0E\x1D\x82\x84a1\x80V[a\x0E\x0C\x90`\x01a0\xDAV[a\x0E0a\x15\xD5V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x0EOWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x0EmWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x0E\x8BW`@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` a6\x9C_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x0E\xE2WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0E\xFDWP0;\x15[\x90P\x81\x15\x80\x15a\x0F\x0BWP\x80\x15[\x15a\x0F)W`@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\x0FSW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0F\\\x86a\x1EOV[a\x0Fda\x1E`V[a\x0Fo\x89\x89\x89a\x1EhV[\x83\x15a\x0F\xB5W\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\x0F\xE5WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x10\x03W`@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\x10<WP`\x06T` \x85\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x10ZW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x10g\x84`@\x01Qa\x1F\x94V[a\x10t\x83` \x01Qa\x1F\x94V[a\x10\x81\x83`@\x01Qa\x1F\x94V[a\x10\x8E\x83``\x01Qa\x1F\x94V[_a\x10\x97a\x0CiV[` \x86\x01Q`\nT\x91\x92P_\x91a\x10\xB7\x91\x90`\x01`\x01`@\x1B\x03\x16a\r\xB9V[`\x10T\x90\x91P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x10a\x10\xFBWa\x10\xDD\x86` \x01Qa\n\0V[\x15a\x10\xFBW`@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\x11\xA7W`\x02a\x11\x1E\x83\x83a1:V[`\x01`\x01`@\x1B\x03\x16\x10a\x11EW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11P\x82`\x01a0\xDAV[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x11\x89WP`\x06Ta\x11\x87\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\t\x9EV[\x15[\x15a\x11\xA7W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xB3\x86\x86\x86\x86a\x1F\xD5V[\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\x12\x10WPa\x12\x10\x86` \x01Qa\t\x9EV[\x15a\x12zW\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\x12^\x82`\x01a0\xDAV[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x12\x85CB\x88a!\xFFV[\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\x12\xD5\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPPV[a\x12\xEDa\x15\xD5V[_Q` a6\x9C_9_Q\x90_R\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x13#WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x13AW`@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\x13\x89W`@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\x13\xD2\x83\x85a\r\xB9V[`\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[`\tT_\x90C\x84\x11\x80a\x14OWP\x80\x15[\x80a\x14\x99WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x14}Wa\x14}a1lV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x14\xB7W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x14\xC5`\x01\x85a1YV[\x90P[\x81a\x15aW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x15aW\x86`\t\x82\x81T\x81\x10a\x14\xFAWa\x14\xFAa1lV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x15OW`\x01\x91P`\t\x81\x81T\x81\x10a\x15/Wa\x15/a1lV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x15aV[\x80a\x15Y\x81a1\xADV[\x91PPa\x14\xC8V[\x81a\x15\x7FW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x15\x8A\x84\x89a1YV[\x11\x97\x96PPPPPPPV[a\x15\x9Ea\x15\xD5V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x15\xCCW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x0B\x9D\x81a#\xE8V[3a\x16\x07\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\x0CFW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x15\xC3V[a\x168a&gV[b\x10\0\0\x81R`\x05` \x82\x01R\x7F)I&\r\xC9\xE9b\x1B\xB4\x1D\xCB\x96\xBApT\xB4\xBD^~#\x0F\xDB\xA5\xF3A\x12`@\x1CU\xF5\x9D`@\x82\x01QR\x7F\x05\xD06\x978E\xE2\xE9\xD2\xAD\x9Ay[5\x155\xA2WmQ\xD2\x7F!\xFF\x83r\xBE\x92\xBDo9F` `@\x83\x01Q\x01R\x7F\x0B\xA2\xC5\xAE\x93`\xEF\xEC\x9E9h\xE3?W\xFD3\x05\x9EW8\\\x1E\xA7\xDBd0Bk\x82\xE0\x87\x1A``\x82\x01QR\x7F\x1E3;S\x98\xC9S\x19@vw*\x86\x1B{\xF6\xA4\xC8\x0CJL.T\xEB\x9C\xA6z\xEC_\xF1\x9F\xC9` ``\x83\x01Q\x01R\x7F\r\x9E\x9B\x9F8\xDD\x9F\xBB\xD5\xCD\x8BZ\x1D\x1C\x8A\xA4\xE7w\xE5&\xE0n\xFE94[\xF3\xCEL[\xB4\xAA`\x80\x82\x01QR\x7F\x10A~\xAF\x9B\xA30\xBB\xF5l\xAF3\x1A6!\x14\x15:\x9C\x95\xAE\x91O\xBD\x1F\x99\xCB\x84\xD5\x9F\xBFV` `\x80\x83\x01Q\x01R\x7F\x15]\xFC:\x03\x9F\x16\xAB\x99\xFA\x96cV\x9F\xF0n[\xFD\xA9\x17H\xA7\x98!\xD8\r\xAF\xC7\xF1\xD9.^`\xA0\x82\x01QR\x7F\x15\xDA\xEE\x81\xE8\xFF\xCA\xC8\x86\xBF\x9C\xC7E=e\x9A\x98}\xA1\xFE\xB8\x93\xC1\xFE\x9A\x94X?3\x7Fm\xFA` `\xA0\x83\x01Q\x01R\x7F\x1Co\x99W'\x08?VsJHc\xC3\xBFD3\xB55:\xD8\xD2\x0F\x15\xD5T\xA8\xCD+\xE2\x8E\xF9-`\xC0\x82\x01QR\x7F\x076\xEB\xBF\rs\xD4,B\x8D]\xD6k\xA4\xD9\xD9Q:d-\x94\x14}\xB6)\x96Mm\x03'v\xA8` `\xC0\x83\x01Q\x01R\x7F,J\xA1\xA4-\x17\xF2&S'B\xB7\xDA!\xED\x90\x8E\xE6\xA1\xC1=\x82K&\x9D!\xAB\xCDY\xC8g#`\xE0\x82\x01QR\x7F\x05\xC4\x16<\xA9\xCA\xB2\xE6Z\xBB\xB4\x1BauY\x1C\xF9$`\0\x0C\x96\xFB\x9D\xAA\x1F\x01\xD5\n\xF4\x93l` `\xE0\x83\x01Q\x01R\x7F!^\xCFh<e\xEE=\xCA</\xC0KHd\xB1\xF2\xA58\xEF\x92:\xF68\rB\x0F\xA6\xB5\xA9\xF4\x96a\x01\0\x82\x01QR\x7F\x1D\x03\xC3x\xF3\xD7\x06=\x12\xC4Y\xACe\x9C\xE7\xA2|C\x9C\xD6\xAD\x18L\x17#R\x81_:8\r7` a\x01\0\x83\x01Q\x01R\x7F \xBC)T\x8F\x10\xBD\x07\xFD\xE4\x18\xD4\x9AV\x92\xF8\x91\x96\x94W\x1A\xB6L\x90\xF5\x83\xDCCJ_\xEC\x0Ca\x01 \x82\x01QR\x7F$N_\xCBQ\xC7G\xA5o\xE6\xFD\xB3/\x0B\x01\xEF;\xC5V'\xF6\xF9\xAF\xCD\x98\xDD\xDB\xED\xE5\x03\x08\xA3` a\x01 \x83\x01Q\x01R\x7F\x0E6F\xB3R\xD0\n4\x82\xE8\x98\x11\xF4\x96o\xB6F\x88\x9D\xAD\xB5a\xEB\xB7\xBB|\">\x81\x96\xD5\xB3a\x01@\x82\x01QR\x7F\x1B\x10!\x9Ab\x93\xAB\xAF08\x8F9\xE4\xC7\xB9%\xF8\x9BoW\xCB\x81eN\x1A\xD7U)Ny\x0F\t` a\x01@\x83\x01Q\x01R\x7F+)\xB3l\xD6\xD30b\xA9\xA8n$\xBD\x17\x8Di\xB1\xCE\xBD\xC1\xA3\x9Cyw\xD5G\xE7a{WG\xF9a\x01`\x82\x01QR\x7F\x17\x06!a\xC0\xA6<\xD1|\xEE[\x14\x82\x1Dx \xE7\xFAC##\xB1\"\xBAY\xC4M\xD0\x1Fj\x928` a\x01`\x83\x01Q\x01R\x7F\x11\x98\xDB<\xEC\x1Af\xCC\xDB\x90\x88k\xB9o\xCF\x17S\x16\xC6\xEAx\xF7?#\xF4\xA1\x1B\xCFC \xE1\x1Aa\x01\x80\x82\x01QR\x7F\x06;\x1F\x96>s+\xD2\r\x86\xE1\xFE\xF8Ux\x8C\x1A\xAC\xF2k\xAB\xB5&\xD8N0c:+Z\x94i` a\x01\x80\x83\x01Q\x01R\x7F#\x80\x9Aj[\xB0\xBF\x08\x8F\x97\xEF\xE1Qh\xA3\x94q\xA3\xA4\xE4\x1B\x8Dm\xB0\x10\x0E\x15\xFAh\xB0\x9Fca\x01\xA0\x82\x01QR\x7F\n\xBA{i\xAB\x7F\xDD\xA6\x8D\xAC\x90e\xA5\xEE\x9F\xB5\n\xBF\xE5{\xDBZ\xB3Y\xCC[V\xDF\xF6\\\xBE\xA1` a\x01\xA0\x83\x01Q\x01R\x7F\x1F\x03\x80d\xD3\xCA\x1F7\xC5n\xCF\xE4\x17\x01\xF1ZA,c\xD3\xC9\xADR\xFC\xFD?\xD4\xC6M\xA8\xB5\xF2a\x01\xC0\x82\x01QR\x7F&\x89\xFE\\\xC5\x9EK\xE1\x12\xC2G\x99i\xC2Z\x7F`:]q\xA2\xE7\x92D\x80\xC9\xF4\xEA\xFC,)\x8F` a\x01\xC0\x83\x01Q\x01R\x7F\x110!\xE93(\xA9\x151\xE4\x08qH\x1CG\x14\xE0\xB9\x9Aj\xFB\x10\xC7y\xEE\xB2\xB0zz\xE6\xF4\xE7a\x01\xE0\x82\x01QR\x7F\x1A6\xBB& \xCD\xB4\x0CM\xAD%%w\x16\xA9\xD8\xEB\x1EE\xF7\x15\xAD\xA9\x8EBF\x97\xAA\xF4\xD9\\\x86` a\x01\xE0\x83\x01Q\x01R\x7F\x08\xF3\xF8\x8F\xFB\x9EC&\x12\x94\xB7\xFA\xF5\x82\xC5\x13\xF9\xC7\xD0t\x9D\xB6\xDC\xC44\xD7I;\x8C\x97[/a\x02\0\x82\x01QR\x7F.>\x04Xt\x11\x19\xAD\x14\"\x07+h\x15\xFD\xA8\n8\x96d\x0F\x01\x8D(,\x88\xF1PkT\xE0\xE6` a\x02\0\x83\x01Q\x01R\x7F\x10\n\\\nN\x1A\xC2y\x1D\x1Fh\xBC\x9C%\xB3\x9C\xCF\xBB]b\x8CS\xD5T\x7F\x89\xAA\x0C\xAB\x83$\xD2a\x02 \x82\x01QR\x7F\x05\xBF\x9E\x97B\x8C8\x7F\xBB\xC5\xF9\xCB\xF6\xEF\xFB3\xB5vUIL*\xB9\xF7\xCC]DZ\x0E\xA5k\xEA` a\x02 \x83\x01Q\x01R\x7F\x06\x7F>\x0C\xE6\x9C\xBB\xE3#7\xF0S\x8B\xF6\x11\x9Cr\xF7\xFDM\x92\x85{x\\\xAF\x04\xA2%\xB9MFa\x02@\x82\x01QR\x7F!\x1A\x07bq\x06\x9F\xB1\xFA\xE1R*\xB8\xA4w\x94\x80\xB5\x0E\xD8\xC4d\x8D \x13A\xE4D\xE8\xEE-\x15` a\x02@\x83\x01Q\x01R\x7F\x0B\x93\x1B\x96\x99}\x9D\xB8\xBC\x19\x8Cu\0\x98\xCA\xD2\x96\r\xF4\x07\x88\x0F{,\xB5\x1C\x857m_\xC8Ia\x02`\x82\x01QR\x7F\x0E\x91!\xAFv\xD7\xD9ad2\xDE\xD6\xA4\xDE\x93\xCF\x14o[sS\xA7O\x8Are\xD67\x7F\xD4\xED\xC7` 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[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\x1C\xE6WP\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\x1C\xDA_Q` a6|_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x0CFW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1D\x0Ca\x15\xD5V[`@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\x08\xA5V[\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\x1D\x9FWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1D\x9C\x91\x81\x01\x90a1\xC2V[`\x01[a\x1D\xC7W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x15\xC3V[_Q` a6|_9_Q\x90_R\x81\x14a\x1D\xF7W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x15\xC3V[a\x1E\x01\x83\x83a$XV[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\x0CFW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1EWa$\xADV[a\x0B\x9D\x81a$\xE3V[a\x0CFa$\xADV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x1E\x8CWP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x1E\x99WP` \x82\x01Q\x15[\x80a\x1E\xA6WP`@\x82\x01Q\x15[\x80a\x1E\xB3WP``\x82\x01Q\x15[\x80a\x1E\xBDWP\x81Q\x15[\x80a\x1E\xCFWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x1E\xE3WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x1F\x01W`@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\x0B\xBBW`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1F\xDEa\x08\xF9V[\x90Pa\x1F\xE8a(\xCCV[`\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 @WPa @\x87` \x01Qa\t\x9EV[\x15a \x89W`@\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 \xC4V[`@\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!\x15\x91\x84\x90\x89\x90` \x01a1\xF0V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x90Pa!Y\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x82a2\x12V[`\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!\x99\x90\x87\x90\x87\x90\x8A\x90`\x04\x01a4\x07V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a!\xB4W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a!\xD8\x91\x90a6'V[a!\xF5W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPPV[`\tT\x15\x80\x15\x90a\"tWP`\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\"?Wa\"?a1lV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\"i\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a1:V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a#\x07W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\"\xA1Wa\"\xA1a1lV[_\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\"\xE1\x83a6FV[\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[\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$a\x82a$\xEBV[`@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$\xA5Wa\x1E\x01\x82\x82a%NV[a\x0B\xBBa%\xC0V[_Q` a6\x9C_9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a\x0CFW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x15\x9Ea$\xADV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a% W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x15\xC3V[_Q` a6|_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%j\x91\x90a6pV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a%\xA2W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a%\xA7V[``\x91P[P\x91P\x91Pa%\xB7\x85\x83\x83a%\xDFV[\x95\x94PPPPPV[4\x15a\x0CFW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a%\xF4Wa%\xEF\x82a&>V[a&7V[\x81Q\x15\x80\x15a&\x0BWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a&4W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x15\xC3V[P\x80[\x93\x92PPPV[\x80Q\x15a&NW\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&\x9A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xBA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xDA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xFA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x1A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a':`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'Z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x9A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xBA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xDA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xFA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x1A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(:`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(Z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x9A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xBA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\xA0\x01`@R\x80`\x05\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\xFBW__\xFD[_` \x82\x84\x03\x12\x15a)\x10W__\xFD[a&7\x82a(\xEAV[_` \x82\x84\x03\x12\x15a))W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa)b`@\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\t\xFBW__\xFD[_` \x82\x84\x03\x12\x15a+WW__\xFD[a&7\x82a+1V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+\x97Wa+\x97a+`V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+\xC5Wa+\xC5a+`V[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a+\xDDW__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+\xFFWa+\xFFa+`V[`@R\x90P\x80a,\x0E\x83a+1V[\x81Ra,\x1C` \x84\x01a+1V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a,BW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,dWa,da+`V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a,\x8FW__\xFD[a,\x97a+tV[\x90Pa,\xA3\x83\x83a,2V[\x81Ra,\xB2\x83`@\x84\x01a,2V[` \x82\x01Ra,\xC4\x83`\x80\x84\x01a,2V[`@\x82\x01Ra,\xD6\x83`\xC0\x84\x01a,2V[``\x82\x01Ra,\xE9\x83a\x01\0\x84\x01a,2V[`\x80\x82\x01Ra,\xFC\x83a\x01@\x84\x01a,2V[`\xA0\x82\x01Ra-\x0F\x83a\x01\x80\x84\x01a,2V[`\xC0\x82\x01Ra-\"\x83a\x01\xC0\x84\x01a,2V[`\xE0\x82\x01Ra-5\x83a\x02\0\x84\x01a,2V[a\x01\0\x82\x01Ra-I\x83a\x02@\x84\x01a,2V[a\x01 \x82\x01Ra-]\x83a\x02\x80\x84\x01a,2V[a\x01@\x82\x01Ra-q\x83a\x02\xC0\x84\x01a,2V[a\x01`\x82\x01Ra-\x85\x83a\x03\0\x84\x01a,2V[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\x15a.\x1BW__\xFD[a.%\x84\x84a+\xCDV[\x91Pa.4\x84``\x85\x01a,~V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\t\xFBW__\xFD[_` \x82\x84\x03\x12\x15a.`W__\xFD[a&7\x82a.=V[__`@\x83\x85\x03\x12\x15a.zW__\xFD[a.\x83\x83a(\xEAV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x9DW__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a.\xADW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xC6Wa.\xC6a+`V[a.\xD9`\x1F\x82\x01`\x1F\x19\x16` \x01a+\x9DV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a.\xEDW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a/\x1CW__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/>Wa/>a+`V[`@\x90\x81R\x835\x82R` \x80\x85\x015\x90\x83\x01R\x83\x81\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[___a\x05`\x84\x86\x03\x12\x15a/\x7FW__\xFD[a/\x89\x85\x85a+\xCDV[\x92Pa/\x98\x85``\x86\x01a/\x0CV[\x91Pa/\xA7\x85`\xE0\x86\x01a,~V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a/\xC1W__\xFD[a/\xCA\x83a+1V[\x91Pa.4` \x84\x01a+1V[____a\x01 \x85\x87\x03\x12\x15a/\xECW__\xFD[a/\xF6\x86\x86a+\xCDV[\x93Pa0\x05\x86``\x87\x01a/\x0CV[\x92Pa0\x13`\xE0\x86\x01a.=V[\x91Pa0\"a\x01\0\x86\x01a(\xEAV[\x90P\x92\x95\x91\x94P\x92PV[____a\x05\x80\x85\x87\x03\x12\x15a0AW__\xFD[a0K\x86\x86a+\xCDV[\x93Pa0Z\x86``\x87\x01a/\x0CV[\x92P`\xE0\x85\x015\x91Pa0\"\x86a\x01\0\x87\x01a,~V[` \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[__`@\x83\x85\x03\x12\x15a0\xB7W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\n\x8FWa\n\x8Fa0\xC6V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a1%Wa1%a0\xF9V[\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\n\x8FWa\n\x8Fa0\xC6V[\x81\x81\x03\x81\x81\x11\x15a\n\x8FWa\n\x8Fa0\xC6V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a1\x98Wa1\x98a0\xF9V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_\x81a1\xBBWa1\xBBa0\xC6V[P_\x19\x01\x90V[_` \x82\x84\x03\x12\x15a1\xD2W__\xFD[PQ\x91\x90PV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a2\x04a1\xFE\x83\x87a1\xD9V[\x85a1\xD9V[\x92\x83RPP` \x01\x92\x91PPV[_\x82a2 Wa2 a0\xF9V[P\x06\x90V[\x80_[`\x05\x81\x10\x15a2GW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a2(V[PPPPV[a2b\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\x01Qa49`@\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\x01Ra6\x11a\x05\0\x83\x01\x85a2%V[a6\x1Fa\x05\xA0\x83\x01\x84a2MV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a67W__\xFD[\x81Q\x80\x15\x15\x81\x14a&7W__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a6gWa6ga0\xC6V[`\x01\x01\x92\x91PPV[_a&7\x82\x84a1\xD9V\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",
5302    );
5303    #[derive(serde::Serialize, serde::Deserialize)]
5304    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5305    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
5306```solidity
5307error AddressEmptyCode(address target);
5308```*/
5309    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5310    #[derive(Clone)]
5311    pub struct AddressEmptyCode {
5312        #[allow(missing_docs)]
5313        pub target: alloy::sol_types::private::Address,
5314    }
5315    #[allow(
5316        non_camel_case_types,
5317        non_snake_case,
5318        clippy::pub_underscore_fields,
5319        clippy::style
5320    )]
5321    const _: () = {
5322        use alloy::sol_types as alloy_sol_types;
5323        #[doc(hidden)]
5324        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5325        #[doc(hidden)]
5326        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5327        #[cfg(test)]
5328        #[allow(dead_code, unreachable_patterns)]
5329        fn _type_assertion(
5330            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5331        ) {
5332            match _t {
5333                alloy_sol_types::private::AssertTypeEq::<
5334                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5335                >(_) => {}
5336            }
5337        }
5338        #[automatically_derived]
5339        #[doc(hidden)]
5340        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
5341            fn from(value: AddressEmptyCode) -> Self {
5342                (value.target,)
5343            }
5344        }
5345        #[automatically_derived]
5346        #[doc(hidden)]
5347        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
5348            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5349                Self { target: tuple.0 }
5350            }
5351        }
5352        #[automatically_derived]
5353        impl alloy_sol_types::SolError for AddressEmptyCode {
5354            type Parameters<'a> = UnderlyingSolTuple<'a>;
5355            type Token<'a> = <Self::Parameters<
5356                'a,
5357            > as alloy_sol_types::SolType>::Token<'a>;
5358            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
5359            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
5360            #[inline]
5361            fn new<'a>(
5362                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5363            ) -> Self {
5364                tuple.into()
5365            }
5366            #[inline]
5367            fn tokenize(&self) -> Self::Token<'_> {
5368                (
5369                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5370                        &self.target,
5371                    ),
5372                )
5373            }
5374            #[inline]
5375            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5376                <Self::Parameters<
5377                    '_,
5378                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5379                    .map(Self::new)
5380            }
5381        }
5382    };
5383    #[derive(serde::Serialize, serde::Deserialize)]
5384    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5385    /**Custom error with signature `DeprecatedApi()` and selector `0x4e405c8d`.
5386```solidity
5387error DeprecatedApi();
5388```*/
5389    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5390    #[derive(Clone)]
5391    pub struct DeprecatedApi;
5392    #[allow(
5393        non_camel_case_types,
5394        non_snake_case,
5395        clippy::pub_underscore_fields,
5396        clippy::style
5397    )]
5398    const _: () = {
5399        use alloy::sol_types as alloy_sol_types;
5400        #[doc(hidden)]
5401        type UnderlyingSolTuple<'a> = ();
5402        #[doc(hidden)]
5403        type UnderlyingRustTuple<'a> = ();
5404        #[cfg(test)]
5405        #[allow(dead_code, unreachable_patterns)]
5406        fn _type_assertion(
5407            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5408        ) {
5409            match _t {
5410                alloy_sol_types::private::AssertTypeEq::<
5411                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5412                >(_) => {}
5413            }
5414        }
5415        #[automatically_derived]
5416        #[doc(hidden)]
5417        impl ::core::convert::From<DeprecatedApi> for UnderlyingRustTuple<'_> {
5418            fn from(value: DeprecatedApi) -> Self {
5419                ()
5420            }
5421        }
5422        #[automatically_derived]
5423        #[doc(hidden)]
5424        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DeprecatedApi {
5425            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5426                Self
5427            }
5428        }
5429        #[automatically_derived]
5430        impl alloy_sol_types::SolError for DeprecatedApi {
5431            type Parameters<'a> = UnderlyingSolTuple<'a>;
5432            type Token<'a> = <Self::Parameters<
5433                'a,
5434            > as alloy_sol_types::SolType>::Token<'a>;
5435            const SIGNATURE: &'static str = "DeprecatedApi()";
5436            const SELECTOR: [u8; 4] = [78u8, 64u8, 92u8, 141u8];
5437            #[inline]
5438            fn new<'a>(
5439                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5440            ) -> Self {
5441                tuple.into()
5442            }
5443            #[inline]
5444            fn tokenize(&self) -> Self::Token<'_> {
5445                ()
5446            }
5447            #[inline]
5448            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5449                <Self::Parameters<
5450                    '_,
5451                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5452                    .map(Self::new)
5453            }
5454        }
5455    };
5456    #[derive(serde::Serialize, serde::Deserialize)]
5457    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5458    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
5459```solidity
5460error ERC1967InvalidImplementation(address implementation);
5461```*/
5462    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5463    #[derive(Clone)]
5464    pub struct ERC1967InvalidImplementation {
5465        #[allow(missing_docs)]
5466        pub implementation: alloy::sol_types::private::Address,
5467    }
5468    #[allow(
5469        non_camel_case_types,
5470        non_snake_case,
5471        clippy::pub_underscore_fields,
5472        clippy::style
5473    )]
5474    const _: () = {
5475        use alloy::sol_types as alloy_sol_types;
5476        #[doc(hidden)]
5477        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5478        #[doc(hidden)]
5479        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5480        #[cfg(test)]
5481        #[allow(dead_code, unreachable_patterns)]
5482        fn _type_assertion(
5483            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5484        ) {
5485            match _t {
5486                alloy_sol_types::private::AssertTypeEq::<
5487                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5488                >(_) => {}
5489            }
5490        }
5491        #[automatically_derived]
5492        #[doc(hidden)]
5493        impl ::core::convert::From<ERC1967InvalidImplementation>
5494        for UnderlyingRustTuple<'_> {
5495            fn from(value: ERC1967InvalidImplementation) -> Self {
5496                (value.implementation,)
5497            }
5498        }
5499        #[automatically_derived]
5500        #[doc(hidden)]
5501        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5502        for ERC1967InvalidImplementation {
5503            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5504                Self { implementation: tuple.0 }
5505            }
5506        }
5507        #[automatically_derived]
5508        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
5509            type Parameters<'a> = UnderlyingSolTuple<'a>;
5510            type Token<'a> = <Self::Parameters<
5511                'a,
5512            > as alloy_sol_types::SolType>::Token<'a>;
5513            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
5514            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
5515            #[inline]
5516            fn new<'a>(
5517                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5518            ) -> Self {
5519                tuple.into()
5520            }
5521            #[inline]
5522            fn tokenize(&self) -> Self::Token<'_> {
5523                (
5524                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5525                        &self.implementation,
5526                    ),
5527                )
5528            }
5529            #[inline]
5530            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5531                <Self::Parameters<
5532                    '_,
5533                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5534                    .map(Self::new)
5535            }
5536        }
5537    };
5538    #[derive(serde::Serialize, serde::Deserialize)]
5539    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5540    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
5541```solidity
5542error ERC1967NonPayable();
5543```*/
5544    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5545    #[derive(Clone)]
5546    pub struct ERC1967NonPayable;
5547    #[allow(
5548        non_camel_case_types,
5549        non_snake_case,
5550        clippy::pub_underscore_fields,
5551        clippy::style
5552    )]
5553    const _: () = {
5554        use alloy::sol_types as alloy_sol_types;
5555        #[doc(hidden)]
5556        type UnderlyingSolTuple<'a> = ();
5557        #[doc(hidden)]
5558        type UnderlyingRustTuple<'a> = ();
5559        #[cfg(test)]
5560        #[allow(dead_code, unreachable_patterns)]
5561        fn _type_assertion(
5562            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5563        ) {
5564            match _t {
5565                alloy_sol_types::private::AssertTypeEq::<
5566                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5567                >(_) => {}
5568            }
5569        }
5570        #[automatically_derived]
5571        #[doc(hidden)]
5572        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
5573            fn from(value: ERC1967NonPayable) -> Self {
5574                ()
5575            }
5576        }
5577        #[automatically_derived]
5578        #[doc(hidden)]
5579        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
5580            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5581                Self
5582            }
5583        }
5584        #[automatically_derived]
5585        impl alloy_sol_types::SolError for ERC1967NonPayable {
5586            type Parameters<'a> = UnderlyingSolTuple<'a>;
5587            type Token<'a> = <Self::Parameters<
5588                'a,
5589            > as alloy_sol_types::SolType>::Token<'a>;
5590            const SIGNATURE: &'static str = "ERC1967NonPayable()";
5591            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
5592            #[inline]
5593            fn new<'a>(
5594                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5595            ) -> Self {
5596                tuple.into()
5597            }
5598            #[inline]
5599            fn tokenize(&self) -> Self::Token<'_> {
5600                ()
5601            }
5602            #[inline]
5603            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5604                <Self::Parameters<
5605                    '_,
5606                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5607                    .map(Self::new)
5608            }
5609        }
5610    };
5611    #[derive(serde::Serialize, serde::Deserialize)]
5612    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5613    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
5614```solidity
5615error FailedInnerCall();
5616```*/
5617    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5618    #[derive(Clone)]
5619    pub struct FailedInnerCall;
5620    #[allow(
5621        non_camel_case_types,
5622        non_snake_case,
5623        clippy::pub_underscore_fields,
5624        clippy::style
5625    )]
5626    const _: () = {
5627        use alloy::sol_types as alloy_sol_types;
5628        #[doc(hidden)]
5629        type UnderlyingSolTuple<'a> = ();
5630        #[doc(hidden)]
5631        type UnderlyingRustTuple<'a> = ();
5632        #[cfg(test)]
5633        #[allow(dead_code, unreachable_patterns)]
5634        fn _type_assertion(
5635            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5636        ) {
5637            match _t {
5638                alloy_sol_types::private::AssertTypeEq::<
5639                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5640                >(_) => {}
5641            }
5642        }
5643        #[automatically_derived]
5644        #[doc(hidden)]
5645        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
5646            fn from(value: FailedInnerCall) -> Self {
5647                ()
5648            }
5649        }
5650        #[automatically_derived]
5651        #[doc(hidden)]
5652        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
5653            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5654                Self
5655            }
5656        }
5657        #[automatically_derived]
5658        impl alloy_sol_types::SolError for FailedInnerCall {
5659            type Parameters<'a> = UnderlyingSolTuple<'a>;
5660            type Token<'a> = <Self::Parameters<
5661                'a,
5662            > as alloy_sol_types::SolType>::Token<'a>;
5663            const SIGNATURE: &'static str = "FailedInnerCall()";
5664            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
5665            #[inline]
5666            fn new<'a>(
5667                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5668            ) -> Self {
5669                tuple.into()
5670            }
5671            #[inline]
5672            fn tokenize(&self) -> Self::Token<'_> {
5673                ()
5674            }
5675            #[inline]
5676            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5677                <Self::Parameters<
5678                    '_,
5679                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5680                    .map(Self::new)
5681            }
5682        }
5683    };
5684    #[derive(serde::Serialize, serde::Deserialize)]
5685    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5686    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
5687```solidity
5688error InsufficientSnapshotHistory();
5689```*/
5690    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5691    #[derive(Clone)]
5692    pub struct InsufficientSnapshotHistory;
5693    #[allow(
5694        non_camel_case_types,
5695        non_snake_case,
5696        clippy::pub_underscore_fields,
5697        clippy::style
5698    )]
5699    const _: () = {
5700        use alloy::sol_types as alloy_sol_types;
5701        #[doc(hidden)]
5702        type UnderlyingSolTuple<'a> = ();
5703        #[doc(hidden)]
5704        type UnderlyingRustTuple<'a> = ();
5705        #[cfg(test)]
5706        #[allow(dead_code, unreachable_patterns)]
5707        fn _type_assertion(
5708            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5709        ) {
5710            match _t {
5711                alloy_sol_types::private::AssertTypeEq::<
5712                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5713                >(_) => {}
5714            }
5715        }
5716        #[automatically_derived]
5717        #[doc(hidden)]
5718        impl ::core::convert::From<InsufficientSnapshotHistory>
5719        for UnderlyingRustTuple<'_> {
5720            fn from(value: InsufficientSnapshotHistory) -> Self {
5721                ()
5722            }
5723        }
5724        #[automatically_derived]
5725        #[doc(hidden)]
5726        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5727        for InsufficientSnapshotHistory {
5728            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5729                Self
5730            }
5731        }
5732        #[automatically_derived]
5733        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
5734            type Parameters<'a> = UnderlyingSolTuple<'a>;
5735            type Token<'a> = <Self::Parameters<
5736                'a,
5737            > as alloy_sol_types::SolType>::Token<'a>;
5738            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
5739            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
5740            #[inline]
5741            fn new<'a>(
5742                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5743            ) -> Self {
5744                tuple.into()
5745            }
5746            #[inline]
5747            fn tokenize(&self) -> Self::Token<'_> {
5748                ()
5749            }
5750            #[inline]
5751            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5752                <Self::Parameters<
5753                    '_,
5754                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5755                    .map(Self::new)
5756            }
5757        }
5758    };
5759    #[derive(serde::Serialize, serde::Deserialize)]
5760    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5761    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
5762```solidity
5763error InvalidAddress();
5764```*/
5765    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5766    #[derive(Clone)]
5767    pub struct InvalidAddress;
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> = ();
5778        #[doc(hidden)]
5779        type UnderlyingRustTuple<'a> = ();
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<InvalidAddress> for UnderlyingRustTuple<'_> {
5794            fn from(value: InvalidAddress) -> Self {
5795                ()
5796            }
5797        }
5798        #[automatically_derived]
5799        #[doc(hidden)]
5800        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
5801            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5802                Self
5803            }
5804        }
5805        #[automatically_derived]
5806        impl alloy_sol_types::SolError for InvalidAddress {
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 = "InvalidAddress()";
5812            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
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            }
5823            #[inline]
5824            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5825                <Self::Parameters<
5826                    '_,
5827                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5828                    .map(Self::new)
5829            }
5830        }
5831    };
5832    #[derive(serde::Serialize, serde::Deserialize)]
5833    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5834    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
5835```solidity
5836error InvalidArgs();
5837```*/
5838    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5839    #[derive(Clone)]
5840    pub struct InvalidArgs;
5841    #[allow(
5842        non_camel_case_types,
5843        non_snake_case,
5844        clippy::pub_underscore_fields,
5845        clippy::style
5846    )]
5847    const _: () = {
5848        use alloy::sol_types as alloy_sol_types;
5849        #[doc(hidden)]
5850        type UnderlyingSolTuple<'a> = ();
5851        #[doc(hidden)]
5852        type UnderlyingRustTuple<'a> = ();
5853        #[cfg(test)]
5854        #[allow(dead_code, unreachable_patterns)]
5855        fn _type_assertion(
5856            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5857        ) {
5858            match _t {
5859                alloy_sol_types::private::AssertTypeEq::<
5860                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5861                >(_) => {}
5862            }
5863        }
5864        #[automatically_derived]
5865        #[doc(hidden)]
5866        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
5867            fn from(value: InvalidArgs) -> Self {
5868                ()
5869            }
5870        }
5871        #[automatically_derived]
5872        #[doc(hidden)]
5873        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
5874            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5875                Self
5876            }
5877        }
5878        #[automatically_derived]
5879        impl alloy_sol_types::SolError for InvalidArgs {
5880            type Parameters<'a> = UnderlyingSolTuple<'a>;
5881            type Token<'a> = <Self::Parameters<
5882                'a,
5883            > as alloy_sol_types::SolType>::Token<'a>;
5884            const SIGNATURE: &'static str = "InvalidArgs()";
5885            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
5886            #[inline]
5887            fn new<'a>(
5888                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5889            ) -> Self {
5890                tuple.into()
5891            }
5892            #[inline]
5893            fn tokenize(&self) -> Self::Token<'_> {
5894                ()
5895            }
5896            #[inline]
5897            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5898                <Self::Parameters<
5899                    '_,
5900                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5901                    .map(Self::new)
5902            }
5903        }
5904    };
5905    #[derive(serde::Serialize, serde::Deserialize)]
5906    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5907    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
5908```solidity
5909error InvalidHotShotBlockForCommitmentCheck();
5910```*/
5911    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5912    #[derive(Clone)]
5913    pub struct InvalidHotShotBlockForCommitmentCheck;
5914    #[allow(
5915        non_camel_case_types,
5916        non_snake_case,
5917        clippy::pub_underscore_fields,
5918        clippy::style
5919    )]
5920    const _: () = {
5921        use alloy::sol_types as alloy_sol_types;
5922        #[doc(hidden)]
5923        type UnderlyingSolTuple<'a> = ();
5924        #[doc(hidden)]
5925        type UnderlyingRustTuple<'a> = ();
5926        #[cfg(test)]
5927        #[allow(dead_code, unreachable_patterns)]
5928        fn _type_assertion(
5929            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5930        ) {
5931            match _t {
5932                alloy_sol_types::private::AssertTypeEq::<
5933                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5934                >(_) => {}
5935            }
5936        }
5937        #[automatically_derived]
5938        #[doc(hidden)]
5939        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck>
5940        for UnderlyingRustTuple<'_> {
5941            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
5942                ()
5943            }
5944        }
5945        #[automatically_derived]
5946        #[doc(hidden)]
5947        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5948        for InvalidHotShotBlockForCommitmentCheck {
5949            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5950                Self
5951            }
5952        }
5953        #[automatically_derived]
5954        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
5955            type Parameters<'a> = UnderlyingSolTuple<'a>;
5956            type Token<'a> = <Self::Parameters<
5957                'a,
5958            > as alloy_sol_types::SolType>::Token<'a>;
5959            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
5960            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
5961            #[inline]
5962            fn new<'a>(
5963                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5964            ) -> Self {
5965                tuple.into()
5966            }
5967            #[inline]
5968            fn tokenize(&self) -> Self::Token<'_> {
5969                ()
5970            }
5971            #[inline]
5972            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5973                <Self::Parameters<
5974                    '_,
5975                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5976                    .map(Self::new)
5977            }
5978        }
5979    };
5980    #[derive(serde::Serialize, serde::Deserialize)]
5981    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5982    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
5983```solidity
5984error InvalidInitialization();
5985```*/
5986    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5987    #[derive(Clone)]
5988    pub struct InvalidInitialization;
5989    #[allow(
5990        non_camel_case_types,
5991        non_snake_case,
5992        clippy::pub_underscore_fields,
5993        clippy::style
5994    )]
5995    const _: () = {
5996        use alloy::sol_types as alloy_sol_types;
5997        #[doc(hidden)]
5998        type UnderlyingSolTuple<'a> = ();
5999        #[doc(hidden)]
6000        type UnderlyingRustTuple<'a> = ();
6001        #[cfg(test)]
6002        #[allow(dead_code, unreachable_patterns)]
6003        fn _type_assertion(
6004            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6005        ) {
6006            match _t {
6007                alloy_sol_types::private::AssertTypeEq::<
6008                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6009                >(_) => {}
6010            }
6011        }
6012        #[automatically_derived]
6013        #[doc(hidden)]
6014        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
6015            fn from(value: InvalidInitialization) -> Self {
6016                ()
6017            }
6018        }
6019        #[automatically_derived]
6020        #[doc(hidden)]
6021        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
6022            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6023                Self
6024            }
6025        }
6026        #[automatically_derived]
6027        impl alloy_sol_types::SolError for InvalidInitialization {
6028            type Parameters<'a> = UnderlyingSolTuple<'a>;
6029            type Token<'a> = <Self::Parameters<
6030                'a,
6031            > as alloy_sol_types::SolType>::Token<'a>;
6032            const SIGNATURE: &'static str = "InvalidInitialization()";
6033            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
6034            #[inline]
6035            fn new<'a>(
6036                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6037            ) -> Self {
6038                tuple.into()
6039            }
6040            #[inline]
6041            fn tokenize(&self) -> Self::Token<'_> {
6042                ()
6043            }
6044            #[inline]
6045            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6046                <Self::Parameters<
6047                    '_,
6048                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6049                    .map(Self::new)
6050            }
6051        }
6052    };
6053    #[derive(serde::Serialize, serde::Deserialize)]
6054    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6055    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
6056```solidity
6057error InvalidMaxStateHistory();
6058```*/
6059    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6060    #[derive(Clone)]
6061    pub struct InvalidMaxStateHistory;
6062    #[allow(
6063        non_camel_case_types,
6064        non_snake_case,
6065        clippy::pub_underscore_fields,
6066        clippy::style
6067    )]
6068    const _: () = {
6069        use alloy::sol_types as alloy_sol_types;
6070        #[doc(hidden)]
6071        type UnderlyingSolTuple<'a> = ();
6072        #[doc(hidden)]
6073        type UnderlyingRustTuple<'a> = ();
6074        #[cfg(test)]
6075        #[allow(dead_code, unreachable_patterns)]
6076        fn _type_assertion(
6077            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6078        ) {
6079            match _t {
6080                alloy_sol_types::private::AssertTypeEq::<
6081                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6082                >(_) => {}
6083            }
6084        }
6085        #[automatically_derived]
6086        #[doc(hidden)]
6087        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
6088            fn from(value: InvalidMaxStateHistory) -> Self {
6089                ()
6090            }
6091        }
6092        #[automatically_derived]
6093        #[doc(hidden)]
6094        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
6095            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6096                Self
6097            }
6098        }
6099        #[automatically_derived]
6100        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
6101            type Parameters<'a> = UnderlyingSolTuple<'a>;
6102            type Token<'a> = <Self::Parameters<
6103                'a,
6104            > as alloy_sol_types::SolType>::Token<'a>;
6105            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
6106            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
6107            #[inline]
6108            fn new<'a>(
6109                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6110            ) -> Self {
6111                tuple.into()
6112            }
6113            #[inline]
6114            fn tokenize(&self) -> Self::Token<'_> {
6115                ()
6116            }
6117            #[inline]
6118            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6119                <Self::Parameters<
6120                    '_,
6121                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6122                    .map(Self::new)
6123            }
6124        }
6125    };
6126    #[derive(serde::Serialize, serde::Deserialize)]
6127    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6128    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
6129```solidity
6130error InvalidProof();
6131```*/
6132    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6133    #[derive(Clone)]
6134    pub struct InvalidProof;
6135    #[allow(
6136        non_camel_case_types,
6137        non_snake_case,
6138        clippy::pub_underscore_fields,
6139        clippy::style
6140    )]
6141    const _: () = {
6142        use alloy::sol_types as alloy_sol_types;
6143        #[doc(hidden)]
6144        type UnderlyingSolTuple<'a> = ();
6145        #[doc(hidden)]
6146        type UnderlyingRustTuple<'a> = ();
6147        #[cfg(test)]
6148        #[allow(dead_code, unreachable_patterns)]
6149        fn _type_assertion(
6150            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6151        ) {
6152            match _t {
6153                alloy_sol_types::private::AssertTypeEq::<
6154                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6155                >(_) => {}
6156            }
6157        }
6158        #[automatically_derived]
6159        #[doc(hidden)]
6160        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
6161            fn from(value: InvalidProof) -> Self {
6162                ()
6163            }
6164        }
6165        #[automatically_derived]
6166        #[doc(hidden)]
6167        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
6168            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6169                Self
6170            }
6171        }
6172        #[automatically_derived]
6173        impl alloy_sol_types::SolError for InvalidProof {
6174            type Parameters<'a> = UnderlyingSolTuple<'a>;
6175            type Token<'a> = <Self::Parameters<
6176                'a,
6177            > as alloy_sol_types::SolType>::Token<'a>;
6178            const SIGNATURE: &'static str = "InvalidProof()";
6179            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
6180            #[inline]
6181            fn new<'a>(
6182                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6183            ) -> Self {
6184                tuple.into()
6185            }
6186            #[inline]
6187            fn tokenize(&self) -> Self::Token<'_> {
6188                ()
6189            }
6190            #[inline]
6191            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6192                <Self::Parameters<
6193                    '_,
6194                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6195                    .map(Self::new)
6196            }
6197        }
6198    };
6199    #[derive(serde::Serialize, serde::Deserialize)]
6200    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6201    /**Custom error with signature `InvalidScalar()` and selector `0x05b05ccc`.
6202```solidity
6203error InvalidScalar();
6204```*/
6205    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6206    #[derive(Clone)]
6207    pub struct InvalidScalar;
6208    #[allow(
6209        non_camel_case_types,
6210        non_snake_case,
6211        clippy::pub_underscore_fields,
6212        clippy::style
6213    )]
6214    const _: () = {
6215        use alloy::sol_types as alloy_sol_types;
6216        #[doc(hidden)]
6217        type UnderlyingSolTuple<'a> = ();
6218        #[doc(hidden)]
6219        type UnderlyingRustTuple<'a> = ();
6220        #[cfg(test)]
6221        #[allow(dead_code, unreachable_patterns)]
6222        fn _type_assertion(
6223            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6224        ) {
6225            match _t {
6226                alloy_sol_types::private::AssertTypeEq::<
6227                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6228                >(_) => {}
6229            }
6230        }
6231        #[automatically_derived]
6232        #[doc(hidden)]
6233        impl ::core::convert::From<InvalidScalar> for UnderlyingRustTuple<'_> {
6234            fn from(value: InvalidScalar) -> Self {
6235                ()
6236            }
6237        }
6238        #[automatically_derived]
6239        #[doc(hidden)]
6240        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidScalar {
6241            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6242                Self
6243            }
6244        }
6245        #[automatically_derived]
6246        impl alloy_sol_types::SolError for InvalidScalar {
6247            type Parameters<'a> = UnderlyingSolTuple<'a>;
6248            type Token<'a> = <Self::Parameters<
6249                'a,
6250            > as alloy_sol_types::SolType>::Token<'a>;
6251            const SIGNATURE: &'static str = "InvalidScalar()";
6252            const SELECTOR: [u8; 4] = [5u8, 176u8, 92u8, 204u8];
6253            #[inline]
6254            fn new<'a>(
6255                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6256            ) -> Self {
6257                tuple.into()
6258            }
6259            #[inline]
6260            fn tokenize(&self) -> Self::Token<'_> {
6261                ()
6262            }
6263            #[inline]
6264            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6265                <Self::Parameters<
6266                    '_,
6267                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6268                    .map(Self::new)
6269            }
6270        }
6271    };
6272    #[derive(serde::Serialize, serde::Deserialize)]
6273    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6274    /**Custom error with signature `MissingEpochRootUpdate()` and selector `0x080ae8d9`.
6275```solidity
6276error MissingEpochRootUpdate();
6277```*/
6278    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6279    #[derive(Clone)]
6280    pub struct MissingEpochRootUpdate;
6281    #[allow(
6282        non_camel_case_types,
6283        non_snake_case,
6284        clippy::pub_underscore_fields,
6285        clippy::style
6286    )]
6287    const _: () = {
6288        use alloy::sol_types as alloy_sol_types;
6289        #[doc(hidden)]
6290        type UnderlyingSolTuple<'a> = ();
6291        #[doc(hidden)]
6292        type UnderlyingRustTuple<'a> = ();
6293        #[cfg(test)]
6294        #[allow(dead_code, unreachable_patterns)]
6295        fn _type_assertion(
6296            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6297        ) {
6298            match _t {
6299                alloy_sol_types::private::AssertTypeEq::<
6300                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6301                >(_) => {}
6302            }
6303        }
6304        #[automatically_derived]
6305        #[doc(hidden)]
6306        impl ::core::convert::From<MissingEpochRootUpdate> for UnderlyingRustTuple<'_> {
6307            fn from(value: MissingEpochRootUpdate) -> Self {
6308                ()
6309            }
6310        }
6311        #[automatically_derived]
6312        #[doc(hidden)]
6313        impl ::core::convert::From<UnderlyingRustTuple<'_>> for MissingEpochRootUpdate {
6314            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6315                Self
6316            }
6317        }
6318        #[automatically_derived]
6319        impl alloy_sol_types::SolError for MissingEpochRootUpdate {
6320            type Parameters<'a> = UnderlyingSolTuple<'a>;
6321            type Token<'a> = <Self::Parameters<
6322                'a,
6323            > as alloy_sol_types::SolType>::Token<'a>;
6324            const SIGNATURE: &'static str = "MissingEpochRootUpdate()";
6325            const SELECTOR: [u8; 4] = [8u8, 10u8, 232u8, 217u8];
6326            #[inline]
6327            fn new<'a>(
6328                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6329            ) -> Self {
6330                tuple.into()
6331            }
6332            #[inline]
6333            fn tokenize(&self) -> Self::Token<'_> {
6334                ()
6335            }
6336            #[inline]
6337            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6338                <Self::Parameters<
6339                    '_,
6340                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6341                    .map(Self::new)
6342            }
6343        }
6344    };
6345    #[derive(serde::Serialize, serde::Deserialize)]
6346    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6347    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
6348```solidity
6349error NoChangeRequired();
6350```*/
6351    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6352    #[derive(Clone)]
6353    pub struct NoChangeRequired;
6354    #[allow(
6355        non_camel_case_types,
6356        non_snake_case,
6357        clippy::pub_underscore_fields,
6358        clippy::style
6359    )]
6360    const _: () = {
6361        use alloy::sol_types as alloy_sol_types;
6362        #[doc(hidden)]
6363        type UnderlyingSolTuple<'a> = ();
6364        #[doc(hidden)]
6365        type UnderlyingRustTuple<'a> = ();
6366        #[cfg(test)]
6367        #[allow(dead_code, unreachable_patterns)]
6368        fn _type_assertion(
6369            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6370        ) {
6371            match _t {
6372                alloy_sol_types::private::AssertTypeEq::<
6373                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6374                >(_) => {}
6375            }
6376        }
6377        #[automatically_derived]
6378        #[doc(hidden)]
6379        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
6380            fn from(value: NoChangeRequired) -> Self {
6381                ()
6382            }
6383        }
6384        #[automatically_derived]
6385        #[doc(hidden)]
6386        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
6387            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6388                Self
6389            }
6390        }
6391        #[automatically_derived]
6392        impl alloy_sol_types::SolError for NoChangeRequired {
6393            type Parameters<'a> = UnderlyingSolTuple<'a>;
6394            type Token<'a> = <Self::Parameters<
6395                'a,
6396            > as alloy_sol_types::SolType>::Token<'a>;
6397            const SIGNATURE: &'static str = "NoChangeRequired()";
6398            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
6399            #[inline]
6400            fn new<'a>(
6401                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6402            ) -> Self {
6403                tuple.into()
6404            }
6405            #[inline]
6406            fn tokenize(&self) -> Self::Token<'_> {
6407                ()
6408            }
6409            #[inline]
6410            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6411                <Self::Parameters<
6412                    '_,
6413                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6414                    .map(Self::new)
6415            }
6416        }
6417    };
6418    #[derive(serde::Serialize, serde::Deserialize)]
6419    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6420    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
6421```solidity
6422error NotInitializing();
6423```*/
6424    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6425    #[derive(Clone)]
6426    pub struct NotInitializing;
6427    #[allow(
6428        non_camel_case_types,
6429        non_snake_case,
6430        clippy::pub_underscore_fields,
6431        clippy::style
6432    )]
6433    const _: () = {
6434        use alloy::sol_types as alloy_sol_types;
6435        #[doc(hidden)]
6436        type UnderlyingSolTuple<'a> = ();
6437        #[doc(hidden)]
6438        type UnderlyingRustTuple<'a> = ();
6439        #[cfg(test)]
6440        #[allow(dead_code, unreachable_patterns)]
6441        fn _type_assertion(
6442            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6443        ) {
6444            match _t {
6445                alloy_sol_types::private::AssertTypeEq::<
6446                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6447                >(_) => {}
6448            }
6449        }
6450        #[automatically_derived]
6451        #[doc(hidden)]
6452        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
6453            fn from(value: NotInitializing) -> Self {
6454                ()
6455            }
6456        }
6457        #[automatically_derived]
6458        #[doc(hidden)]
6459        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
6460            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6461                Self
6462            }
6463        }
6464        #[automatically_derived]
6465        impl alloy_sol_types::SolError for NotInitializing {
6466            type Parameters<'a> = UnderlyingSolTuple<'a>;
6467            type Token<'a> = <Self::Parameters<
6468                'a,
6469            > as alloy_sol_types::SolType>::Token<'a>;
6470            const SIGNATURE: &'static str = "NotInitializing()";
6471            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
6472            #[inline]
6473            fn new<'a>(
6474                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6475            ) -> Self {
6476                tuple.into()
6477            }
6478            #[inline]
6479            fn tokenize(&self) -> Self::Token<'_> {
6480                ()
6481            }
6482            #[inline]
6483            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6484                <Self::Parameters<
6485                    '_,
6486                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6487                    .map(Self::new)
6488            }
6489        }
6490    };
6491    #[derive(serde::Serialize, serde::Deserialize)]
6492    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6493    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
6494```solidity
6495error OutdatedState();
6496```*/
6497    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6498    #[derive(Clone)]
6499    pub struct OutdatedState;
6500    #[allow(
6501        non_camel_case_types,
6502        non_snake_case,
6503        clippy::pub_underscore_fields,
6504        clippy::style
6505    )]
6506    const _: () = {
6507        use alloy::sol_types as alloy_sol_types;
6508        #[doc(hidden)]
6509        type UnderlyingSolTuple<'a> = ();
6510        #[doc(hidden)]
6511        type UnderlyingRustTuple<'a> = ();
6512        #[cfg(test)]
6513        #[allow(dead_code, unreachable_patterns)]
6514        fn _type_assertion(
6515            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6516        ) {
6517            match _t {
6518                alloy_sol_types::private::AssertTypeEq::<
6519                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6520                >(_) => {}
6521            }
6522        }
6523        #[automatically_derived]
6524        #[doc(hidden)]
6525        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
6526            fn from(value: OutdatedState) -> Self {
6527                ()
6528            }
6529        }
6530        #[automatically_derived]
6531        #[doc(hidden)]
6532        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
6533            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6534                Self
6535            }
6536        }
6537        #[automatically_derived]
6538        impl alloy_sol_types::SolError for OutdatedState {
6539            type Parameters<'a> = UnderlyingSolTuple<'a>;
6540            type Token<'a> = <Self::Parameters<
6541                'a,
6542            > as alloy_sol_types::SolType>::Token<'a>;
6543            const SIGNATURE: &'static str = "OutdatedState()";
6544            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
6545            #[inline]
6546            fn new<'a>(
6547                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6548            ) -> Self {
6549                tuple.into()
6550            }
6551            #[inline]
6552            fn tokenize(&self) -> Self::Token<'_> {
6553                ()
6554            }
6555            #[inline]
6556            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6557                <Self::Parameters<
6558                    '_,
6559                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6560                    .map(Self::new)
6561            }
6562        }
6563    };
6564    #[derive(serde::Serialize, serde::Deserialize)]
6565    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6566    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
6567```solidity
6568error OwnableInvalidOwner(address owner);
6569```*/
6570    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6571    #[derive(Clone)]
6572    pub struct OwnableInvalidOwner {
6573        #[allow(missing_docs)]
6574        pub owner: alloy::sol_types::private::Address,
6575    }
6576    #[allow(
6577        non_camel_case_types,
6578        non_snake_case,
6579        clippy::pub_underscore_fields,
6580        clippy::style
6581    )]
6582    const _: () = {
6583        use alloy::sol_types as alloy_sol_types;
6584        #[doc(hidden)]
6585        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6586        #[doc(hidden)]
6587        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6588        #[cfg(test)]
6589        #[allow(dead_code, unreachable_patterns)]
6590        fn _type_assertion(
6591            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6592        ) {
6593            match _t {
6594                alloy_sol_types::private::AssertTypeEq::<
6595                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6596                >(_) => {}
6597            }
6598        }
6599        #[automatically_derived]
6600        #[doc(hidden)]
6601        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
6602            fn from(value: OwnableInvalidOwner) -> Self {
6603                (value.owner,)
6604            }
6605        }
6606        #[automatically_derived]
6607        #[doc(hidden)]
6608        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
6609            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6610                Self { owner: tuple.0 }
6611            }
6612        }
6613        #[automatically_derived]
6614        impl alloy_sol_types::SolError for OwnableInvalidOwner {
6615            type Parameters<'a> = UnderlyingSolTuple<'a>;
6616            type Token<'a> = <Self::Parameters<
6617                'a,
6618            > as alloy_sol_types::SolType>::Token<'a>;
6619            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
6620            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
6621            #[inline]
6622            fn new<'a>(
6623                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6624            ) -> Self {
6625                tuple.into()
6626            }
6627            #[inline]
6628            fn tokenize(&self) -> Self::Token<'_> {
6629                (
6630                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6631                        &self.owner,
6632                    ),
6633                )
6634            }
6635            #[inline]
6636            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6637                <Self::Parameters<
6638                    '_,
6639                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6640                    .map(Self::new)
6641            }
6642        }
6643    };
6644    #[derive(serde::Serialize, serde::Deserialize)]
6645    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6646    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
6647```solidity
6648error OwnableUnauthorizedAccount(address account);
6649```*/
6650    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6651    #[derive(Clone)]
6652    pub struct OwnableUnauthorizedAccount {
6653        #[allow(missing_docs)]
6654        pub account: alloy::sol_types::private::Address,
6655    }
6656    #[allow(
6657        non_camel_case_types,
6658        non_snake_case,
6659        clippy::pub_underscore_fields,
6660        clippy::style
6661    )]
6662    const _: () = {
6663        use alloy::sol_types as alloy_sol_types;
6664        #[doc(hidden)]
6665        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6666        #[doc(hidden)]
6667        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6668        #[cfg(test)]
6669        #[allow(dead_code, unreachable_patterns)]
6670        fn _type_assertion(
6671            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6672        ) {
6673            match _t {
6674                alloy_sol_types::private::AssertTypeEq::<
6675                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6676                >(_) => {}
6677            }
6678        }
6679        #[automatically_derived]
6680        #[doc(hidden)]
6681        impl ::core::convert::From<OwnableUnauthorizedAccount>
6682        for UnderlyingRustTuple<'_> {
6683            fn from(value: OwnableUnauthorizedAccount) -> Self {
6684                (value.account,)
6685            }
6686        }
6687        #[automatically_derived]
6688        #[doc(hidden)]
6689        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6690        for OwnableUnauthorizedAccount {
6691            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6692                Self { account: tuple.0 }
6693            }
6694        }
6695        #[automatically_derived]
6696        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
6697            type Parameters<'a> = UnderlyingSolTuple<'a>;
6698            type Token<'a> = <Self::Parameters<
6699                'a,
6700            > as alloy_sol_types::SolType>::Token<'a>;
6701            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
6702            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
6703            #[inline]
6704            fn new<'a>(
6705                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6706            ) -> Self {
6707                tuple.into()
6708            }
6709            #[inline]
6710            fn tokenize(&self) -> Self::Token<'_> {
6711                (
6712                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6713                        &self.account,
6714                    ),
6715                )
6716            }
6717            #[inline]
6718            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6719                <Self::Parameters<
6720                    '_,
6721                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6722                    .map(Self::new)
6723            }
6724        }
6725    };
6726    #[derive(serde::Serialize, serde::Deserialize)]
6727    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6728    /**Custom error with signature `OwnershipCannotBeRenounced()` and selector `0x2fab92ca`.
6729```solidity
6730error OwnershipCannotBeRenounced();
6731```*/
6732    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6733    #[derive(Clone)]
6734    pub struct OwnershipCannotBeRenounced;
6735    #[allow(
6736        non_camel_case_types,
6737        non_snake_case,
6738        clippy::pub_underscore_fields,
6739        clippy::style
6740    )]
6741    const _: () = {
6742        use alloy::sol_types as alloy_sol_types;
6743        #[doc(hidden)]
6744        type UnderlyingSolTuple<'a> = ();
6745        #[doc(hidden)]
6746        type UnderlyingRustTuple<'a> = ();
6747        #[cfg(test)]
6748        #[allow(dead_code, unreachable_patterns)]
6749        fn _type_assertion(
6750            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6751        ) {
6752            match _t {
6753                alloy_sol_types::private::AssertTypeEq::<
6754                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6755                >(_) => {}
6756            }
6757        }
6758        #[automatically_derived]
6759        #[doc(hidden)]
6760        impl ::core::convert::From<OwnershipCannotBeRenounced>
6761        for UnderlyingRustTuple<'_> {
6762            fn from(value: OwnershipCannotBeRenounced) -> Self {
6763                ()
6764            }
6765        }
6766        #[automatically_derived]
6767        #[doc(hidden)]
6768        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6769        for OwnershipCannotBeRenounced {
6770            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6771                Self
6772            }
6773        }
6774        #[automatically_derived]
6775        impl alloy_sol_types::SolError for OwnershipCannotBeRenounced {
6776            type Parameters<'a> = UnderlyingSolTuple<'a>;
6777            type Token<'a> = <Self::Parameters<
6778                'a,
6779            > as alloy_sol_types::SolType>::Token<'a>;
6780            const SIGNATURE: &'static str = "OwnershipCannotBeRenounced()";
6781            const SELECTOR: [u8; 4] = [47u8, 171u8, 146u8, 202u8];
6782            #[inline]
6783            fn new<'a>(
6784                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6785            ) -> Self {
6786                tuple.into()
6787            }
6788            #[inline]
6789            fn tokenize(&self) -> Self::Token<'_> {
6790                ()
6791            }
6792            #[inline]
6793            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6794                <Self::Parameters<
6795                    '_,
6796                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6797                    .map(Self::new)
6798            }
6799        }
6800    };
6801    #[derive(serde::Serialize, serde::Deserialize)]
6802    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6803    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
6804```solidity
6805error ProverNotPermissioned();
6806```*/
6807    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6808    #[derive(Clone)]
6809    pub struct ProverNotPermissioned;
6810    #[allow(
6811        non_camel_case_types,
6812        non_snake_case,
6813        clippy::pub_underscore_fields,
6814        clippy::style
6815    )]
6816    const _: () = {
6817        use alloy::sol_types as alloy_sol_types;
6818        #[doc(hidden)]
6819        type UnderlyingSolTuple<'a> = ();
6820        #[doc(hidden)]
6821        type UnderlyingRustTuple<'a> = ();
6822        #[cfg(test)]
6823        #[allow(dead_code, unreachable_patterns)]
6824        fn _type_assertion(
6825            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6826        ) {
6827            match _t {
6828                alloy_sol_types::private::AssertTypeEq::<
6829                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6830                >(_) => {}
6831            }
6832        }
6833        #[automatically_derived]
6834        #[doc(hidden)]
6835        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
6836            fn from(value: ProverNotPermissioned) -> Self {
6837                ()
6838            }
6839        }
6840        #[automatically_derived]
6841        #[doc(hidden)]
6842        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
6843            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6844                Self
6845            }
6846        }
6847        #[automatically_derived]
6848        impl alloy_sol_types::SolError for ProverNotPermissioned {
6849            type Parameters<'a> = UnderlyingSolTuple<'a>;
6850            type Token<'a> = <Self::Parameters<
6851                'a,
6852            > as alloy_sol_types::SolType>::Token<'a>;
6853            const SIGNATURE: &'static str = "ProverNotPermissioned()";
6854            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
6855            #[inline]
6856            fn new<'a>(
6857                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6858            ) -> Self {
6859                tuple.into()
6860            }
6861            #[inline]
6862            fn tokenize(&self) -> Self::Token<'_> {
6863                ()
6864            }
6865            #[inline]
6866            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6867                <Self::Parameters<
6868                    '_,
6869                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6870                    .map(Self::new)
6871            }
6872        }
6873    };
6874    #[derive(serde::Serialize, serde::Deserialize)]
6875    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6876    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
6877```solidity
6878error UUPSUnauthorizedCallContext();
6879```*/
6880    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6881    #[derive(Clone)]
6882    pub struct UUPSUnauthorizedCallContext;
6883    #[allow(
6884        non_camel_case_types,
6885        non_snake_case,
6886        clippy::pub_underscore_fields,
6887        clippy::style
6888    )]
6889    const _: () = {
6890        use alloy::sol_types as alloy_sol_types;
6891        #[doc(hidden)]
6892        type UnderlyingSolTuple<'a> = ();
6893        #[doc(hidden)]
6894        type UnderlyingRustTuple<'a> = ();
6895        #[cfg(test)]
6896        #[allow(dead_code, unreachable_patterns)]
6897        fn _type_assertion(
6898            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6899        ) {
6900            match _t {
6901                alloy_sol_types::private::AssertTypeEq::<
6902                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6903                >(_) => {}
6904            }
6905        }
6906        #[automatically_derived]
6907        #[doc(hidden)]
6908        impl ::core::convert::From<UUPSUnauthorizedCallContext>
6909        for UnderlyingRustTuple<'_> {
6910            fn from(value: UUPSUnauthorizedCallContext) -> Self {
6911                ()
6912            }
6913        }
6914        #[automatically_derived]
6915        #[doc(hidden)]
6916        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6917        for UUPSUnauthorizedCallContext {
6918            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6919                Self
6920            }
6921        }
6922        #[automatically_derived]
6923        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
6924            type Parameters<'a> = UnderlyingSolTuple<'a>;
6925            type Token<'a> = <Self::Parameters<
6926                'a,
6927            > as alloy_sol_types::SolType>::Token<'a>;
6928            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
6929            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
6930            #[inline]
6931            fn new<'a>(
6932                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6933            ) -> Self {
6934                tuple.into()
6935            }
6936            #[inline]
6937            fn tokenize(&self) -> Self::Token<'_> {
6938                ()
6939            }
6940            #[inline]
6941            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6942                <Self::Parameters<
6943                    '_,
6944                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6945                    .map(Self::new)
6946            }
6947        }
6948    };
6949    #[derive(serde::Serialize, serde::Deserialize)]
6950    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6951    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
6952```solidity
6953error UUPSUnsupportedProxiableUUID(bytes32 slot);
6954```*/
6955    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6956    #[derive(Clone)]
6957    pub struct UUPSUnsupportedProxiableUUID {
6958        #[allow(missing_docs)]
6959        pub slot: alloy::sol_types::private::FixedBytes<32>,
6960    }
6961    #[allow(
6962        non_camel_case_types,
6963        non_snake_case,
6964        clippy::pub_underscore_fields,
6965        clippy::style
6966    )]
6967    const _: () = {
6968        use alloy::sol_types as alloy_sol_types;
6969        #[doc(hidden)]
6970        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6971        #[doc(hidden)]
6972        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6973        #[cfg(test)]
6974        #[allow(dead_code, unreachable_patterns)]
6975        fn _type_assertion(
6976            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6977        ) {
6978            match _t {
6979                alloy_sol_types::private::AssertTypeEq::<
6980                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6981                >(_) => {}
6982            }
6983        }
6984        #[automatically_derived]
6985        #[doc(hidden)]
6986        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
6987        for UnderlyingRustTuple<'_> {
6988            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
6989                (value.slot,)
6990            }
6991        }
6992        #[automatically_derived]
6993        #[doc(hidden)]
6994        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6995        for UUPSUnsupportedProxiableUUID {
6996            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6997                Self { slot: tuple.0 }
6998            }
6999        }
7000        #[automatically_derived]
7001        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
7002            type Parameters<'a> = UnderlyingSolTuple<'a>;
7003            type Token<'a> = <Self::Parameters<
7004                'a,
7005            > as alloy_sol_types::SolType>::Token<'a>;
7006            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
7007            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
7008            #[inline]
7009            fn new<'a>(
7010                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7011            ) -> Self {
7012                tuple.into()
7013            }
7014            #[inline]
7015            fn tokenize(&self) -> Self::Token<'_> {
7016                (
7017                    <alloy::sol_types::sol_data::FixedBytes<
7018                        32,
7019                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
7020                )
7021            }
7022            #[inline]
7023            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7024                <Self::Parameters<
7025                    '_,
7026                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7027                    .map(Self::new)
7028            }
7029        }
7030    };
7031    #[derive(serde::Serialize, serde::Deserialize)]
7032    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7033    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
7034```solidity
7035error WrongStakeTableUsed();
7036```*/
7037    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7038    #[derive(Clone)]
7039    pub struct WrongStakeTableUsed;
7040    #[allow(
7041        non_camel_case_types,
7042        non_snake_case,
7043        clippy::pub_underscore_fields,
7044        clippy::style
7045    )]
7046    const _: () = {
7047        use alloy::sol_types as alloy_sol_types;
7048        #[doc(hidden)]
7049        type UnderlyingSolTuple<'a> = ();
7050        #[doc(hidden)]
7051        type UnderlyingRustTuple<'a> = ();
7052        #[cfg(test)]
7053        #[allow(dead_code, unreachable_patterns)]
7054        fn _type_assertion(
7055            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7056        ) {
7057            match _t {
7058                alloy_sol_types::private::AssertTypeEq::<
7059                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7060                >(_) => {}
7061            }
7062        }
7063        #[automatically_derived]
7064        #[doc(hidden)]
7065        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
7066            fn from(value: WrongStakeTableUsed) -> Self {
7067                ()
7068            }
7069        }
7070        #[automatically_derived]
7071        #[doc(hidden)]
7072        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
7073            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7074                Self
7075            }
7076        }
7077        #[automatically_derived]
7078        impl alloy_sol_types::SolError for WrongStakeTableUsed {
7079            type Parameters<'a> = UnderlyingSolTuple<'a>;
7080            type Token<'a> = <Self::Parameters<
7081                'a,
7082            > as alloy_sol_types::SolType>::Token<'a>;
7083            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
7084            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
7085            #[inline]
7086            fn new<'a>(
7087                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7088            ) -> Self {
7089                tuple.into()
7090            }
7091            #[inline]
7092            fn tokenize(&self) -> Self::Token<'_> {
7093                ()
7094            }
7095            #[inline]
7096            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7097                <Self::Parameters<
7098                    '_,
7099                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7100                    .map(Self::new)
7101            }
7102        }
7103    };
7104    #[derive(serde::Serialize, serde::Deserialize)]
7105    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7106    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
7107```solidity
7108event Initialized(uint64 version);
7109```*/
7110    #[allow(
7111        non_camel_case_types,
7112        non_snake_case,
7113        clippy::pub_underscore_fields,
7114        clippy::style
7115    )]
7116    #[derive(Clone)]
7117    pub struct Initialized {
7118        #[allow(missing_docs)]
7119        pub version: u64,
7120    }
7121    #[allow(
7122        non_camel_case_types,
7123        non_snake_case,
7124        clippy::pub_underscore_fields,
7125        clippy::style
7126    )]
7127    const _: () = {
7128        use alloy::sol_types as alloy_sol_types;
7129        #[automatically_derived]
7130        impl alloy_sol_types::SolEvent for Initialized {
7131            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7132            type DataToken<'a> = <Self::DataTuple<
7133                'a,
7134            > as alloy_sol_types::SolType>::Token<'a>;
7135            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7136            const SIGNATURE: &'static str = "Initialized(uint64)";
7137            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7138                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
7139                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
7140                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
7141            ]);
7142            const ANONYMOUS: bool = false;
7143            #[allow(unused_variables)]
7144            #[inline]
7145            fn new(
7146                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7147                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7148            ) -> Self {
7149                Self { version: data.0 }
7150            }
7151            #[inline]
7152            fn check_signature(
7153                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7154            ) -> alloy_sol_types::Result<()> {
7155                if topics.0 != Self::SIGNATURE_HASH {
7156                    return Err(
7157                        alloy_sol_types::Error::invalid_event_signature_hash(
7158                            Self::SIGNATURE,
7159                            topics.0,
7160                            Self::SIGNATURE_HASH,
7161                        ),
7162                    );
7163                }
7164                Ok(())
7165            }
7166            #[inline]
7167            fn tokenize_body(&self) -> Self::DataToken<'_> {
7168                (
7169                    <alloy::sol_types::sol_data::Uint<
7170                        64,
7171                    > as alloy_sol_types::SolType>::tokenize(&self.version),
7172                )
7173            }
7174            #[inline]
7175            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7176                (Self::SIGNATURE_HASH.into(),)
7177            }
7178            #[inline]
7179            fn encode_topics_raw(
7180                &self,
7181                out: &mut [alloy_sol_types::abi::token::WordToken],
7182            ) -> alloy_sol_types::Result<()> {
7183                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7184                    return Err(alloy_sol_types::Error::Overrun);
7185                }
7186                out[0usize] = alloy_sol_types::abi::token::WordToken(
7187                    Self::SIGNATURE_HASH,
7188                );
7189                Ok(())
7190            }
7191        }
7192        #[automatically_derived]
7193        impl alloy_sol_types::private::IntoLogData for Initialized {
7194            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7195                From::from(self)
7196            }
7197            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7198                From::from(&self)
7199            }
7200        }
7201        #[automatically_derived]
7202        impl From<&Initialized> for alloy_sol_types::private::LogData {
7203            #[inline]
7204            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
7205                alloy_sol_types::SolEvent::encode_log_data(this)
7206            }
7207        }
7208    };
7209    #[derive(serde::Serialize, serde::Deserialize)]
7210    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7211    /**Event with signature `NewEpoch(uint64)` and selector `0x31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b`.
7212```solidity
7213event NewEpoch(uint64 epoch);
7214```*/
7215    #[allow(
7216        non_camel_case_types,
7217        non_snake_case,
7218        clippy::pub_underscore_fields,
7219        clippy::style
7220    )]
7221    #[derive(Clone)]
7222    pub struct NewEpoch {
7223        #[allow(missing_docs)]
7224        pub epoch: u64,
7225    }
7226    #[allow(
7227        non_camel_case_types,
7228        non_snake_case,
7229        clippy::pub_underscore_fields,
7230        clippy::style
7231    )]
7232    const _: () = {
7233        use alloy::sol_types as alloy_sol_types;
7234        #[automatically_derived]
7235        impl alloy_sol_types::SolEvent for NewEpoch {
7236            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7237            type DataToken<'a> = <Self::DataTuple<
7238                'a,
7239            > as alloy_sol_types::SolType>::Token<'a>;
7240            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7241            const SIGNATURE: &'static str = "NewEpoch(uint64)";
7242            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7243                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
7244                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
7245                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
7246            ]);
7247            const ANONYMOUS: bool = false;
7248            #[allow(unused_variables)]
7249            #[inline]
7250            fn new(
7251                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7252                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7253            ) -> Self {
7254                Self { epoch: data.0 }
7255            }
7256            #[inline]
7257            fn check_signature(
7258                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7259            ) -> alloy_sol_types::Result<()> {
7260                if topics.0 != Self::SIGNATURE_HASH {
7261                    return Err(
7262                        alloy_sol_types::Error::invalid_event_signature_hash(
7263                            Self::SIGNATURE,
7264                            topics.0,
7265                            Self::SIGNATURE_HASH,
7266                        ),
7267                    );
7268                }
7269                Ok(())
7270            }
7271            #[inline]
7272            fn tokenize_body(&self) -> Self::DataToken<'_> {
7273                (
7274                    <alloy::sol_types::sol_data::Uint<
7275                        64,
7276                    > as alloy_sol_types::SolType>::tokenize(&self.epoch),
7277                )
7278            }
7279            #[inline]
7280            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7281                (Self::SIGNATURE_HASH.into(),)
7282            }
7283            #[inline]
7284            fn encode_topics_raw(
7285                &self,
7286                out: &mut [alloy_sol_types::abi::token::WordToken],
7287            ) -> alloy_sol_types::Result<()> {
7288                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7289                    return Err(alloy_sol_types::Error::Overrun);
7290                }
7291                out[0usize] = alloy_sol_types::abi::token::WordToken(
7292                    Self::SIGNATURE_HASH,
7293                );
7294                Ok(())
7295            }
7296        }
7297        #[automatically_derived]
7298        impl alloy_sol_types::private::IntoLogData for NewEpoch {
7299            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7300                From::from(self)
7301            }
7302            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7303                From::from(&self)
7304            }
7305        }
7306        #[automatically_derived]
7307        impl From<&NewEpoch> for alloy_sol_types::private::LogData {
7308            #[inline]
7309            fn from(this: &NewEpoch) -> alloy_sol_types::private::LogData {
7310                alloy_sol_types::SolEvent::encode_log_data(this)
7311            }
7312        }
7313    };
7314    #[derive(serde::Serialize, serde::Deserialize)]
7315    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7316    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
7317```solidity
7318event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
7319```*/
7320    #[allow(
7321        non_camel_case_types,
7322        non_snake_case,
7323        clippy::pub_underscore_fields,
7324        clippy::style
7325    )]
7326    #[derive(Clone)]
7327    pub struct NewState {
7328        #[allow(missing_docs)]
7329        pub viewNum: u64,
7330        #[allow(missing_docs)]
7331        pub blockHeight: u64,
7332        #[allow(missing_docs)]
7333        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7334    }
7335    #[allow(
7336        non_camel_case_types,
7337        non_snake_case,
7338        clippy::pub_underscore_fields,
7339        clippy::style
7340    )]
7341    const _: () = {
7342        use alloy::sol_types as alloy_sol_types;
7343        #[automatically_derived]
7344        impl alloy_sol_types::SolEvent for NewState {
7345            type DataTuple<'a> = (BN254::ScalarField,);
7346            type DataToken<'a> = <Self::DataTuple<
7347                'a,
7348            > as alloy_sol_types::SolType>::Token<'a>;
7349            type TopicList = (
7350                alloy_sol_types::sol_data::FixedBytes<32>,
7351                alloy::sol_types::sol_data::Uint<64>,
7352                alloy::sol_types::sol_data::Uint<64>,
7353            );
7354            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
7355            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7356                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
7357                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
7358                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
7359            ]);
7360            const ANONYMOUS: bool = false;
7361            #[allow(unused_variables)]
7362            #[inline]
7363            fn new(
7364                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7365                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7366            ) -> Self {
7367                Self {
7368                    viewNum: topics.1,
7369                    blockHeight: topics.2,
7370                    blockCommRoot: data.0,
7371                }
7372            }
7373            #[inline]
7374            fn check_signature(
7375                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7376            ) -> alloy_sol_types::Result<()> {
7377                if topics.0 != Self::SIGNATURE_HASH {
7378                    return Err(
7379                        alloy_sol_types::Error::invalid_event_signature_hash(
7380                            Self::SIGNATURE,
7381                            topics.0,
7382                            Self::SIGNATURE_HASH,
7383                        ),
7384                    );
7385                }
7386                Ok(())
7387            }
7388            #[inline]
7389            fn tokenize_body(&self) -> Self::DataToken<'_> {
7390                (
7391                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7392                        &self.blockCommRoot,
7393                    ),
7394                )
7395            }
7396            #[inline]
7397            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7398                (
7399                    Self::SIGNATURE_HASH.into(),
7400                    self.viewNum.clone(),
7401                    self.blockHeight.clone(),
7402                )
7403            }
7404            #[inline]
7405            fn encode_topics_raw(
7406                &self,
7407                out: &mut [alloy_sol_types::abi::token::WordToken],
7408            ) -> alloy_sol_types::Result<()> {
7409                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7410                    return Err(alloy_sol_types::Error::Overrun);
7411                }
7412                out[0usize] = alloy_sol_types::abi::token::WordToken(
7413                    Self::SIGNATURE_HASH,
7414                );
7415                out[1usize] = <alloy::sol_types::sol_data::Uint<
7416                    64,
7417                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
7418                out[2usize] = <alloy::sol_types::sol_data::Uint<
7419                    64,
7420                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
7421                Ok(())
7422            }
7423        }
7424        #[automatically_derived]
7425        impl alloy_sol_types::private::IntoLogData for NewState {
7426            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7427                From::from(self)
7428            }
7429            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7430                From::from(&self)
7431            }
7432        }
7433        #[automatically_derived]
7434        impl From<&NewState> for alloy_sol_types::private::LogData {
7435            #[inline]
7436            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
7437                alloy_sol_types::SolEvent::encode_log_data(this)
7438            }
7439        }
7440    };
7441    #[derive(serde::Serialize, serde::Deserialize)]
7442    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7443    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
7444```solidity
7445event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
7446```*/
7447    #[allow(
7448        non_camel_case_types,
7449        non_snake_case,
7450        clippy::pub_underscore_fields,
7451        clippy::style
7452    )]
7453    #[derive(Clone)]
7454    pub struct OwnershipTransferred {
7455        #[allow(missing_docs)]
7456        pub previousOwner: alloy::sol_types::private::Address,
7457        #[allow(missing_docs)]
7458        pub newOwner: alloy::sol_types::private::Address,
7459    }
7460    #[allow(
7461        non_camel_case_types,
7462        non_snake_case,
7463        clippy::pub_underscore_fields,
7464        clippy::style
7465    )]
7466    const _: () = {
7467        use alloy::sol_types as alloy_sol_types;
7468        #[automatically_derived]
7469        impl alloy_sol_types::SolEvent for OwnershipTransferred {
7470            type DataTuple<'a> = ();
7471            type DataToken<'a> = <Self::DataTuple<
7472                'a,
7473            > as alloy_sol_types::SolType>::Token<'a>;
7474            type TopicList = (
7475                alloy_sol_types::sol_data::FixedBytes<32>,
7476                alloy::sol_types::sol_data::Address,
7477                alloy::sol_types::sol_data::Address,
7478            );
7479            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
7480            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7481                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
7482                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
7483                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
7484            ]);
7485            const ANONYMOUS: bool = false;
7486            #[allow(unused_variables)]
7487            #[inline]
7488            fn new(
7489                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7490                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7491            ) -> Self {
7492                Self {
7493                    previousOwner: topics.1,
7494                    newOwner: topics.2,
7495                }
7496            }
7497            #[inline]
7498            fn check_signature(
7499                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7500            ) -> alloy_sol_types::Result<()> {
7501                if topics.0 != Self::SIGNATURE_HASH {
7502                    return Err(
7503                        alloy_sol_types::Error::invalid_event_signature_hash(
7504                            Self::SIGNATURE,
7505                            topics.0,
7506                            Self::SIGNATURE_HASH,
7507                        ),
7508                    );
7509                }
7510                Ok(())
7511            }
7512            #[inline]
7513            fn tokenize_body(&self) -> Self::DataToken<'_> {
7514                ()
7515            }
7516            #[inline]
7517            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7518                (
7519                    Self::SIGNATURE_HASH.into(),
7520                    self.previousOwner.clone(),
7521                    self.newOwner.clone(),
7522                )
7523            }
7524            #[inline]
7525            fn encode_topics_raw(
7526                &self,
7527                out: &mut [alloy_sol_types::abi::token::WordToken],
7528            ) -> alloy_sol_types::Result<()> {
7529                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7530                    return Err(alloy_sol_types::Error::Overrun);
7531                }
7532                out[0usize] = alloy_sol_types::abi::token::WordToken(
7533                    Self::SIGNATURE_HASH,
7534                );
7535                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7536                    &self.previousOwner,
7537                );
7538                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7539                    &self.newOwner,
7540                );
7541                Ok(())
7542            }
7543        }
7544        #[automatically_derived]
7545        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
7546            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7547                From::from(self)
7548            }
7549            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7550                From::from(&self)
7551            }
7552        }
7553        #[automatically_derived]
7554        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
7555            #[inline]
7556            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
7557                alloy_sol_types::SolEvent::encode_log_data(this)
7558            }
7559        }
7560    };
7561    #[derive(serde::Serialize, serde::Deserialize)]
7562    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7563    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
7564```solidity
7565event PermissionedProverNotRequired();
7566```*/
7567    #[allow(
7568        non_camel_case_types,
7569        non_snake_case,
7570        clippy::pub_underscore_fields,
7571        clippy::style
7572    )]
7573    #[derive(Clone)]
7574    pub struct PermissionedProverNotRequired;
7575    #[allow(
7576        non_camel_case_types,
7577        non_snake_case,
7578        clippy::pub_underscore_fields,
7579        clippy::style
7580    )]
7581    const _: () = {
7582        use alloy::sol_types as alloy_sol_types;
7583        #[automatically_derived]
7584        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
7585            type DataTuple<'a> = ();
7586            type DataToken<'a> = <Self::DataTuple<
7587                'a,
7588            > as alloy_sol_types::SolType>::Token<'a>;
7589            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7590            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
7591            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7592                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
7593                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
7594                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
7595            ]);
7596            const ANONYMOUS: bool = false;
7597            #[allow(unused_variables)]
7598            #[inline]
7599            fn new(
7600                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7601                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7602            ) -> Self {
7603                Self {}
7604            }
7605            #[inline]
7606            fn check_signature(
7607                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7608            ) -> alloy_sol_types::Result<()> {
7609                if topics.0 != Self::SIGNATURE_HASH {
7610                    return Err(
7611                        alloy_sol_types::Error::invalid_event_signature_hash(
7612                            Self::SIGNATURE,
7613                            topics.0,
7614                            Self::SIGNATURE_HASH,
7615                        ),
7616                    );
7617                }
7618                Ok(())
7619            }
7620            #[inline]
7621            fn tokenize_body(&self) -> Self::DataToken<'_> {
7622                ()
7623            }
7624            #[inline]
7625            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7626                (Self::SIGNATURE_HASH.into(),)
7627            }
7628            #[inline]
7629            fn encode_topics_raw(
7630                &self,
7631                out: &mut [alloy_sol_types::abi::token::WordToken],
7632            ) -> alloy_sol_types::Result<()> {
7633                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7634                    return Err(alloy_sol_types::Error::Overrun);
7635                }
7636                out[0usize] = alloy_sol_types::abi::token::WordToken(
7637                    Self::SIGNATURE_HASH,
7638                );
7639                Ok(())
7640            }
7641        }
7642        #[automatically_derived]
7643        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
7644            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7645                From::from(self)
7646            }
7647            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7648                From::from(&self)
7649            }
7650        }
7651        #[automatically_derived]
7652        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
7653            #[inline]
7654            fn from(
7655                this: &PermissionedProverNotRequired,
7656            ) -> alloy_sol_types::private::LogData {
7657                alloy_sol_types::SolEvent::encode_log_data(this)
7658            }
7659        }
7660    };
7661    #[derive(serde::Serialize, serde::Deserialize)]
7662    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7663    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
7664```solidity
7665event PermissionedProverRequired(address permissionedProver);
7666```*/
7667    #[allow(
7668        non_camel_case_types,
7669        non_snake_case,
7670        clippy::pub_underscore_fields,
7671        clippy::style
7672    )]
7673    #[derive(Clone)]
7674    pub struct PermissionedProverRequired {
7675        #[allow(missing_docs)]
7676        pub permissionedProver: alloy::sol_types::private::Address,
7677    }
7678    #[allow(
7679        non_camel_case_types,
7680        non_snake_case,
7681        clippy::pub_underscore_fields,
7682        clippy::style
7683    )]
7684    const _: () = {
7685        use alloy::sol_types as alloy_sol_types;
7686        #[automatically_derived]
7687        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
7688            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
7689            type DataToken<'a> = <Self::DataTuple<
7690                'a,
7691            > as alloy_sol_types::SolType>::Token<'a>;
7692            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7693            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
7694            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7695                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
7696                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
7697                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
7698            ]);
7699            const ANONYMOUS: bool = false;
7700            #[allow(unused_variables)]
7701            #[inline]
7702            fn new(
7703                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7704                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7705            ) -> Self {
7706                Self { permissionedProver: data.0 }
7707            }
7708            #[inline]
7709            fn check_signature(
7710                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7711            ) -> alloy_sol_types::Result<()> {
7712                if topics.0 != Self::SIGNATURE_HASH {
7713                    return Err(
7714                        alloy_sol_types::Error::invalid_event_signature_hash(
7715                            Self::SIGNATURE,
7716                            topics.0,
7717                            Self::SIGNATURE_HASH,
7718                        ),
7719                    );
7720                }
7721                Ok(())
7722            }
7723            #[inline]
7724            fn tokenize_body(&self) -> Self::DataToken<'_> {
7725                (
7726                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7727                        &self.permissionedProver,
7728                    ),
7729                )
7730            }
7731            #[inline]
7732            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7733                (Self::SIGNATURE_HASH.into(),)
7734            }
7735            #[inline]
7736            fn encode_topics_raw(
7737                &self,
7738                out: &mut [alloy_sol_types::abi::token::WordToken],
7739            ) -> alloy_sol_types::Result<()> {
7740                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7741                    return Err(alloy_sol_types::Error::Overrun);
7742                }
7743                out[0usize] = alloy_sol_types::abi::token::WordToken(
7744                    Self::SIGNATURE_HASH,
7745                );
7746                Ok(())
7747            }
7748        }
7749        #[automatically_derived]
7750        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
7751            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7752                From::from(self)
7753            }
7754            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7755                From::from(&self)
7756            }
7757        }
7758        #[automatically_derived]
7759        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
7760            #[inline]
7761            fn from(
7762                this: &PermissionedProverRequired,
7763            ) -> alloy_sol_types::private::LogData {
7764                alloy_sol_types::SolEvent::encode_log_data(this)
7765            }
7766        }
7767    };
7768    #[derive(serde::Serialize, serde::Deserialize)]
7769    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7770    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
7771```solidity
7772event Upgrade(address implementation);
7773```*/
7774    #[allow(
7775        non_camel_case_types,
7776        non_snake_case,
7777        clippy::pub_underscore_fields,
7778        clippy::style
7779    )]
7780    #[derive(Clone)]
7781    pub struct Upgrade {
7782        #[allow(missing_docs)]
7783        pub implementation: alloy::sol_types::private::Address,
7784    }
7785    #[allow(
7786        non_camel_case_types,
7787        non_snake_case,
7788        clippy::pub_underscore_fields,
7789        clippy::style
7790    )]
7791    const _: () = {
7792        use alloy::sol_types as alloy_sol_types;
7793        #[automatically_derived]
7794        impl alloy_sol_types::SolEvent for Upgrade {
7795            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
7796            type DataToken<'a> = <Self::DataTuple<
7797                'a,
7798            > as alloy_sol_types::SolType>::Token<'a>;
7799            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7800            const SIGNATURE: &'static str = "Upgrade(address)";
7801            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7802                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
7803                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
7804                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
7805            ]);
7806            const ANONYMOUS: bool = false;
7807            #[allow(unused_variables)]
7808            #[inline]
7809            fn new(
7810                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7811                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7812            ) -> Self {
7813                Self { implementation: data.0 }
7814            }
7815            #[inline]
7816            fn check_signature(
7817                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7818            ) -> alloy_sol_types::Result<()> {
7819                if topics.0 != Self::SIGNATURE_HASH {
7820                    return Err(
7821                        alloy_sol_types::Error::invalid_event_signature_hash(
7822                            Self::SIGNATURE,
7823                            topics.0,
7824                            Self::SIGNATURE_HASH,
7825                        ),
7826                    );
7827                }
7828                Ok(())
7829            }
7830            #[inline]
7831            fn tokenize_body(&self) -> Self::DataToken<'_> {
7832                (
7833                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7834                        &self.implementation,
7835                    ),
7836                )
7837            }
7838            #[inline]
7839            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7840                (Self::SIGNATURE_HASH.into(),)
7841            }
7842            #[inline]
7843            fn encode_topics_raw(
7844                &self,
7845                out: &mut [alloy_sol_types::abi::token::WordToken],
7846            ) -> alloy_sol_types::Result<()> {
7847                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7848                    return Err(alloy_sol_types::Error::Overrun);
7849                }
7850                out[0usize] = alloy_sol_types::abi::token::WordToken(
7851                    Self::SIGNATURE_HASH,
7852                );
7853                Ok(())
7854            }
7855        }
7856        #[automatically_derived]
7857        impl alloy_sol_types::private::IntoLogData for Upgrade {
7858            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7859                From::from(self)
7860            }
7861            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7862                From::from(&self)
7863            }
7864        }
7865        #[automatically_derived]
7866        impl From<&Upgrade> for alloy_sol_types::private::LogData {
7867            #[inline]
7868            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
7869                alloy_sol_types::SolEvent::encode_log_data(this)
7870            }
7871        }
7872    };
7873    #[derive(serde::Serialize, serde::Deserialize)]
7874    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7875    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
7876```solidity
7877event Upgraded(address indexed implementation);
7878```*/
7879    #[allow(
7880        non_camel_case_types,
7881        non_snake_case,
7882        clippy::pub_underscore_fields,
7883        clippy::style
7884    )]
7885    #[derive(Clone)]
7886    pub struct Upgraded {
7887        #[allow(missing_docs)]
7888        pub implementation: alloy::sol_types::private::Address,
7889    }
7890    #[allow(
7891        non_camel_case_types,
7892        non_snake_case,
7893        clippy::pub_underscore_fields,
7894        clippy::style
7895    )]
7896    const _: () = {
7897        use alloy::sol_types as alloy_sol_types;
7898        #[automatically_derived]
7899        impl alloy_sol_types::SolEvent for Upgraded {
7900            type DataTuple<'a> = ();
7901            type DataToken<'a> = <Self::DataTuple<
7902                'a,
7903            > as alloy_sol_types::SolType>::Token<'a>;
7904            type TopicList = (
7905                alloy_sol_types::sol_data::FixedBytes<32>,
7906                alloy::sol_types::sol_data::Address,
7907            );
7908            const SIGNATURE: &'static str = "Upgraded(address)";
7909            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7910                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
7911                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
7912                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
7913            ]);
7914            const ANONYMOUS: bool = false;
7915            #[allow(unused_variables)]
7916            #[inline]
7917            fn new(
7918                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7919                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7920            ) -> Self {
7921                Self { implementation: topics.1 }
7922            }
7923            #[inline]
7924            fn check_signature(
7925                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7926            ) -> alloy_sol_types::Result<()> {
7927                if topics.0 != Self::SIGNATURE_HASH {
7928                    return Err(
7929                        alloy_sol_types::Error::invalid_event_signature_hash(
7930                            Self::SIGNATURE,
7931                            topics.0,
7932                            Self::SIGNATURE_HASH,
7933                        ),
7934                    );
7935                }
7936                Ok(())
7937            }
7938            #[inline]
7939            fn tokenize_body(&self) -> Self::DataToken<'_> {
7940                ()
7941            }
7942            #[inline]
7943            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7944                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
7945            }
7946            #[inline]
7947            fn encode_topics_raw(
7948                &self,
7949                out: &mut [alloy_sol_types::abi::token::WordToken],
7950            ) -> alloy_sol_types::Result<()> {
7951                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7952                    return Err(alloy_sol_types::Error::Overrun);
7953                }
7954                out[0usize] = alloy_sol_types::abi::token::WordToken(
7955                    Self::SIGNATURE_HASH,
7956                );
7957                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7958                    &self.implementation,
7959                );
7960                Ok(())
7961            }
7962        }
7963        #[automatically_derived]
7964        impl alloy_sol_types::private::IntoLogData for Upgraded {
7965            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7966                From::from(self)
7967            }
7968            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7969                From::from(&self)
7970            }
7971        }
7972        #[automatically_derived]
7973        impl From<&Upgraded> for alloy_sol_types::private::LogData {
7974            #[inline]
7975            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
7976                alloy_sol_types::SolEvent::encode_log_data(this)
7977            }
7978        }
7979    };
7980    #[derive(serde::Serialize, serde::Deserialize)]
7981    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7982    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
7983```solidity
7984function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
7985```*/
7986    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7987    #[derive(Clone)]
7988    pub struct UPGRADE_INTERFACE_VERSIONCall;
7989    #[derive(serde::Serialize, serde::Deserialize)]
7990    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7991    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
7992    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7993    #[derive(Clone)]
7994    pub struct UPGRADE_INTERFACE_VERSIONReturn {
7995        #[allow(missing_docs)]
7996        pub _0: alloy::sol_types::private::String,
7997    }
7998    #[allow(
7999        non_camel_case_types,
8000        non_snake_case,
8001        clippy::pub_underscore_fields,
8002        clippy::style
8003    )]
8004    const _: () = {
8005        use alloy::sol_types as alloy_sol_types;
8006        {
8007            #[doc(hidden)]
8008            type UnderlyingSolTuple<'a> = ();
8009            #[doc(hidden)]
8010            type UnderlyingRustTuple<'a> = ();
8011            #[cfg(test)]
8012            #[allow(dead_code, unreachable_patterns)]
8013            fn _type_assertion(
8014                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8015            ) {
8016                match _t {
8017                    alloy_sol_types::private::AssertTypeEq::<
8018                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8019                    >(_) => {}
8020                }
8021            }
8022            #[automatically_derived]
8023            #[doc(hidden)]
8024            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
8025            for UnderlyingRustTuple<'_> {
8026                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
8027                    ()
8028                }
8029            }
8030            #[automatically_derived]
8031            #[doc(hidden)]
8032            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8033            for UPGRADE_INTERFACE_VERSIONCall {
8034                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8035                    Self
8036                }
8037            }
8038        }
8039        {
8040            #[doc(hidden)]
8041            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
8042            #[doc(hidden)]
8043            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
8044            #[cfg(test)]
8045            #[allow(dead_code, unreachable_patterns)]
8046            fn _type_assertion(
8047                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8048            ) {
8049                match _t {
8050                    alloy_sol_types::private::AssertTypeEq::<
8051                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8052                    >(_) => {}
8053                }
8054            }
8055            #[automatically_derived]
8056            #[doc(hidden)]
8057            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
8058            for UnderlyingRustTuple<'_> {
8059                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
8060                    (value._0,)
8061                }
8062            }
8063            #[automatically_derived]
8064            #[doc(hidden)]
8065            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8066            for UPGRADE_INTERFACE_VERSIONReturn {
8067                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8068                    Self { _0: tuple.0 }
8069                }
8070            }
8071        }
8072        #[automatically_derived]
8073        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
8074            type Parameters<'a> = ();
8075            type Token<'a> = <Self::Parameters<
8076                'a,
8077            > as alloy_sol_types::SolType>::Token<'a>;
8078            type Return = alloy::sol_types::private::String;
8079            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
8080            type ReturnToken<'a> = <Self::ReturnTuple<
8081                'a,
8082            > as alloy_sol_types::SolType>::Token<'a>;
8083            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
8084            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
8085            #[inline]
8086            fn new<'a>(
8087                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8088            ) -> Self {
8089                tuple.into()
8090            }
8091            #[inline]
8092            fn tokenize(&self) -> Self::Token<'_> {
8093                ()
8094            }
8095            #[inline]
8096            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8097                (
8098                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
8099                        ret,
8100                    ),
8101                )
8102            }
8103            #[inline]
8104            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8105                <Self::ReturnTuple<
8106                    '_,
8107                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8108                    .map(|r| {
8109                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
8110                        r._0
8111                    })
8112            }
8113            #[inline]
8114            fn abi_decode_returns_validate(
8115                data: &[u8],
8116            ) -> alloy_sol_types::Result<Self::Return> {
8117                <Self::ReturnTuple<
8118                    '_,
8119                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8120                    .map(|r| {
8121                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
8122                        r._0
8123                    })
8124            }
8125        }
8126    };
8127    #[derive(serde::Serialize, serde::Deserialize)]
8128    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8129    /**Function with signature `_getVk()` and selector `0x12173c2c`.
8130```solidity
8131function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
8132```*/
8133    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8134    #[derive(Clone)]
8135    pub struct _getVkCall;
8136    #[derive(serde::Serialize, serde::Deserialize)]
8137    #[derive()]
8138    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
8139    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8140    #[derive(Clone)]
8141    pub struct _getVkReturn {
8142        #[allow(missing_docs)]
8143        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
8144    }
8145    #[allow(
8146        non_camel_case_types,
8147        non_snake_case,
8148        clippy::pub_underscore_fields,
8149        clippy::style
8150    )]
8151    const _: () = {
8152        use alloy::sol_types as alloy_sol_types;
8153        {
8154            #[doc(hidden)]
8155            type UnderlyingSolTuple<'a> = ();
8156            #[doc(hidden)]
8157            type UnderlyingRustTuple<'a> = ();
8158            #[cfg(test)]
8159            #[allow(dead_code, unreachable_patterns)]
8160            fn _type_assertion(
8161                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8162            ) {
8163                match _t {
8164                    alloy_sol_types::private::AssertTypeEq::<
8165                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8166                    >(_) => {}
8167                }
8168            }
8169            #[automatically_derived]
8170            #[doc(hidden)]
8171            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
8172                fn from(value: _getVkCall) -> Self {
8173                    ()
8174                }
8175            }
8176            #[automatically_derived]
8177            #[doc(hidden)]
8178            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
8179                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8180                    Self
8181                }
8182            }
8183        }
8184        {
8185            #[doc(hidden)]
8186            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
8187            #[doc(hidden)]
8188            type UnderlyingRustTuple<'a> = (
8189                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
8190            );
8191            #[cfg(test)]
8192            #[allow(dead_code, unreachable_patterns)]
8193            fn _type_assertion(
8194                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8195            ) {
8196                match _t {
8197                    alloy_sol_types::private::AssertTypeEq::<
8198                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8199                    >(_) => {}
8200                }
8201            }
8202            #[automatically_derived]
8203            #[doc(hidden)]
8204            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
8205                fn from(value: _getVkReturn) -> Self {
8206                    (value.vk,)
8207                }
8208            }
8209            #[automatically_derived]
8210            #[doc(hidden)]
8211            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
8212                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8213                    Self { vk: tuple.0 }
8214                }
8215            }
8216        }
8217        #[automatically_derived]
8218        impl alloy_sol_types::SolCall for _getVkCall {
8219            type Parameters<'a> = ();
8220            type Token<'a> = <Self::Parameters<
8221                'a,
8222            > as alloy_sol_types::SolType>::Token<'a>;
8223            type Return = <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType;
8224            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
8225            type ReturnToken<'a> = <Self::ReturnTuple<
8226                'a,
8227            > as alloy_sol_types::SolType>::Token<'a>;
8228            const SIGNATURE: &'static str = "_getVk()";
8229            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
8230            #[inline]
8231            fn new<'a>(
8232                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8233            ) -> Self {
8234                tuple.into()
8235            }
8236            #[inline]
8237            fn tokenize(&self) -> Self::Token<'_> {
8238                ()
8239            }
8240            #[inline]
8241            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8242                (
8243                    <IPlonkVerifier::VerifyingKey as alloy_sol_types::SolType>::tokenize(
8244                        ret,
8245                    ),
8246                )
8247            }
8248            #[inline]
8249            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8250                <Self::ReturnTuple<
8251                    '_,
8252                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8253                    .map(|r| {
8254                        let r: _getVkReturn = r.into();
8255                        r.vk
8256                    })
8257            }
8258            #[inline]
8259            fn abi_decode_returns_validate(
8260                data: &[u8],
8261            ) -> alloy_sol_types::Result<Self::Return> {
8262                <Self::ReturnTuple<
8263                    '_,
8264                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8265                    .map(|r| {
8266                        let r: _getVkReturn = r.into();
8267                        r.vk
8268                    })
8269            }
8270        }
8271    };
8272    #[derive(serde::Serialize, serde::Deserialize)]
8273    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8274    /**Function with signature `authRoot()` and selector `0x998328e8`.
8275```solidity
8276function authRoot() external view returns (uint256);
8277```*/
8278    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8279    #[derive(Clone)]
8280    pub struct authRootCall;
8281    #[derive(serde::Serialize, serde::Deserialize)]
8282    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8283    ///Container type for the return parameters of the [`authRoot()`](authRootCall) function.
8284    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8285    #[derive(Clone)]
8286    pub struct authRootReturn {
8287        #[allow(missing_docs)]
8288        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8289    }
8290    #[allow(
8291        non_camel_case_types,
8292        non_snake_case,
8293        clippy::pub_underscore_fields,
8294        clippy::style
8295    )]
8296    const _: () = {
8297        use alloy::sol_types as alloy_sol_types;
8298        {
8299            #[doc(hidden)]
8300            type UnderlyingSolTuple<'a> = ();
8301            #[doc(hidden)]
8302            type UnderlyingRustTuple<'a> = ();
8303            #[cfg(test)]
8304            #[allow(dead_code, unreachable_patterns)]
8305            fn _type_assertion(
8306                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8307            ) {
8308                match _t {
8309                    alloy_sol_types::private::AssertTypeEq::<
8310                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8311                    >(_) => {}
8312                }
8313            }
8314            #[automatically_derived]
8315            #[doc(hidden)]
8316            impl ::core::convert::From<authRootCall> for UnderlyingRustTuple<'_> {
8317                fn from(value: authRootCall) -> Self {
8318                    ()
8319                }
8320            }
8321            #[automatically_derived]
8322            #[doc(hidden)]
8323            impl ::core::convert::From<UnderlyingRustTuple<'_>> for authRootCall {
8324                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8325                    Self
8326                }
8327            }
8328        }
8329        {
8330            #[doc(hidden)]
8331            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8332            #[doc(hidden)]
8333            type UnderlyingRustTuple<'a> = (
8334                alloy::sol_types::private::primitives::aliases::U256,
8335            );
8336            #[cfg(test)]
8337            #[allow(dead_code, unreachable_patterns)]
8338            fn _type_assertion(
8339                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8340            ) {
8341                match _t {
8342                    alloy_sol_types::private::AssertTypeEq::<
8343                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8344                    >(_) => {}
8345                }
8346            }
8347            #[automatically_derived]
8348            #[doc(hidden)]
8349            impl ::core::convert::From<authRootReturn> for UnderlyingRustTuple<'_> {
8350                fn from(value: authRootReturn) -> Self {
8351                    (value._0,)
8352                }
8353            }
8354            #[automatically_derived]
8355            #[doc(hidden)]
8356            impl ::core::convert::From<UnderlyingRustTuple<'_>> for authRootReturn {
8357                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8358                    Self { _0: tuple.0 }
8359                }
8360            }
8361        }
8362        #[automatically_derived]
8363        impl alloy_sol_types::SolCall for authRootCall {
8364            type Parameters<'a> = ();
8365            type Token<'a> = <Self::Parameters<
8366                'a,
8367            > as alloy_sol_types::SolType>::Token<'a>;
8368            type Return = alloy::sol_types::private::primitives::aliases::U256;
8369            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8370            type ReturnToken<'a> = <Self::ReturnTuple<
8371                'a,
8372            > as alloy_sol_types::SolType>::Token<'a>;
8373            const SIGNATURE: &'static str = "authRoot()";
8374            const SELECTOR: [u8; 4] = [153u8, 131u8, 40u8, 232u8];
8375            #[inline]
8376            fn new<'a>(
8377                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8378            ) -> Self {
8379                tuple.into()
8380            }
8381            #[inline]
8382            fn tokenize(&self) -> Self::Token<'_> {
8383                ()
8384            }
8385            #[inline]
8386            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8387                (
8388                    <alloy::sol_types::sol_data::Uint<
8389                        256,
8390                    > as alloy_sol_types::SolType>::tokenize(ret),
8391                )
8392            }
8393            #[inline]
8394            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8395                <Self::ReturnTuple<
8396                    '_,
8397                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8398                    .map(|r| {
8399                        let r: authRootReturn = r.into();
8400                        r._0
8401                    })
8402            }
8403            #[inline]
8404            fn abi_decode_returns_validate(
8405                data: &[u8],
8406            ) -> alloy_sol_types::Result<Self::Return> {
8407                <Self::ReturnTuple<
8408                    '_,
8409                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8410                    .map(|r| {
8411                        let r: authRootReturn = r.into();
8412                        r._0
8413                    })
8414            }
8415        }
8416    };
8417    #[derive(serde::Serialize, serde::Deserialize)]
8418    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8419    /**Function with signature `blocksPerEpoch()` and selector `0xf0682054`.
8420```solidity
8421function blocksPerEpoch() external view returns (uint64);
8422```*/
8423    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8424    #[derive(Clone)]
8425    pub struct blocksPerEpochCall;
8426    #[derive(serde::Serialize, serde::Deserialize)]
8427    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8428    ///Container type for the return parameters of the [`blocksPerEpoch()`](blocksPerEpochCall) function.
8429    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8430    #[derive(Clone)]
8431    pub struct blocksPerEpochReturn {
8432        #[allow(missing_docs)]
8433        pub _0: u64,
8434    }
8435    #[allow(
8436        non_camel_case_types,
8437        non_snake_case,
8438        clippy::pub_underscore_fields,
8439        clippy::style
8440    )]
8441    const _: () = {
8442        use alloy::sol_types as alloy_sol_types;
8443        {
8444            #[doc(hidden)]
8445            type UnderlyingSolTuple<'a> = ();
8446            #[doc(hidden)]
8447            type UnderlyingRustTuple<'a> = ();
8448            #[cfg(test)]
8449            #[allow(dead_code, unreachable_patterns)]
8450            fn _type_assertion(
8451                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8452            ) {
8453                match _t {
8454                    alloy_sol_types::private::AssertTypeEq::<
8455                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8456                    >(_) => {}
8457                }
8458            }
8459            #[automatically_derived]
8460            #[doc(hidden)]
8461            impl ::core::convert::From<blocksPerEpochCall> for UnderlyingRustTuple<'_> {
8462                fn from(value: blocksPerEpochCall) -> Self {
8463                    ()
8464                }
8465            }
8466            #[automatically_derived]
8467            #[doc(hidden)]
8468            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blocksPerEpochCall {
8469                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8470                    Self
8471                }
8472            }
8473        }
8474        {
8475            #[doc(hidden)]
8476            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8477            #[doc(hidden)]
8478            type UnderlyingRustTuple<'a> = (u64,);
8479            #[cfg(test)]
8480            #[allow(dead_code, unreachable_patterns)]
8481            fn _type_assertion(
8482                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8483            ) {
8484                match _t {
8485                    alloy_sol_types::private::AssertTypeEq::<
8486                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8487                    >(_) => {}
8488                }
8489            }
8490            #[automatically_derived]
8491            #[doc(hidden)]
8492            impl ::core::convert::From<blocksPerEpochReturn>
8493            for UnderlyingRustTuple<'_> {
8494                fn from(value: blocksPerEpochReturn) -> Self {
8495                    (value._0,)
8496                }
8497            }
8498            #[automatically_derived]
8499            #[doc(hidden)]
8500            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8501            for blocksPerEpochReturn {
8502                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8503                    Self { _0: tuple.0 }
8504                }
8505            }
8506        }
8507        #[automatically_derived]
8508        impl alloy_sol_types::SolCall for blocksPerEpochCall {
8509            type Parameters<'a> = ();
8510            type Token<'a> = <Self::Parameters<
8511                'a,
8512            > as alloy_sol_types::SolType>::Token<'a>;
8513            type Return = u64;
8514            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8515            type ReturnToken<'a> = <Self::ReturnTuple<
8516                'a,
8517            > as alloy_sol_types::SolType>::Token<'a>;
8518            const SIGNATURE: &'static str = "blocksPerEpoch()";
8519            const SELECTOR: [u8; 4] = [240u8, 104u8, 32u8, 84u8];
8520            #[inline]
8521            fn new<'a>(
8522                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8523            ) -> Self {
8524                tuple.into()
8525            }
8526            #[inline]
8527            fn tokenize(&self) -> Self::Token<'_> {
8528                ()
8529            }
8530            #[inline]
8531            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8532                (
8533                    <alloy::sol_types::sol_data::Uint<
8534                        64,
8535                    > as alloy_sol_types::SolType>::tokenize(ret),
8536                )
8537            }
8538            #[inline]
8539            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8540                <Self::ReturnTuple<
8541                    '_,
8542                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8543                    .map(|r| {
8544                        let r: blocksPerEpochReturn = r.into();
8545                        r._0
8546                    })
8547            }
8548            #[inline]
8549            fn abi_decode_returns_validate(
8550                data: &[u8],
8551            ) -> alloy_sol_types::Result<Self::Return> {
8552                <Self::ReturnTuple<
8553                    '_,
8554                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8555                    .map(|r| {
8556                        let r: blocksPerEpochReturn = r.into();
8557                        r._0
8558                    })
8559            }
8560        }
8561    };
8562    #[derive(serde::Serialize, serde::Deserialize)]
8563    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8564    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
8565```solidity
8566function currentBlockNumber() external view returns (uint256);
8567```*/
8568    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8569    #[derive(Clone)]
8570    pub struct currentBlockNumberCall;
8571    #[derive(serde::Serialize, serde::Deserialize)]
8572    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8573    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
8574    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8575    #[derive(Clone)]
8576    pub struct currentBlockNumberReturn {
8577        #[allow(missing_docs)]
8578        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8579    }
8580    #[allow(
8581        non_camel_case_types,
8582        non_snake_case,
8583        clippy::pub_underscore_fields,
8584        clippy::style
8585    )]
8586    const _: () = {
8587        use alloy::sol_types as alloy_sol_types;
8588        {
8589            #[doc(hidden)]
8590            type UnderlyingSolTuple<'a> = ();
8591            #[doc(hidden)]
8592            type UnderlyingRustTuple<'a> = ();
8593            #[cfg(test)]
8594            #[allow(dead_code, unreachable_patterns)]
8595            fn _type_assertion(
8596                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8597            ) {
8598                match _t {
8599                    alloy_sol_types::private::AssertTypeEq::<
8600                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8601                    >(_) => {}
8602                }
8603            }
8604            #[automatically_derived]
8605            #[doc(hidden)]
8606            impl ::core::convert::From<currentBlockNumberCall>
8607            for UnderlyingRustTuple<'_> {
8608                fn from(value: currentBlockNumberCall) -> Self {
8609                    ()
8610                }
8611            }
8612            #[automatically_derived]
8613            #[doc(hidden)]
8614            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8615            for currentBlockNumberCall {
8616                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8617                    Self
8618                }
8619            }
8620        }
8621        {
8622            #[doc(hidden)]
8623            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8624            #[doc(hidden)]
8625            type UnderlyingRustTuple<'a> = (
8626                alloy::sol_types::private::primitives::aliases::U256,
8627            );
8628            #[cfg(test)]
8629            #[allow(dead_code, unreachable_patterns)]
8630            fn _type_assertion(
8631                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8632            ) {
8633                match _t {
8634                    alloy_sol_types::private::AssertTypeEq::<
8635                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8636                    >(_) => {}
8637                }
8638            }
8639            #[automatically_derived]
8640            #[doc(hidden)]
8641            impl ::core::convert::From<currentBlockNumberReturn>
8642            for UnderlyingRustTuple<'_> {
8643                fn from(value: currentBlockNumberReturn) -> Self {
8644                    (value._0,)
8645                }
8646            }
8647            #[automatically_derived]
8648            #[doc(hidden)]
8649            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8650            for currentBlockNumberReturn {
8651                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8652                    Self { _0: tuple.0 }
8653                }
8654            }
8655        }
8656        #[automatically_derived]
8657        impl alloy_sol_types::SolCall for currentBlockNumberCall {
8658            type Parameters<'a> = ();
8659            type Token<'a> = <Self::Parameters<
8660                'a,
8661            > as alloy_sol_types::SolType>::Token<'a>;
8662            type Return = alloy::sol_types::private::primitives::aliases::U256;
8663            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8664            type ReturnToken<'a> = <Self::ReturnTuple<
8665                'a,
8666            > as alloy_sol_types::SolType>::Token<'a>;
8667            const SIGNATURE: &'static str = "currentBlockNumber()";
8668            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
8669            #[inline]
8670            fn new<'a>(
8671                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8672            ) -> Self {
8673                tuple.into()
8674            }
8675            #[inline]
8676            fn tokenize(&self) -> Self::Token<'_> {
8677                ()
8678            }
8679            #[inline]
8680            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8681                (
8682                    <alloy::sol_types::sol_data::Uint<
8683                        256,
8684                    > as alloy_sol_types::SolType>::tokenize(ret),
8685                )
8686            }
8687            #[inline]
8688            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8689                <Self::ReturnTuple<
8690                    '_,
8691                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8692                    .map(|r| {
8693                        let r: currentBlockNumberReturn = r.into();
8694                        r._0
8695                    })
8696            }
8697            #[inline]
8698            fn abi_decode_returns_validate(
8699                data: &[u8],
8700            ) -> alloy_sol_types::Result<Self::Return> {
8701                <Self::ReturnTuple<
8702                    '_,
8703                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8704                    .map(|r| {
8705                        let r: currentBlockNumberReturn = r.into();
8706                        r._0
8707                    })
8708            }
8709        }
8710    };
8711    #[derive(serde::Serialize, serde::Deserialize)]
8712    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8713    /**Function with signature `currentEpoch()` and selector `0x76671808`.
8714```solidity
8715function currentEpoch() external view returns (uint64);
8716```*/
8717    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8718    #[derive(Clone)]
8719    pub struct currentEpochCall;
8720    #[derive(serde::Serialize, serde::Deserialize)]
8721    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8722    ///Container type for the return parameters of the [`currentEpoch()`](currentEpochCall) function.
8723    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8724    #[derive(Clone)]
8725    pub struct currentEpochReturn {
8726        #[allow(missing_docs)]
8727        pub _0: u64,
8728    }
8729    #[allow(
8730        non_camel_case_types,
8731        non_snake_case,
8732        clippy::pub_underscore_fields,
8733        clippy::style
8734    )]
8735    const _: () = {
8736        use alloy::sol_types as alloy_sol_types;
8737        {
8738            #[doc(hidden)]
8739            type UnderlyingSolTuple<'a> = ();
8740            #[doc(hidden)]
8741            type UnderlyingRustTuple<'a> = ();
8742            #[cfg(test)]
8743            #[allow(dead_code, unreachable_patterns)]
8744            fn _type_assertion(
8745                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8746            ) {
8747                match _t {
8748                    alloy_sol_types::private::AssertTypeEq::<
8749                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8750                    >(_) => {}
8751                }
8752            }
8753            #[automatically_derived]
8754            #[doc(hidden)]
8755            impl ::core::convert::From<currentEpochCall> for UnderlyingRustTuple<'_> {
8756                fn from(value: currentEpochCall) -> Self {
8757                    ()
8758                }
8759            }
8760            #[automatically_derived]
8761            #[doc(hidden)]
8762            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochCall {
8763                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8764                    Self
8765                }
8766            }
8767        }
8768        {
8769            #[doc(hidden)]
8770            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8771            #[doc(hidden)]
8772            type UnderlyingRustTuple<'a> = (u64,);
8773            #[cfg(test)]
8774            #[allow(dead_code, unreachable_patterns)]
8775            fn _type_assertion(
8776                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8777            ) {
8778                match _t {
8779                    alloy_sol_types::private::AssertTypeEq::<
8780                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8781                    >(_) => {}
8782                }
8783            }
8784            #[automatically_derived]
8785            #[doc(hidden)]
8786            impl ::core::convert::From<currentEpochReturn> for UnderlyingRustTuple<'_> {
8787                fn from(value: currentEpochReturn) -> Self {
8788                    (value._0,)
8789                }
8790            }
8791            #[automatically_derived]
8792            #[doc(hidden)]
8793            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochReturn {
8794                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8795                    Self { _0: tuple.0 }
8796                }
8797            }
8798        }
8799        #[automatically_derived]
8800        impl alloy_sol_types::SolCall for currentEpochCall {
8801            type Parameters<'a> = ();
8802            type Token<'a> = <Self::Parameters<
8803                'a,
8804            > as alloy_sol_types::SolType>::Token<'a>;
8805            type Return = u64;
8806            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8807            type ReturnToken<'a> = <Self::ReturnTuple<
8808                'a,
8809            > as alloy_sol_types::SolType>::Token<'a>;
8810            const SIGNATURE: &'static str = "currentEpoch()";
8811            const SELECTOR: [u8; 4] = [118u8, 103u8, 24u8, 8u8];
8812            #[inline]
8813            fn new<'a>(
8814                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8815            ) -> Self {
8816                tuple.into()
8817            }
8818            #[inline]
8819            fn tokenize(&self) -> Self::Token<'_> {
8820                ()
8821            }
8822            #[inline]
8823            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8824                (
8825                    <alloy::sol_types::sol_data::Uint<
8826                        64,
8827                    > as alloy_sol_types::SolType>::tokenize(ret),
8828                )
8829            }
8830            #[inline]
8831            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8832                <Self::ReturnTuple<
8833                    '_,
8834                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8835                    .map(|r| {
8836                        let r: currentEpochReturn = r.into();
8837                        r._0
8838                    })
8839            }
8840            #[inline]
8841            fn abi_decode_returns_validate(
8842                data: &[u8],
8843            ) -> alloy_sol_types::Result<Self::Return> {
8844                <Self::ReturnTuple<
8845                    '_,
8846                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8847                    .map(|r| {
8848                        let r: currentEpochReturn = r.into();
8849                        r._0
8850                    })
8851            }
8852        }
8853    };
8854    #[derive(serde::Serialize, serde::Deserialize)]
8855    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8856    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
8857```solidity
8858function disablePermissionedProverMode() external;
8859```*/
8860    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8861    #[derive(Clone)]
8862    pub struct disablePermissionedProverModeCall;
8863    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
8864    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8865    #[derive(Clone)]
8866    pub struct disablePermissionedProverModeReturn {}
8867    #[allow(
8868        non_camel_case_types,
8869        non_snake_case,
8870        clippy::pub_underscore_fields,
8871        clippy::style
8872    )]
8873    const _: () = {
8874        use alloy::sol_types as alloy_sol_types;
8875        {
8876            #[doc(hidden)]
8877            type UnderlyingSolTuple<'a> = ();
8878            #[doc(hidden)]
8879            type UnderlyingRustTuple<'a> = ();
8880            #[cfg(test)]
8881            #[allow(dead_code, unreachable_patterns)]
8882            fn _type_assertion(
8883                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8884            ) {
8885                match _t {
8886                    alloy_sol_types::private::AssertTypeEq::<
8887                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8888                    >(_) => {}
8889                }
8890            }
8891            #[automatically_derived]
8892            #[doc(hidden)]
8893            impl ::core::convert::From<disablePermissionedProverModeCall>
8894            for UnderlyingRustTuple<'_> {
8895                fn from(value: disablePermissionedProverModeCall) -> Self {
8896                    ()
8897                }
8898            }
8899            #[automatically_derived]
8900            #[doc(hidden)]
8901            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8902            for disablePermissionedProverModeCall {
8903                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8904                    Self
8905                }
8906            }
8907        }
8908        {
8909            #[doc(hidden)]
8910            type UnderlyingSolTuple<'a> = ();
8911            #[doc(hidden)]
8912            type UnderlyingRustTuple<'a> = ();
8913            #[cfg(test)]
8914            #[allow(dead_code, unreachable_patterns)]
8915            fn _type_assertion(
8916                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8917            ) {
8918                match _t {
8919                    alloy_sol_types::private::AssertTypeEq::<
8920                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8921                    >(_) => {}
8922                }
8923            }
8924            #[automatically_derived]
8925            #[doc(hidden)]
8926            impl ::core::convert::From<disablePermissionedProverModeReturn>
8927            for UnderlyingRustTuple<'_> {
8928                fn from(value: disablePermissionedProverModeReturn) -> Self {
8929                    ()
8930                }
8931            }
8932            #[automatically_derived]
8933            #[doc(hidden)]
8934            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8935            for disablePermissionedProverModeReturn {
8936                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8937                    Self {}
8938                }
8939            }
8940        }
8941        impl disablePermissionedProverModeReturn {
8942            fn _tokenize(
8943                &self,
8944            ) -> <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::ReturnToken<
8945                '_,
8946            > {
8947                ()
8948            }
8949        }
8950        #[automatically_derived]
8951        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
8952            type Parameters<'a> = ();
8953            type Token<'a> = <Self::Parameters<
8954                'a,
8955            > as alloy_sol_types::SolType>::Token<'a>;
8956            type Return = disablePermissionedProverModeReturn;
8957            type ReturnTuple<'a> = ();
8958            type ReturnToken<'a> = <Self::ReturnTuple<
8959                'a,
8960            > as alloy_sol_types::SolType>::Token<'a>;
8961            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
8962            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
8963            #[inline]
8964            fn new<'a>(
8965                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8966            ) -> Self {
8967                tuple.into()
8968            }
8969            #[inline]
8970            fn tokenize(&self) -> Self::Token<'_> {
8971                ()
8972            }
8973            #[inline]
8974            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8975                disablePermissionedProverModeReturn::_tokenize(ret)
8976            }
8977            #[inline]
8978            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8979                <Self::ReturnTuple<
8980                    '_,
8981                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8982                    .map(Into::into)
8983            }
8984            #[inline]
8985            fn abi_decode_returns_validate(
8986                data: &[u8],
8987            ) -> alloy_sol_types::Result<Self::Return> {
8988                <Self::ReturnTuple<
8989                    '_,
8990                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8991                    .map(Into::into)
8992            }
8993        }
8994    };
8995    #[derive(serde::Serialize, serde::Deserialize)]
8996    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8997    /**Function with signature `epochFromBlockNumber(uint64,uint64)` and selector `0x90c14390`.
8998```solidity
8999function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
9000```*/
9001    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9002    #[derive(Clone)]
9003    pub struct epochFromBlockNumberCall {
9004        #[allow(missing_docs)]
9005        pub _blockNum: u64,
9006        #[allow(missing_docs)]
9007        pub _blocksPerEpoch: u64,
9008    }
9009    #[derive(serde::Serialize, serde::Deserialize)]
9010    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9011    ///Container type for the return parameters of the [`epochFromBlockNumber(uint64,uint64)`](epochFromBlockNumberCall) function.
9012    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9013    #[derive(Clone)]
9014    pub struct epochFromBlockNumberReturn {
9015        #[allow(missing_docs)]
9016        pub _0: u64,
9017    }
9018    #[allow(
9019        non_camel_case_types,
9020        non_snake_case,
9021        clippy::pub_underscore_fields,
9022        clippy::style
9023    )]
9024    const _: () = {
9025        use alloy::sol_types as alloy_sol_types;
9026        {
9027            #[doc(hidden)]
9028            type UnderlyingSolTuple<'a> = (
9029                alloy::sol_types::sol_data::Uint<64>,
9030                alloy::sol_types::sol_data::Uint<64>,
9031            );
9032            #[doc(hidden)]
9033            type UnderlyingRustTuple<'a> = (u64, u64);
9034            #[cfg(test)]
9035            #[allow(dead_code, unreachable_patterns)]
9036            fn _type_assertion(
9037                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9038            ) {
9039                match _t {
9040                    alloy_sol_types::private::AssertTypeEq::<
9041                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9042                    >(_) => {}
9043                }
9044            }
9045            #[automatically_derived]
9046            #[doc(hidden)]
9047            impl ::core::convert::From<epochFromBlockNumberCall>
9048            for UnderlyingRustTuple<'_> {
9049                fn from(value: epochFromBlockNumberCall) -> Self {
9050                    (value._blockNum, value._blocksPerEpoch)
9051                }
9052            }
9053            #[automatically_derived]
9054            #[doc(hidden)]
9055            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9056            for epochFromBlockNumberCall {
9057                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9058                    Self {
9059                        _blockNum: tuple.0,
9060                        _blocksPerEpoch: tuple.1,
9061                    }
9062                }
9063            }
9064        }
9065        {
9066            #[doc(hidden)]
9067            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9068            #[doc(hidden)]
9069            type UnderlyingRustTuple<'a> = (u64,);
9070            #[cfg(test)]
9071            #[allow(dead_code, unreachable_patterns)]
9072            fn _type_assertion(
9073                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9074            ) {
9075                match _t {
9076                    alloy_sol_types::private::AssertTypeEq::<
9077                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9078                    >(_) => {}
9079                }
9080            }
9081            #[automatically_derived]
9082            #[doc(hidden)]
9083            impl ::core::convert::From<epochFromBlockNumberReturn>
9084            for UnderlyingRustTuple<'_> {
9085                fn from(value: epochFromBlockNumberReturn) -> Self {
9086                    (value._0,)
9087                }
9088            }
9089            #[automatically_derived]
9090            #[doc(hidden)]
9091            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9092            for epochFromBlockNumberReturn {
9093                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9094                    Self { _0: tuple.0 }
9095                }
9096            }
9097        }
9098        #[automatically_derived]
9099        impl alloy_sol_types::SolCall for epochFromBlockNumberCall {
9100            type Parameters<'a> = (
9101                alloy::sol_types::sol_data::Uint<64>,
9102                alloy::sol_types::sol_data::Uint<64>,
9103            );
9104            type Token<'a> = <Self::Parameters<
9105                'a,
9106            > as alloy_sol_types::SolType>::Token<'a>;
9107            type Return = u64;
9108            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9109            type ReturnToken<'a> = <Self::ReturnTuple<
9110                'a,
9111            > as alloy_sol_types::SolType>::Token<'a>;
9112            const SIGNATURE: &'static str = "epochFromBlockNumber(uint64,uint64)";
9113            const SELECTOR: [u8; 4] = [144u8, 193u8, 67u8, 144u8];
9114            #[inline]
9115            fn new<'a>(
9116                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9117            ) -> Self {
9118                tuple.into()
9119            }
9120            #[inline]
9121            fn tokenize(&self) -> Self::Token<'_> {
9122                (
9123                    <alloy::sol_types::sol_data::Uint<
9124                        64,
9125                    > as alloy_sol_types::SolType>::tokenize(&self._blockNum),
9126                    <alloy::sol_types::sol_data::Uint<
9127                        64,
9128                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
9129                )
9130            }
9131            #[inline]
9132            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9133                (
9134                    <alloy::sol_types::sol_data::Uint<
9135                        64,
9136                    > as alloy_sol_types::SolType>::tokenize(ret),
9137                )
9138            }
9139            #[inline]
9140            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9141                <Self::ReturnTuple<
9142                    '_,
9143                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9144                    .map(|r| {
9145                        let r: epochFromBlockNumberReturn = r.into();
9146                        r._0
9147                    })
9148            }
9149            #[inline]
9150            fn abi_decode_returns_validate(
9151                data: &[u8],
9152            ) -> alloy_sol_types::Result<Self::Return> {
9153                <Self::ReturnTuple<
9154                    '_,
9155                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9156                    .map(|r| {
9157                        let r: epochFromBlockNumberReturn = r.into();
9158                        r._0
9159                    })
9160            }
9161        }
9162    };
9163    #[derive(serde::Serialize, serde::Deserialize)]
9164    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9165    /**Function with signature `epochStartBlock()` and selector `0x3ed55b7b`.
9166```solidity
9167function epochStartBlock() external view returns (uint64);
9168```*/
9169    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9170    #[derive(Clone)]
9171    pub struct epochStartBlockCall;
9172    #[derive(serde::Serialize, serde::Deserialize)]
9173    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9174    ///Container type for the return parameters of the [`epochStartBlock()`](epochStartBlockCall) function.
9175    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9176    #[derive(Clone)]
9177    pub struct epochStartBlockReturn {
9178        #[allow(missing_docs)]
9179        pub _0: u64,
9180    }
9181    #[allow(
9182        non_camel_case_types,
9183        non_snake_case,
9184        clippy::pub_underscore_fields,
9185        clippy::style
9186    )]
9187    const _: () = {
9188        use alloy::sol_types as alloy_sol_types;
9189        {
9190            #[doc(hidden)]
9191            type UnderlyingSolTuple<'a> = ();
9192            #[doc(hidden)]
9193            type UnderlyingRustTuple<'a> = ();
9194            #[cfg(test)]
9195            #[allow(dead_code, unreachable_patterns)]
9196            fn _type_assertion(
9197                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9198            ) {
9199                match _t {
9200                    alloy_sol_types::private::AssertTypeEq::<
9201                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9202                    >(_) => {}
9203                }
9204            }
9205            #[automatically_derived]
9206            #[doc(hidden)]
9207            impl ::core::convert::From<epochStartBlockCall> for UnderlyingRustTuple<'_> {
9208                fn from(value: epochStartBlockCall) -> Self {
9209                    ()
9210                }
9211            }
9212            #[automatically_derived]
9213            #[doc(hidden)]
9214            impl ::core::convert::From<UnderlyingRustTuple<'_>> for epochStartBlockCall {
9215                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9216                    Self
9217                }
9218            }
9219        }
9220        {
9221            #[doc(hidden)]
9222            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9223            #[doc(hidden)]
9224            type UnderlyingRustTuple<'a> = (u64,);
9225            #[cfg(test)]
9226            #[allow(dead_code, unreachable_patterns)]
9227            fn _type_assertion(
9228                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9229            ) {
9230                match _t {
9231                    alloy_sol_types::private::AssertTypeEq::<
9232                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9233                    >(_) => {}
9234                }
9235            }
9236            #[automatically_derived]
9237            #[doc(hidden)]
9238            impl ::core::convert::From<epochStartBlockReturn>
9239            for UnderlyingRustTuple<'_> {
9240                fn from(value: epochStartBlockReturn) -> Self {
9241                    (value._0,)
9242                }
9243            }
9244            #[automatically_derived]
9245            #[doc(hidden)]
9246            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9247            for epochStartBlockReturn {
9248                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9249                    Self { _0: tuple.0 }
9250                }
9251            }
9252        }
9253        #[automatically_derived]
9254        impl alloy_sol_types::SolCall for epochStartBlockCall {
9255            type Parameters<'a> = ();
9256            type Token<'a> = <Self::Parameters<
9257                'a,
9258            > as alloy_sol_types::SolType>::Token<'a>;
9259            type Return = u64;
9260            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9261            type ReturnToken<'a> = <Self::ReturnTuple<
9262                'a,
9263            > as alloy_sol_types::SolType>::Token<'a>;
9264            const SIGNATURE: &'static str = "epochStartBlock()";
9265            const SELECTOR: [u8; 4] = [62u8, 213u8, 91u8, 123u8];
9266            #[inline]
9267            fn new<'a>(
9268                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9269            ) -> Self {
9270                tuple.into()
9271            }
9272            #[inline]
9273            fn tokenize(&self) -> Self::Token<'_> {
9274                ()
9275            }
9276            #[inline]
9277            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9278                (
9279                    <alloy::sol_types::sol_data::Uint<
9280                        64,
9281                    > as alloy_sol_types::SolType>::tokenize(ret),
9282                )
9283            }
9284            #[inline]
9285            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9286                <Self::ReturnTuple<
9287                    '_,
9288                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9289                    .map(|r| {
9290                        let r: epochStartBlockReturn = r.into();
9291                        r._0
9292                    })
9293            }
9294            #[inline]
9295            fn abi_decode_returns_validate(
9296                data: &[u8],
9297            ) -> alloy_sol_types::Result<Self::Return> {
9298                <Self::ReturnTuple<
9299                    '_,
9300                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9301                    .map(|r| {
9302                        let r: epochStartBlockReturn = r.into();
9303                        r._0
9304                    })
9305            }
9306        }
9307    };
9308    #[derive(serde::Serialize, serde::Deserialize)]
9309    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9310    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
9311```solidity
9312function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
9313```*/
9314    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9315    #[derive(Clone)]
9316    pub struct finalizedStateCall;
9317    #[derive(serde::Serialize, serde::Deserialize)]
9318    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9319    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
9320    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9321    #[derive(Clone)]
9322    pub struct finalizedStateReturn {
9323        #[allow(missing_docs)]
9324        pub viewNum: u64,
9325        #[allow(missing_docs)]
9326        pub blockHeight: u64,
9327        #[allow(missing_docs)]
9328        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9329    }
9330    #[allow(
9331        non_camel_case_types,
9332        non_snake_case,
9333        clippy::pub_underscore_fields,
9334        clippy::style
9335    )]
9336    const _: () = {
9337        use alloy::sol_types as alloy_sol_types;
9338        {
9339            #[doc(hidden)]
9340            type UnderlyingSolTuple<'a> = ();
9341            #[doc(hidden)]
9342            type UnderlyingRustTuple<'a> = ();
9343            #[cfg(test)]
9344            #[allow(dead_code, unreachable_patterns)]
9345            fn _type_assertion(
9346                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9347            ) {
9348                match _t {
9349                    alloy_sol_types::private::AssertTypeEq::<
9350                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9351                    >(_) => {}
9352                }
9353            }
9354            #[automatically_derived]
9355            #[doc(hidden)]
9356            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
9357                fn from(value: finalizedStateCall) -> Self {
9358                    ()
9359                }
9360            }
9361            #[automatically_derived]
9362            #[doc(hidden)]
9363            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
9364                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9365                    Self
9366                }
9367            }
9368        }
9369        {
9370            #[doc(hidden)]
9371            type UnderlyingSolTuple<'a> = (
9372                alloy::sol_types::sol_data::Uint<64>,
9373                alloy::sol_types::sol_data::Uint<64>,
9374                BN254::ScalarField,
9375            );
9376            #[doc(hidden)]
9377            type UnderlyingRustTuple<'a> = (
9378                u64,
9379                u64,
9380                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9381            );
9382            #[cfg(test)]
9383            #[allow(dead_code, unreachable_patterns)]
9384            fn _type_assertion(
9385                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9386            ) {
9387                match _t {
9388                    alloy_sol_types::private::AssertTypeEq::<
9389                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9390                    >(_) => {}
9391                }
9392            }
9393            #[automatically_derived]
9394            #[doc(hidden)]
9395            impl ::core::convert::From<finalizedStateReturn>
9396            for UnderlyingRustTuple<'_> {
9397                fn from(value: finalizedStateReturn) -> Self {
9398                    (value.viewNum, value.blockHeight, value.blockCommRoot)
9399                }
9400            }
9401            #[automatically_derived]
9402            #[doc(hidden)]
9403            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9404            for finalizedStateReturn {
9405                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9406                    Self {
9407                        viewNum: tuple.0,
9408                        blockHeight: tuple.1,
9409                        blockCommRoot: tuple.2,
9410                    }
9411                }
9412            }
9413        }
9414        impl finalizedStateReturn {
9415            fn _tokenize(
9416                &self,
9417            ) -> <finalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9418                (
9419                    <alloy::sol_types::sol_data::Uint<
9420                        64,
9421                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
9422                    <alloy::sol_types::sol_data::Uint<
9423                        64,
9424                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
9425                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9426                        &self.blockCommRoot,
9427                    ),
9428                )
9429            }
9430        }
9431        #[automatically_derived]
9432        impl alloy_sol_types::SolCall for finalizedStateCall {
9433            type Parameters<'a> = ();
9434            type Token<'a> = <Self::Parameters<
9435                'a,
9436            > as alloy_sol_types::SolType>::Token<'a>;
9437            type Return = finalizedStateReturn;
9438            type ReturnTuple<'a> = (
9439                alloy::sol_types::sol_data::Uint<64>,
9440                alloy::sol_types::sol_data::Uint<64>,
9441                BN254::ScalarField,
9442            );
9443            type ReturnToken<'a> = <Self::ReturnTuple<
9444                'a,
9445            > as alloy_sol_types::SolType>::Token<'a>;
9446            const SIGNATURE: &'static str = "finalizedState()";
9447            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
9448            #[inline]
9449            fn new<'a>(
9450                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9451            ) -> Self {
9452                tuple.into()
9453            }
9454            #[inline]
9455            fn tokenize(&self) -> Self::Token<'_> {
9456                ()
9457            }
9458            #[inline]
9459            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9460                finalizedStateReturn::_tokenize(ret)
9461            }
9462            #[inline]
9463            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9464                <Self::ReturnTuple<
9465                    '_,
9466                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9467                    .map(Into::into)
9468            }
9469            #[inline]
9470            fn abi_decode_returns_validate(
9471                data: &[u8],
9472            ) -> alloy_sol_types::Result<Self::Return> {
9473                <Self::ReturnTuple<
9474                    '_,
9475                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9476                    .map(Into::into)
9477            }
9478        }
9479    };
9480    #[derive(serde::Serialize, serde::Deserialize)]
9481    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9482    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
9483```solidity
9484function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
9485```*/
9486    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9487    #[derive(Clone)]
9488    pub struct genesisStakeTableStateCall;
9489    #[derive(serde::Serialize, serde::Deserialize)]
9490    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9491    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
9492    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9493    #[derive(Clone)]
9494    pub struct genesisStakeTableStateReturn {
9495        #[allow(missing_docs)]
9496        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
9497        #[allow(missing_docs)]
9498        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9499        #[allow(missing_docs)]
9500        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9501        #[allow(missing_docs)]
9502        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9503    }
9504    #[allow(
9505        non_camel_case_types,
9506        non_snake_case,
9507        clippy::pub_underscore_fields,
9508        clippy::style
9509    )]
9510    const _: () = {
9511        use alloy::sol_types as alloy_sol_types;
9512        {
9513            #[doc(hidden)]
9514            type UnderlyingSolTuple<'a> = ();
9515            #[doc(hidden)]
9516            type UnderlyingRustTuple<'a> = ();
9517            #[cfg(test)]
9518            #[allow(dead_code, unreachable_patterns)]
9519            fn _type_assertion(
9520                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9521            ) {
9522                match _t {
9523                    alloy_sol_types::private::AssertTypeEq::<
9524                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9525                    >(_) => {}
9526                }
9527            }
9528            #[automatically_derived]
9529            #[doc(hidden)]
9530            impl ::core::convert::From<genesisStakeTableStateCall>
9531            for UnderlyingRustTuple<'_> {
9532                fn from(value: genesisStakeTableStateCall) -> Self {
9533                    ()
9534                }
9535            }
9536            #[automatically_derived]
9537            #[doc(hidden)]
9538            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9539            for genesisStakeTableStateCall {
9540                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9541                    Self
9542                }
9543            }
9544        }
9545        {
9546            #[doc(hidden)]
9547            type UnderlyingSolTuple<'a> = (
9548                alloy::sol_types::sol_data::Uint<256>,
9549                BN254::ScalarField,
9550                BN254::ScalarField,
9551                BN254::ScalarField,
9552            );
9553            #[doc(hidden)]
9554            type UnderlyingRustTuple<'a> = (
9555                alloy::sol_types::private::primitives::aliases::U256,
9556                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9557                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9558                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9559            );
9560            #[cfg(test)]
9561            #[allow(dead_code, unreachable_patterns)]
9562            fn _type_assertion(
9563                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9564            ) {
9565                match _t {
9566                    alloy_sol_types::private::AssertTypeEq::<
9567                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9568                    >(_) => {}
9569                }
9570            }
9571            #[automatically_derived]
9572            #[doc(hidden)]
9573            impl ::core::convert::From<genesisStakeTableStateReturn>
9574            for UnderlyingRustTuple<'_> {
9575                fn from(value: genesisStakeTableStateReturn) -> Self {
9576                    (
9577                        value.threshold,
9578                        value.blsKeyComm,
9579                        value.schnorrKeyComm,
9580                        value.amountComm,
9581                    )
9582                }
9583            }
9584            #[automatically_derived]
9585            #[doc(hidden)]
9586            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9587            for genesisStakeTableStateReturn {
9588                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9589                    Self {
9590                        threshold: tuple.0,
9591                        blsKeyComm: tuple.1,
9592                        schnorrKeyComm: tuple.2,
9593                        amountComm: tuple.3,
9594                    }
9595                }
9596            }
9597        }
9598        impl genesisStakeTableStateReturn {
9599            fn _tokenize(
9600                &self,
9601            ) -> <genesisStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
9602                '_,
9603            > {
9604                (
9605                    <alloy::sol_types::sol_data::Uint<
9606                        256,
9607                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
9608                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9609                        &self.blsKeyComm,
9610                    ),
9611                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9612                        &self.schnorrKeyComm,
9613                    ),
9614                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9615                        &self.amountComm,
9616                    ),
9617                )
9618            }
9619        }
9620        #[automatically_derived]
9621        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
9622            type Parameters<'a> = ();
9623            type Token<'a> = <Self::Parameters<
9624                'a,
9625            > as alloy_sol_types::SolType>::Token<'a>;
9626            type Return = genesisStakeTableStateReturn;
9627            type ReturnTuple<'a> = (
9628                alloy::sol_types::sol_data::Uint<256>,
9629                BN254::ScalarField,
9630                BN254::ScalarField,
9631                BN254::ScalarField,
9632            );
9633            type ReturnToken<'a> = <Self::ReturnTuple<
9634                'a,
9635            > as alloy_sol_types::SolType>::Token<'a>;
9636            const SIGNATURE: &'static str = "genesisStakeTableState()";
9637            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
9638            #[inline]
9639            fn new<'a>(
9640                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9641            ) -> Self {
9642                tuple.into()
9643            }
9644            #[inline]
9645            fn tokenize(&self) -> Self::Token<'_> {
9646                ()
9647            }
9648            #[inline]
9649            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9650                genesisStakeTableStateReturn::_tokenize(ret)
9651            }
9652            #[inline]
9653            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9654                <Self::ReturnTuple<
9655                    '_,
9656                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9657                    .map(Into::into)
9658            }
9659            #[inline]
9660            fn abi_decode_returns_validate(
9661                data: &[u8],
9662            ) -> alloy_sol_types::Result<Self::Return> {
9663                <Self::ReturnTuple<
9664                    '_,
9665                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9666                    .map(Into::into)
9667            }
9668        }
9669    };
9670    #[derive(serde::Serialize, serde::Deserialize)]
9671    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9672    /**Function with signature `genesisState()` and selector `0xd24d933d`.
9673```solidity
9674function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
9675```*/
9676    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9677    #[derive(Clone)]
9678    pub struct genesisStateCall;
9679    #[derive(serde::Serialize, serde::Deserialize)]
9680    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9681    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
9682    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9683    #[derive(Clone)]
9684    pub struct genesisStateReturn {
9685        #[allow(missing_docs)]
9686        pub viewNum: u64,
9687        #[allow(missing_docs)]
9688        pub blockHeight: u64,
9689        #[allow(missing_docs)]
9690        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9691    }
9692    #[allow(
9693        non_camel_case_types,
9694        non_snake_case,
9695        clippy::pub_underscore_fields,
9696        clippy::style
9697    )]
9698    const _: () = {
9699        use alloy::sol_types as alloy_sol_types;
9700        {
9701            #[doc(hidden)]
9702            type UnderlyingSolTuple<'a> = ();
9703            #[doc(hidden)]
9704            type UnderlyingRustTuple<'a> = ();
9705            #[cfg(test)]
9706            #[allow(dead_code, unreachable_patterns)]
9707            fn _type_assertion(
9708                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9709            ) {
9710                match _t {
9711                    alloy_sol_types::private::AssertTypeEq::<
9712                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9713                    >(_) => {}
9714                }
9715            }
9716            #[automatically_derived]
9717            #[doc(hidden)]
9718            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
9719                fn from(value: genesisStateCall) -> Self {
9720                    ()
9721                }
9722            }
9723            #[automatically_derived]
9724            #[doc(hidden)]
9725            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
9726                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9727                    Self
9728                }
9729            }
9730        }
9731        {
9732            #[doc(hidden)]
9733            type UnderlyingSolTuple<'a> = (
9734                alloy::sol_types::sol_data::Uint<64>,
9735                alloy::sol_types::sol_data::Uint<64>,
9736                BN254::ScalarField,
9737            );
9738            #[doc(hidden)]
9739            type UnderlyingRustTuple<'a> = (
9740                u64,
9741                u64,
9742                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9743            );
9744            #[cfg(test)]
9745            #[allow(dead_code, unreachable_patterns)]
9746            fn _type_assertion(
9747                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9748            ) {
9749                match _t {
9750                    alloy_sol_types::private::AssertTypeEq::<
9751                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9752                    >(_) => {}
9753                }
9754            }
9755            #[automatically_derived]
9756            #[doc(hidden)]
9757            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
9758                fn from(value: genesisStateReturn) -> Self {
9759                    (value.viewNum, value.blockHeight, value.blockCommRoot)
9760                }
9761            }
9762            #[automatically_derived]
9763            #[doc(hidden)]
9764            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
9765                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9766                    Self {
9767                        viewNum: tuple.0,
9768                        blockHeight: tuple.1,
9769                        blockCommRoot: tuple.2,
9770                    }
9771                }
9772            }
9773        }
9774        impl genesisStateReturn {
9775            fn _tokenize(
9776                &self,
9777            ) -> <genesisStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9778                (
9779                    <alloy::sol_types::sol_data::Uint<
9780                        64,
9781                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
9782                    <alloy::sol_types::sol_data::Uint<
9783                        64,
9784                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
9785                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9786                        &self.blockCommRoot,
9787                    ),
9788                )
9789            }
9790        }
9791        #[automatically_derived]
9792        impl alloy_sol_types::SolCall for genesisStateCall {
9793            type Parameters<'a> = ();
9794            type Token<'a> = <Self::Parameters<
9795                'a,
9796            > as alloy_sol_types::SolType>::Token<'a>;
9797            type Return = genesisStateReturn;
9798            type ReturnTuple<'a> = (
9799                alloy::sol_types::sol_data::Uint<64>,
9800                alloy::sol_types::sol_data::Uint<64>,
9801                BN254::ScalarField,
9802            );
9803            type ReturnToken<'a> = <Self::ReturnTuple<
9804                'a,
9805            > as alloy_sol_types::SolType>::Token<'a>;
9806            const SIGNATURE: &'static str = "genesisState()";
9807            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
9808            #[inline]
9809            fn new<'a>(
9810                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9811            ) -> Self {
9812                tuple.into()
9813            }
9814            #[inline]
9815            fn tokenize(&self) -> Self::Token<'_> {
9816                ()
9817            }
9818            #[inline]
9819            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9820                genesisStateReturn::_tokenize(ret)
9821            }
9822            #[inline]
9823            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9824                <Self::ReturnTuple<
9825                    '_,
9826                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9827                    .map(Into::into)
9828            }
9829            #[inline]
9830            fn abi_decode_returns_validate(
9831                data: &[u8],
9832            ) -> alloy_sol_types::Result<Self::Return> {
9833                <Self::ReturnTuple<
9834                    '_,
9835                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9836                    .map(Into::into)
9837            }
9838        }
9839    };
9840    #[derive(serde::Serialize, serde::Deserialize)]
9841    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9842    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
9843```solidity
9844function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
9845```*/
9846    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9847    #[derive(Clone)]
9848    pub struct getHotShotCommitmentCall {
9849        #[allow(missing_docs)]
9850        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
9851    }
9852    #[derive(serde::Serialize, serde::Deserialize)]
9853    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9854    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
9855    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9856    #[derive(Clone)]
9857    pub struct getHotShotCommitmentReturn {
9858        #[allow(missing_docs)]
9859        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9860        #[allow(missing_docs)]
9861        pub hotshotBlockHeight: u64,
9862    }
9863    #[allow(
9864        non_camel_case_types,
9865        non_snake_case,
9866        clippy::pub_underscore_fields,
9867        clippy::style
9868    )]
9869    const _: () = {
9870        use alloy::sol_types as alloy_sol_types;
9871        {
9872            #[doc(hidden)]
9873            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9874            #[doc(hidden)]
9875            type UnderlyingRustTuple<'a> = (
9876                alloy::sol_types::private::primitives::aliases::U256,
9877            );
9878            #[cfg(test)]
9879            #[allow(dead_code, unreachable_patterns)]
9880            fn _type_assertion(
9881                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9882            ) {
9883                match _t {
9884                    alloy_sol_types::private::AssertTypeEq::<
9885                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9886                    >(_) => {}
9887                }
9888            }
9889            #[automatically_derived]
9890            #[doc(hidden)]
9891            impl ::core::convert::From<getHotShotCommitmentCall>
9892            for UnderlyingRustTuple<'_> {
9893                fn from(value: getHotShotCommitmentCall) -> Self {
9894                    (value.hotShotBlockHeight,)
9895                }
9896            }
9897            #[automatically_derived]
9898            #[doc(hidden)]
9899            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9900            for getHotShotCommitmentCall {
9901                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9902                    Self {
9903                        hotShotBlockHeight: tuple.0,
9904                    }
9905                }
9906            }
9907        }
9908        {
9909            #[doc(hidden)]
9910            type UnderlyingSolTuple<'a> = (
9911                BN254::ScalarField,
9912                alloy::sol_types::sol_data::Uint<64>,
9913            );
9914            #[doc(hidden)]
9915            type UnderlyingRustTuple<'a> = (
9916                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9917                u64,
9918            );
9919            #[cfg(test)]
9920            #[allow(dead_code, unreachable_patterns)]
9921            fn _type_assertion(
9922                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9923            ) {
9924                match _t {
9925                    alloy_sol_types::private::AssertTypeEq::<
9926                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9927                    >(_) => {}
9928                }
9929            }
9930            #[automatically_derived]
9931            #[doc(hidden)]
9932            impl ::core::convert::From<getHotShotCommitmentReturn>
9933            for UnderlyingRustTuple<'_> {
9934                fn from(value: getHotShotCommitmentReturn) -> Self {
9935                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
9936                }
9937            }
9938            #[automatically_derived]
9939            #[doc(hidden)]
9940            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9941            for getHotShotCommitmentReturn {
9942                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9943                    Self {
9944                        hotShotBlockCommRoot: tuple.0,
9945                        hotshotBlockHeight: tuple.1,
9946                    }
9947                }
9948            }
9949        }
9950        impl getHotShotCommitmentReturn {
9951            fn _tokenize(
9952                &self,
9953            ) -> <getHotShotCommitmentCall as alloy_sol_types::SolCall>::ReturnToken<
9954                '_,
9955            > {
9956                (
9957                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9958                        &self.hotShotBlockCommRoot,
9959                    ),
9960                    <alloy::sol_types::sol_data::Uint<
9961                        64,
9962                    > as alloy_sol_types::SolType>::tokenize(&self.hotshotBlockHeight),
9963                )
9964            }
9965        }
9966        #[automatically_derived]
9967        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
9968            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9969            type Token<'a> = <Self::Parameters<
9970                'a,
9971            > as alloy_sol_types::SolType>::Token<'a>;
9972            type Return = getHotShotCommitmentReturn;
9973            type ReturnTuple<'a> = (
9974                BN254::ScalarField,
9975                alloy::sol_types::sol_data::Uint<64>,
9976            );
9977            type ReturnToken<'a> = <Self::ReturnTuple<
9978                'a,
9979            > as alloy_sol_types::SolType>::Token<'a>;
9980            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
9981            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
9982            #[inline]
9983            fn new<'a>(
9984                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9985            ) -> Self {
9986                tuple.into()
9987            }
9988            #[inline]
9989            fn tokenize(&self) -> Self::Token<'_> {
9990                (
9991                    <alloy::sol_types::sol_data::Uint<
9992                        256,
9993                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
9994                )
9995            }
9996            #[inline]
9997            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9998                getHotShotCommitmentReturn::_tokenize(ret)
9999            }
10000            #[inline]
10001            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10002                <Self::ReturnTuple<
10003                    '_,
10004                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10005                    .map(Into::into)
10006            }
10007            #[inline]
10008            fn abi_decode_returns_validate(
10009                data: &[u8],
10010            ) -> alloy_sol_types::Result<Self::Return> {
10011                <Self::ReturnTuple<
10012                    '_,
10013                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10014                    .map(Into::into)
10015            }
10016        }
10017    };
10018    #[derive(serde::Serialize, serde::Deserialize)]
10019    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10020    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
10021```solidity
10022function getStateHistoryCount() external view returns (uint256);
10023```*/
10024    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10025    #[derive(Clone)]
10026    pub struct getStateHistoryCountCall;
10027    #[derive(serde::Serialize, serde::Deserialize)]
10028    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10029    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
10030    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10031    #[derive(Clone)]
10032    pub struct getStateHistoryCountReturn {
10033        #[allow(missing_docs)]
10034        pub _0: alloy::sol_types::private::primitives::aliases::U256,
10035    }
10036    #[allow(
10037        non_camel_case_types,
10038        non_snake_case,
10039        clippy::pub_underscore_fields,
10040        clippy::style
10041    )]
10042    const _: () = {
10043        use alloy::sol_types as alloy_sol_types;
10044        {
10045            #[doc(hidden)]
10046            type UnderlyingSolTuple<'a> = ();
10047            #[doc(hidden)]
10048            type UnderlyingRustTuple<'a> = ();
10049            #[cfg(test)]
10050            #[allow(dead_code, unreachable_patterns)]
10051            fn _type_assertion(
10052                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10053            ) {
10054                match _t {
10055                    alloy_sol_types::private::AssertTypeEq::<
10056                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10057                    >(_) => {}
10058                }
10059            }
10060            #[automatically_derived]
10061            #[doc(hidden)]
10062            impl ::core::convert::From<getStateHistoryCountCall>
10063            for UnderlyingRustTuple<'_> {
10064                fn from(value: getStateHistoryCountCall) -> Self {
10065                    ()
10066                }
10067            }
10068            #[automatically_derived]
10069            #[doc(hidden)]
10070            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10071            for getStateHistoryCountCall {
10072                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10073                    Self
10074                }
10075            }
10076        }
10077        {
10078            #[doc(hidden)]
10079            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10080            #[doc(hidden)]
10081            type UnderlyingRustTuple<'a> = (
10082                alloy::sol_types::private::primitives::aliases::U256,
10083            );
10084            #[cfg(test)]
10085            #[allow(dead_code, unreachable_patterns)]
10086            fn _type_assertion(
10087                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10088            ) {
10089                match _t {
10090                    alloy_sol_types::private::AssertTypeEq::<
10091                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10092                    >(_) => {}
10093                }
10094            }
10095            #[automatically_derived]
10096            #[doc(hidden)]
10097            impl ::core::convert::From<getStateHistoryCountReturn>
10098            for UnderlyingRustTuple<'_> {
10099                fn from(value: getStateHistoryCountReturn) -> Self {
10100                    (value._0,)
10101                }
10102            }
10103            #[automatically_derived]
10104            #[doc(hidden)]
10105            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10106            for getStateHistoryCountReturn {
10107                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10108                    Self { _0: tuple.0 }
10109                }
10110            }
10111        }
10112        #[automatically_derived]
10113        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
10114            type Parameters<'a> = ();
10115            type Token<'a> = <Self::Parameters<
10116                'a,
10117            > as alloy_sol_types::SolType>::Token<'a>;
10118            type Return = alloy::sol_types::private::primitives::aliases::U256;
10119            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10120            type ReturnToken<'a> = <Self::ReturnTuple<
10121                'a,
10122            > as alloy_sol_types::SolType>::Token<'a>;
10123            const SIGNATURE: &'static str = "getStateHistoryCount()";
10124            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
10125            #[inline]
10126            fn new<'a>(
10127                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10128            ) -> Self {
10129                tuple.into()
10130            }
10131            #[inline]
10132            fn tokenize(&self) -> Self::Token<'_> {
10133                ()
10134            }
10135            #[inline]
10136            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10137                (
10138                    <alloy::sol_types::sol_data::Uint<
10139                        256,
10140                    > as alloy_sol_types::SolType>::tokenize(ret),
10141                )
10142            }
10143            #[inline]
10144            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10145                <Self::ReturnTuple<
10146                    '_,
10147                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10148                    .map(|r| {
10149                        let r: getStateHistoryCountReturn = r.into();
10150                        r._0
10151                    })
10152            }
10153            #[inline]
10154            fn abi_decode_returns_validate(
10155                data: &[u8],
10156            ) -> alloy_sol_types::Result<Self::Return> {
10157                <Self::ReturnTuple<
10158                    '_,
10159                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10160                    .map(|r| {
10161                        let r: getStateHistoryCountReturn = r.into();
10162                        r._0
10163                    })
10164            }
10165        }
10166    };
10167    #[derive(serde::Serialize, serde::Deserialize)]
10168    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10169    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
10170```solidity
10171function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
10172```*/
10173    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10174    #[derive(Clone)]
10175    pub struct getVersionCall;
10176    #[derive(serde::Serialize, serde::Deserialize)]
10177    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10178    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
10179    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10180    #[derive(Clone)]
10181    pub struct getVersionReturn {
10182        #[allow(missing_docs)]
10183        pub majorVersion: u8,
10184        #[allow(missing_docs)]
10185        pub minorVersion: u8,
10186        #[allow(missing_docs)]
10187        pub patchVersion: u8,
10188    }
10189    #[allow(
10190        non_camel_case_types,
10191        non_snake_case,
10192        clippy::pub_underscore_fields,
10193        clippy::style
10194    )]
10195    const _: () = {
10196        use alloy::sol_types as alloy_sol_types;
10197        {
10198            #[doc(hidden)]
10199            type UnderlyingSolTuple<'a> = ();
10200            #[doc(hidden)]
10201            type UnderlyingRustTuple<'a> = ();
10202            #[cfg(test)]
10203            #[allow(dead_code, unreachable_patterns)]
10204            fn _type_assertion(
10205                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10206            ) {
10207                match _t {
10208                    alloy_sol_types::private::AssertTypeEq::<
10209                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10210                    >(_) => {}
10211                }
10212            }
10213            #[automatically_derived]
10214            #[doc(hidden)]
10215            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
10216                fn from(value: getVersionCall) -> Self {
10217                    ()
10218                }
10219            }
10220            #[automatically_derived]
10221            #[doc(hidden)]
10222            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
10223                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10224                    Self
10225                }
10226            }
10227        }
10228        {
10229            #[doc(hidden)]
10230            type UnderlyingSolTuple<'a> = (
10231                alloy::sol_types::sol_data::Uint<8>,
10232                alloy::sol_types::sol_data::Uint<8>,
10233                alloy::sol_types::sol_data::Uint<8>,
10234            );
10235            #[doc(hidden)]
10236            type UnderlyingRustTuple<'a> = (u8, u8, u8);
10237            #[cfg(test)]
10238            #[allow(dead_code, unreachable_patterns)]
10239            fn _type_assertion(
10240                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10241            ) {
10242                match _t {
10243                    alloy_sol_types::private::AssertTypeEq::<
10244                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10245                    >(_) => {}
10246                }
10247            }
10248            #[automatically_derived]
10249            #[doc(hidden)]
10250            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
10251                fn from(value: getVersionReturn) -> Self {
10252                    (value.majorVersion, value.minorVersion, value.patchVersion)
10253                }
10254            }
10255            #[automatically_derived]
10256            #[doc(hidden)]
10257            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
10258                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10259                    Self {
10260                        majorVersion: tuple.0,
10261                        minorVersion: tuple.1,
10262                        patchVersion: tuple.2,
10263                    }
10264                }
10265            }
10266        }
10267        impl getVersionReturn {
10268            fn _tokenize(
10269                &self,
10270            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10271                (
10272                    <alloy::sol_types::sol_data::Uint<
10273                        8,
10274                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
10275                    <alloy::sol_types::sol_data::Uint<
10276                        8,
10277                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
10278                    <alloy::sol_types::sol_data::Uint<
10279                        8,
10280                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
10281                )
10282            }
10283        }
10284        #[automatically_derived]
10285        impl alloy_sol_types::SolCall for getVersionCall {
10286            type Parameters<'a> = ();
10287            type Token<'a> = <Self::Parameters<
10288                'a,
10289            > as alloy_sol_types::SolType>::Token<'a>;
10290            type Return = getVersionReturn;
10291            type ReturnTuple<'a> = (
10292                alloy::sol_types::sol_data::Uint<8>,
10293                alloy::sol_types::sol_data::Uint<8>,
10294                alloy::sol_types::sol_data::Uint<8>,
10295            );
10296            type ReturnToken<'a> = <Self::ReturnTuple<
10297                'a,
10298            > as alloy_sol_types::SolType>::Token<'a>;
10299            const SIGNATURE: &'static str = "getVersion()";
10300            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
10301            #[inline]
10302            fn new<'a>(
10303                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10304            ) -> Self {
10305                tuple.into()
10306            }
10307            #[inline]
10308            fn tokenize(&self) -> Self::Token<'_> {
10309                ()
10310            }
10311            #[inline]
10312            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10313                getVersionReturn::_tokenize(ret)
10314            }
10315            #[inline]
10316            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10317                <Self::ReturnTuple<
10318                    '_,
10319                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10320                    .map(Into::into)
10321            }
10322            #[inline]
10323            fn abi_decode_returns_validate(
10324                data: &[u8],
10325            ) -> alloy_sol_types::Result<Self::Return> {
10326                <Self::ReturnTuple<
10327                    '_,
10328                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10329                    .map(Into::into)
10330            }
10331        }
10332    };
10333    #[derive(serde::Serialize, serde::Deserialize)]
10334    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10335    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
10336```solidity
10337function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
10338```*/
10339    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10340    #[derive(Clone)]
10341    pub struct initializeCall {
10342        #[allow(missing_docs)]
10343        pub _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10344        #[allow(missing_docs)]
10345        pub _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10346        #[allow(missing_docs)]
10347        pub _stateHistoryRetentionPeriod: u32,
10348        #[allow(missing_docs)]
10349        pub owner: alloy::sol_types::private::Address,
10350    }
10351    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
10352    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10353    #[derive(Clone)]
10354    pub struct initializeReturn {}
10355    #[allow(
10356        non_camel_case_types,
10357        non_snake_case,
10358        clippy::pub_underscore_fields,
10359        clippy::style
10360    )]
10361    const _: () = {
10362        use alloy::sol_types as alloy_sol_types;
10363        {
10364            #[doc(hidden)]
10365            type UnderlyingSolTuple<'a> = (
10366                LightClient::LightClientState,
10367                LightClient::StakeTableState,
10368                alloy::sol_types::sol_data::Uint<32>,
10369                alloy::sol_types::sol_data::Address,
10370            );
10371            #[doc(hidden)]
10372            type UnderlyingRustTuple<'a> = (
10373                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10374                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10375                u32,
10376                alloy::sol_types::private::Address,
10377            );
10378            #[cfg(test)]
10379            #[allow(dead_code, unreachable_patterns)]
10380            fn _type_assertion(
10381                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10382            ) {
10383                match _t {
10384                    alloy_sol_types::private::AssertTypeEq::<
10385                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10386                    >(_) => {}
10387                }
10388            }
10389            #[automatically_derived]
10390            #[doc(hidden)]
10391            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
10392                fn from(value: initializeCall) -> Self {
10393                    (
10394                        value._genesis,
10395                        value._genesisStakeTableState,
10396                        value._stateHistoryRetentionPeriod,
10397                        value.owner,
10398                    )
10399                }
10400            }
10401            #[automatically_derived]
10402            #[doc(hidden)]
10403            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
10404                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10405                    Self {
10406                        _genesis: tuple.0,
10407                        _genesisStakeTableState: tuple.1,
10408                        _stateHistoryRetentionPeriod: tuple.2,
10409                        owner: tuple.3,
10410                    }
10411                }
10412            }
10413        }
10414        {
10415            #[doc(hidden)]
10416            type UnderlyingSolTuple<'a> = ();
10417            #[doc(hidden)]
10418            type UnderlyingRustTuple<'a> = ();
10419            #[cfg(test)]
10420            #[allow(dead_code, unreachable_patterns)]
10421            fn _type_assertion(
10422                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10423            ) {
10424                match _t {
10425                    alloy_sol_types::private::AssertTypeEq::<
10426                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10427                    >(_) => {}
10428                }
10429            }
10430            #[automatically_derived]
10431            #[doc(hidden)]
10432            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
10433                fn from(value: initializeReturn) -> Self {
10434                    ()
10435                }
10436            }
10437            #[automatically_derived]
10438            #[doc(hidden)]
10439            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
10440                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10441                    Self {}
10442                }
10443            }
10444        }
10445        impl initializeReturn {
10446            fn _tokenize(
10447                &self,
10448            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10449                ()
10450            }
10451        }
10452        #[automatically_derived]
10453        impl alloy_sol_types::SolCall for initializeCall {
10454            type Parameters<'a> = (
10455                LightClient::LightClientState,
10456                LightClient::StakeTableState,
10457                alloy::sol_types::sol_data::Uint<32>,
10458                alloy::sol_types::sol_data::Address,
10459            );
10460            type Token<'a> = <Self::Parameters<
10461                'a,
10462            > as alloy_sol_types::SolType>::Token<'a>;
10463            type Return = initializeReturn;
10464            type ReturnTuple<'a> = ();
10465            type ReturnToken<'a> = <Self::ReturnTuple<
10466                'a,
10467            > as alloy_sol_types::SolType>::Token<'a>;
10468            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
10469            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
10470            #[inline]
10471            fn new<'a>(
10472                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10473            ) -> Self {
10474                tuple.into()
10475            }
10476            #[inline]
10477            fn tokenize(&self) -> Self::Token<'_> {
10478                (
10479                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
10480                        &self._genesis,
10481                    ),
10482                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
10483                        &self._genesisStakeTableState,
10484                    ),
10485                    <alloy::sol_types::sol_data::Uint<
10486                        32,
10487                    > as alloy_sol_types::SolType>::tokenize(
10488                        &self._stateHistoryRetentionPeriod,
10489                    ),
10490                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10491                        &self.owner,
10492                    ),
10493                )
10494            }
10495            #[inline]
10496            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10497                initializeReturn::_tokenize(ret)
10498            }
10499            #[inline]
10500            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10501                <Self::ReturnTuple<
10502                    '_,
10503                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10504                    .map(Into::into)
10505            }
10506            #[inline]
10507            fn abi_decode_returns_validate(
10508                data: &[u8],
10509            ) -> alloy_sol_types::Result<Self::Return> {
10510                <Self::ReturnTuple<
10511                    '_,
10512                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10513                    .map(Into::into)
10514            }
10515        }
10516    };
10517    #[derive(serde::Serialize, serde::Deserialize)]
10518    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10519    /**Function with signature `initializeV2(uint64,uint64)` and selector `0xb33bc491`.
10520```solidity
10521function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
10522```*/
10523    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10524    #[derive(Clone)]
10525    pub struct initializeV2Call {
10526        #[allow(missing_docs)]
10527        pub _blocksPerEpoch: u64,
10528        #[allow(missing_docs)]
10529        pub _epochStartBlock: u64,
10530    }
10531    ///Container type for the return parameters of the [`initializeV2(uint64,uint64)`](initializeV2Call) function.
10532    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10533    #[derive(Clone)]
10534    pub struct initializeV2Return {}
10535    #[allow(
10536        non_camel_case_types,
10537        non_snake_case,
10538        clippy::pub_underscore_fields,
10539        clippy::style
10540    )]
10541    const _: () = {
10542        use alloy::sol_types as alloy_sol_types;
10543        {
10544            #[doc(hidden)]
10545            type UnderlyingSolTuple<'a> = (
10546                alloy::sol_types::sol_data::Uint<64>,
10547                alloy::sol_types::sol_data::Uint<64>,
10548            );
10549            #[doc(hidden)]
10550            type UnderlyingRustTuple<'a> = (u64, u64);
10551            #[cfg(test)]
10552            #[allow(dead_code, unreachable_patterns)]
10553            fn _type_assertion(
10554                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10555            ) {
10556                match _t {
10557                    alloy_sol_types::private::AssertTypeEq::<
10558                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10559                    >(_) => {}
10560                }
10561            }
10562            #[automatically_derived]
10563            #[doc(hidden)]
10564            impl ::core::convert::From<initializeV2Call> for UnderlyingRustTuple<'_> {
10565                fn from(value: initializeV2Call) -> Self {
10566                    (value._blocksPerEpoch, value._epochStartBlock)
10567                }
10568            }
10569            #[automatically_derived]
10570            #[doc(hidden)]
10571            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Call {
10572                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10573                    Self {
10574                        _blocksPerEpoch: tuple.0,
10575                        _epochStartBlock: tuple.1,
10576                    }
10577                }
10578            }
10579        }
10580        {
10581            #[doc(hidden)]
10582            type UnderlyingSolTuple<'a> = ();
10583            #[doc(hidden)]
10584            type UnderlyingRustTuple<'a> = ();
10585            #[cfg(test)]
10586            #[allow(dead_code, unreachable_patterns)]
10587            fn _type_assertion(
10588                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10589            ) {
10590                match _t {
10591                    alloy_sol_types::private::AssertTypeEq::<
10592                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10593                    >(_) => {}
10594                }
10595            }
10596            #[automatically_derived]
10597            #[doc(hidden)]
10598            impl ::core::convert::From<initializeV2Return> for UnderlyingRustTuple<'_> {
10599                fn from(value: initializeV2Return) -> Self {
10600                    ()
10601                }
10602            }
10603            #[automatically_derived]
10604            #[doc(hidden)]
10605            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Return {
10606                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10607                    Self {}
10608                }
10609            }
10610        }
10611        impl initializeV2Return {
10612            fn _tokenize(
10613                &self,
10614            ) -> <initializeV2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
10615                ()
10616            }
10617        }
10618        #[automatically_derived]
10619        impl alloy_sol_types::SolCall for initializeV2Call {
10620            type Parameters<'a> = (
10621                alloy::sol_types::sol_data::Uint<64>,
10622                alloy::sol_types::sol_data::Uint<64>,
10623            );
10624            type Token<'a> = <Self::Parameters<
10625                'a,
10626            > as alloy_sol_types::SolType>::Token<'a>;
10627            type Return = initializeV2Return;
10628            type ReturnTuple<'a> = ();
10629            type ReturnToken<'a> = <Self::ReturnTuple<
10630                'a,
10631            > as alloy_sol_types::SolType>::Token<'a>;
10632            const SIGNATURE: &'static str = "initializeV2(uint64,uint64)";
10633            const SELECTOR: [u8; 4] = [179u8, 59u8, 196u8, 145u8];
10634            #[inline]
10635            fn new<'a>(
10636                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10637            ) -> Self {
10638                tuple.into()
10639            }
10640            #[inline]
10641            fn tokenize(&self) -> Self::Token<'_> {
10642                (
10643                    <alloy::sol_types::sol_data::Uint<
10644                        64,
10645                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
10646                    <alloy::sol_types::sol_data::Uint<
10647                        64,
10648                    > as alloy_sol_types::SolType>::tokenize(&self._epochStartBlock),
10649                )
10650            }
10651            #[inline]
10652            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10653                initializeV2Return::_tokenize(ret)
10654            }
10655            #[inline]
10656            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10657                <Self::ReturnTuple<
10658                    '_,
10659                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10660                    .map(Into::into)
10661            }
10662            #[inline]
10663            fn abi_decode_returns_validate(
10664                data: &[u8],
10665            ) -> alloy_sol_types::Result<Self::Return> {
10666                <Self::ReturnTuple<
10667                    '_,
10668                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10669                    .map(Into::into)
10670            }
10671        }
10672    };
10673    #[derive(serde::Serialize, serde::Deserialize)]
10674    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10675    /**Function with signature `initializeV3()` and selector `0x38e454b1`.
10676```solidity
10677function initializeV3() external;
10678```*/
10679    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10680    #[derive(Clone)]
10681    pub struct initializeV3Call;
10682    ///Container type for the return parameters of the [`initializeV3()`](initializeV3Call) function.
10683    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10684    #[derive(Clone)]
10685    pub struct initializeV3Return {}
10686    #[allow(
10687        non_camel_case_types,
10688        non_snake_case,
10689        clippy::pub_underscore_fields,
10690        clippy::style
10691    )]
10692    const _: () = {
10693        use alloy::sol_types as alloy_sol_types;
10694        {
10695            #[doc(hidden)]
10696            type UnderlyingSolTuple<'a> = ();
10697            #[doc(hidden)]
10698            type UnderlyingRustTuple<'a> = ();
10699            #[cfg(test)]
10700            #[allow(dead_code, unreachable_patterns)]
10701            fn _type_assertion(
10702                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10703            ) {
10704                match _t {
10705                    alloy_sol_types::private::AssertTypeEq::<
10706                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10707                    >(_) => {}
10708                }
10709            }
10710            #[automatically_derived]
10711            #[doc(hidden)]
10712            impl ::core::convert::From<initializeV3Call> for UnderlyingRustTuple<'_> {
10713                fn from(value: initializeV3Call) -> Self {
10714                    ()
10715                }
10716            }
10717            #[automatically_derived]
10718            #[doc(hidden)]
10719            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV3Call {
10720                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10721                    Self
10722                }
10723            }
10724        }
10725        {
10726            #[doc(hidden)]
10727            type UnderlyingSolTuple<'a> = ();
10728            #[doc(hidden)]
10729            type UnderlyingRustTuple<'a> = ();
10730            #[cfg(test)]
10731            #[allow(dead_code, unreachable_patterns)]
10732            fn _type_assertion(
10733                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10734            ) {
10735                match _t {
10736                    alloy_sol_types::private::AssertTypeEq::<
10737                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10738                    >(_) => {}
10739                }
10740            }
10741            #[automatically_derived]
10742            #[doc(hidden)]
10743            impl ::core::convert::From<initializeV3Return> for UnderlyingRustTuple<'_> {
10744                fn from(value: initializeV3Return) -> Self {
10745                    ()
10746                }
10747            }
10748            #[automatically_derived]
10749            #[doc(hidden)]
10750            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV3Return {
10751                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10752                    Self {}
10753                }
10754            }
10755        }
10756        impl initializeV3Return {
10757            fn _tokenize(
10758                &self,
10759            ) -> <initializeV3Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
10760                ()
10761            }
10762        }
10763        #[automatically_derived]
10764        impl alloy_sol_types::SolCall for initializeV3Call {
10765            type Parameters<'a> = ();
10766            type Token<'a> = <Self::Parameters<
10767                'a,
10768            > as alloy_sol_types::SolType>::Token<'a>;
10769            type Return = initializeV3Return;
10770            type ReturnTuple<'a> = ();
10771            type ReturnToken<'a> = <Self::ReturnTuple<
10772                'a,
10773            > as alloy_sol_types::SolType>::Token<'a>;
10774            const SIGNATURE: &'static str = "initializeV3()";
10775            const SELECTOR: [u8; 4] = [56u8, 228u8, 84u8, 177u8];
10776            #[inline]
10777            fn new<'a>(
10778                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10779            ) -> Self {
10780                tuple.into()
10781            }
10782            #[inline]
10783            fn tokenize(&self) -> Self::Token<'_> {
10784                ()
10785            }
10786            #[inline]
10787            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10788                initializeV3Return::_tokenize(ret)
10789            }
10790            #[inline]
10791            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10792                <Self::ReturnTuple<
10793                    '_,
10794                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10795                    .map(Into::into)
10796            }
10797            #[inline]
10798            fn abi_decode_returns_validate(
10799                data: &[u8],
10800            ) -> alloy_sol_types::Result<Self::Return> {
10801                <Self::ReturnTuple<
10802                    '_,
10803                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10804                    .map(Into::into)
10805            }
10806        }
10807    };
10808    #[derive(serde::Serialize, serde::Deserialize)]
10809    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10810    /**Function with signature `isEpochRoot(uint64)` and selector `0x25297427`.
10811```solidity
10812function isEpochRoot(uint64 blockHeight) external view returns (bool);
10813```*/
10814    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10815    #[derive(Clone)]
10816    pub struct isEpochRootCall {
10817        #[allow(missing_docs)]
10818        pub blockHeight: u64,
10819    }
10820    #[derive(serde::Serialize, serde::Deserialize)]
10821    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10822    ///Container type for the return parameters of the [`isEpochRoot(uint64)`](isEpochRootCall) function.
10823    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10824    #[derive(Clone)]
10825    pub struct isEpochRootReturn {
10826        #[allow(missing_docs)]
10827        pub _0: bool,
10828    }
10829    #[allow(
10830        non_camel_case_types,
10831        non_snake_case,
10832        clippy::pub_underscore_fields,
10833        clippy::style
10834    )]
10835    const _: () = {
10836        use alloy::sol_types as alloy_sol_types;
10837        {
10838            #[doc(hidden)]
10839            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10840            #[doc(hidden)]
10841            type UnderlyingRustTuple<'a> = (u64,);
10842            #[cfg(test)]
10843            #[allow(dead_code, unreachable_patterns)]
10844            fn _type_assertion(
10845                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10846            ) {
10847                match _t {
10848                    alloy_sol_types::private::AssertTypeEq::<
10849                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10850                    >(_) => {}
10851                }
10852            }
10853            #[automatically_derived]
10854            #[doc(hidden)]
10855            impl ::core::convert::From<isEpochRootCall> for UnderlyingRustTuple<'_> {
10856                fn from(value: isEpochRootCall) -> Self {
10857                    (value.blockHeight,)
10858                }
10859            }
10860            #[automatically_derived]
10861            #[doc(hidden)]
10862            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootCall {
10863                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10864                    Self { blockHeight: tuple.0 }
10865                }
10866            }
10867        }
10868        {
10869            #[doc(hidden)]
10870            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10871            #[doc(hidden)]
10872            type UnderlyingRustTuple<'a> = (bool,);
10873            #[cfg(test)]
10874            #[allow(dead_code, unreachable_patterns)]
10875            fn _type_assertion(
10876                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10877            ) {
10878                match _t {
10879                    alloy_sol_types::private::AssertTypeEq::<
10880                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10881                    >(_) => {}
10882                }
10883            }
10884            #[automatically_derived]
10885            #[doc(hidden)]
10886            impl ::core::convert::From<isEpochRootReturn> for UnderlyingRustTuple<'_> {
10887                fn from(value: isEpochRootReturn) -> Self {
10888                    (value._0,)
10889                }
10890            }
10891            #[automatically_derived]
10892            #[doc(hidden)]
10893            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootReturn {
10894                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10895                    Self { _0: tuple.0 }
10896                }
10897            }
10898        }
10899        #[automatically_derived]
10900        impl alloy_sol_types::SolCall for isEpochRootCall {
10901            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10902            type Token<'a> = <Self::Parameters<
10903                'a,
10904            > as alloy_sol_types::SolType>::Token<'a>;
10905            type Return = bool;
10906            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10907            type ReturnToken<'a> = <Self::ReturnTuple<
10908                'a,
10909            > as alloy_sol_types::SolType>::Token<'a>;
10910            const SIGNATURE: &'static str = "isEpochRoot(uint64)";
10911            const SELECTOR: [u8; 4] = [37u8, 41u8, 116u8, 39u8];
10912            #[inline]
10913            fn new<'a>(
10914                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10915            ) -> Self {
10916                tuple.into()
10917            }
10918            #[inline]
10919            fn tokenize(&self) -> Self::Token<'_> {
10920                (
10921                    <alloy::sol_types::sol_data::Uint<
10922                        64,
10923                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
10924                )
10925            }
10926            #[inline]
10927            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10928                (
10929                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
10930                        ret,
10931                    ),
10932                )
10933            }
10934            #[inline]
10935            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10936                <Self::ReturnTuple<
10937                    '_,
10938                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10939                    .map(|r| {
10940                        let r: isEpochRootReturn = r.into();
10941                        r._0
10942                    })
10943            }
10944            #[inline]
10945            fn abi_decode_returns_validate(
10946                data: &[u8],
10947            ) -> alloy_sol_types::Result<Self::Return> {
10948                <Self::ReturnTuple<
10949                    '_,
10950                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10951                    .map(|r| {
10952                        let r: isEpochRootReturn = r.into();
10953                        r._0
10954                    })
10955            }
10956        }
10957    };
10958    #[derive(serde::Serialize, serde::Deserialize)]
10959    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10960    /**Function with signature `isGtEpochRoot(uint64)` and selector `0x300c89dd`.
10961```solidity
10962function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
10963```*/
10964    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10965    #[derive(Clone)]
10966    pub struct isGtEpochRootCall {
10967        #[allow(missing_docs)]
10968        pub blockHeight: u64,
10969    }
10970    #[derive(serde::Serialize, serde::Deserialize)]
10971    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10972    ///Container type for the return parameters of the [`isGtEpochRoot(uint64)`](isGtEpochRootCall) function.
10973    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10974    #[derive(Clone)]
10975    pub struct isGtEpochRootReturn {
10976        #[allow(missing_docs)]
10977        pub _0: bool,
10978    }
10979    #[allow(
10980        non_camel_case_types,
10981        non_snake_case,
10982        clippy::pub_underscore_fields,
10983        clippy::style
10984    )]
10985    const _: () = {
10986        use alloy::sol_types as alloy_sol_types;
10987        {
10988            #[doc(hidden)]
10989            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10990            #[doc(hidden)]
10991            type UnderlyingRustTuple<'a> = (u64,);
10992            #[cfg(test)]
10993            #[allow(dead_code, unreachable_patterns)]
10994            fn _type_assertion(
10995                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10996            ) {
10997                match _t {
10998                    alloy_sol_types::private::AssertTypeEq::<
10999                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11000                    >(_) => {}
11001                }
11002            }
11003            #[automatically_derived]
11004            #[doc(hidden)]
11005            impl ::core::convert::From<isGtEpochRootCall> for UnderlyingRustTuple<'_> {
11006                fn from(value: isGtEpochRootCall) -> Self {
11007                    (value.blockHeight,)
11008                }
11009            }
11010            #[automatically_derived]
11011            #[doc(hidden)]
11012            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootCall {
11013                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11014                    Self { blockHeight: tuple.0 }
11015                }
11016            }
11017        }
11018        {
11019            #[doc(hidden)]
11020            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11021            #[doc(hidden)]
11022            type UnderlyingRustTuple<'a> = (bool,);
11023            #[cfg(test)]
11024            #[allow(dead_code, unreachable_patterns)]
11025            fn _type_assertion(
11026                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11027            ) {
11028                match _t {
11029                    alloy_sol_types::private::AssertTypeEq::<
11030                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11031                    >(_) => {}
11032                }
11033            }
11034            #[automatically_derived]
11035            #[doc(hidden)]
11036            impl ::core::convert::From<isGtEpochRootReturn> for UnderlyingRustTuple<'_> {
11037                fn from(value: isGtEpochRootReturn) -> Self {
11038                    (value._0,)
11039                }
11040            }
11041            #[automatically_derived]
11042            #[doc(hidden)]
11043            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootReturn {
11044                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11045                    Self { _0: tuple.0 }
11046                }
11047            }
11048        }
11049        #[automatically_derived]
11050        impl alloy_sol_types::SolCall for isGtEpochRootCall {
11051            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11052            type Token<'a> = <Self::Parameters<
11053                'a,
11054            > as alloy_sol_types::SolType>::Token<'a>;
11055            type Return = bool;
11056            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11057            type ReturnToken<'a> = <Self::ReturnTuple<
11058                'a,
11059            > as alloy_sol_types::SolType>::Token<'a>;
11060            const SIGNATURE: &'static str = "isGtEpochRoot(uint64)";
11061            const SELECTOR: [u8; 4] = [48u8, 12u8, 137u8, 221u8];
11062            #[inline]
11063            fn new<'a>(
11064                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11065            ) -> Self {
11066                tuple.into()
11067            }
11068            #[inline]
11069            fn tokenize(&self) -> Self::Token<'_> {
11070                (
11071                    <alloy::sol_types::sol_data::Uint<
11072                        64,
11073                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
11074                )
11075            }
11076            #[inline]
11077            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11078                (
11079                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11080                        ret,
11081                    ),
11082                )
11083            }
11084            #[inline]
11085            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11086                <Self::ReturnTuple<
11087                    '_,
11088                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11089                    .map(|r| {
11090                        let r: isGtEpochRootReturn = r.into();
11091                        r._0
11092                    })
11093            }
11094            #[inline]
11095            fn abi_decode_returns_validate(
11096                data: &[u8],
11097            ) -> alloy_sol_types::Result<Self::Return> {
11098                <Self::ReturnTuple<
11099                    '_,
11100                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11101                    .map(|r| {
11102                        let r: isGtEpochRootReturn = r.into();
11103                        r._0
11104                    })
11105            }
11106        }
11107    };
11108    #[derive(serde::Serialize, serde::Deserialize)]
11109    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11110    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
11111```solidity
11112function isPermissionedProverEnabled() external view returns (bool);
11113```*/
11114    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11115    #[derive(Clone)]
11116    pub struct isPermissionedProverEnabledCall;
11117    #[derive(serde::Serialize, serde::Deserialize)]
11118    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11119    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
11120    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11121    #[derive(Clone)]
11122    pub struct isPermissionedProverEnabledReturn {
11123        #[allow(missing_docs)]
11124        pub _0: bool,
11125    }
11126    #[allow(
11127        non_camel_case_types,
11128        non_snake_case,
11129        clippy::pub_underscore_fields,
11130        clippy::style
11131    )]
11132    const _: () = {
11133        use alloy::sol_types as alloy_sol_types;
11134        {
11135            #[doc(hidden)]
11136            type UnderlyingSolTuple<'a> = ();
11137            #[doc(hidden)]
11138            type UnderlyingRustTuple<'a> = ();
11139            #[cfg(test)]
11140            #[allow(dead_code, unreachable_patterns)]
11141            fn _type_assertion(
11142                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11143            ) {
11144                match _t {
11145                    alloy_sol_types::private::AssertTypeEq::<
11146                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11147                    >(_) => {}
11148                }
11149            }
11150            #[automatically_derived]
11151            #[doc(hidden)]
11152            impl ::core::convert::From<isPermissionedProverEnabledCall>
11153            for UnderlyingRustTuple<'_> {
11154                fn from(value: isPermissionedProverEnabledCall) -> Self {
11155                    ()
11156                }
11157            }
11158            #[automatically_derived]
11159            #[doc(hidden)]
11160            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11161            for isPermissionedProverEnabledCall {
11162                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11163                    Self
11164                }
11165            }
11166        }
11167        {
11168            #[doc(hidden)]
11169            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11170            #[doc(hidden)]
11171            type UnderlyingRustTuple<'a> = (bool,);
11172            #[cfg(test)]
11173            #[allow(dead_code, unreachable_patterns)]
11174            fn _type_assertion(
11175                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11176            ) {
11177                match _t {
11178                    alloy_sol_types::private::AssertTypeEq::<
11179                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11180                    >(_) => {}
11181                }
11182            }
11183            #[automatically_derived]
11184            #[doc(hidden)]
11185            impl ::core::convert::From<isPermissionedProverEnabledReturn>
11186            for UnderlyingRustTuple<'_> {
11187                fn from(value: isPermissionedProverEnabledReturn) -> Self {
11188                    (value._0,)
11189                }
11190            }
11191            #[automatically_derived]
11192            #[doc(hidden)]
11193            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11194            for isPermissionedProverEnabledReturn {
11195                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11196                    Self { _0: tuple.0 }
11197                }
11198            }
11199        }
11200        #[automatically_derived]
11201        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
11202            type Parameters<'a> = ();
11203            type Token<'a> = <Self::Parameters<
11204                'a,
11205            > as alloy_sol_types::SolType>::Token<'a>;
11206            type Return = bool;
11207            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11208            type ReturnToken<'a> = <Self::ReturnTuple<
11209                'a,
11210            > as alloy_sol_types::SolType>::Token<'a>;
11211            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
11212            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
11213            #[inline]
11214            fn new<'a>(
11215                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11216            ) -> Self {
11217                tuple.into()
11218            }
11219            #[inline]
11220            fn tokenize(&self) -> Self::Token<'_> {
11221                ()
11222            }
11223            #[inline]
11224            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11225                (
11226                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11227                        ret,
11228                    ),
11229                )
11230            }
11231            #[inline]
11232            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11233                <Self::ReturnTuple<
11234                    '_,
11235                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11236                    .map(|r| {
11237                        let r: isPermissionedProverEnabledReturn = r.into();
11238                        r._0
11239                    })
11240            }
11241            #[inline]
11242            fn abi_decode_returns_validate(
11243                data: &[u8],
11244            ) -> alloy_sol_types::Result<Self::Return> {
11245                <Self::ReturnTuple<
11246                    '_,
11247                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11248                    .map(|r| {
11249                        let r: isPermissionedProverEnabledReturn = r.into();
11250                        r._0
11251                    })
11252            }
11253        }
11254    };
11255    #[derive(serde::Serialize, serde::Deserialize)]
11256    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11257    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
11258```solidity
11259function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
11260```*/
11261    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11262    #[derive(Clone)]
11263    pub struct lagOverEscapeHatchThresholdCall {
11264        #[allow(missing_docs)]
11265        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
11266        #[allow(missing_docs)]
11267        pub blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
11268    }
11269    #[derive(serde::Serialize, serde::Deserialize)]
11270    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11271    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
11272    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11273    #[derive(Clone)]
11274    pub struct lagOverEscapeHatchThresholdReturn {
11275        #[allow(missing_docs)]
11276        pub _0: bool,
11277    }
11278    #[allow(
11279        non_camel_case_types,
11280        non_snake_case,
11281        clippy::pub_underscore_fields,
11282        clippy::style
11283    )]
11284    const _: () = {
11285        use alloy::sol_types as alloy_sol_types;
11286        {
11287            #[doc(hidden)]
11288            type UnderlyingSolTuple<'a> = (
11289                alloy::sol_types::sol_data::Uint<256>,
11290                alloy::sol_types::sol_data::Uint<256>,
11291            );
11292            #[doc(hidden)]
11293            type UnderlyingRustTuple<'a> = (
11294                alloy::sol_types::private::primitives::aliases::U256,
11295                alloy::sol_types::private::primitives::aliases::U256,
11296            );
11297            #[cfg(test)]
11298            #[allow(dead_code, unreachable_patterns)]
11299            fn _type_assertion(
11300                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11301            ) {
11302                match _t {
11303                    alloy_sol_types::private::AssertTypeEq::<
11304                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11305                    >(_) => {}
11306                }
11307            }
11308            #[automatically_derived]
11309            #[doc(hidden)]
11310            impl ::core::convert::From<lagOverEscapeHatchThresholdCall>
11311            for UnderlyingRustTuple<'_> {
11312                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
11313                    (value.blockNumber, value.blockThreshold)
11314                }
11315            }
11316            #[automatically_derived]
11317            #[doc(hidden)]
11318            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11319            for lagOverEscapeHatchThresholdCall {
11320                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11321                    Self {
11322                        blockNumber: tuple.0,
11323                        blockThreshold: tuple.1,
11324                    }
11325                }
11326            }
11327        }
11328        {
11329            #[doc(hidden)]
11330            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11331            #[doc(hidden)]
11332            type UnderlyingRustTuple<'a> = (bool,);
11333            #[cfg(test)]
11334            #[allow(dead_code, unreachable_patterns)]
11335            fn _type_assertion(
11336                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11337            ) {
11338                match _t {
11339                    alloy_sol_types::private::AssertTypeEq::<
11340                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11341                    >(_) => {}
11342                }
11343            }
11344            #[automatically_derived]
11345            #[doc(hidden)]
11346            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn>
11347            for UnderlyingRustTuple<'_> {
11348                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
11349                    (value._0,)
11350                }
11351            }
11352            #[automatically_derived]
11353            #[doc(hidden)]
11354            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11355            for lagOverEscapeHatchThresholdReturn {
11356                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11357                    Self { _0: tuple.0 }
11358                }
11359            }
11360        }
11361        #[automatically_derived]
11362        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
11363            type Parameters<'a> = (
11364                alloy::sol_types::sol_data::Uint<256>,
11365                alloy::sol_types::sol_data::Uint<256>,
11366            );
11367            type Token<'a> = <Self::Parameters<
11368                'a,
11369            > as alloy_sol_types::SolType>::Token<'a>;
11370            type Return = bool;
11371            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11372            type ReturnToken<'a> = <Self::ReturnTuple<
11373                'a,
11374            > as alloy_sol_types::SolType>::Token<'a>;
11375            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
11376            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
11377            #[inline]
11378            fn new<'a>(
11379                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11380            ) -> Self {
11381                tuple.into()
11382            }
11383            #[inline]
11384            fn tokenize(&self) -> Self::Token<'_> {
11385                (
11386                    <alloy::sol_types::sol_data::Uint<
11387                        256,
11388                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
11389                    <alloy::sol_types::sol_data::Uint<
11390                        256,
11391                    > as alloy_sol_types::SolType>::tokenize(&self.blockThreshold),
11392                )
11393            }
11394            #[inline]
11395            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11396                (
11397                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11398                        ret,
11399                    ),
11400                )
11401            }
11402            #[inline]
11403            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11404                <Self::ReturnTuple<
11405                    '_,
11406                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11407                    .map(|r| {
11408                        let r: lagOverEscapeHatchThresholdReturn = r.into();
11409                        r._0
11410                    })
11411            }
11412            #[inline]
11413            fn abi_decode_returns_validate(
11414                data: &[u8],
11415            ) -> alloy_sol_types::Result<Self::Return> {
11416                <Self::ReturnTuple<
11417                    '_,
11418                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11419                    .map(|r| {
11420                        let r: lagOverEscapeHatchThresholdReturn = r.into();
11421                        r._0
11422                    })
11423            }
11424        }
11425    };
11426    #[derive(serde::Serialize, serde::Deserialize)]
11427    #[derive()]
11428    /**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`.
11429```solidity
11430function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
11431```*/
11432    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11433    #[derive(Clone)]
11434    pub struct newFinalizedState_0Call {
11435        #[allow(missing_docs)]
11436        pub _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11437        #[allow(missing_docs)]
11438        pub _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11439    }
11440    ///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.
11441    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11442    #[derive(Clone)]
11443    pub struct newFinalizedState_0Return {}
11444    #[allow(
11445        non_camel_case_types,
11446        non_snake_case,
11447        clippy::pub_underscore_fields,
11448        clippy::style
11449    )]
11450    const _: () = {
11451        use alloy::sol_types as alloy_sol_types;
11452        {
11453            #[doc(hidden)]
11454            type UnderlyingSolTuple<'a> = (
11455                LightClient::LightClientState,
11456                IPlonkVerifier::PlonkProof,
11457            );
11458            #[doc(hidden)]
11459            type UnderlyingRustTuple<'a> = (
11460                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11461                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11462            );
11463            #[cfg(test)]
11464            #[allow(dead_code, unreachable_patterns)]
11465            fn _type_assertion(
11466                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11467            ) {
11468                match _t {
11469                    alloy_sol_types::private::AssertTypeEq::<
11470                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11471                    >(_) => {}
11472                }
11473            }
11474            #[automatically_derived]
11475            #[doc(hidden)]
11476            impl ::core::convert::From<newFinalizedState_0Call>
11477            for UnderlyingRustTuple<'_> {
11478                fn from(value: newFinalizedState_0Call) -> Self {
11479                    (value._0, value._1)
11480                }
11481            }
11482            #[automatically_derived]
11483            #[doc(hidden)]
11484            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11485            for newFinalizedState_0Call {
11486                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11487                    Self { _0: tuple.0, _1: tuple.1 }
11488                }
11489            }
11490        }
11491        {
11492            #[doc(hidden)]
11493            type UnderlyingSolTuple<'a> = ();
11494            #[doc(hidden)]
11495            type UnderlyingRustTuple<'a> = ();
11496            #[cfg(test)]
11497            #[allow(dead_code, unreachable_patterns)]
11498            fn _type_assertion(
11499                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11500            ) {
11501                match _t {
11502                    alloy_sol_types::private::AssertTypeEq::<
11503                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11504                    >(_) => {}
11505                }
11506            }
11507            #[automatically_derived]
11508            #[doc(hidden)]
11509            impl ::core::convert::From<newFinalizedState_0Return>
11510            for UnderlyingRustTuple<'_> {
11511                fn from(value: newFinalizedState_0Return) -> Self {
11512                    ()
11513                }
11514            }
11515            #[automatically_derived]
11516            #[doc(hidden)]
11517            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11518            for newFinalizedState_0Return {
11519                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11520                    Self {}
11521                }
11522            }
11523        }
11524        impl newFinalizedState_0Return {
11525            fn _tokenize(
11526                &self,
11527            ) -> <newFinalizedState_0Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
11528                ()
11529            }
11530        }
11531        #[automatically_derived]
11532        impl alloy_sol_types::SolCall for newFinalizedState_0Call {
11533            type Parameters<'a> = (
11534                LightClient::LightClientState,
11535                IPlonkVerifier::PlonkProof,
11536            );
11537            type Token<'a> = <Self::Parameters<
11538                'a,
11539            > as alloy_sol_types::SolType>::Token<'a>;
11540            type Return = newFinalizedState_0Return;
11541            type ReturnTuple<'a> = ();
11542            type ReturnToken<'a> = <Self::ReturnTuple<
11543                'a,
11544            > as alloy_sol_types::SolType>::Token<'a>;
11545            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))";
11546            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
11547            #[inline]
11548            fn new<'a>(
11549                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11550            ) -> Self {
11551                tuple.into()
11552            }
11553            #[inline]
11554            fn tokenize(&self) -> Self::Token<'_> {
11555                (
11556                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
11557                        &self._0,
11558                    ),
11559                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
11560                        &self._1,
11561                    ),
11562                )
11563            }
11564            #[inline]
11565            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11566                newFinalizedState_0Return::_tokenize(ret)
11567            }
11568            #[inline]
11569            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11570                <Self::ReturnTuple<
11571                    '_,
11572                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11573                    .map(Into::into)
11574            }
11575            #[inline]
11576            fn abi_decode_returns_validate(
11577                data: &[u8],
11578            ) -> alloy_sol_types::Result<Self::Return> {
11579                <Self::ReturnTuple<
11580                    '_,
11581                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11582                    .map(Into::into)
11583            }
11584        }
11585    };
11586    #[derive(serde::Serialize, serde::Deserialize)]
11587    #[derive()]
11588    /**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`.
11589```solidity
11590function newFinalizedState(LightClient.LightClientState memory, LightClient.StakeTableState memory, IPlonkVerifier.PlonkProof memory) external pure;
11591```*/
11592    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11593    #[derive(Clone)]
11594    pub struct newFinalizedState_1Call {
11595        #[allow(missing_docs)]
11596        pub _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11597        #[allow(missing_docs)]
11598        pub _1: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11599        #[allow(missing_docs)]
11600        pub _2: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11601    }
11602    ///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.
11603    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11604    #[derive(Clone)]
11605    pub struct newFinalizedState_1Return {}
11606    #[allow(
11607        non_camel_case_types,
11608        non_snake_case,
11609        clippy::pub_underscore_fields,
11610        clippy::style
11611    )]
11612    const _: () = {
11613        use alloy::sol_types as alloy_sol_types;
11614        {
11615            #[doc(hidden)]
11616            type UnderlyingSolTuple<'a> = (
11617                LightClient::LightClientState,
11618                LightClient::StakeTableState,
11619                IPlonkVerifier::PlonkProof,
11620            );
11621            #[doc(hidden)]
11622            type UnderlyingRustTuple<'a> = (
11623                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11624                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11625                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11626            );
11627            #[cfg(test)]
11628            #[allow(dead_code, unreachable_patterns)]
11629            fn _type_assertion(
11630                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11631            ) {
11632                match _t {
11633                    alloy_sol_types::private::AssertTypeEq::<
11634                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11635                    >(_) => {}
11636                }
11637            }
11638            #[automatically_derived]
11639            #[doc(hidden)]
11640            impl ::core::convert::From<newFinalizedState_1Call>
11641            for UnderlyingRustTuple<'_> {
11642                fn from(value: newFinalizedState_1Call) -> Self {
11643                    (value._0, value._1, value._2)
11644                }
11645            }
11646            #[automatically_derived]
11647            #[doc(hidden)]
11648            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11649            for newFinalizedState_1Call {
11650                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11651                    Self {
11652                        _0: tuple.0,
11653                        _1: tuple.1,
11654                        _2: tuple.2,
11655                    }
11656                }
11657            }
11658        }
11659        {
11660            #[doc(hidden)]
11661            type UnderlyingSolTuple<'a> = ();
11662            #[doc(hidden)]
11663            type UnderlyingRustTuple<'a> = ();
11664            #[cfg(test)]
11665            #[allow(dead_code, unreachable_patterns)]
11666            fn _type_assertion(
11667                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11668            ) {
11669                match _t {
11670                    alloy_sol_types::private::AssertTypeEq::<
11671                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11672                    >(_) => {}
11673                }
11674            }
11675            #[automatically_derived]
11676            #[doc(hidden)]
11677            impl ::core::convert::From<newFinalizedState_1Return>
11678            for UnderlyingRustTuple<'_> {
11679                fn from(value: newFinalizedState_1Return) -> Self {
11680                    ()
11681                }
11682            }
11683            #[automatically_derived]
11684            #[doc(hidden)]
11685            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11686            for newFinalizedState_1Return {
11687                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11688                    Self {}
11689                }
11690            }
11691        }
11692        impl newFinalizedState_1Return {
11693            fn _tokenize(
11694                &self,
11695            ) -> <newFinalizedState_1Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
11696                ()
11697            }
11698        }
11699        #[automatically_derived]
11700        impl alloy_sol_types::SolCall for newFinalizedState_1Call {
11701            type Parameters<'a> = (
11702                LightClient::LightClientState,
11703                LightClient::StakeTableState,
11704                IPlonkVerifier::PlonkProof,
11705            );
11706            type Token<'a> = <Self::Parameters<
11707                'a,
11708            > as alloy_sol_types::SolType>::Token<'a>;
11709            type Return = newFinalizedState_1Return;
11710            type ReturnTuple<'a> = ();
11711            type ReturnToken<'a> = <Self::ReturnTuple<
11712                'a,
11713            > as alloy_sol_types::SolType>::Token<'a>;
11714            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))";
11715            const SELECTOR: [u8; 4] = [117u8, 124u8, 55u8, 173u8];
11716            #[inline]
11717            fn new<'a>(
11718                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11719            ) -> Self {
11720                tuple.into()
11721            }
11722            #[inline]
11723            fn tokenize(&self) -> Self::Token<'_> {
11724                (
11725                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
11726                        &self._0,
11727                    ),
11728                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
11729                        &self._1,
11730                    ),
11731                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
11732                        &self._2,
11733                    ),
11734                )
11735            }
11736            #[inline]
11737            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11738                newFinalizedState_1Return::_tokenize(ret)
11739            }
11740            #[inline]
11741            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11742                <Self::ReturnTuple<
11743                    '_,
11744                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11745                    .map(Into::into)
11746            }
11747            #[inline]
11748            fn abi_decode_returns_validate(
11749                data: &[u8],
11750            ) -> alloy_sol_types::Result<Self::Return> {
11751                <Self::ReturnTuple<
11752                    '_,
11753                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11754                    .map(Into::into)
11755            }
11756        }
11757    };
11758    #[derive(serde::Serialize, serde::Deserialize)]
11759    #[derive()]
11760    /**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`.
11761```solidity
11762function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, uint256 newAuthRoot, IPlonkVerifier.PlonkProof memory proof) external;
11763```*/
11764    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11765    #[derive(Clone)]
11766    pub struct newFinalizedState_2Call {
11767        #[allow(missing_docs)]
11768        pub newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11769        #[allow(missing_docs)]
11770        pub nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11771        #[allow(missing_docs)]
11772        pub newAuthRoot: alloy::sol_types::private::primitives::aliases::U256,
11773        #[allow(missing_docs)]
11774        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11775    }
11776    ///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.
11777    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11778    #[derive(Clone)]
11779    pub struct newFinalizedState_2Return {}
11780    #[allow(
11781        non_camel_case_types,
11782        non_snake_case,
11783        clippy::pub_underscore_fields,
11784        clippy::style
11785    )]
11786    const _: () = {
11787        use alloy::sol_types as alloy_sol_types;
11788        {
11789            #[doc(hidden)]
11790            type UnderlyingSolTuple<'a> = (
11791                LightClient::LightClientState,
11792                LightClient::StakeTableState,
11793                alloy::sol_types::sol_data::Uint<256>,
11794                IPlonkVerifier::PlonkProof,
11795            );
11796            #[doc(hidden)]
11797            type UnderlyingRustTuple<'a> = (
11798                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11799                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11800                alloy::sol_types::private::primitives::aliases::U256,
11801                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11802            );
11803            #[cfg(test)]
11804            #[allow(dead_code, unreachable_patterns)]
11805            fn _type_assertion(
11806                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11807            ) {
11808                match _t {
11809                    alloy_sol_types::private::AssertTypeEq::<
11810                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11811                    >(_) => {}
11812                }
11813            }
11814            #[automatically_derived]
11815            #[doc(hidden)]
11816            impl ::core::convert::From<newFinalizedState_2Call>
11817            for UnderlyingRustTuple<'_> {
11818                fn from(value: newFinalizedState_2Call) -> Self {
11819                    (
11820                        value.newState,
11821                        value.nextStakeTable,
11822                        value.newAuthRoot,
11823                        value.proof,
11824                    )
11825                }
11826            }
11827            #[automatically_derived]
11828            #[doc(hidden)]
11829            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11830            for newFinalizedState_2Call {
11831                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11832                    Self {
11833                        newState: tuple.0,
11834                        nextStakeTable: tuple.1,
11835                        newAuthRoot: tuple.2,
11836                        proof: tuple.3,
11837                    }
11838                }
11839            }
11840        }
11841        {
11842            #[doc(hidden)]
11843            type UnderlyingSolTuple<'a> = ();
11844            #[doc(hidden)]
11845            type UnderlyingRustTuple<'a> = ();
11846            #[cfg(test)]
11847            #[allow(dead_code, unreachable_patterns)]
11848            fn _type_assertion(
11849                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11850            ) {
11851                match _t {
11852                    alloy_sol_types::private::AssertTypeEq::<
11853                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11854                    >(_) => {}
11855                }
11856            }
11857            #[automatically_derived]
11858            #[doc(hidden)]
11859            impl ::core::convert::From<newFinalizedState_2Return>
11860            for UnderlyingRustTuple<'_> {
11861                fn from(value: newFinalizedState_2Return) -> Self {
11862                    ()
11863                }
11864            }
11865            #[automatically_derived]
11866            #[doc(hidden)]
11867            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11868            for newFinalizedState_2Return {
11869                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11870                    Self {}
11871                }
11872            }
11873        }
11874        impl newFinalizedState_2Return {
11875            fn _tokenize(
11876                &self,
11877            ) -> <newFinalizedState_2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
11878                ()
11879            }
11880        }
11881        #[automatically_derived]
11882        impl alloy_sol_types::SolCall for newFinalizedState_2Call {
11883            type Parameters<'a> = (
11884                LightClient::LightClientState,
11885                LightClient::StakeTableState,
11886                alloy::sol_types::sol_data::Uint<256>,
11887                IPlonkVerifier::PlonkProof,
11888            );
11889            type Token<'a> = <Self::Parameters<
11890                'a,
11891            > as alloy_sol_types::SolType>::Token<'a>;
11892            type Return = newFinalizedState_2Return;
11893            type ReturnTuple<'a> = ();
11894            type ReturnToken<'a> = <Self::ReturnTuple<
11895                'a,
11896            > as alloy_sol_types::SolType>::Token<'a>;
11897            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))";
11898            const SELECTOR: [u8; 4] = [170u8, 189u8, 93u8, 179u8];
11899            #[inline]
11900            fn new<'a>(
11901                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11902            ) -> Self {
11903                tuple.into()
11904            }
11905            #[inline]
11906            fn tokenize(&self) -> Self::Token<'_> {
11907                (
11908                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
11909                        &self.newState,
11910                    ),
11911                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
11912                        &self.nextStakeTable,
11913                    ),
11914                    <alloy::sol_types::sol_data::Uint<
11915                        256,
11916                    > as alloy_sol_types::SolType>::tokenize(&self.newAuthRoot),
11917                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
11918                        &self.proof,
11919                    ),
11920                )
11921            }
11922            #[inline]
11923            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11924                newFinalizedState_2Return::_tokenize(ret)
11925            }
11926            #[inline]
11927            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11928                <Self::ReturnTuple<
11929                    '_,
11930                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11931                    .map(Into::into)
11932            }
11933            #[inline]
11934            fn abi_decode_returns_validate(
11935                data: &[u8],
11936            ) -> alloy_sol_types::Result<Self::Return> {
11937                <Self::ReturnTuple<
11938                    '_,
11939                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11940                    .map(Into::into)
11941            }
11942        }
11943    };
11944    #[derive(serde::Serialize, serde::Deserialize)]
11945    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11946    /**Function with signature `owner()` and selector `0x8da5cb5b`.
11947```solidity
11948function owner() external view returns (address);
11949```*/
11950    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11951    #[derive(Clone)]
11952    pub struct ownerCall;
11953    #[derive(serde::Serialize, serde::Deserialize)]
11954    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11955    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
11956    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11957    #[derive(Clone)]
11958    pub struct ownerReturn {
11959        #[allow(missing_docs)]
11960        pub _0: alloy::sol_types::private::Address,
11961    }
11962    #[allow(
11963        non_camel_case_types,
11964        non_snake_case,
11965        clippy::pub_underscore_fields,
11966        clippy::style
11967    )]
11968    const _: () = {
11969        use alloy::sol_types as alloy_sol_types;
11970        {
11971            #[doc(hidden)]
11972            type UnderlyingSolTuple<'a> = ();
11973            #[doc(hidden)]
11974            type UnderlyingRustTuple<'a> = ();
11975            #[cfg(test)]
11976            #[allow(dead_code, unreachable_patterns)]
11977            fn _type_assertion(
11978                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11979            ) {
11980                match _t {
11981                    alloy_sol_types::private::AssertTypeEq::<
11982                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11983                    >(_) => {}
11984                }
11985            }
11986            #[automatically_derived]
11987            #[doc(hidden)]
11988            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
11989                fn from(value: ownerCall) -> Self {
11990                    ()
11991                }
11992            }
11993            #[automatically_derived]
11994            #[doc(hidden)]
11995            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
11996                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11997                    Self
11998                }
11999            }
12000        }
12001        {
12002            #[doc(hidden)]
12003            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12004            #[doc(hidden)]
12005            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12006            #[cfg(test)]
12007            #[allow(dead_code, unreachable_patterns)]
12008            fn _type_assertion(
12009                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12010            ) {
12011                match _t {
12012                    alloy_sol_types::private::AssertTypeEq::<
12013                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12014                    >(_) => {}
12015                }
12016            }
12017            #[automatically_derived]
12018            #[doc(hidden)]
12019            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
12020                fn from(value: ownerReturn) -> Self {
12021                    (value._0,)
12022                }
12023            }
12024            #[automatically_derived]
12025            #[doc(hidden)]
12026            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
12027                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12028                    Self { _0: tuple.0 }
12029                }
12030            }
12031        }
12032        #[automatically_derived]
12033        impl alloy_sol_types::SolCall for ownerCall {
12034            type Parameters<'a> = ();
12035            type Token<'a> = <Self::Parameters<
12036                'a,
12037            > as alloy_sol_types::SolType>::Token<'a>;
12038            type Return = alloy::sol_types::private::Address;
12039            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
12040            type ReturnToken<'a> = <Self::ReturnTuple<
12041                'a,
12042            > as alloy_sol_types::SolType>::Token<'a>;
12043            const SIGNATURE: &'static str = "owner()";
12044            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
12045            #[inline]
12046            fn new<'a>(
12047                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12048            ) -> Self {
12049                tuple.into()
12050            }
12051            #[inline]
12052            fn tokenize(&self) -> Self::Token<'_> {
12053                ()
12054            }
12055            #[inline]
12056            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12057                (
12058                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12059                        ret,
12060                    ),
12061                )
12062            }
12063            #[inline]
12064            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12065                <Self::ReturnTuple<
12066                    '_,
12067                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12068                    .map(|r| {
12069                        let r: ownerReturn = r.into();
12070                        r._0
12071                    })
12072            }
12073            #[inline]
12074            fn abi_decode_returns_validate(
12075                data: &[u8],
12076            ) -> alloy_sol_types::Result<Self::Return> {
12077                <Self::ReturnTuple<
12078                    '_,
12079                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12080                    .map(|r| {
12081                        let r: ownerReturn = r.into();
12082                        r._0
12083                    })
12084            }
12085        }
12086    };
12087    #[derive(serde::Serialize, serde::Deserialize)]
12088    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12089    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
12090```solidity
12091function permissionedProver() external view returns (address);
12092```*/
12093    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12094    #[derive(Clone)]
12095    pub struct permissionedProverCall;
12096    #[derive(serde::Serialize, serde::Deserialize)]
12097    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12098    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
12099    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12100    #[derive(Clone)]
12101    pub struct permissionedProverReturn {
12102        #[allow(missing_docs)]
12103        pub _0: alloy::sol_types::private::Address,
12104    }
12105    #[allow(
12106        non_camel_case_types,
12107        non_snake_case,
12108        clippy::pub_underscore_fields,
12109        clippy::style
12110    )]
12111    const _: () = {
12112        use alloy::sol_types as alloy_sol_types;
12113        {
12114            #[doc(hidden)]
12115            type UnderlyingSolTuple<'a> = ();
12116            #[doc(hidden)]
12117            type UnderlyingRustTuple<'a> = ();
12118            #[cfg(test)]
12119            #[allow(dead_code, unreachable_patterns)]
12120            fn _type_assertion(
12121                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12122            ) {
12123                match _t {
12124                    alloy_sol_types::private::AssertTypeEq::<
12125                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12126                    >(_) => {}
12127                }
12128            }
12129            #[automatically_derived]
12130            #[doc(hidden)]
12131            impl ::core::convert::From<permissionedProverCall>
12132            for UnderlyingRustTuple<'_> {
12133                fn from(value: permissionedProverCall) -> Self {
12134                    ()
12135                }
12136            }
12137            #[automatically_derived]
12138            #[doc(hidden)]
12139            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12140            for permissionedProverCall {
12141                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12142                    Self
12143                }
12144            }
12145        }
12146        {
12147            #[doc(hidden)]
12148            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12149            #[doc(hidden)]
12150            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12151            #[cfg(test)]
12152            #[allow(dead_code, unreachable_patterns)]
12153            fn _type_assertion(
12154                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12155            ) {
12156                match _t {
12157                    alloy_sol_types::private::AssertTypeEq::<
12158                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12159                    >(_) => {}
12160                }
12161            }
12162            #[automatically_derived]
12163            #[doc(hidden)]
12164            impl ::core::convert::From<permissionedProverReturn>
12165            for UnderlyingRustTuple<'_> {
12166                fn from(value: permissionedProverReturn) -> Self {
12167                    (value._0,)
12168                }
12169            }
12170            #[automatically_derived]
12171            #[doc(hidden)]
12172            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12173            for permissionedProverReturn {
12174                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12175                    Self { _0: tuple.0 }
12176                }
12177            }
12178        }
12179        #[automatically_derived]
12180        impl alloy_sol_types::SolCall for permissionedProverCall {
12181            type Parameters<'a> = ();
12182            type Token<'a> = <Self::Parameters<
12183                'a,
12184            > as alloy_sol_types::SolType>::Token<'a>;
12185            type Return = alloy::sol_types::private::Address;
12186            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
12187            type ReturnToken<'a> = <Self::ReturnTuple<
12188                'a,
12189            > as alloy_sol_types::SolType>::Token<'a>;
12190            const SIGNATURE: &'static str = "permissionedProver()";
12191            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
12192            #[inline]
12193            fn new<'a>(
12194                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12195            ) -> Self {
12196                tuple.into()
12197            }
12198            #[inline]
12199            fn tokenize(&self) -> Self::Token<'_> {
12200                ()
12201            }
12202            #[inline]
12203            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12204                (
12205                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12206                        ret,
12207                    ),
12208                )
12209            }
12210            #[inline]
12211            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12212                <Self::ReturnTuple<
12213                    '_,
12214                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12215                    .map(|r| {
12216                        let r: permissionedProverReturn = r.into();
12217                        r._0
12218                    })
12219            }
12220            #[inline]
12221            fn abi_decode_returns_validate(
12222                data: &[u8],
12223            ) -> alloy_sol_types::Result<Self::Return> {
12224                <Self::ReturnTuple<
12225                    '_,
12226                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12227                    .map(|r| {
12228                        let r: permissionedProverReturn = r.into();
12229                        r._0
12230                    })
12231            }
12232        }
12233    };
12234    #[derive(serde::Serialize, serde::Deserialize)]
12235    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12236    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
12237```solidity
12238function proxiableUUID() external view returns (bytes32);
12239```*/
12240    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12241    #[derive(Clone)]
12242    pub struct proxiableUUIDCall;
12243    #[derive(serde::Serialize, serde::Deserialize)]
12244    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12245    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
12246    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12247    #[derive(Clone)]
12248    pub struct proxiableUUIDReturn {
12249        #[allow(missing_docs)]
12250        pub _0: alloy::sol_types::private::FixedBytes<32>,
12251    }
12252    #[allow(
12253        non_camel_case_types,
12254        non_snake_case,
12255        clippy::pub_underscore_fields,
12256        clippy::style
12257    )]
12258    const _: () = {
12259        use alloy::sol_types as alloy_sol_types;
12260        {
12261            #[doc(hidden)]
12262            type UnderlyingSolTuple<'a> = ();
12263            #[doc(hidden)]
12264            type UnderlyingRustTuple<'a> = ();
12265            #[cfg(test)]
12266            #[allow(dead_code, unreachable_patterns)]
12267            fn _type_assertion(
12268                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12269            ) {
12270                match _t {
12271                    alloy_sol_types::private::AssertTypeEq::<
12272                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12273                    >(_) => {}
12274                }
12275            }
12276            #[automatically_derived]
12277            #[doc(hidden)]
12278            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
12279                fn from(value: proxiableUUIDCall) -> Self {
12280                    ()
12281                }
12282            }
12283            #[automatically_derived]
12284            #[doc(hidden)]
12285            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
12286                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12287                    Self
12288                }
12289            }
12290        }
12291        {
12292            #[doc(hidden)]
12293            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12294            #[doc(hidden)]
12295            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
12296            #[cfg(test)]
12297            #[allow(dead_code, unreachable_patterns)]
12298            fn _type_assertion(
12299                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12300            ) {
12301                match _t {
12302                    alloy_sol_types::private::AssertTypeEq::<
12303                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12304                    >(_) => {}
12305                }
12306            }
12307            #[automatically_derived]
12308            #[doc(hidden)]
12309            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
12310                fn from(value: proxiableUUIDReturn) -> Self {
12311                    (value._0,)
12312                }
12313            }
12314            #[automatically_derived]
12315            #[doc(hidden)]
12316            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
12317                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12318                    Self { _0: tuple.0 }
12319                }
12320            }
12321        }
12322        #[automatically_derived]
12323        impl alloy_sol_types::SolCall for proxiableUUIDCall {
12324            type Parameters<'a> = ();
12325            type Token<'a> = <Self::Parameters<
12326                'a,
12327            > as alloy_sol_types::SolType>::Token<'a>;
12328            type Return = alloy::sol_types::private::FixedBytes<32>;
12329            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12330            type ReturnToken<'a> = <Self::ReturnTuple<
12331                'a,
12332            > as alloy_sol_types::SolType>::Token<'a>;
12333            const SIGNATURE: &'static str = "proxiableUUID()";
12334            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
12335            #[inline]
12336            fn new<'a>(
12337                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12338            ) -> Self {
12339                tuple.into()
12340            }
12341            #[inline]
12342            fn tokenize(&self) -> Self::Token<'_> {
12343                ()
12344            }
12345            #[inline]
12346            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12347                (
12348                    <alloy::sol_types::sol_data::FixedBytes<
12349                        32,
12350                    > as alloy_sol_types::SolType>::tokenize(ret),
12351                )
12352            }
12353            #[inline]
12354            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12355                <Self::ReturnTuple<
12356                    '_,
12357                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12358                    .map(|r| {
12359                        let r: proxiableUUIDReturn = r.into();
12360                        r._0
12361                    })
12362            }
12363            #[inline]
12364            fn abi_decode_returns_validate(
12365                data: &[u8],
12366            ) -> alloy_sol_types::Result<Self::Return> {
12367                <Self::ReturnTuple<
12368                    '_,
12369                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12370                    .map(|r| {
12371                        let r: proxiableUUIDReturn = r.into();
12372                        r._0
12373                    })
12374            }
12375        }
12376    };
12377    #[derive(serde::Serialize, serde::Deserialize)]
12378    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12379    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
12380```solidity
12381function renounceOwnership() external;
12382```*/
12383    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12384    #[derive(Clone)]
12385    pub struct renounceOwnershipCall;
12386    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
12387    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12388    #[derive(Clone)]
12389    pub struct renounceOwnershipReturn {}
12390    #[allow(
12391        non_camel_case_types,
12392        non_snake_case,
12393        clippy::pub_underscore_fields,
12394        clippy::style
12395    )]
12396    const _: () = {
12397        use alloy::sol_types as alloy_sol_types;
12398        {
12399            #[doc(hidden)]
12400            type UnderlyingSolTuple<'a> = ();
12401            #[doc(hidden)]
12402            type UnderlyingRustTuple<'a> = ();
12403            #[cfg(test)]
12404            #[allow(dead_code, unreachable_patterns)]
12405            fn _type_assertion(
12406                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12407            ) {
12408                match _t {
12409                    alloy_sol_types::private::AssertTypeEq::<
12410                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12411                    >(_) => {}
12412                }
12413            }
12414            #[automatically_derived]
12415            #[doc(hidden)]
12416            impl ::core::convert::From<renounceOwnershipCall>
12417            for UnderlyingRustTuple<'_> {
12418                fn from(value: renounceOwnershipCall) -> Self {
12419                    ()
12420                }
12421            }
12422            #[automatically_derived]
12423            #[doc(hidden)]
12424            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12425            for renounceOwnershipCall {
12426                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12427                    Self
12428                }
12429            }
12430        }
12431        {
12432            #[doc(hidden)]
12433            type UnderlyingSolTuple<'a> = ();
12434            #[doc(hidden)]
12435            type UnderlyingRustTuple<'a> = ();
12436            #[cfg(test)]
12437            #[allow(dead_code, unreachable_patterns)]
12438            fn _type_assertion(
12439                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12440            ) {
12441                match _t {
12442                    alloy_sol_types::private::AssertTypeEq::<
12443                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12444                    >(_) => {}
12445                }
12446            }
12447            #[automatically_derived]
12448            #[doc(hidden)]
12449            impl ::core::convert::From<renounceOwnershipReturn>
12450            for UnderlyingRustTuple<'_> {
12451                fn from(value: renounceOwnershipReturn) -> Self {
12452                    ()
12453                }
12454            }
12455            #[automatically_derived]
12456            #[doc(hidden)]
12457            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12458            for renounceOwnershipReturn {
12459                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12460                    Self {}
12461                }
12462            }
12463        }
12464        impl renounceOwnershipReturn {
12465            fn _tokenize(
12466                &self,
12467            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12468                ()
12469            }
12470        }
12471        #[automatically_derived]
12472        impl alloy_sol_types::SolCall for renounceOwnershipCall {
12473            type Parameters<'a> = ();
12474            type Token<'a> = <Self::Parameters<
12475                'a,
12476            > as alloy_sol_types::SolType>::Token<'a>;
12477            type Return = renounceOwnershipReturn;
12478            type ReturnTuple<'a> = ();
12479            type ReturnToken<'a> = <Self::ReturnTuple<
12480                'a,
12481            > as alloy_sol_types::SolType>::Token<'a>;
12482            const SIGNATURE: &'static str = "renounceOwnership()";
12483            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
12484            #[inline]
12485            fn new<'a>(
12486                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12487            ) -> Self {
12488                tuple.into()
12489            }
12490            #[inline]
12491            fn tokenize(&self) -> Self::Token<'_> {
12492                ()
12493            }
12494            #[inline]
12495            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12496                renounceOwnershipReturn::_tokenize(ret)
12497            }
12498            #[inline]
12499            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12500                <Self::ReturnTuple<
12501                    '_,
12502                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12503                    .map(Into::into)
12504            }
12505            #[inline]
12506            fn abi_decode_returns_validate(
12507                data: &[u8],
12508            ) -> alloy_sol_types::Result<Self::Return> {
12509                <Self::ReturnTuple<
12510                    '_,
12511                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12512                    .map(Into::into)
12513            }
12514        }
12515    };
12516    #[derive(serde::Serialize, serde::Deserialize)]
12517    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12518    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
12519```solidity
12520function setPermissionedProver(address prover) external;
12521```*/
12522    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12523    #[derive(Clone)]
12524    pub struct setPermissionedProverCall {
12525        #[allow(missing_docs)]
12526        pub prover: alloy::sol_types::private::Address,
12527    }
12528    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
12529    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12530    #[derive(Clone)]
12531    pub struct setPermissionedProverReturn {}
12532    #[allow(
12533        non_camel_case_types,
12534        non_snake_case,
12535        clippy::pub_underscore_fields,
12536        clippy::style
12537    )]
12538    const _: () = {
12539        use alloy::sol_types as alloy_sol_types;
12540        {
12541            #[doc(hidden)]
12542            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12543            #[doc(hidden)]
12544            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12545            #[cfg(test)]
12546            #[allow(dead_code, unreachable_patterns)]
12547            fn _type_assertion(
12548                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12549            ) {
12550                match _t {
12551                    alloy_sol_types::private::AssertTypeEq::<
12552                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12553                    >(_) => {}
12554                }
12555            }
12556            #[automatically_derived]
12557            #[doc(hidden)]
12558            impl ::core::convert::From<setPermissionedProverCall>
12559            for UnderlyingRustTuple<'_> {
12560                fn from(value: setPermissionedProverCall) -> Self {
12561                    (value.prover,)
12562                }
12563            }
12564            #[automatically_derived]
12565            #[doc(hidden)]
12566            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12567            for setPermissionedProverCall {
12568                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12569                    Self { prover: tuple.0 }
12570                }
12571            }
12572        }
12573        {
12574            #[doc(hidden)]
12575            type UnderlyingSolTuple<'a> = ();
12576            #[doc(hidden)]
12577            type UnderlyingRustTuple<'a> = ();
12578            #[cfg(test)]
12579            #[allow(dead_code, unreachable_patterns)]
12580            fn _type_assertion(
12581                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12582            ) {
12583                match _t {
12584                    alloy_sol_types::private::AssertTypeEq::<
12585                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12586                    >(_) => {}
12587                }
12588            }
12589            #[automatically_derived]
12590            #[doc(hidden)]
12591            impl ::core::convert::From<setPermissionedProverReturn>
12592            for UnderlyingRustTuple<'_> {
12593                fn from(value: setPermissionedProverReturn) -> Self {
12594                    ()
12595                }
12596            }
12597            #[automatically_derived]
12598            #[doc(hidden)]
12599            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12600            for setPermissionedProverReturn {
12601                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12602                    Self {}
12603                }
12604            }
12605        }
12606        impl setPermissionedProverReturn {
12607            fn _tokenize(
12608                &self,
12609            ) -> <setPermissionedProverCall as alloy_sol_types::SolCall>::ReturnToken<
12610                '_,
12611            > {
12612                ()
12613            }
12614        }
12615        #[automatically_derived]
12616        impl alloy_sol_types::SolCall for setPermissionedProverCall {
12617            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
12618            type Token<'a> = <Self::Parameters<
12619                'a,
12620            > as alloy_sol_types::SolType>::Token<'a>;
12621            type Return = setPermissionedProverReturn;
12622            type ReturnTuple<'a> = ();
12623            type ReturnToken<'a> = <Self::ReturnTuple<
12624                'a,
12625            > as alloy_sol_types::SolType>::Token<'a>;
12626            const SIGNATURE: &'static str = "setPermissionedProver(address)";
12627            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
12628            #[inline]
12629            fn new<'a>(
12630                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12631            ) -> Self {
12632                tuple.into()
12633            }
12634            #[inline]
12635            fn tokenize(&self) -> Self::Token<'_> {
12636                (
12637                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12638                        &self.prover,
12639                    ),
12640                )
12641            }
12642            #[inline]
12643            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12644                setPermissionedProverReturn::_tokenize(ret)
12645            }
12646            #[inline]
12647            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12648                <Self::ReturnTuple<
12649                    '_,
12650                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12651                    .map(Into::into)
12652            }
12653            #[inline]
12654            fn abi_decode_returns_validate(
12655                data: &[u8],
12656            ) -> alloy_sol_types::Result<Self::Return> {
12657                <Self::ReturnTuple<
12658                    '_,
12659                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12660                    .map(Into::into)
12661            }
12662        }
12663    };
12664    #[derive(serde::Serialize, serde::Deserialize)]
12665    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12666    /**Function with signature `setStateHistoryRetentionPeriod(uint32)` and selector `0x433dba9f`.
12667```solidity
12668function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
12669```*/
12670    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12671    #[derive(Clone)]
12672    pub struct setStateHistoryRetentionPeriodCall {
12673        #[allow(missing_docs)]
12674        pub historySeconds: u32,
12675    }
12676    ///Container type for the return parameters of the [`setStateHistoryRetentionPeriod(uint32)`](setStateHistoryRetentionPeriodCall) function.
12677    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12678    #[derive(Clone)]
12679    pub struct setStateHistoryRetentionPeriodReturn {}
12680    #[allow(
12681        non_camel_case_types,
12682        non_snake_case,
12683        clippy::pub_underscore_fields,
12684        clippy::style
12685    )]
12686    const _: () = {
12687        use alloy::sol_types as alloy_sol_types;
12688        {
12689            #[doc(hidden)]
12690            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12691            #[doc(hidden)]
12692            type UnderlyingRustTuple<'a> = (u32,);
12693            #[cfg(test)]
12694            #[allow(dead_code, unreachable_patterns)]
12695            fn _type_assertion(
12696                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12697            ) {
12698                match _t {
12699                    alloy_sol_types::private::AssertTypeEq::<
12700                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12701                    >(_) => {}
12702                }
12703            }
12704            #[automatically_derived]
12705            #[doc(hidden)]
12706            impl ::core::convert::From<setStateHistoryRetentionPeriodCall>
12707            for UnderlyingRustTuple<'_> {
12708                fn from(value: setStateHistoryRetentionPeriodCall) -> Self {
12709                    (value.historySeconds,)
12710                }
12711            }
12712            #[automatically_derived]
12713            #[doc(hidden)]
12714            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12715            for setStateHistoryRetentionPeriodCall {
12716                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12717                    Self { historySeconds: tuple.0 }
12718                }
12719            }
12720        }
12721        {
12722            #[doc(hidden)]
12723            type UnderlyingSolTuple<'a> = ();
12724            #[doc(hidden)]
12725            type UnderlyingRustTuple<'a> = ();
12726            #[cfg(test)]
12727            #[allow(dead_code, unreachable_patterns)]
12728            fn _type_assertion(
12729                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12730            ) {
12731                match _t {
12732                    alloy_sol_types::private::AssertTypeEq::<
12733                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12734                    >(_) => {}
12735                }
12736            }
12737            #[automatically_derived]
12738            #[doc(hidden)]
12739            impl ::core::convert::From<setStateHistoryRetentionPeriodReturn>
12740            for UnderlyingRustTuple<'_> {
12741                fn from(value: setStateHistoryRetentionPeriodReturn) -> Self {
12742                    ()
12743                }
12744            }
12745            #[automatically_derived]
12746            #[doc(hidden)]
12747            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12748            for setStateHistoryRetentionPeriodReturn {
12749                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12750                    Self {}
12751                }
12752            }
12753        }
12754        impl setStateHistoryRetentionPeriodReturn {
12755            fn _tokenize(
12756                &self,
12757            ) -> <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
12758                '_,
12759            > {
12760                ()
12761            }
12762        }
12763        #[automatically_derived]
12764        impl alloy_sol_types::SolCall for setStateHistoryRetentionPeriodCall {
12765            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12766            type Token<'a> = <Self::Parameters<
12767                'a,
12768            > as alloy_sol_types::SolType>::Token<'a>;
12769            type Return = setStateHistoryRetentionPeriodReturn;
12770            type ReturnTuple<'a> = ();
12771            type ReturnToken<'a> = <Self::ReturnTuple<
12772                'a,
12773            > as alloy_sol_types::SolType>::Token<'a>;
12774            const SIGNATURE: &'static str = "setStateHistoryRetentionPeriod(uint32)";
12775            const SELECTOR: [u8; 4] = [67u8, 61u8, 186u8, 159u8];
12776            #[inline]
12777            fn new<'a>(
12778                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12779            ) -> Self {
12780                tuple.into()
12781            }
12782            #[inline]
12783            fn tokenize(&self) -> Self::Token<'_> {
12784                (
12785                    <alloy::sol_types::sol_data::Uint<
12786                        32,
12787                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
12788                )
12789            }
12790            #[inline]
12791            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12792                setStateHistoryRetentionPeriodReturn::_tokenize(ret)
12793            }
12794            #[inline]
12795            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12796                <Self::ReturnTuple<
12797                    '_,
12798                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12799                    .map(Into::into)
12800            }
12801            #[inline]
12802            fn abi_decode_returns_validate(
12803                data: &[u8],
12804            ) -> alloy_sol_types::Result<Self::Return> {
12805                <Self::ReturnTuple<
12806                    '_,
12807                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12808                    .map(Into::into)
12809            }
12810        }
12811    };
12812    #[derive(serde::Serialize, serde::Deserialize)]
12813    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12814    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
12815```solidity
12816function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
12817```*/
12818    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12819    #[derive(Clone)]
12820    pub struct setstateHistoryRetentionPeriodCall {
12821        #[allow(missing_docs)]
12822        pub historySeconds: u32,
12823    }
12824    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
12825    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12826    #[derive(Clone)]
12827    pub struct setstateHistoryRetentionPeriodReturn {}
12828    #[allow(
12829        non_camel_case_types,
12830        non_snake_case,
12831        clippy::pub_underscore_fields,
12832        clippy::style
12833    )]
12834    const _: () = {
12835        use alloy::sol_types as alloy_sol_types;
12836        {
12837            #[doc(hidden)]
12838            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12839            #[doc(hidden)]
12840            type UnderlyingRustTuple<'a> = (u32,);
12841            #[cfg(test)]
12842            #[allow(dead_code, unreachable_patterns)]
12843            fn _type_assertion(
12844                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12845            ) {
12846                match _t {
12847                    alloy_sol_types::private::AssertTypeEq::<
12848                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12849                    >(_) => {}
12850                }
12851            }
12852            #[automatically_derived]
12853            #[doc(hidden)]
12854            impl ::core::convert::From<setstateHistoryRetentionPeriodCall>
12855            for UnderlyingRustTuple<'_> {
12856                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
12857                    (value.historySeconds,)
12858                }
12859            }
12860            #[automatically_derived]
12861            #[doc(hidden)]
12862            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12863            for setstateHistoryRetentionPeriodCall {
12864                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12865                    Self { historySeconds: tuple.0 }
12866                }
12867            }
12868        }
12869        {
12870            #[doc(hidden)]
12871            type UnderlyingSolTuple<'a> = ();
12872            #[doc(hidden)]
12873            type UnderlyingRustTuple<'a> = ();
12874            #[cfg(test)]
12875            #[allow(dead_code, unreachable_patterns)]
12876            fn _type_assertion(
12877                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12878            ) {
12879                match _t {
12880                    alloy_sol_types::private::AssertTypeEq::<
12881                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12882                    >(_) => {}
12883                }
12884            }
12885            #[automatically_derived]
12886            #[doc(hidden)]
12887            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn>
12888            for UnderlyingRustTuple<'_> {
12889                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
12890                    ()
12891                }
12892            }
12893            #[automatically_derived]
12894            #[doc(hidden)]
12895            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12896            for setstateHistoryRetentionPeriodReturn {
12897                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12898                    Self {}
12899                }
12900            }
12901        }
12902        impl setstateHistoryRetentionPeriodReturn {
12903            fn _tokenize(
12904                &self,
12905            ) -> <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
12906                '_,
12907            > {
12908                ()
12909            }
12910        }
12911        #[automatically_derived]
12912        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
12913            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12914            type Token<'a> = <Self::Parameters<
12915                'a,
12916            > as alloy_sol_types::SolType>::Token<'a>;
12917            type Return = setstateHistoryRetentionPeriodReturn;
12918            type ReturnTuple<'a> = ();
12919            type ReturnToken<'a> = <Self::ReturnTuple<
12920                'a,
12921            > as alloy_sol_types::SolType>::Token<'a>;
12922            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
12923            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
12924            #[inline]
12925            fn new<'a>(
12926                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12927            ) -> Self {
12928                tuple.into()
12929            }
12930            #[inline]
12931            fn tokenize(&self) -> Self::Token<'_> {
12932                (
12933                    <alloy::sol_types::sol_data::Uint<
12934                        32,
12935                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
12936                )
12937            }
12938            #[inline]
12939            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12940                setstateHistoryRetentionPeriodReturn::_tokenize(ret)
12941            }
12942            #[inline]
12943            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12944                <Self::ReturnTuple<
12945                    '_,
12946                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12947                    .map(Into::into)
12948            }
12949            #[inline]
12950            fn abi_decode_returns_validate(
12951                data: &[u8],
12952            ) -> alloy_sol_types::Result<Self::Return> {
12953                <Self::ReturnTuple<
12954                    '_,
12955                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12956                    .map(Into::into)
12957            }
12958        }
12959    };
12960    #[derive(serde::Serialize, serde::Deserialize)]
12961    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12962    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
12963```solidity
12964function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
12965```*/
12966    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12967    #[derive(Clone)]
12968    pub struct stateHistoryCommitmentsCall(
12969        pub alloy::sol_types::private::primitives::aliases::U256,
12970    );
12971    #[derive(serde::Serialize, serde::Deserialize)]
12972    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12973    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
12974    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12975    #[derive(Clone)]
12976    pub struct stateHistoryCommitmentsReturn {
12977        #[allow(missing_docs)]
12978        pub l1BlockHeight: u64,
12979        #[allow(missing_docs)]
12980        pub l1BlockTimestamp: u64,
12981        #[allow(missing_docs)]
12982        pub hotShotBlockHeight: u64,
12983        #[allow(missing_docs)]
12984        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
12985    }
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> = (alloy::sol_types::sol_data::Uint<256>,);
12997            #[doc(hidden)]
12998            type UnderlyingRustTuple<'a> = (
12999                alloy::sol_types::private::primitives::aliases::U256,
13000            );
13001            #[cfg(test)]
13002            #[allow(dead_code, unreachable_patterns)]
13003            fn _type_assertion(
13004                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13005            ) {
13006                match _t {
13007                    alloy_sol_types::private::AssertTypeEq::<
13008                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13009                    >(_) => {}
13010                }
13011            }
13012            #[automatically_derived]
13013            #[doc(hidden)]
13014            impl ::core::convert::From<stateHistoryCommitmentsCall>
13015            for UnderlyingRustTuple<'_> {
13016                fn from(value: stateHistoryCommitmentsCall) -> Self {
13017                    (value.0,)
13018                }
13019            }
13020            #[automatically_derived]
13021            #[doc(hidden)]
13022            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13023            for stateHistoryCommitmentsCall {
13024                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13025                    Self(tuple.0)
13026                }
13027            }
13028        }
13029        {
13030            #[doc(hidden)]
13031            type UnderlyingSolTuple<'a> = (
13032                alloy::sol_types::sol_data::Uint<64>,
13033                alloy::sol_types::sol_data::Uint<64>,
13034                alloy::sol_types::sol_data::Uint<64>,
13035                BN254::ScalarField,
13036            );
13037            #[doc(hidden)]
13038            type UnderlyingRustTuple<'a> = (
13039                u64,
13040                u64,
13041                u64,
13042                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13043            );
13044            #[cfg(test)]
13045            #[allow(dead_code, unreachable_patterns)]
13046            fn _type_assertion(
13047                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13048            ) {
13049                match _t {
13050                    alloy_sol_types::private::AssertTypeEq::<
13051                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13052                    >(_) => {}
13053                }
13054            }
13055            #[automatically_derived]
13056            #[doc(hidden)]
13057            impl ::core::convert::From<stateHistoryCommitmentsReturn>
13058            for UnderlyingRustTuple<'_> {
13059                fn from(value: stateHistoryCommitmentsReturn) -> Self {
13060                    (
13061                        value.l1BlockHeight,
13062                        value.l1BlockTimestamp,
13063                        value.hotShotBlockHeight,
13064                        value.hotShotBlockCommRoot,
13065                    )
13066                }
13067            }
13068            #[automatically_derived]
13069            #[doc(hidden)]
13070            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13071            for stateHistoryCommitmentsReturn {
13072                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13073                    Self {
13074                        l1BlockHeight: tuple.0,
13075                        l1BlockTimestamp: tuple.1,
13076                        hotShotBlockHeight: tuple.2,
13077                        hotShotBlockCommRoot: tuple.3,
13078                    }
13079                }
13080            }
13081        }
13082        impl stateHistoryCommitmentsReturn {
13083            fn _tokenize(
13084                &self,
13085            ) -> <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::ReturnToken<
13086                '_,
13087            > {
13088                (
13089                    <alloy::sol_types::sol_data::Uint<
13090                        64,
13091                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
13092                    <alloy::sol_types::sol_data::Uint<
13093                        64,
13094                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
13095                    <alloy::sol_types::sol_data::Uint<
13096                        64,
13097                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
13098                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
13099                        &self.hotShotBlockCommRoot,
13100                    ),
13101                )
13102            }
13103        }
13104        #[automatically_derived]
13105        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
13106            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13107            type Token<'a> = <Self::Parameters<
13108                'a,
13109            > as alloy_sol_types::SolType>::Token<'a>;
13110            type Return = stateHistoryCommitmentsReturn;
13111            type ReturnTuple<'a> = (
13112                alloy::sol_types::sol_data::Uint<64>,
13113                alloy::sol_types::sol_data::Uint<64>,
13114                alloy::sol_types::sol_data::Uint<64>,
13115                BN254::ScalarField,
13116            );
13117            type ReturnToken<'a> = <Self::ReturnTuple<
13118                'a,
13119            > as alloy_sol_types::SolType>::Token<'a>;
13120            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
13121            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
13122            #[inline]
13123            fn new<'a>(
13124                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13125            ) -> Self {
13126                tuple.into()
13127            }
13128            #[inline]
13129            fn tokenize(&self) -> Self::Token<'_> {
13130                (
13131                    <alloy::sol_types::sol_data::Uint<
13132                        256,
13133                    > as alloy_sol_types::SolType>::tokenize(&self.0),
13134                )
13135            }
13136            #[inline]
13137            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13138                stateHistoryCommitmentsReturn::_tokenize(ret)
13139            }
13140            #[inline]
13141            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13142                <Self::ReturnTuple<
13143                    '_,
13144                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13145                    .map(Into::into)
13146            }
13147            #[inline]
13148            fn abi_decode_returns_validate(
13149                data: &[u8],
13150            ) -> alloy_sol_types::Result<Self::Return> {
13151                <Self::ReturnTuple<
13152                    '_,
13153                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13154                    .map(Into::into)
13155            }
13156        }
13157    };
13158    #[derive(serde::Serialize, serde::Deserialize)]
13159    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13160    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
13161```solidity
13162function stateHistoryFirstIndex() external view returns (uint64);
13163```*/
13164    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13165    #[derive(Clone)]
13166    pub struct stateHistoryFirstIndexCall;
13167    #[derive(serde::Serialize, serde::Deserialize)]
13168    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13169    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
13170    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13171    #[derive(Clone)]
13172    pub struct stateHistoryFirstIndexReturn {
13173        #[allow(missing_docs)]
13174        pub _0: u64,
13175    }
13176    #[allow(
13177        non_camel_case_types,
13178        non_snake_case,
13179        clippy::pub_underscore_fields,
13180        clippy::style
13181    )]
13182    const _: () = {
13183        use alloy::sol_types as alloy_sol_types;
13184        {
13185            #[doc(hidden)]
13186            type UnderlyingSolTuple<'a> = ();
13187            #[doc(hidden)]
13188            type UnderlyingRustTuple<'a> = ();
13189            #[cfg(test)]
13190            #[allow(dead_code, unreachable_patterns)]
13191            fn _type_assertion(
13192                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13193            ) {
13194                match _t {
13195                    alloy_sol_types::private::AssertTypeEq::<
13196                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13197                    >(_) => {}
13198                }
13199            }
13200            #[automatically_derived]
13201            #[doc(hidden)]
13202            impl ::core::convert::From<stateHistoryFirstIndexCall>
13203            for UnderlyingRustTuple<'_> {
13204                fn from(value: stateHistoryFirstIndexCall) -> Self {
13205                    ()
13206                }
13207            }
13208            #[automatically_derived]
13209            #[doc(hidden)]
13210            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13211            for stateHistoryFirstIndexCall {
13212                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13213                    Self
13214                }
13215            }
13216        }
13217        {
13218            #[doc(hidden)]
13219            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13220            #[doc(hidden)]
13221            type UnderlyingRustTuple<'a> = (u64,);
13222            #[cfg(test)]
13223            #[allow(dead_code, unreachable_patterns)]
13224            fn _type_assertion(
13225                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13226            ) {
13227                match _t {
13228                    alloy_sol_types::private::AssertTypeEq::<
13229                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13230                    >(_) => {}
13231                }
13232            }
13233            #[automatically_derived]
13234            #[doc(hidden)]
13235            impl ::core::convert::From<stateHistoryFirstIndexReturn>
13236            for UnderlyingRustTuple<'_> {
13237                fn from(value: stateHistoryFirstIndexReturn) -> Self {
13238                    (value._0,)
13239                }
13240            }
13241            #[automatically_derived]
13242            #[doc(hidden)]
13243            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13244            for stateHistoryFirstIndexReturn {
13245                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13246                    Self { _0: tuple.0 }
13247                }
13248            }
13249        }
13250        #[automatically_derived]
13251        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
13252            type Parameters<'a> = ();
13253            type Token<'a> = <Self::Parameters<
13254                'a,
13255            > as alloy_sol_types::SolType>::Token<'a>;
13256            type Return = u64;
13257            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13258            type ReturnToken<'a> = <Self::ReturnTuple<
13259                'a,
13260            > as alloy_sol_types::SolType>::Token<'a>;
13261            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
13262            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
13263            #[inline]
13264            fn new<'a>(
13265                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13266            ) -> Self {
13267                tuple.into()
13268            }
13269            #[inline]
13270            fn tokenize(&self) -> Self::Token<'_> {
13271                ()
13272            }
13273            #[inline]
13274            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13275                (
13276                    <alloy::sol_types::sol_data::Uint<
13277                        64,
13278                    > as alloy_sol_types::SolType>::tokenize(ret),
13279                )
13280            }
13281            #[inline]
13282            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13283                <Self::ReturnTuple<
13284                    '_,
13285                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13286                    .map(|r| {
13287                        let r: stateHistoryFirstIndexReturn = r.into();
13288                        r._0
13289                    })
13290            }
13291            #[inline]
13292            fn abi_decode_returns_validate(
13293                data: &[u8],
13294            ) -> alloy_sol_types::Result<Self::Return> {
13295                <Self::ReturnTuple<
13296                    '_,
13297                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13298                    .map(|r| {
13299                        let r: stateHistoryFirstIndexReturn = r.into();
13300                        r._0
13301                    })
13302            }
13303        }
13304    };
13305    #[derive(serde::Serialize, serde::Deserialize)]
13306    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13307    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
13308```solidity
13309function stateHistoryRetentionPeriod() external view returns (uint32);
13310```*/
13311    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13312    #[derive(Clone)]
13313    pub struct stateHistoryRetentionPeriodCall;
13314    #[derive(serde::Serialize, serde::Deserialize)]
13315    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13316    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
13317    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13318    #[derive(Clone)]
13319    pub struct stateHistoryRetentionPeriodReturn {
13320        #[allow(missing_docs)]
13321        pub _0: u32,
13322    }
13323    #[allow(
13324        non_camel_case_types,
13325        non_snake_case,
13326        clippy::pub_underscore_fields,
13327        clippy::style
13328    )]
13329    const _: () = {
13330        use alloy::sol_types as alloy_sol_types;
13331        {
13332            #[doc(hidden)]
13333            type UnderlyingSolTuple<'a> = ();
13334            #[doc(hidden)]
13335            type UnderlyingRustTuple<'a> = ();
13336            #[cfg(test)]
13337            #[allow(dead_code, unreachable_patterns)]
13338            fn _type_assertion(
13339                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13340            ) {
13341                match _t {
13342                    alloy_sol_types::private::AssertTypeEq::<
13343                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13344                    >(_) => {}
13345                }
13346            }
13347            #[automatically_derived]
13348            #[doc(hidden)]
13349            impl ::core::convert::From<stateHistoryRetentionPeriodCall>
13350            for UnderlyingRustTuple<'_> {
13351                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
13352                    ()
13353                }
13354            }
13355            #[automatically_derived]
13356            #[doc(hidden)]
13357            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13358            for stateHistoryRetentionPeriodCall {
13359                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13360                    Self
13361                }
13362            }
13363        }
13364        {
13365            #[doc(hidden)]
13366            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
13367            #[doc(hidden)]
13368            type UnderlyingRustTuple<'a> = (u32,);
13369            #[cfg(test)]
13370            #[allow(dead_code, unreachable_patterns)]
13371            fn _type_assertion(
13372                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13373            ) {
13374                match _t {
13375                    alloy_sol_types::private::AssertTypeEq::<
13376                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13377                    >(_) => {}
13378                }
13379            }
13380            #[automatically_derived]
13381            #[doc(hidden)]
13382            impl ::core::convert::From<stateHistoryRetentionPeriodReturn>
13383            for UnderlyingRustTuple<'_> {
13384                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
13385                    (value._0,)
13386                }
13387            }
13388            #[automatically_derived]
13389            #[doc(hidden)]
13390            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13391            for stateHistoryRetentionPeriodReturn {
13392                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13393                    Self { _0: tuple.0 }
13394                }
13395            }
13396        }
13397        #[automatically_derived]
13398        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
13399            type Parameters<'a> = ();
13400            type Token<'a> = <Self::Parameters<
13401                'a,
13402            > as alloy_sol_types::SolType>::Token<'a>;
13403            type Return = u32;
13404            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
13405            type ReturnToken<'a> = <Self::ReturnTuple<
13406                'a,
13407            > as alloy_sol_types::SolType>::Token<'a>;
13408            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
13409            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
13410            #[inline]
13411            fn new<'a>(
13412                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13413            ) -> Self {
13414                tuple.into()
13415            }
13416            #[inline]
13417            fn tokenize(&self) -> Self::Token<'_> {
13418                ()
13419            }
13420            #[inline]
13421            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13422                (
13423                    <alloy::sol_types::sol_data::Uint<
13424                        32,
13425                    > as alloy_sol_types::SolType>::tokenize(ret),
13426                )
13427            }
13428            #[inline]
13429            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13430                <Self::ReturnTuple<
13431                    '_,
13432                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13433                    .map(|r| {
13434                        let r: stateHistoryRetentionPeriodReturn = r.into();
13435                        r._0
13436                    })
13437            }
13438            #[inline]
13439            fn abi_decode_returns_validate(
13440                data: &[u8],
13441            ) -> alloy_sol_types::Result<Self::Return> {
13442                <Self::ReturnTuple<
13443                    '_,
13444                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13445                    .map(|r| {
13446                        let r: stateHistoryRetentionPeriodReturn = r.into();
13447                        r._0
13448                    })
13449            }
13450        }
13451    };
13452    #[derive(serde::Serialize, serde::Deserialize)]
13453    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13454    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
13455```solidity
13456function transferOwnership(address newOwner) external;
13457```*/
13458    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13459    #[derive(Clone)]
13460    pub struct transferOwnershipCall {
13461        #[allow(missing_docs)]
13462        pub newOwner: alloy::sol_types::private::Address,
13463    }
13464    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
13465    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13466    #[derive(Clone)]
13467    pub struct transferOwnershipReturn {}
13468    #[allow(
13469        non_camel_case_types,
13470        non_snake_case,
13471        clippy::pub_underscore_fields,
13472        clippy::style
13473    )]
13474    const _: () = {
13475        use alloy::sol_types as alloy_sol_types;
13476        {
13477            #[doc(hidden)]
13478            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
13479            #[doc(hidden)]
13480            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
13481            #[cfg(test)]
13482            #[allow(dead_code, unreachable_patterns)]
13483            fn _type_assertion(
13484                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13485            ) {
13486                match _t {
13487                    alloy_sol_types::private::AssertTypeEq::<
13488                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13489                    >(_) => {}
13490                }
13491            }
13492            #[automatically_derived]
13493            #[doc(hidden)]
13494            impl ::core::convert::From<transferOwnershipCall>
13495            for UnderlyingRustTuple<'_> {
13496                fn from(value: transferOwnershipCall) -> Self {
13497                    (value.newOwner,)
13498                }
13499            }
13500            #[automatically_derived]
13501            #[doc(hidden)]
13502            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13503            for transferOwnershipCall {
13504                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13505                    Self { newOwner: tuple.0 }
13506                }
13507            }
13508        }
13509        {
13510            #[doc(hidden)]
13511            type UnderlyingSolTuple<'a> = ();
13512            #[doc(hidden)]
13513            type UnderlyingRustTuple<'a> = ();
13514            #[cfg(test)]
13515            #[allow(dead_code, unreachable_patterns)]
13516            fn _type_assertion(
13517                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13518            ) {
13519                match _t {
13520                    alloy_sol_types::private::AssertTypeEq::<
13521                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13522                    >(_) => {}
13523                }
13524            }
13525            #[automatically_derived]
13526            #[doc(hidden)]
13527            impl ::core::convert::From<transferOwnershipReturn>
13528            for UnderlyingRustTuple<'_> {
13529                fn from(value: transferOwnershipReturn) -> Self {
13530                    ()
13531                }
13532            }
13533            #[automatically_derived]
13534            #[doc(hidden)]
13535            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13536            for transferOwnershipReturn {
13537                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13538                    Self {}
13539                }
13540            }
13541        }
13542        impl transferOwnershipReturn {
13543            fn _tokenize(
13544                &self,
13545            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13546                ()
13547            }
13548        }
13549        #[automatically_derived]
13550        impl alloy_sol_types::SolCall for transferOwnershipCall {
13551            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
13552            type Token<'a> = <Self::Parameters<
13553                'a,
13554            > as alloy_sol_types::SolType>::Token<'a>;
13555            type Return = transferOwnershipReturn;
13556            type ReturnTuple<'a> = ();
13557            type ReturnToken<'a> = <Self::ReturnTuple<
13558                'a,
13559            > as alloy_sol_types::SolType>::Token<'a>;
13560            const SIGNATURE: &'static str = "transferOwnership(address)";
13561            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
13562            #[inline]
13563            fn new<'a>(
13564                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13565            ) -> Self {
13566                tuple.into()
13567            }
13568            #[inline]
13569            fn tokenize(&self) -> Self::Token<'_> {
13570                (
13571                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13572                        &self.newOwner,
13573                    ),
13574                )
13575            }
13576            #[inline]
13577            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13578                transferOwnershipReturn::_tokenize(ret)
13579            }
13580            #[inline]
13581            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13582                <Self::ReturnTuple<
13583                    '_,
13584                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13585                    .map(Into::into)
13586            }
13587            #[inline]
13588            fn abi_decode_returns_validate(
13589                data: &[u8],
13590            ) -> alloy_sol_types::Result<Self::Return> {
13591                <Self::ReturnTuple<
13592                    '_,
13593                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13594                    .map(Into::into)
13595            }
13596        }
13597    };
13598    #[derive(serde::Serialize, serde::Deserialize)]
13599    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13600    /**Function with signature `updateEpochStartBlock(uint64)` and selector `0x167ac618`.
13601```solidity
13602function updateEpochStartBlock(uint64 newEpochStartBlock) external;
13603```*/
13604    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13605    #[derive(Clone)]
13606    pub struct updateEpochStartBlockCall {
13607        #[allow(missing_docs)]
13608        pub newEpochStartBlock: u64,
13609    }
13610    ///Container type for the return parameters of the [`updateEpochStartBlock(uint64)`](updateEpochStartBlockCall) function.
13611    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13612    #[derive(Clone)]
13613    pub struct updateEpochStartBlockReturn {}
13614    #[allow(
13615        non_camel_case_types,
13616        non_snake_case,
13617        clippy::pub_underscore_fields,
13618        clippy::style
13619    )]
13620    const _: () = {
13621        use alloy::sol_types as alloy_sol_types;
13622        {
13623            #[doc(hidden)]
13624            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13625            #[doc(hidden)]
13626            type UnderlyingRustTuple<'a> = (u64,);
13627            #[cfg(test)]
13628            #[allow(dead_code, unreachable_patterns)]
13629            fn _type_assertion(
13630                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13631            ) {
13632                match _t {
13633                    alloy_sol_types::private::AssertTypeEq::<
13634                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13635                    >(_) => {}
13636                }
13637            }
13638            #[automatically_derived]
13639            #[doc(hidden)]
13640            impl ::core::convert::From<updateEpochStartBlockCall>
13641            for UnderlyingRustTuple<'_> {
13642                fn from(value: updateEpochStartBlockCall) -> Self {
13643                    (value.newEpochStartBlock,)
13644                }
13645            }
13646            #[automatically_derived]
13647            #[doc(hidden)]
13648            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13649            for updateEpochStartBlockCall {
13650                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13651                    Self {
13652                        newEpochStartBlock: tuple.0,
13653                    }
13654                }
13655            }
13656        }
13657        {
13658            #[doc(hidden)]
13659            type UnderlyingSolTuple<'a> = ();
13660            #[doc(hidden)]
13661            type UnderlyingRustTuple<'a> = ();
13662            #[cfg(test)]
13663            #[allow(dead_code, unreachable_patterns)]
13664            fn _type_assertion(
13665                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13666            ) {
13667                match _t {
13668                    alloy_sol_types::private::AssertTypeEq::<
13669                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13670                    >(_) => {}
13671                }
13672            }
13673            #[automatically_derived]
13674            #[doc(hidden)]
13675            impl ::core::convert::From<updateEpochStartBlockReturn>
13676            for UnderlyingRustTuple<'_> {
13677                fn from(value: updateEpochStartBlockReturn) -> Self {
13678                    ()
13679                }
13680            }
13681            #[automatically_derived]
13682            #[doc(hidden)]
13683            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13684            for updateEpochStartBlockReturn {
13685                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13686                    Self {}
13687                }
13688            }
13689        }
13690        impl updateEpochStartBlockReturn {
13691            fn _tokenize(
13692                &self,
13693            ) -> <updateEpochStartBlockCall as alloy_sol_types::SolCall>::ReturnToken<
13694                '_,
13695            > {
13696                ()
13697            }
13698        }
13699        #[automatically_derived]
13700        impl alloy_sol_types::SolCall for updateEpochStartBlockCall {
13701            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13702            type Token<'a> = <Self::Parameters<
13703                'a,
13704            > as alloy_sol_types::SolType>::Token<'a>;
13705            type Return = updateEpochStartBlockReturn;
13706            type ReturnTuple<'a> = ();
13707            type ReturnToken<'a> = <Self::ReturnTuple<
13708                'a,
13709            > as alloy_sol_types::SolType>::Token<'a>;
13710            const SIGNATURE: &'static str = "updateEpochStartBlock(uint64)";
13711            const SELECTOR: [u8; 4] = [22u8, 122u8, 198u8, 24u8];
13712            #[inline]
13713            fn new<'a>(
13714                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13715            ) -> Self {
13716                tuple.into()
13717            }
13718            #[inline]
13719            fn tokenize(&self) -> Self::Token<'_> {
13720                (
13721                    <alloy::sol_types::sol_data::Uint<
13722                        64,
13723                    > as alloy_sol_types::SolType>::tokenize(&self.newEpochStartBlock),
13724                )
13725            }
13726            #[inline]
13727            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13728                updateEpochStartBlockReturn::_tokenize(ret)
13729            }
13730            #[inline]
13731            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13732                <Self::ReturnTuple<
13733                    '_,
13734                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13735                    .map(Into::into)
13736            }
13737            #[inline]
13738            fn abi_decode_returns_validate(
13739                data: &[u8],
13740            ) -> alloy_sol_types::Result<Self::Return> {
13741                <Self::ReturnTuple<
13742                    '_,
13743                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13744                    .map(Into::into)
13745            }
13746        }
13747    };
13748    #[derive(serde::Serialize, serde::Deserialize)]
13749    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13750    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
13751```solidity
13752function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
13753```*/
13754    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13755    #[derive(Clone)]
13756    pub struct upgradeToAndCallCall {
13757        #[allow(missing_docs)]
13758        pub newImplementation: alloy::sol_types::private::Address,
13759        #[allow(missing_docs)]
13760        pub data: alloy::sol_types::private::Bytes,
13761    }
13762    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
13763    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13764    #[derive(Clone)]
13765    pub struct upgradeToAndCallReturn {}
13766    #[allow(
13767        non_camel_case_types,
13768        non_snake_case,
13769        clippy::pub_underscore_fields,
13770        clippy::style
13771    )]
13772    const _: () = {
13773        use alloy::sol_types as alloy_sol_types;
13774        {
13775            #[doc(hidden)]
13776            type UnderlyingSolTuple<'a> = (
13777                alloy::sol_types::sol_data::Address,
13778                alloy::sol_types::sol_data::Bytes,
13779            );
13780            #[doc(hidden)]
13781            type UnderlyingRustTuple<'a> = (
13782                alloy::sol_types::private::Address,
13783                alloy::sol_types::private::Bytes,
13784            );
13785            #[cfg(test)]
13786            #[allow(dead_code, unreachable_patterns)]
13787            fn _type_assertion(
13788                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13789            ) {
13790                match _t {
13791                    alloy_sol_types::private::AssertTypeEq::<
13792                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13793                    >(_) => {}
13794                }
13795            }
13796            #[automatically_derived]
13797            #[doc(hidden)]
13798            impl ::core::convert::From<upgradeToAndCallCall>
13799            for UnderlyingRustTuple<'_> {
13800                fn from(value: upgradeToAndCallCall) -> Self {
13801                    (value.newImplementation, value.data)
13802                }
13803            }
13804            #[automatically_derived]
13805            #[doc(hidden)]
13806            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13807            for upgradeToAndCallCall {
13808                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13809                    Self {
13810                        newImplementation: tuple.0,
13811                        data: tuple.1,
13812                    }
13813                }
13814            }
13815        }
13816        {
13817            #[doc(hidden)]
13818            type UnderlyingSolTuple<'a> = ();
13819            #[doc(hidden)]
13820            type UnderlyingRustTuple<'a> = ();
13821            #[cfg(test)]
13822            #[allow(dead_code, unreachable_patterns)]
13823            fn _type_assertion(
13824                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13825            ) {
13826                match _t {
13827                    alloy_sol_types::private::AssertTypeEq::<
13828                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13829                    >(_) => {}
13830                }
13831            }
13832            #[automatically_derived]
13833            #[doc(hidden)]
13834            impl ::core::convert::From<upgradeToAndCallReturn>
13835            for UnderlyingRustTuple<'_> {
13836                fn from(value: upgradeToAndCallReturn) -> Self {
13837                    ()
13838                }
13839            }
13840            #[automatically_derived]
13841            #[doc(hidden)]
13842            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13843            for upgradeToAndCallReturn {
13844                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13845                    Self {}
13846                }
13847            }
13848        }
13849        impl upgradeToAndCallReturn {
13850            fn _tokenize(
13851                &self,
13852            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13853                ()
13854            }
13855        }
13856        #[automatically_derived]
13857        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
13858            type Parameters<'a> = (
13859                alloy::sol_types::sol_data::Address,
13860                alloy::sol_types::sol_data::Bytes,
13861            );
13862            type Token<'a> = <Self::Parameters<
13863                'a,
13864            > as alloy_sol_types::SolType>::Token<'a>;
13865            type Return = upgradeToAndCallReturn;
13866            type ReturnTuple<'a> = ();
13867            type ReturnToken<'a> = <Self::ReturnTuple<
13868                'a,
13869            > as alloy_sol_types::SolType>::Token<'a>;
13870            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
13871            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
13872            #[inline]
13873            fn new<'a>(
13874                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13875            ) -> Self {
13876                tuple.into()
13877            }
13878            #[inline]
13879            fn tokenize(&self) -> Self::Token<'_> {
13880                (
13881                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13882                        &self.newImplementation,
13883                    ),
13884                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
13885                        &self.data,
13886                    ),
13887                )
13888            }
13889            #[inline]
13890            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13891                upgradeToAndCallReturn::_tokenize(ret)
13892            }
13893            #[inline]
13894            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13895                <Self::ReturnTuple<
13896                    '_,
13897                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13898                    .map(Into::into)
13899            }
13900            #[inline]
13901            fn abi_decode_returns_validate(
13902                data: &[u8],
13903            ) -> alloy_sol_types::Result<Self::Return> {
13904                <Self::ReturnTuple<
13905                    '_,
13906                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13907                    .map(Into::into)
13908            }
13909        }
13910    };
13911    #[derive(serde::Serialize, serde::Deserialize)]
13912    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13913    /**Function with signature `votingStakeTableState()` and selector `0x0625e19b`.
13914```solidity
13915function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
13916```*/
13917    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13918    #[derive(Clone)]
13919    pub struct votingStakeTableStateCall;
13920    #[derive(serde::Serialize, serde::Deserialize)]
13921    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13922    ///Container type for the return parameters of the [`votingStakeTableState()`](votingStakeTableStateCall) function.
13923    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13924    #[derive(Clone)]
13925    pub struct votingStakeTableStateReturn {
13926        #[allow(missing_docs)]
13927        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
13928        #[allow(missing_docs)]
13929        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13930        #[allow(missing_docs)]
13931        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13932        #[allow(missing_docs)]
13933        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13934    }
13935    #[allow(
13936        non_camel_case_types,
13937        non_snake_case,
13938        clippy::pub_underscore_fields,
13939        clippy::style
13940    )]
13941    const _: () = {
13942        use alloy::sol_types as alloy_sol_types;
13943        {
13944            #[doc(hidden)]
13945            type UnderlyingSolTuple<'a> = ();
13946            #[doc(hidden)]
13947            type UnderlyingRustTuple<'a> = ();
13948            #[cfg(test)]
13949            #[allow(dead_code, unreachable_patterns)]
13950            fn _type_assertion(
13951                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13952            ) {
13953                match _t {
13954                    alloy_sol_types::private::AssertTypeEq::<
13955                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13956                    >(_) => {}
13957                }
13958            }
13959            #[automatically_derived]
13960            #[doc(hidden)]
13961            impl ::core::convert::From<votingStakeTableStateCall>
13962            for UnderlyingRustTuple<'_> {
13963                fn from(value: votingStakeTableStateCall) -> Self {
13964                    ()
13965                }
13966            }
13967            #[automatically_derived]
13968            #[doc(hidden)]
13969            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13970            for votingStakeTableStateCall {
13971                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13972                    Self
13973                }
13974            }
13975        }
13976        {
13977            #[doc(hidden)]
13978            type UnderlyingSolTuple<'a> = (
13979                alloy::sol_types::sol_data::Uint<256>,
13980                BN254::ScalarField,
13981                BN254::ScalarField,
13982                BN254::ScalarField,
13983            );
13984            #[doc(hidden)]
13985            type UnderlyingRustTuple<'a> = (
13986                alloy::sol_types::private::primitives::aliases::U256,
13987                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13988                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13989                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13990            );
13991            #[cfg(test)]
13992            #[allow(dead_code, unreachable_patterns)]
13993            fn _type_assertion(
13994                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13995            ) {
13996                match _t {
13997                    alloy_sol_types::private::AssertTypeEq::<
13998                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13999                    >(_) => {}
14000                }
14001            }
14002            #[automatically_derived]
14003            #[doc(hidden)]
14004            impl ::core::convert::From<votingStakeTableStateReturn>
14005            for UnderlyingRustTuple<'_> {
14006                fn from(value: votingStakeTableStateReturn) -> Self {
14007                    (
14008                        value.threshold,
14009                        value.blsKeyComm,
14010                        value.schnorrKeyComm,
14011                        value.amountComm,
14012                    )
14013                }
14014            }
14015            #[automatically_derived]
14016            #[doc(hidden)]
14017            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14018            for votingStakeTableStateReturn {
14019                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14020                    Self {
14021                        threshold: tuple.0,
14022                        blsKeyComm: tuple.1,
14023                        schnorrKeyComm: tuple.2,
14024                        amountComm: tuple.3,
14025                    }
14026                }
14027            }
14028        }
14029        impl votingStakeTableStateReturn {
14030            fn _tokenize(
14031                &self,
14032            ) -> <votingStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
14033                '_,
14034            > {
14035                (
14036                    <alloy::sol_types::sol_data::Uint<
14037                        256,
14038                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
14039                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
14040                        &self.blsKeyComm,
14041                    ),
14042                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
14043                        &self.schnorrKeyComm,
14044                    ),
14045                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
14046                        &self.amountComm,
14047                    ),
14048                )
14049            }
14050        }
14051        #[automatically_derived]
14052        impl alloy_sol_types::SolCall for votingStakeTableStateCall {
14053            type Parameters<'a> = ();
14054            type Token<'a> = <Self::Parameters<
14055                'a,
14056            > as alloy_sol_types::SolType>::Token<'a>;
14057            type Return = votingStakeTableStateReturn;
14058            type ReturnTuple<'a> = (
14059                alloy::sol_types::sol_data::Uint<256>,
14060                BN254::ScalarField,
14061                BN254::ScalarField,
14062                BN254::ScalarField,
14063            );
14064            type ReturnToken<'a> = <Self::ReturnTuple<
14065                'a,
14066            > as alloy_sol_types::SolType>::Token<'a>;
14067            const SIGNATURE: &'static str = "votingStakeTableState()";
14068            const SELECTOR: [u8; 4] = [6u8, 37u8, 225u8, 155u8];
14069            #[inline]
14070            fn new<'a>(
14071                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14072            ) -> Self {
14073                tuple.into()
14074            }
14075            #[inline]
14076            fn tokenize(&self) -> Self::Token<'_> {
14077                ()
14078            }
14079            #[inline]
14080            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14081                votingStakeTableStateReturn::_tokenize(ret)
14082            }
14083            #[inline]
14084            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14085                <Self::ReturnTuple<
14086                    '_,
14087                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14088                    .map(Into::into)
14089            }
14090            #[inline]
14091            fn abi_decode_returns_validate(
14092                data: &[u8],
14093            ) -> alloy_sol_types::Result<Self::Return> {
14094                <Self::ReturnTuple<
14095                    '_,
14096                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14097                    .map(Into::into)
14098            }
14099        }
14100    };
14101    ///Container for all the [`LightClientV3`](self) function calls.
14102    #[derive(serde::Serialize, serde::Deserialize)]
14103    #[derive()]
14104    pub enum LightClientV3Calls {
14105        #[allow(missing_docs)]
14106        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
14107        #[allow(missing_docs)]
14108        _getVk(_getVkCall),
14109        #[allow(missing_docs)]
14110        authRoot(authRootCall),
14111        #[allow(missing_docs)]
14112        blocksPerEpoch(blocksPerEpochCall),
14113        #[allow(missing_docs)]
14114        currentBlockNumber(currentBlockNumberCall),
14115        #[allow(missing_docs)]
14116        currentEpoch(currentEpochCall),
14117        #[allow(missing_docs)]
14118        disablePermissionedProverMode(disablePermissionedProverModeCall),
14119        #[allow(missing_docs)]
14120        epochFromBlockNumber(epochFromBlockNumberCall),
14121        #[allow(missing_docs)]
14122        epochStartBlock(epochStartBlockCall),
14123        #[allow(missing_docs)]
14124        finalizedState(finalizedStateCall),
14125        #[allow(missing_docs)]
14126        genesisStakeTableState(genesisStakeTableStateCall),
14127        #[allow(missing_docs)]
14128        genesisState(genesisStateCall),
14129        #[allow(missing_docs)]
14130        getHotShotCommitment(getHotShotCommitmentCall),
14131        #[allow(missing_docs)]
14132        getStateHistoryCount(getStateHistoryCountCall),
14133        #[allow(missing_docs)]
14134        getVersion(getVersionCall),
14135        #[allow(missing_docs)]
14136        initialize(initializeCall),
14137        #[allow(missing_docs)]
14138        initializeV2(initializeV2Call),
14139        #[allow(missing_docs)]
14140        initializeV3(initializeV3Call),
14141        #[allow(missing_docs)]
14142        isEpochRoot(isEpochRootCall),
14143        #[allow(missing_docs)]
14144        isGtEpochRoot(isGtEpochRootCall),
14145        #[allow(missing_docs)]
14146        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
14147        #[allow(missing_docs)]
14148        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
14149        #[allow(missing_docs)]
14150        newFinalizedState_0(newFinalizedState_0Call),
14151        #[allow(missing_docs)]
14152        newFinalizedState_1(newFinalizedState_1Call),
14153        #[allow(missing_docs)]
14154        newFinalizedState_2(newFinalizedState_2Call),
14155        #[allow(missing_docs)]
14156        owner(ownerCall),
14157        #[allow(missing_docs)]
14158        permissionedProver(permissionedProverCall),
14159        #[allow(missing_docs)]
14160        proxiableUUID(proxiableUUIDCall),
14161        #[allow(missing_docs)]
14162        renounceOwnership(renounceOwnershipCall),
14163        #[allow(missing_docs)]
14164        setPermissionedProver(setPermissionedProverCall),
14165        #[allow(missing_docs)]
14166        setStateHistoryRetentionPeriod(setStateHistoryRetentionPeriodCall),
14167        #[allow(missing_docs)]
14168        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
14169        #[allow(missing_docs)]
14170        stateHistoryCommitments(stateHistoryCommitmentsCall),
14171        #[allow(missing_docs)]
14172        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
14173        #[allow(missing_docs)]
14174        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
14175        #[allow(missing_docs)]
14176        transferOwnership(transferOwnershipCall),
14177        #[allow(missing_docs)]
14178        updateEpochStartBlock(updateEpochStartBlockCall),
14179        #[allow(missing_docs)]
14180        upgradeToAndCall(upgradeToAndCallCall),
14181        #[allow(missing_docs)]
14182        votingStakeTableState(votingStakeTableStateCall),
14183    }
14184    #[automatically_derived]
14185    impl LightClientV3Calls {
14186        /// All the selectors of this enum.
14187        ///
14188        /// Note that the selectors might not be in the same order as the variants.
14189        /// No guarantees are made about the order of the selectors.
14190        ///
14191        /// Prefer using `SolInterface` methods instead.
14192        pub const SELECTORS: &'static [[u8; 4usize]] = &[
14193            [1u8, 63u8, 165u8, 252u8],
14194            [2u8, 181u8, 146u8, 243u8],
14195            [6u8, 37u8, 225u8, 155u8],
14196            [13u8, 142u8, 110u8, 44u8],
14197            [18u8, 23u8, 60u8, 44u8],
14198            [22u8, 122u8, 198u8, 24u8],
14199            [32u8, 99u8, 212u8, 247u8],
14200            [37u8, 41u8, 116u8, 39u8],
14201            [47u8, 121u8, 136u8, 157u8],
14202            [48u8, 12u8, 137u8, 221u8],
14203            [49u8, 61u8, 247u8, 177u8],
14204            [55u8, 142u8, 194u8, 59u8],
14205            [56u8, 228u8, 84u8, 177u8],
14206            [62u8, 213u8, 91u8, 123u8],
14207            [66u8, 109u8, 49u8, 148u8],
14208            [67u8, 61u8, 186u8, 159u8],
14209            [79u8, 30u8, 242u8, 134u8],
14210            [82u8, 209u8, 144u8, 45u8],
14211            [105u8, 204u8, 106u8, 4u8],
14212            [113u8, 80u8, 24u8, 166u8],
14213            [117u8, 124u8, 55u8, 173u8],
14214            [118u8, 103u8, 24u8, 8u8],
14215            [130u8, 110u8, 65u8, 252u8],
14216            [133u8, 132u8, 210u8, 63u8],
14217            [141u8, 165u8, 203u8, 91u8],
14218            [144u8, 193u8, 67u8, 144u8],
14219            [150u8, 193u8, 202u8, 97u8],
14220            [153u8, 131u8, 40u8, 232u8],
14221            [155u8, 170u8, 60u8, 201u8],
14222            [159u8, 219u8, 84u8, 167u8],
14223            [170u8, 189u8, 93u8, 179u8],
14224            [173u8, 60u8, 177u8, 204u8],
14225            [179u8, 59u8, 196u8, 145u8],
14226            [194u8, 59u8, 158u8, 158u8],
14227            [210u8, 77u8, 147u8, 61u8],
14228            [224u8, 48u8, 51u8, 1u8],
14229            [240u8, 104u8, 32u8, 84u8],
14230            [242u8, 253u8, 227u8, 139u8],
14231            [249u8, 229u8, 13u8, 25u8],
14232        ];
14233    }
14234    #[automatically_derived]
14235    impl alloy_sol_types::SolInterface for LightClientV3Calls {
14236        const NAME: &'static str = "LightClientV3Calls";
14237        const MIN_DATA_LENGTH: usize = 0usize;
14238        const COUNT: usize = 39usize;
14239        #[inline]
14240        fn selector(&self) -> [u8; 4] {
14241            match self {
14242                Self::UPGRADE_INTERFACE_VERSION(_) => {
14243                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
14244                }
14245                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
14246                Self::authRoot(_) => <authRootCall as alloy_sol_types::SolCall>::SELECTOR,
14247                Self::blocksPerEpoch(_) => {
14248                    <blocksPerEpochCall as alloy_sol_types::SolCall>::SELECTOR
14249                }
14250                Self::currentBlockNumber(_) => {
14251                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
14252                }
14253                Self::currentEpoch(_) => {
14254                    <currentEpochCall as alloy_sol_types::SolCall>::SELECTOR
14255                }
14256                Self::disablePermissionedProverMode(_) => {
14257                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
14258                }
14259                Self::epochFromBlockNumber(_) => {
14260                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
14261                }
14262                Self::epochStartBlock(_) => {
14263                    <epochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
14264                }
14265                Self::finalizedState(_) => {
14266                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
14267                }
14268                Self::genesisStakeTableState(_) => {
14269                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
14270                }
14271                Self::genesisState(_) => {
14272                    <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR
14273                }
14274                Self::getHotShotCommitment(_) => {
14275                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
14276                }
14277                Self::getStateHistoryCount(_) => {
14278                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
14279                }
14280                Self::getVersion(_) => {
14281                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
14282                }
14283                Self::initialize(_) => {
14284                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
14285                }
14286                Self::initializeV2(_) => {
14287                    <initializeV2Call as alloy_sol_types::SolCall>::SELECTOR
14288                }
14289                Self::initializeV3(_) => {
14290                    <initializeV3Call as alloy_sol_types::SolCall>::SELECTOR
14291                }
14292                Self::isEpochRoot(_) => {
14293                    <isEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
14294                }
14295                Self::isGtEpochRoot(_) => {
14296                    <isGtEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
14297                }
14298                Self::isPermissionedProverEnabled(_) => {
14299                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
14300                }
14301                Self::lagOverEscapeHatchThreshold(_) => {
14302                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
14303                }
14304                Self::newFinalizedState_0(_) => {
14305                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::SELECTOR
14306                }
14307                Self::newFinalizedState_1(_) => {
14308                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::SELECTOR
14309                }
14310                Self::newFinalizedState_2(_) => {
14311                    <newFinalizedState_2Call as alloy_sol_types::SolCall>::SELECTOR
14312                }
14313                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
14314                Self::permissionedProver(_) => {
14315                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
14316                }
14317                Self::proxiableUUID(_) => {
14318                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
14319                }
14320                Self::renounceOwnership(_) => {
14321                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
14322                }
14323                Self::setPermissionedProver(_) => {
14324                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
14325                }
14326                Self::setStateHistoryRetentionPeriod(_) => {
14327                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
14328                }
14329                Self::setstateHistoryRetentionPeriod(_) => {
14330                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
14331                }
14332                Self::stateHistoryCommitments(_) => {
14333                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
14334                }
14335                Self::stateHistoryFirstIndex(_) => {
14336                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
14337                }
14338                Self::stateHistoryRetentionPeriod(_) => {
14339                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
14340                }
14341                Self::transferOwnership(_) => {
14342                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
14343                }
14344                Self::updateEpochStartBlock(_) => {
14345                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
14346                }
14347                Self::upgradeToAndCall(_) => {
14348                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
14349                }
14350                Self::votingStakeTableState(_) => {
14351                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
14352                }
14353            }
14354        }
14355        #[inline]
14356        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
14357            Self::SELECTORS.get(i).copied()
14358        }
14359        #[inline]
14360        fn valid_selector(selector: [u8; 4]) -> bool {
14361            Self::SELECTORS.binary_search(&selector).is_ok()
14362        }
14363        #[inline]
14364        #[allow(non_snake_case)]
14365        fn abi_decode_raw(
14366            selector: [u8; 4],
14367            data: &[u8],
14368        ) -> alloy_sol_types::Result<Self> {
14369            static DECODE_SHIMS: &[fn(
14370                &[u8],
14371            ) -> alloy_sol_types::Result<LightClientV3Calls>] = &[
14372                {
14373                    fn setPermissionedProver(
14374                        data: &[u8],
14375                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14376                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
14377                                data,
14378                            )
14379                            .map(LightClientV3Calls::setPermissionedProver)
14380                    }
14381                    setPermissionedProver
14382                },
14383                {
14384                    fn stateHistoryCommitments(
14385                        data: &[u8],
14386                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14387                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
14388                                data,
14389                            )
14390                            .map(LightClientV3Calls::stateHistoryCommitments)
14391                    }
14392                    stateHistoryCommitments
14393                },
14394                {
14395                    fn votingStakeTableState(
14396                        data: &[u8],
14397                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14398                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
14399                                data,
14400                            )
14401                            .map(LightClientV3Calls::votingStakeTableState)
14402                    }
14403                    votingStakeTableState
14404                },
14405                {
14406                    fn getVersion(
14407                        data: &[u8],
14408                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14409                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
14410                                data,
14411                            )
14412                            .map(LightClientV3Calls::getVersion)
14413                    }
14414                    getVersion
14415                },
14416                {
14417                    fn _getVk(
14418                        data: &[u8],
14419                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14420                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
14421                            .map(LightClientV3Calls::_getVk)
14422                    }
14423                    _getVk
14424                },
14425                {
14426                    fn updateEpochStartBlock(
14427                        data: &[u8],
14428                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14429                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
14430                                data,
14431                            )
14432                            .map(LightClientV3Calls::updateEpochStartBlock)
14433                    }
14434                    updateEpochStartBlock
14435                },
14436                {
14437                    fn newFinalizedState_0(
14438                        data: &[u8],
14439                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14440                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw(
14441                                data,
14442                            )
14443                            .map(LightClientV3Calls::newFinalizedState_0)
14444                    }
14445                    newFinalizedState_0
14446                },
14447                {
14448                    fn isEpochRoot(
14449                        data: &[u8],
14450                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14451                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
14452                                data,
14453                            )
14454                            .map(LightClientV3Calls::isEpochRoot)
14455                    }
14456                    isEpochRoot
14457                },
14458                {
14459                    fn stateHistoryFirstIndex(
14460                        data: &[u8],
14461                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14462                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
14463                                data,
14464                            )
14465                            .map(LightClientV3Calls::stateHistoryFirstIndex)
14466                    }
14467                    stateHistoryFirstIndex
14468                },
14469                {
14470                    fn isGtEpochRoot(
14471                        data: &[u8],
14472                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14473                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
14474                                data,
14475                            )
14476                            .map(LightClientV3Calls::isGtEpochRoot)
14477                    }
14478                    isGtEpochRoot
14479                },
14480                {
14481                    fn permissionedProver(
14482                        data: &[u8],
14483                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14484                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
14485                                data,
14486                            )
14487                            .map(LightClientV3Calls::permissionedProver)
14488                    }
14489                    permissionedProver
14490                },
14491                {
14492                    fn currentBlockNumber(
14493                        data: &[u8],
14494                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14495                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
14496                                data,
14497                            )
14498                            .map(LightClientV3Calls::currentBlockNumber)
14499                    }
14500                    currentBlockNumber
14501                },
14502                {
14503                    fn initializeV3(
14504                        data: &[u8],
14505                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14506                        <initializeV3Call as alloy_sol_types::SolCall>::abi_decode_raw(
14507                                data,
14508                            )
14509                            .map(LightClientV3Calls::initializeV3)
14510                    }
14511                    initializeV3
14512                },
14513                {
14514                    fn epochStartBlock(
14515                        data: &[u8],
14516                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14517                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
14518                                data,
14519                            )
14520                            .map(LightClientV3Calls::epochStartBlock)
14521                    }
14522                    epochStartBlock
14523                },
14524                {
14525                    fn genesisStakeTableState(
14526                        data: &[u8],
14527                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14528                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
14529                                data,
14530                            )
14531                            .map(LightClientV3Calls::genesisStakeTableState)
14532                    }
14533                    genesisStakeTableState
14534                },
14535                {
14536                    fn setStateHistoryRetentionPeriod(
14537                        data: &[u8],
14538                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14539                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
14540                                data,
14541                            )
14542                            .map(LightClientV3Calls::setStateHistoryRetentionPeriod)
14543                    }
14544                    setStateHistoryRetentionPeriod
14545                },
14546                {
14547                    fn upgradeToAndCall(
14548                        data: &[u8],
14549                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14550                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
14551                                data,
14552                            )
14553                            .map(LightClientV3Calls::upgradeToAndCall)
14554                    }
14555                    upgradeToAndCall
14556                },
14557                {
14558                    fn proxiableUUID(
14559                        data: &[u8],
14560                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14561                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
14562                                data,
14563                            )
14564                            .map(LightClientV3Calls::proxiableUUID)
14565                    }
14566                    proxiableUUID
14567                },
14568                {
14569                    fn disablePermissionedProverMode(
14570                        data: &[u8],
14571                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14572                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
14573                                data,
14574                            )
14575                            .map(LightClientV3Calls::disablePermissionedProverMode)
14576                    }
14577                    disablePermissionedProverMode
14578                },
14579                {
14580                    fn renounceOwnership(
14581                        data: &[u8],
14582                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14583                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
14584                                data,
14585                            )
14586                            .map(LightClientV3Calls::renounceOwnership)
14587                    }
14588                    renounceOwnership
14589                },
14590                {
14591                    fn newFinalizedState_1(
14592                        data: &[u8],
14593                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14594                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw(
14595                                data,
14596                            )
14597                            .map(LightClientV3Calls::newFinalizedState_1)
14598                    }
14599                    newFinalizedState_1
14600                },
14601                {
14602                    fn currentEpoch(
14603                        data: &[u8],
14604                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14605                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
14606                                data,
14607                            )
14608                            .map(LightClientV3Calls::currentEpoch)
14609                    }
14610                    currentEpoch
14611                },
14612                {
14613                    fn isPermissionedProverEnabled(
14614                        data: &[u8],
14615                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14616                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
14617                                data,
14618                            )
14619                            .map(LightClientV3Calls::isPermissionedProverEnabled)
14620                    }
14621                    isPermissionedProverEnabled
14622                },
14623                {
14624                    fn getHotShotCommitment(
14625                        data: &[u8],
14626                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14627                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
14628                                data,
14629                            )
14630                            .map(LightClientV3Calls::getHotShotCommitment)
14631                    }
14632                    getHotShotCommitment
14633                },
14634                {
14635                    fn owner(
14636                        data: &[u8],
14637                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14638                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
14639                            .map(LightClientV3Calls::owner)
14640                    }
14641                    owner
14642                },
14643                {
14644                    fn epochFromBlockNumber(
14645                        data: &[u8],
14646                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14647                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
14648                                data,
14649                            )
14650                            .map(LightClientV3Calls::epochFromBlockNumber)
14651                    }
14652                    epochFromBlockNumber
14653                },
14654                {
14655                    fn setstateHistoryRetentionPeriod(
14656                        data: &[u8],
14657                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14658                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
14659                                data,
14660                            )
14661                            .map(LightClientV3Calls::setstateHistoryRetentionPeriod)
14662                    }
14663                    setstateHistoryRetentionPeriod
14664                },
14665                {
14666                    fn authRoot(
14667                        data: &[u8],
14668                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14669                        <authRootCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
14670                            .map(LightClientV3Calls::authRoot)
14671                    }
14672                    authRoot
14673                },
14674                {
14675                    fn initialize(
14676                        data: &[u8],
14677                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14678                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
14679                                data,
14680                            )
14681                            .map(LightClientV3Calls::initialize)
14682                    }
14683                    initialize
14684                },
14685                {
14686                    fn finalizedState(
14687                        data: &[u8],
14688                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14689                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
14690                                data,
14691                            )
14692                            .map(LightClientV3Calls::finalizedState)
14693                    }
14694                    finalizedState
14695                },
14696                {
14697                    fn newFinalizedState_2(
14698                        data: &[u8],
14699                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14700                        <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_decode_raw(
14701                                data,
14702                            )
14703                            .map(LightClientV3Calls::newFinalizedState_2)
14704                    }
14705                    newFinalizedState_2
14706                },
14707                {
14708                    fn UPGRADE_INTERFACE_VERSION(
14709                        data: &[u8],
14710                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14711                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
14712                                data,
14713                            )
14714                            .map(LightClientV3Calls::UPGRADE_INTERFACE_VERSION)
14715                    }
14716                    UPGRADE_INTERFACE_VERSION
14717                },
14718                {
14719                    fn initializeV2(
14720                        data: &[u8],
14721                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14722                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
14723                                data,
14724                            )
14725                            .map(LightClientV3Calls::initializeV2)
14726                    }
14727                    initializeV2
14728                },
14729                {
14730                    fn stateHistoryRetentionPeriod(
14731                        data: &[u8],
14732                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14733                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
14734                                data,
14735                            )
14736                            .map(LightClientV3Calls::stateHistoryRetentionPeriod)
14737                    }
14738                    stateHistoryRetentionPeriod
14739                },
14740                {
14741                    fn genesisState(
14742                        data: &[u8],
14743                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14744                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
14745                                data,
14746                            )
14747                            .map(LightClientV3Calls::genesisState)
14748                    }
14749                    genesisState
14750                },
14751                {
14752                    fn lagOverEscapeHatchThreshold(
14753                        data: &[u8],
14754                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14755                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
14756                                data,
14757                            )
14758                            .map(LightClientV3Calls::lagOverEscapeHatchThreshold)
14759                    }
14760                    lagOverEscapeHatchThreshold
14761                },
14762                {
14763                    fn blocksPerEpoch(
14764                        data: &[u8],
14765                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14766                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
14767                                data,
14768                            )
14769                            .map(LightClientV3Calls::blocksPerEpoch)
14770                    }
14771                    blocksPerEpoch
14772                },
14773                {
14774                    fn transferOwnership(
14775                        data: &[u8],
14776                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14777                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
14778                                data,
14779                            )
14780                            .map(LightClientV3Calls::transferOwnership)
14781                    }
14782                    transferOwnership
14783                },
14784                {
14785                    fn getStateHistoryCount(
14786                        data: &[u8],
14787                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14788                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
14789                                data,
14790                            )
14791                            .map(LightClientV3Calls::getStateHistoryCount)
14792                    }
14793                    getStateHistoryCount
14794                },
14795            ];
14796            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
14797                return Err(
14798                    alloy_sol_types::Error::unknown_selector(
14799                        <Self as alloy_sol_types::SolInterface>::NAME,
14800                        selector,
14801                    ),
14802                );
14803            };
14804            DECODE_SHIMS[idx](data)
14805        }
14806        #[inline]
14807        #[allow(non_snake_case)]
14808        fn abi_decode_raw_validate(
14809            selector: [u8; 4],
14810            data: &[u8],
14811        ) -> alloy_sol_types::Result<Self> {
14812            static DECODE_VALIDATE_SHIMS: &[fn(
14813                &[u8],
14814            ) -> alloy_sol_types::Result<LightClientV3Calls>] = &[
14815                {
14816                    fn setPermissionedProver(
14817                        data: &[u8],
14818                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14819                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14820                                data,
14821                            )
14822                            .map(LightClientV3Calls::setPermissionedProver)
14823                    }
14824                    setPermissionedProver
14825                },
14826                {
14827                    fn stateHistoryCommitments(
14828                        data: &[u8],
14829                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14830                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14831                                data,
14832                            )
14833                            .map(LightClientV3Calls::stateHistoryCommitments)
14834                    }
14835                    stateHistoryCommitments
14836                },
14837                {
14838                    fn votingStakeTableState(
14839                        data: &[u8],
14840                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14841                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14842                                data,
14843                            )
14844                            .map(LightClientV3Calls::votingStakeTableState)
14845                    }
14846                    votingStakeTableState
14847                },
14848                {
14849                    fn getVersion(
14850                        data: &[u8],
14851                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14852                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14853                                data,
14854                            )
14855                            .map(LightClientV3Calls::getVersion)
14856                    }
14857                    getVersion
14858                },
14859                {
14860                    fn _getVk(
14861                        data: &[u8],
14862                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14863                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14864                                data,
14865                            )
14866                            .map(LightClientV3Calls::_getVk)
14867                    }
14868                    _getVk
14869                },
14870                {
14871                    fn updateEpochStartBlock(
14872                        data: &[u8],
14873                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14874                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14875                                data,
14876                            )
14877                            .map(LightClientV3Calls::updateEpochStartBlock)
14878                    }
14879                    updateEpochStartBlock
14880                },
14881                {
14882                    fn newFinalizedState_0(
14883                        data: &[u8],
14884                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14885                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14886                                data,
14887                            )
14888                            .map(LightClientV3Calls::newFinalizedState_0)
14889                    }
14890                    newFinalizedState_0
14891                },
14892                {
14893                    fn isEpochRoot(
14894                        data: &[u8],
14895                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14896                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14897                                data,
14898                            )
14899                            .map(LightClientV3Calls::isEpochRoot)
14900                    }
14901                    isEpochRoot
14902                },
14903                {
14904                    fn stateHistoryFirstIndex(
14905                        data: &[u8],
14906                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14907                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14908                                data,
14909                            )
14910                            .map(LightClientV3Calls::stateHistoryFirstIndex)
14911                    }
14912                    stateHistoryFirstIndex
14913                },
14914                {
14915                    fn isGtEpochRoot(
14916                        data: &[u8],
14917                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14918                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14919                                data,
14920                            )
14921                            .map(LightClientV3Calls::isGtEpochRoot)
14922                    }
14923                    isGtEpochRoot
14924                },
14925                {
14926                    fn permissionedProver(
14927                        data: &[u8],
14928                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14929                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14930                                data,
14931                            )
14932                            .map(LightClientV3Calls::permissionedProver)
14933                    }
14934                    permissionedProver
14935                },
14936                {
14937                    fn currentBlockNumber(
14938                        data: &[u8],
14939                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14940                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14941                                data,
14942                            )
14943                            .map(LightClientV3Calls::currentBlockNumber)
14944                    }
14945                    currentBlockNumber
14946                },
14947                {
14948                    fn initializeV3(
14949                        data: &[u8],
14950                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14951                        <initializeV3Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14952                                data,
14953                            )
14954                            .map(LightClientV3Calls::initializeV3)
14955                    }
14956                    initializeV3
14957                },
14958                {
14959                    fn epochStartBlock(
14960                        data: &[u8],
14961                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14962                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14963                                data,
14964                            )
14965                            .map(LightClientV3Calls::epochStartBlock)
14966                    }
14967                    epochStartBlock
14968                },
14969                {
14970                    fn genesisStakeTableState(
14971                        data: &[u8],
14972                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14973                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14974                                data,
14975                            )
14976                            .map(LightClientV3Calls::genesisStakeTableState)
14977                    }
14978                    genesisStakeTableState
14979                },
14980                {
14981                    fn setStateHistoryRetentionPeriod(
14982                        data: &[u8],
14983                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14984                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14985                                data,
14986                            )
14987                            .map(LightClientV3Calls::setStateHistoryRetentionPeriod)
14988                    }
14989                    setStateHistoryRetentionPeriod
14990                },
14991                {
14992                    fn upgradeToAndCall(
14993                        data: &[u8],
14994                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
14995                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14996                                data,
14997                            )
14998                            .map(LightClientV3Calls::upgradeToAndCall)
14999                    }
15000                    upgradeToAndCall
15001                },
15002                {
15003                    fn proxiableUUID(
15004                        data: &[u8],
15005                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15006                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15007                                data,
15008                            )
15009                            .map(LightClientV3Calls::proxiableUUID)
15010                    }
15011                    proxiableUUID
15012                },
15013                {
15014                    fn disablePermissionedProverMode(
15015                        data: &[u8],
15016                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15017                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15018                                data,
15019                            )
15020                            .map(LightClientV3Calls::disablePermissionedProverMode)
15021                    }
15022                    disablePermissionedProverMode
15023                },
15024                {
15025                    fn renounceOwnership(
15026                        data: &[u8],
15027                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15028                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15029                                data,
15030                            )
15031                            .map(LightClientV3Calls::renounceOwnership)
15032                    }
15033                    renounceOwnership
15034                },
15035                {
15036                    fn newFinalizedState_1(
15037                        data: &[u8],
15038                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15039                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15040                                data,
15041                            )
15042                            .map(LightClientV3Calls::newFinalizedState_1)
15043                    }
15044                    newFinalizedState_1
15045                },
15046                {
15047                    fn currentEpoch(
15048                        data: &[u8],
15049                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15050                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15051                                data,
15052                            )
15053                            .map(LightClientV3Calls::currentEpoch)
15054                    }
15055                    currentEpoch
15056                },
15057                {
15058                    fn isPermissionedProverEnabled(
15059                        data: &[u8],
15060                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15061                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15062                                data,
15063                            )
15064                            .map(LightClientV3Calls::isPermissionedProverEnabled)
15065                    }
15066                    isPermissionedProverEnabled
15067                },
15068                {
15069                    fn getHotShotCommitment(
15070                        data: &[u8],
15071                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15072                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15073                                data,
15074                            )
15075                            .map(LightClientV3Calls::getHotShotCommitment)
15076                    }
15077                    getHotShotCommitment
15078                },
15079                {
15080                    fn owner(
15081                        data: &[u8],
15082                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15083                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15084                                data,
15085                            )
15086                            .map(LightClientV3Calls::owner)
15087                    }
15088                    owner
15089                },
15090                {
15091                    fn epochFromBlockNumber(
15092                        data: &[u8],
15093                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15094                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15095                                data,
15096                            )
15097                            .map(LightClientV3Calls::epochFromBlockNumber)
15098                    }
15099                    epochFromBlockNumber
15100                },
15101                {
15102                    fn setstateHistoryRetentionPeriod(
15103                        data: &[u8],
15104                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15105                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15106                                data,
15107                            )
15108                            .map(LightClientV3Calls::setstateHistoryRetentionPeriod)
15109                    }
15110                    setstateHistoryRetentionPeriod
15111                },
15112                {
15113                    fn authRoot(
15114                        data: &[u8],
15115                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15116                        <authRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15117                                data,
15118                            )
15119                            .map(LightClientV3Calls::authRoot)
15120                    }
15121                    authRoot
15122                },
15123                {
15124                    fn initialize(
15125                        data: &[u8],
15126                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15127                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15128                                data,
15129                            )
15130                            .map(LightClientV3Calls::initialize)
15131                    }
15132                    initialize
15133                },
15134                {
15135                    fn finalizedState(
15136                        data: &[u8],
15137                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15138                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15139                                data,
15140                            )
15141                            .map(LightClientV3Calls::finalizedState)
15142                    }
15143                    finalizedState
15144                },
15145                {
15146                    fn newFinalizedState_2(
15147                        data: &[u8],
15148                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15149                        <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15150                                data,
15151                            )
15152                            .map(LightClientV3Calls::newFinalizedState_2)
15153                    }
15154                    newFinalizedState_2
15155                },
15156                {
15157                    fn UPGRADE_INTERFACE_VERSION(
15158                        data: &[u8],
15159                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15160                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15161                                data,
15162                            )
15163                            .map(LightClientV3Calls::UPGRADE_INTERFACE_VERSION)
15164                    }
15165                    UPGRADE_INTERFACE_VERSION
15166                },
15167                {
15168                    fn initializeV2(
15169                        data: &[u8],
15170                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15171                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15172                                data,
15173                            )
15174                            .map(LightClientV3Calls::initializeV2)
15175                    }
15176                    initializeV2
15177                },
15178                {
15179                    fn stateHistoryRetentionPeriod(
15180                        data: &[u8],
15181                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15182                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15183                                data,
15184                            )
15185                            .map(LightClientV3Calls::stateHistoryRetentionPeriod)
15186                    }
15187                    stateHistoryRetentionPeriod
15188                },
15189                {
15190                    fn genesisState(
15191                        data: &[u8],
15192                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15193                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15194                                data,
15195                            )
15196                            .map(LightClientV3Calls::genesisState)
15197                    }
15198                    genesisState
15199                },
15200                {
15201                    fn lagOverEscapeHatchThreshold(
15202                        data: &[u8],
15203                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15204                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15205                                data,
15206                            )
15207                            .map(LightClientV3Calls::lagOverEscapeHatchThreshold)
15208                    }
15209                    lagOverEscapeHatchThreshold
15210                },
15211                {
15212                    fn blocksPerEpoch(
15213                        data: &[u8],
15214                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15215                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15216                                data,
15217                            )
15218                            .map(LightClientV3Calls::blocksPerEpoch)
15219                    }
15220                    blocksPerEpoch
15221                },
15222                {
15223                    fn transferOwnership(
15224                        data: &[u8],
15225                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15226                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15227                                data,
15228                            )
15229                            .map(LightClientV3Calls::transferOwnership)
15230                    }
15231                    transferOwnership
15232                },
15233                {
15234                    fn getStateHistoryCount(
15235                        data: &[u8],
15236                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15237                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15238                                data,
15239                            )
15240                            .map(LightClientV3Calls::getStateHistoryCount)
15241                    }
15242                    getStateHistoryCount
15243                },
15244            ];
15245            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
15246                return Err(
15247                    alloy_sol_types::Error::unknown_selector(
15248                        <Self as alloy_sol_types::SolInterface>::NAME,
15249                        selector,
15250                    ),
15251                );
15252            };
15253            DECODE_VALIDATE_SHIMS[idx](data)
15254        }
15255        #[inline]
15256        fn abi_encoded_size(&self) -> usize {
15257            match self {
15258                Self::UPGRADE_INTERFACE_VERSION(inner) => {
15259                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
15260                        inner,
15261                    )
15262                }
15263                Self::_getVk(inner) => {
15264                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15265                }
15266                Self::authRoot(inner) => {
15267                    <authRootCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15268                }
15269                Self::blocksPerEpoch(inner) => {
15270                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
15271                        inner,
15272                    )
15273                }
15274                Self::currentBlockNumber(inner) => {
15275                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
15276                        inner,
15277                    )
15278                }
15279                Self::currentEpoch(inner) => {
15280                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
15281                        inner,
15282                    )
15283                }
15284                Self::disablePermissionedProverMode(inner) => {
15285                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
15286                        inner,
15287                    )
15288                }
15289                Self::epochFromBlockNumber(inner) => {
15290                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
15291                        inner,
15292                    )
15293                }
15294                Self::epochStartBlock(inner) => {
15295                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
15296                        inner,
15297                    )
15298                }
15299                Self::finalizedState(inner) => {
15300                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
15301                        inner,
15302                    )
15303                }
15304                Self::genesisStakeTableState(inner) => {
15305                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
15306                        inner,
15307                    )
15308                }
15309                Self::genesisState(inner) => {
15310                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
15311                        inner,
15312                    )
15313                }
15314                Self::getHotShotCommitment(inner) => {
15315                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
15316                        inner,
15317                    )
15318                }
15319                Self::getStateHistoryCount(inner) => {
15320                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
15321                        inner,
15322                    )
15323                }
15324                Self::getVersion(inner) => {
15325                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15326                }
15327                Self::initialize(inner) => {
15328                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15329                }
15330                Self::initializeV2(inner) => {
15331                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
15332                        inner,
15333                    )
15334                }
15335                Self::initializeV3(inner) => {
15336                    <initializeV3Call as alloy_sol_types::SolCall>::abi_encoded_size(
15337                        inner,
15338                    )
15339                }
15340                Self::isEpochRoot(inner) => {
15341                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
15342                        inner,
15343                    )
15344                }
15345                Self::isGtEpochRoot(inner) => {
15346                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
15347                        inner,
15348                    )
15349                }
15350                Self::isPermissionedProverEnabled(inner) => {
15351                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
15352                        inner,
15353                    )
15354                }
15355                Self::lagOverEscapeHatchThreshold(inner) => {
15356                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
15357                        inner,
15358                    )
15359                }
15360                Self::newFinalizedState_0(inner) => {
15361                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encoded_size(
15362                        inner,
15363                    )
15364                }
15365                Self::newFinalizedState_1(inner) => {
15366                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encoded_size(
15367                        inner,
15368                    )
15369                }
15370                Self::newFinalizedState_2(inner) => {
15371                    <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_encoded_size(
15372                        inner,
15373                    )
15374                }
15375                Self::owner(inner) => {
15376                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15377                }
15378                Self::permissionedProver(inner) => {
15379                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
15380                        inner,
15381                    )
15382                }
15383                Self::proxiableUUID(inner) => {
15384                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
15385                        inner,
15386                    )
15387                }
15388                Self::renounceOwnership(inner) => {
15389                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
15390                        inner,
15391                    )
15392                }
15393                Self::setPermissionedProver(inner) => {
15394                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
15395                        inner,
15396                    )
15397                }
15398                Self::setStateHistoryRetentionPeriod(inner) => {
15399                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
15400                        inner,
15401                    )
15402                }
15403                Self::setstateHistoryRetentionPeriod(inner) => {
15404                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
15405                        inner,
15406                    )
15407                }
15408                Self::stateHistoryCommitments(inner) => {
15409                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
15410                        inner,
15411                    )
15412                }
15413                Self::stateHistoryFirstIndex(inner) => {
15414                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
15415                        inner,
15416                    )
15417                }
15418                Self::stateHistoryRetentionPeriod(inner) => {
15419                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
15420                        inner,
15421                    )
15422                }
15423                Self::transferOwnership(inner) => {
15424                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
15425                        inner,
15426                    )
15427                }
15428                Self::updateEpochStartBlock(inner) => {
15429                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
15430                        inner,
15431                    )
15432                }
15433                Self::upgradeToAndCall(inner) => {
15434                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
15435                        inner,
15436                    )
15437                }
15438                Self::votingStakeTableState(inner) => {
15439                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
15440                        inner,
15441                    )
15442                }
15443            }
15444        }
15445        #[inline]
15446        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
15447            match self {
15448                Self::UPGRADE_INTERFACE_VERSION(inner) => {
15449                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
15450                        inner,
15451                        out,
15452                    )
15453                }
15454                Self::_getVk(inner) => {
15455                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
15456                }
15457                Self::authRoot(inner) => {
15458                    <authRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
15459                        inner,
15460                        out,
15461                    )
15462                }
15463                Self::blocksPerEpoch(inner) => {
15464                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
15465                        inner,
15466                        out,
15467                    )
15468                }
15469                Self::currentBlockNumber(inner) => {
15470                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
15471                        inner,
15472                        out,
15473                    )
15474                }
15475                Self::currentEpoch(inner) => {
15476                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
15477                        inner,
15478                        out,
15479                    )
15480                }
15481                Self::disablePermissionedProverMode(inner) => {
15482                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
15483                        inner,
15484                        out,
15485                    )
15486                }
15487                Self::epochFromBlockNumber(inner) => {
15488                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
15489                        inner,
15490                        out,
15491                    )
15492                }
15493                Self::epochStartBlock(inner) => {
15494                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
15495                        inner,
15496                        out,
15497                    )
15498                }
15499                Self::finalizedState(inner) => {
15500                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
15501                        inner,
15502                        out,
15503                    )
15504                }
15505                Self::genesisStakeTableState(inner) => {
15506                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
15507                        inner,
15508                        out,
15509                    )
15510                }
15511                Self::genesisState(inner) => {
15512                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
15513                        inner,
15514                        out,
15515                    )
15516                }
15517                Self::getHotShotCommitment(inner) => {
15518                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
15519                        inner,
15520                        out,
15521                    )
15522                }
15523                Self::getStateHistoryCount(inner) => {
15524                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
15525                        inner,
15526                        out,
15527                    )
15528                }
15529                Self::getVersion(inner) => {
15530                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
15531                        inner,
15532                        out,
15533                    )
15534                }
15535                Self::initialize(inner) => {
15536                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
15537                        inner,
15538                        out,
15539                    )
15540                }
15541                Self::initializeV2(inner) => {
15542                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
15543                        inner,
15544                        out,
15545                    )
15546                }
15547                Self::initializeV3(inner) => {
15548                    <initializeV3Call as alloy_sol_types::SolCall>::abi_encode_raw(
15549                        inner,
15550                        out,
15551                    )
15552                }
15553                Self::isEpochRoot(inner) => {
15554                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
15555                        inner,
15556                        out,
15557                    )
15558                }
15559                Self::isGtEpochRoot(inner) => {
15560                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
15561                        inner,
15562                        out,
15563                    )
15564                }
15565                Self::isPermissionedProverEnabled(inner) => {
15566                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
15567                        inner,
15568                        out,
15569                    )
15570                }
15571                Self::lagOverEscapeHatchThreshold(inner) => {
15572                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
15573                        inner,
15574                        out,
15575                    )
15576                }
15577                Self::newFinalizedState_0(inner) => {
15578                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encode_raw(
15579                        inner,
15580                        out,
15581                    )
15582                }
15583                Self::newFinalizedState_1(inner) => {
15584                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encode_raw(
15585                        inner,
15586                        out,
15587                    )
15588                }
15589                Self::newFinalizedState_2(inner) => {
15590                    <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_encode_raw(
15591                        inner,
15592                        out,
15593                    )
15594                }
15595                Self::owner(inner) => {
15596                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
15597                }
15598                Self::permissionedProver(inner) => {
15599                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
15600                        inner,
15601                        out,
15602                    )
15603                }
15604                Self::proxiableUUID(inner) => {
15605                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
15606                        inner,
15607                        out,
15608                    )
15609                }
15610                Self::renounceOwnership(inner) => {
15611                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
15612                        inner,
15613                        out,
15614                    )
15615                }
15616                Self::setPermissionedProver(inner) => {
15617                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
15618                        inner,
15619                        out,
15620                    )
15621                }
15622                Self::setStateHistoryRetentionPeriod(inner) => {
15623                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
15624                        inner,
15625                        out,
15626                    )
15627                }
15628                Self::setstateHistoryRetentionPeriod(inner) => {
15629                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
15630                        inner,
15631                        out,
15632                    )
15633                }
15634                Self::stateHistoryCommitments(inner) => {
15635                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
15636                        inner,
15637                        out,
15638                    )
15639                }
15640                Self::stateHistoryFirstIndex(inner) => {
15641                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
15642                        inner,
15643                        out,
15644                    )
15645                }
15646                Self::stateHistoryRetentionPeriod(inner) => {
15647                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
15648                        inner,
15649                        out,
15650                    )
15651                }
15652                Self::transferOwnership(inner) => {
15653                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
15654                        inner,
15655                        out,
15656                    )
15657                }
15658                Self::updateEpochStartBlock(inner) => {
15659                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
15660                        inner,
15661                        out,
15662                    )
15663                }
15664                Self::upgradeToAndCall(inner) => {
15665                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
15666                        inner,
15667                        out,
15668                    )
15669                }
15670                Self::votingStakeTableState(inner) => {
15671                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
15672                        inner,
15673                        out,
15674                    )
15675                }
15676            }
15677        }
15678    }
15679    ///Container for all the [`LightClientV3`](self) custom errors.
15680    #[derive(serde::Serialize, serde::Deserialize)]
15681    #[derive(Debug, PartialEq, Eq, Hash)]
15682    pub enum LightClientV3Errors {
15683        #[allow(missing_docs)]
15684        AddressEmptyCode(AddressEmptyCode),
15685        #[allow(missing_docs)]
15686        DeprecatedApi(DeprecatedApi),
15687        #[allow(missing_docs)]
15688        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
15689        #[allow(missing_docs)]
15690        ERC1967NonPayable(ERC1967NonPayable),
15691        #[allow(missing_docs)]
15692        FailedInnerCall(FailedInnerCall),
15693        #[allow(missing_docs)]
15694        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
15695        #[allow(missing_docs)]
15696        InvalidAddress(InvalidAddress),
15697        #[allow(missing_docs)]
15698        InvalidArgs(InvalidArgs),
15699        #[allow(missing_docs)]
15700        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
15701        #[allow(missing_docs)]
15702        InvalidInitialization(InvalidInitialization),
15703        #[allow(missing_docs)]
15704        InvalidMaxStateHistory(InvalidMaxStateHistory),
15705        #[allow(missing_docs)]
15706        InvalidProof(InvalidProof),
15707        #[allow(missing_docs)]
15708        InvalidScalar(InvalidScalar),
15709        #[allow(missing_docs)]
15710        MissingEpochRootUpdate(MissingEpochRootUpdate),
15711        #[allow(missing_docs)]
15712        NoChangeRequired(NoChangeRequired),
15713        #[allow(missing_docs)]
15714        NotInitializing(NotInitializing),
15715        #[allow(missing_docs)]
15716        OutdatedState(OutdatedState),
15717        #[allow(missing_docs)]
15718        OwnableInvalidOwner(OwnableInvalidOwner),
15719        #[allow(missing_docs)]
15720        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
15721        #[allow(missing_docs)]
15722        OwnershipCannotBeRenounced(OwnershipCannotBeRenounced),
15723        #[allow(missing_docs)]
15724        ProverNotPermissioned(ProverNotPermissioned),
15725        #[allow(missing_docs)]
15726        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
15727        #[allow(missing_docs)]
15728        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
15729        #[allow(missing_docs)]
15730        WrongStakeTableUsed(WrongStakeTableUsed),
15731    }
15732    #[automatically_derived]
15733    impl LightClientV3Errors {
15734        /// All the selectors of this enum.
15735        ///
15736        /// Note that the selectors might not be in the same order as the variants.
15737        /// No guarantees are made about the order of the selectors.
15738        ///
15739        /// Prefer using `SolInterface` methods instead.
15740        pub const SELECTORS: &'static [[u8; 4usize]] = &[
15741            [5u8, 28u8, 70u8, 239u8],
15742            [5u8, 176u8, 92u8, 204u8],
15743            [8u8, 10u8, 232u8, 217u8],
15744            [9u8, 189u8, 227u8, 57u8],
15745            [17u8, 140u8, 218u8, 167u8],
15746            [20u8, 37u8, 234u8, 66u8],
15747            [30u8, 79u8, 189u8, 247u8],
15748            [47u8, 171u8, 146u8, 202u8],
15749            [76u8, 156u8, 140u8, 227u8],
15750            [78u8, 64u8, 92u8, 141u8],
15751            [81u8, 97u8, 128u8, 137u8],
15752            [97u8, 90u8, 146u8, 100u8],
15753            [153u8, 150u8, 179u8, 21u8],
15754            [161u8, 186u8, 7u8, 238u8],
15755            [163u8, 166u8, 71u8, 128u8],
15756            [168u8, 99u8, 174u8, 201u8],
15757            [170u8, 29u8, 73u8, 164u8],
15758            [176u8, 180u8, 56u8, 119u8],
15759            [179u8, 152u8, 151u8, 159u8],
15760            [215u8, 230u8, 188u8, 248u8],
15761            [224u8, 124u8, 141u8, 186u8],
15762            [230u8, 196u8, 36u8, 123u8],
15763            [244u8, 160u8, 238u8, 224u8],
15764            [249u8, 46u8, 232u8, 169u8],
15765        ];
15766    }
15767    #[automatically_derived]
15768    impl alloy_sol_types::SolInterface for LightClientV3Errors {
15769        const NAME: &'static str = "LightClientV3Errors";
15770        const MIN_DATA_LENGTH: usize = 0usize;
15771        const COUNT: usize = 24usize;
15772        #[inline]
15773        fn selector(&self) -> [u8; 4] {
15774            match self {
15775                Self::AddressEmptyCode(_) => {
15776                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
15777                }
15778                Self::DeprecatedApi(_) => {
15779                    <DeprecatedApi as alloy_sol_types::SolError>::SELECTOR
15780                }
15781                Self::ERC1967InvalidImplementation(_) => {
15782                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
15783                }
15784                Self::ERC1967NonPayable(_) => {
15785                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
15786                }
15787                Self::FailedInnerCall(_) => {
15788                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
15789                }
15790                Self::InsufficientSnapshotHistory(_) => {
15791                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
15792                }
15793                Self::InvalidAddress(_) => {
15794                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
15795                }
15796                Self::InvalidArgs(_) => {
15797                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
15798                }
15799                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
15800                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
15801                }
15802                Self::InvalidInitialization(_) => {
15803                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
15804                }
15805                Self::InvalidMaxStateHistory(_) => {
15806                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
15807                }
15808                Self::InvalidProof(_) => {
15809                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
15810                }
15811                Self::InvalidScalar(_) => {
15812                    <InvalidScalar as alloy_sol_types::SolError>::SELECTOR
15813                }
15814                Self::MissingEpochRootUpdate(_) => {
15815                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::SELECTOR
15816                }
15817                Self::NoChangeRequired(_) => {
15818                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
15819                }
15820                Self::NotInitializing(_) => {
15821                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
15822                }
15823                Self::OutdatedState(_) => {
15824                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
15825                }
15826                Self::OwnableInvalidOwner(_) => {
15827                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
15828                }
15829                Self::OwnableUnauthorizedAccount(_) => {
15830                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
15831                }
15832                Self::OwnershipCannotBeRenounced(_) => {
15833                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
15834                }
15835                Self::ProverNotPermissioned(_) => {
15836                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
15837                }
15838                Self::UUPSUnauthorizedCallContext(_) => {
15839                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
15840                }
15841                Self::UUPSUnsupportedProxiableUUID(_) => {
15842                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
15843                }
15844                Self::WrongStakeTableUsed(_) => {
15845                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
15846                }
15847            }
15848        }
15849        #[inline]
15850        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
15851            Self::SELECTORS.get(i).copied()
15852        }
15853        #[inline]
15854        fn valid_selector(selector: [u8; 4]) -> bool {
15855            Self::SELECTORS.binary_search(&selector).is_ok()
15856        }
15857        #[inline]
15858        #[allow(non_snake_case)]
15859        fn abi_decode_raw(
15860            selector: [u8; 4],
15861            data: &[u8],
15862        ) -> alloy_sol_types::Result<Self> {
15863            static DECODE_SHIMS: &[fn(
15864                &[u8],
15865            ) -> alloy_sol_types::Result<LightClientV3Errors>] = &[
15866                {
15867                    fn OutdatedState(
15868                        data: &[u8],
15869                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
15870                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(
15871                                data,
15872                            )
15873                            .map(LightClientV3Errors::OutdatedState)
15874                    }
15875                    OutdatedState
15876                },
15877                {
15878                    fn InvalidScalar(
15879                        data: &[u8],
15880                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
15881                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw(
15882                                data,
15883                            )
15884                            .map(LightClientV3Errors::InvalidScalar)
15885                    }
15886                    InvalidScalar
15887                },
15888                {
15889                    fn MissingEpochRootUpdate(
15890                        data: &[u8],
15891                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
15892                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw(
15893                                data,
15894                            )
15895                            .map(LightClientV3Errors::MissingEpochRootUpdate)
15896                    }
15897                    MissingEpochRootUpdate
15898                },
15899                {
15900                    fn InvalidProof(
15901                        data: &[u8],
15902                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
15903                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(data)
15904                            .map(LightClientV3Errors::InvalidProof)
15905                    }
15906                    InvalidProof
15907                },
15908                {
15909                    fn OwnableUnauthorizedAccount(
15910                        data: &[u8],
15911                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
15912                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
15913                                data,
15914                            )
15915                            .map(LightClientV3Errors::OwnableUnauthorizedAccount)
15916                    }
15917                    OwnableUnauthorizedAccount
15918                },
15919                {
15920                    fn FailedInnerCall(
15921                        data: &[u8],
15922                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
15923                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
15924                                data,
15925                            )
15926                            .map(LightClientV3Errors::FailedInnerCall)
15927                    }
15928                    FailedInnerCall
15929                },
15930                {
15931                    fn OwnableInvalidOwner(
15932                        data: &[u8],
15933                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
15934                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
15935                                data,
15936                            )
15937                            .map(LightClientV3Errors::OwnableInvalidOwner)
15938                    }
15939                    OwnableInvalidOwner
15940                },
15941                {
15942                    fn OwnershipCannotBeRenounced(
15943                        data: &[u8],
15944                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
15945                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw(
15946                                data,
15947                            )
15948                            .map(LightClientV3Errors::OwnershipCannotBeRenounced)
15949                    }
15950                    OwnershipCannotBeRenounced
15951                },
15952                {
15953                    fn ERC1967InvalidImplementation(
15954                        data: &[u8],
15955                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
15956                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
15957                                data,
15958                            )
15959                            .map(LightClientV3Errors::ERC1967InvalidImplementation)
15960                    }
15961                    ERC1967InvalidImplementation
15962                },
15963                {
15964                    fn DeprecatedApi(
15965                        data: &[u8],
15966                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
15967                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw(
15968                                data,
15969                            )
15970                            .map(LightClientV3Errors::DeprecatedApi)
15971                    }
15972                    DeprecatedApi
15973                },
15974                {
15975                    fn WrongStakeTableUsed(
15976                        data: &[u8],
15977                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
15978                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
15979                                data,
15980                            )
15981                            .map(LightClientV3Errors::WrongStakeTableUsed)
15982                    }
15983                    WrongStakeTableUsed
15984                },
15985                {
15986                    fn InvalidHotShotBlockForCommitmentCheck(
15987                        data: &[u8],
15988                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
15989                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
15990                                data,
15991                            )
15992                            .map(
15993                                LightClientV3Errors::InvalidHotShotBlockForCommitmentCheck,
15994                            )
15995                    }
15996                    InvalidHotShotBlockForCommitmentCheck
15997                },
15998                {
15999                    fn AddressEmptyCode(
16000                        data: &[u8],
16001                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16002                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
16003                                data,
16004                            )
16005                            .map(LightClientV3Errors::AddressEmptyCode)
16006                    }
16007                    AddressEmptyCode
16008                },
16009                {
16010                    fn InvalidArgs(
16011                        data: &[u8],
16012                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16013                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(data)
16014                            .map(LightClientV3Errors::InvalidArgs)
16015                    }
16016                    InvalidArgs
16017                },
16018                {
16019                    fn ProverNotPermissioned(
16020                        data: &[u8],
16021                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16022                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
16023                                data,
16024                            )
16025                            .map(LightClientV3Errors::ProverNotPermissioned)
16026                    }
16027                    ProverNotPermissioned
16028                },
16029                {
16030                    fn NoChangeRequired(
16031                        data: &[u8],
16032                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16033                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
16034                                data,
16035                            )
16036                            .map(LightClientV3Errors::NoChangeRequired)
16037                    }
16038                    NoChangeRequired
16039                },
16040                {
16041                    fn UUPSUnsupportedProxiableUUID(
16042                        data: &[u8],
16043                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16044                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
16045                                data,
16046                            )
16047                            .map(LightClientV3Errors::UUPSUnsupportedProxiableUUID)
16048                    }
16049                    UUPSUnsupportedProxiableUUID
16050                },
16051                {
16052                    fn InsufficientSnapshotHistory(
16053                        data: &[u8],
16054                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16055                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
16056                                data,
16057                            )
16058                            .map(LightClientV3Errors::InsufficientSnapshotHistory)
16059                    }
16060                    InsufficientSnapshotHistory
16061                },
16062                {
16063                    fn ERC1967NonPayable(
16064                        data: &[u8],
16065                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16066                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
16067                                data,
16068                            )
16069                            .map(LightClientV3Errors::ERC1967NonPayable)
16070                    }
16071                    ERC1967NonPayable
16072                },
16073                {
16074                    fn NotInitializing(
16075                        data: &[u8],
16076                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16077                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
16078                                data,
16079                            )
16080                            .map(LightClientV3Errors::NotInitializing)
16081                    }
16082                    NotInitializing
16083                },
16084                {
16085                    fn UUPSUnauthorizedCallContext(
16086                        data: &[u8],
16087                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16088                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
16089                                data,
16090                            )
16091                            .map(LightClientV3Errors::UUPSUnauthorizedCallContext)
16092                    }
16093                    UUPSUnauthorizedCallContext
16094                },
16095                {
16096                    fn InvalidAddress(
16097                        data: &[u8],
16098                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16099                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
16100                                data,
16101                            )
16102                            .map(LightClientV3Errors::InvalidAddress)
16103                    }
16104                    InvalidAddress
16105                },
16106                {
16107                    fn InvalidMaxStateHistory(
16108                        data: &[u8],
16109                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16110                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
16111                                data,
16112                            )
16113                            .map(LightClientV3Errors::InvalidMaxStateHistory)
16114                    }
16115                    InvalidMaxStateHistory
16116                },
16117                {
16118                    fn InvalidInitialization(
16119                        data: &[u8],
16120                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16121                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
16122                                data,
16123                            )
16124                            .map(LightClientV3Errors::InvalidInitialization)
16125                    }
16126                    InvalidInitialization
16127                },
16128            ];
16129            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
16130                return Err(
16131                    alloy_sol_types::Error::unknown_selector(
16132                        <Self as alloy_sol_types::SolInterface>::NAME,
16133                        selector,
16134                    ),
16135                );
16136            };
16137            DECODE_SHIMS[idx](data)
16138        }
16139        #[inline]
16140        #[allow(non_snake_case)]
16141        fn abi_decode_raw_validate(
16142            selector: [u8; 4],
16143            data: &[u8],
16144        ) -> alloy_sol_types::Result<Self> {
16145            static DECODE_VALIDATE_SHIMS: &[fn(
16146                &[u8],
16147            ) -> alloy_sol_types::Result<LightClientV3Errors>] = &[
16148                {
16149                    fn OutdatedState(
16150                        data: &[u8],
16151                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16152                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw_validate(
16153                                data,
16154                            )
16155                            .map(LightClientV3Errors::OutdatedState)
16156                    }
16157                    OutdatedState
16158                },
16159                {
16160                    fn InvalidScalar(
16161                        data: &[u8],
16162                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16163                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw_validate(
16164                                data,
16165                            )
16166                            .map(LightClientV3Errors::InvalidScalar)
16167                    }
16168                    InvalidScalar
16169                },
16170                {
16171                    fn MissingEpochRootUpdate(
16172                        data: &[u8],
16173                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16174                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw_validate(
16175                                data,
16176                            )
16177                            .map(LightClientV3Errors::MissingEpochRootUpdate)
16178                    }
16179                    MissingEpochRootUpdate
16180                },
16181                {
16182                    fn InvalidProof(
16183                        data: &[u8],
16184                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16185                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw_validate(
16186                                data,
16187                            )
16188                            .map(LightClientV3Errors::InvalidProof)
16189                    }
16190                    InvalidProof
16191                },
16192                {
16193                    fn OwnableUnauthorizedAccount(
16194                        data: &[u8],
16195                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16196                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
16197                                data,
16198                            )
16199                            .map(LightClientV3Errors::OwnableUnauthorizedAccount)
16200                    }
16201                    OwnableUnauthorizedAccount
16202                },
16203                {
16204                    fn FailedInnerCall(
16205                        data: &[u8],
16206                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16207                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
16208                                data,
16209                            )
16210                            .map(LightClientV3Errors::FailedInnerCall)
16211                    }
16212                    FailedInnerCall
16213                },
16214                {
16215                    fn OwnableInvalidOwner(
16216                        data: &[u8],
16217                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16218                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
16219                                data,
16220                            )
16221                            .map(LightClientV3Errors::OwnableInvalidOwner)
16222                    }
16223                    OwnableInvalidOwner
16224                },
16225                {
16226                    fn OwnershipCannotBeRenounced(
16227                        data: &[u8],
16228                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16229                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_validate(
16230                                data,
16231                            )
16232                            .map(LightClientV3Errors::OwnershipCannotBeRenounced)
16233                    }
16234                    OwnershipCannotBeRenounced
16235                },
16236                {
16237                    fn ERC1967InvalidImplementation(
16238                        data: &[u8],
16239                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16240                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_validate(
16241                                data,
16242                            )
16243                            .map(LightClientV3Errors::ERC1967InvalidImplementation)
16244                    }
16245                    ERC1967InvalidImplementation
16246                },
16247                {
16248                    fn DeprecatedApi(
16249                        data: &[u8],
16250                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16251                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw_validate(
16252                                data,
16253                            )
16254                            .map(LightClientV3Errors::DeprecatedApi)
16255                    }
16256                    DeprecatedApi
16257                },
16258                {
16259                    fn WrongStakeTableUsed(
16260                        data: &[u8],
16261                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16262                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
16263                                data,
16264                            )
16265                            .map(LightClientV3Errors::WrongStakeTableUsed)
16266                    }
16267                    WrongStakeTableUsed
16268                },
16269                {
16270                    fn InvalidHotShotBlockForCommitmentCheck(
16271                        data: &[u8],
16272                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16273                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw_validate(
16274                                data,
16275                            )
16276                            .map(
16277                                LightClientV3Errors::InvalidHotShotBlockForCommitmentCheck,
16278                            )
16279                    }
16280                    InvalidHotShotBlockForCommitmentCheck
16281                },
16282                {
16283                    fn AddressEmptyCode(
16284                        data: &[u8],
16285                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16286                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_validate(
16287                                data,
16288                            )
16289                            .map(LightClientV3Errors::AddressEmptyCode)
16290                    }
16291                    AddressEmptyCode
16292                },
16293                {
16294                    fn InvalidArgs(
16295                        data: &[u8],
16296                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16297                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw_validate(
16298                                data,
16299                            )
16300                            .map(LightClientV3Errors::InvalidArgs)
16301                    }
16302                    InvalidArgs
16303                },
16304                {
16305                    fn ProverNotPermissioned(
16306                        data: &[u8],
16307                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16308                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw_validate(
16309                                data,
16310                            )
16311                            .map(LightClientV3Errors::ProverNotPermissioned)
16312                    }
16313                    ProverNotPermissioned
16314                },
16315                {
16316                    fn NoChangeRequired(
16317                        data: &[u8],
16318                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16319                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw_validate(
16320                                data,
16321                            )
16322                            .map(LightClientV3Errors::NoChangeRequired)
16323                    }
16324                    NoChangeRequired
16325                },
16326                {
16327                    fn UUPSUnsupportedProxiableUUID(
16328                        data: &[u8],
16329                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16330                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_validate(
16331                                data,
16332                            )
16333                            .map(LightClientV3Errors::UUPSUnsupportedProxiableUUID)
16334                    }
16335                    UUPSUnsupportedProxiableUUID
16336                },
16337                {
16338                    fn InsufficientSnapshotHistory(
16339                        data: &[u8],
16340                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16341                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
16342                                data,
16343                            )
16344                            .map(LightClientV3Errors::InsufficientSnapshotHistory)
16345                    }
16346                    InsufficientSnapshotHistory
16347                },
16348                {
16349                    fn ERC1967NonPayable(
16350                        data: &[u8],
16351                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16352                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_validate(
16353                                data,
16354                            )
16355                            .map(LightClientV3Errors::ERC1967NonPayable)
16356                    }
16357                    ERC1967NonPayable
16358                },
16359                {
16360                    fn NotInitializing(
16361                        data: &[u8],
16362                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16363                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_validate(
16364                                data,
16365                            )
16366                            .map(LightClientV3Errors::NotInitializing)
16367                    }
16368                    NotInitializing
16369                },
16370                {
16371                    fn UUPSUnauthorizedCallContext(
16372                        data: &[u8],
16373                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16374                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_validate(
16375                                data,
16376                            )
16377                            .map(LightClientV3Errors::UUPSUnauthorizedCallContext)
16378                    }
16379                    UUPSUnauthorizedCallContext
16380                },
16381                {
16382                    fn InvalidAddress(
16383                        data: &[u8],
16384                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16385                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
16386                                data,
16387                            )
16388                            .map(LightClientV3Errors::InvalidAddress)
16389                    }
16390                    InvalidAddress
16391                },
16392                {
16393                    fn InvalidMaxStateHistory(
16394                        data: &[u8],
16395                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16396                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
16397                                data,
16398                            )
16399                            .map(LightClientV3Errors::InvalidMaxStateHistory)
16400                    }
16401                    InvalidMaxStateHistory
16402                },
16403                {
16404                    fn InvalidInitialization(
16405                        data: &[u8],
16406                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16407                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_validate(
16408                                data,
16409                            )
16410                            .map(LightClientV3Errors::InvalidInitialization)
16411                    }
16412                    InvalidInitialization
16413                },
16414            ];
16415            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
16416                return Err(
16417                    alloy_sol_types::Error::unknown_selector(
16418                        <Self as alloy_sol_types::SolInterface>::NAME,
16419                        selector,
16420                    ),
16421                );
16422            };
16423            DECODE_VALIDATE_SHIMS[idx](data)
16424        }
16425        #[inline]
16426        fn abi_encoded_size(&self) -> usize {
16427            match self {
16428                Self::AddressEmptyCode(inner) => {
16429                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
16430                        inner,
16431                    )
16432                }
16433                Self::DeprecatedApi(inner) => {
16434                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encoded_size(inner)
16435                }
16436                Self::ERC1967InvalidImplementation(inner) => {
16437                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
16438                        inner,
16439                    )
16440                }
16441                Self::ERC1967NonPayable(inner) => {
16442                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
16443                        inner,
16444                    )
16445                }
16446                Self::FailedInnerCall(inner) => {
16447                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
16448                        inner,
16449                    )
16450                }
16451                Self::InsufficientSnapshotHistory(inner) => {
16452                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
16453                        inner,
16454                    )
16455                }
16456                Self::InvalidAddress(inner) => {
16457                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
16458                        inner,
16459                    )
16460                }
16461                Self::InvalidArgs(inner) => {
16462                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
16463                }
16464                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
16465                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
16466                        inner,
16467                    )
16468                }
16469                Self::InvalidInitialization(inner) => {
16470                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
16471                        inner,
16472                    )
16473                }
16474                Self::InvalidMaxStateHistory(inner) => {
16475                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
16476                        inner,
16477                    )
16478                }
16479                Self::InvalidProof(inner) => {
16480                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
16481                }
16482                Self::InvalidScalar(inner) => {
16483                    <InvalidScalar as alloy_sol_types::SolError>::abi_encoded_size(inner)
16484                }
16485                Self::MissingEpochRootUpdate(inner) => {
16486                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encoded_size(
16487                        inner,
16488                    )
16489                }
16490                Self::NoChangeRequired(inner) => {
16491                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
16492                        inner,
16493                    )
16494                }
16495                Self::NotInitializing(inner) => {
16496                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
16497                        inner,
16498                    )
16499                }
16500                Self::OutdatedState(inner) => {
16501                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
16502                }
16503                Self::OwnableInvalidOwner(inner) => {
16504                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
16505                        inner,
16506                    )
16507                }
16508                Self::OwnableUnauthorizedAccount(inner) => {
16509                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
16510                        inner,
16511                    )
16512                }
16513                Self::OwnershipCannotBeRenounced(inner) => {
16514                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
16515                        inner,
16516                    )
16517                }
16518                Self::ProverNotPermissioned(inner) => {
16519                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
16520                        inner,
16521                    )
16522                }
16523                Self::UUPSUnauthorizedCallContext(inner) => {
16524                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
16525                        inner,
16526                    )
16527                }
16528                Self::UUPSUnsupportedProxiableUUID(inner) => {
16529                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
16530                        inner,
16531                    )
16532                }
16533                Self::WrongStakeTableUsed(inner) => {
16534                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
16535                        inner,
16536                    )
16537                }
16538            }
16539        }
16540        #[inline]
16541        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
16542            match self {
16543                Self::AddressEmptyCode(inner) => {
16544                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
16545                        inner,
16546                        out,
16547                    )
16548                }
16549                Self::DeprecatedApi(inner) => {
16550                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encode_raw(
16551                        inner,
16552                        out,
16553                    )
16554                }
16555                Self::ERC1967InvalidImplementation(inner) => {
16556                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
16557                        inner,
16558                        out,
16559                    )
16560                }
16561                Self::ERC1967NonPayable(inner) => {
16562                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
16563                        inner,
16564                        out,
16565                    )
16566                }
16567                Self::FailedInnerCall(inner) => {
16568                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
16569                        inner,
16570                        out,
16571                    )
16572                }
16573                Self::InsufficientSnapshotHistory(inner) => {
16574                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
16575                        inner,
16576                        out,
16577                    )
16578                }
16579                Self::InvalidAddress(inner) => {
16580                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
16581                        inner,
16582                        out,
16583                    )
16584                }
16585                Self::InvalidArgs(inner) => {
16586                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
16587                        inner,
16588                        out,
16589                    )
16590                }
16591                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
16592                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
16593                        inner,
16594                        out,
16595                    )
16596                }
16597                Self::InvalidInitialization(inner) => {
16598                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
16599                        inner,
16600                        out,
16601                    )
16602                }
16603                Self::InvalidMaxStateHistory(inner) => {
16604                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
16605                        inner,
16606                        out,
16607                    )
16608                }
16609                Self::InvalidProof(inner) => {
16610                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
16611                        inner,
16612                        out,
16613                    )
16614                }
16615                Self::InvalidScalar(inner) => {
16616                    <InvalidScalar as alloy_sol_types::SolError>::abi_encode_raw(
16617                        inner,
16618                        out,
16619                    )
16620                }
16621                Self::MissingEpochRootUpdate(inner) => {
16622                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encode_raw(
16623                        inner,
16624                        out,
16625                    )
16626                }
16627                Self::NoChangeRequired(inner) => {
16628                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
16629                        inner,
16630                        out,
16631                    )
16632                }
16633                Self::NotInitializing(inner) => {
16634                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
16635                        inner,
16636                        out,
16637                    )
16638                }
16639                Self::OutdatedState(inner) => {
16640                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
16641                        inner,
16642                        out,
16643                    )
16644                }
16645                Self::OwnableInvalidOwner(inner) => {
16646                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
16647                        inner,
16648                        out,
16649                    )
16650                }
16651                Self::OwnableUnauthorizedAccount(inner) => {
16652                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
16653                        inner,
16654                        out,
16655                    )
16656                }
16657                Self::OwnershipCannotBeRenounced(inner) => {
16658                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
16659                        inner,
16660                        out,
16661                    )
16662                }
16663                Self::ProverNotPermissioned(inner) => {
16664                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
16665                        inner,
16666                        out,
16667                    )
16668                }
16669                Self::UUPSUnauthorizedCallContext(inner) => {
16670                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
16671                        inner,
16672                        out,
16673                    )
16674                }
16675                Self::UUPSUnsupportedProxiableUUID(inner) => {
16676                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
16677                        inner,
16678                        out,
16679                    )
16680                }
16681                Self::WrongStakeTableUsed(inner) => {
16682                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
16683                        inner,
16684                        out,
16685                    )
16686                }
16687            }
16688        }
16689    }
16690    ///Container for all the [`LightClientV3`](self) events.
16691    #[derive(serde::Serialize, serde::Deserialize)]
16692    #[derive(Debug, PartialEq, Eq, Hash)]
16693    pub enum LightClientV3Events {
16694        #[allow(missing_docs)]
16695        Initialized(Initialized),
16696        #[allow(missing_docs)]
16697        NewEpoch(NewEpoch),
16698        #[allow(missing_docs)]
16699        NewState(NewState),
16700        #[allow(missing_docs)]
16701        OwnershipTransferred(OwnershipTransferred),
16702        #[allow(missing_docs)]
16703        PermissionedProverNotRequired(PermissionedProverNotRequired),
16704        #[allow(missing_docs)]
16705        PermissionedProverRequired(PermissionedProverRequired),
16706        #[allow(missing_docs)]
16707        Upgrade(Upgrade),
16708        #[allow(missing_docs)]
16709        Upgraded(Upgraded),
16710    }
16711    #[automatically_derived]
16712    impl LightClientV3Events {
16713        /// All the selectors of this enum.
16714        ///
16715        /// Note that the selectors might not be in the same order as the variants.
16716        /// No guarantees are made about the order of the selectors.
16717        ///
16718        /// Prefer using `SolInterface` methods instead.
16719        pub const SELECTORS: &'static [[u8; 32usize]] = &[
16720            [
16721                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
16722                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
16723                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
16724            ],
16725            [
16726                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
16727                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
16728                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
16729            ],
16730            [
16731                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
16732                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
16733                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
16734            ],
16735            [
16736                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
16737                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
16738                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
16739            ],
16740            [
16741                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
16742                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
16743                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
16744            ],
16745            [
16746                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
16747                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
16748                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
16749            ],
16750            [
16751                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
16752                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
16753                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
16754            ],
16755            [
16756                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
16757                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
16758                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
16759            ],
16760        ];
16761    }
16762    #[automatically_derived]
16763    impl alloy_sol_types::SolEventInterface for LightClientV3Events {
16764        const NAME: &'static str = "LightClientV3Events";
16765        const COUNT: usize = 8usize;
16766        fn decode_raw_log(
16767            topics: &[alloy_sol_types::Word],
16768            data: &[u8],
16769        ) -> alloy_sol_types::Result<Self> {
16770            match topics.first().copied() {
16771                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
16772                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
16773                            topics,
16774                            data,
16775                        )
16776                        .map(Self::Initialized)
16777                }
16778                Some(<NewEpoch as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
16779                    <NewEpoch as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
16780                        .map(Self::NewEpoch)
16781                }
16782                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
16783                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
16784                        .map(Self::NewState)
16785                }
16786                Some(
16787                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
16788                ) => {
16789                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
16790                            topics,
16791                            data,
16792                        )
16793                        .map(Self::OwnershipTransferred)
16794                }
16795                Some(
16796                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
16797                ) => {
16798                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
16799                            topics,
16800                            data,
16801                        )
16802                        .map(Self::PermissionedProverNotRequired)
16803                }
16804                Some(
16805                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
16806                ) => {
16807                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
16808                            topics,
16809                            data,
16810                        )
16811                        .map(Self::PermissionedProverRequired)
16812                }
16813                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
16814                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
16815                        .map(Self::Upgrade)
16816                }
16817                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
16818                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
16819                        .map(Self::Upgraded)
16820                }
16821                _ => {
16822                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
16823                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
16824                        log: alloy_sol_types::private::Box::new(
16825                            alloy_sol_types::private::LogData::new_unchecked(
16826                                topics.to_vec(),
16827                                data.to_vec().into(),
16828                            ),
16829                        ),
16830                    })
16831                }
16832            }
16833        }
16834    }
16835    #[automatically_derived]
16836    impl alloy_sol_types::private::IntoLogData for LightClientV3Events {
16837        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
16838            match self {
16839                Self::Initialized(inner) => {
16840                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16841                }
16842                Self::NewEpoch(inner) => {
16843                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16844                }
16845                Self::NewState(inner) => {
16846                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16847                }
16848                Self::OwnershipTransferred(inner) => {
16849                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16850                }
16851                Self::PermissionedProverNotRequired(inner) => {
16852                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16853                }
16854                Self::PermissionedProverRequired(inner) => {
16855                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16856                }
16857                Self::Upgrade(inner) => {
16858                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16859                }
16860                Self::Upgraded(inner) => {
16861                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16862                }
16863            }
16864        }
16865        fn into_log_data(self) -> alloy_sol_types::private::LogData {
16866            match self {
16867                Self::Initialized(inner) => {
16868                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16869                }
16870                Self::NewEpoch(inner) => {
16871                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16872                }
16873                Self::NewState(inner) => {
16874                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16875                }
16876                Self::OwnershipTransferred(inner) => {
16877                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16878                }
16879                Self::PermissionedProverNotRequired(inner) => {
16880                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16881                }
16882                Self::PermissionedProverRequired(inner) => {
16883                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16884                }
16885                Self::Upgrade(inner) => {
16886                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16887                }
16888                Self::Upgraded(inner) => {
16889                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16890                }
16891            }
16892        }
16893    }
16894    use alloy::contract as alloy_contract;
16895    /**Creates a new wrapper around an on-chain [`LightClientV3`](self) contract instance.
16896
16897See the [wrapper's documentation](`LightClientV3Instance`) for more details.*/
16898    #[inline]
16899    pub const fn new<
16900        P: alloy_contract::private::Provider<N>,
16901        N: alloy_contract::private::Network,
16902    >(
16903        address: alloy_sol_types::private::Address,
16904        provider: P,
16905    ) -> LightClientV3Instance<P, N> {
16906        LightClientV3Instance::<P, N>::new(address, provider)
16907    }
16908    /**Deploys this contract using the given `provider` and constructor arguments, if any.
16909
16910Returns a new instance of the contract, if the deployment was successful.
16911
16912For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
16913    #[inline]
16914    pub fn deploy<
16915        P: alloy_contract::private::Provider<N>,
16916        N: alloy_contract::private::Network,
16917    >(
16918        provider: P,
16919    ) -> impl ::core::future::Future<
16920        Output = alloy_contract::Result<LightClientV3Instance<P, N>>,
16921    > {
16922        LightClientV3Instance::<P, N>::deploy(provider)
16923    }
16924    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
16925and constructor arguments, if any.
16926
16927This is a simple wrapper around creating a `RawCallBuilder` with the data set to
16928the bytecode concatenated with the constructor's ABI-encoded arguments.*/
16929    #[inline]
16930    pub fn deploy_builder<
16931        P: alloy_contract::private::Provider<N>,
16932        N: alloy_contract::private::Network,
16933    >(provider: P) -> alloy_contract::RawCallBuilder<P, N> {
16934        LightClientV3Instance::<P, N>::deploy_builder(provider)
16935    }
16936    /**A [`LightClientV3`](self) instance.
16937
16938Contains type-safe methods for interacting with an on-chain instance of the
16939[`LightClientV3`](self) contract located at a given `address`, using a given
16940provider `P`.
16941
16942If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
16943documentation on how to provide it), the `deploy` and `deploy_builder` methods can
16944be used to deploy a new instance of the contract.
16945
16946See the [module-level documentation](self) for all the available methods.*/
16947    #[derive(Clone)]
16948    pub struct LightClientV3Instance<P, N = alloy_contract::private::Ethereum> {
16949        address: alloy_sol_types::private::Address,
16950        provider: P,
16951        _network: ::core::marker::PhantomData<N>,
16952    }
16953    #[automatically_derived]
16954    impl<P, N> ::core::fmt::Debug for LightClientV3Instance<P, N> {
16955        #[inline]
16956        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
16957            f.debug_tuple("LightClientV3Instance").field(&self.address).finish()
16958        }
16959    }
16960    /// Instantiation and getters/setters.
16961    #[automatically_derived]
16962    impl<
16963        P: alloy_contract::private::Provider<N>,
16964        N: alloy_contract::private::Network,
16965    > LightClientV3Instance<P, N> {
16966        /**Creates a new wrapper around an on-chain [`LightClientV3`](self) contract instance.
16967
16968See the [wrapper's documentation](`LightClientV3Instance`) for more details.*/
16969        #[inline]
16970        pub const fn new(
16971            address: alloy_sol_types::private::Address,
16972            provider: P,
16973        ) -> Self {
16974            Self {
16975                address,
16976                provider,
16977                _network: ::core::marker::PhantomData,
16978            }
16979        }
16980        /**Deploys this contract using the given `provider` and constructor arguments, if any.
16981
16982Returns a new instance of the contract, if the deployment was successful.
16983
16984For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
16985        #[inline]
16986        pub async fn deploy(
16987            provider: P,
16988        ) -> alloy_contract::Result<LightClientV3Instance<P, N>> {
16989            let call_builder = Self::deploy_builder(provider);
16990            let contract_address = call_builder.deploy().await?;
16991            Ok(Self::new(contract_address, call_builder.provider))
16992        }
16993        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
16994and constructor arguments, if any.
16995
16996This is a simple wrapper around creating a `RawCallBuilder` with the data set to
16997the bytecode concatenated with the constructor's ABI-encoded arguments.*/
16998        #[inline]
16999        pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<P, N> {
17000            alloy_contract::RawCallBuilder::new_raw_deploy(
17001                provider,
17002                ::core::clone::Clone::clone(&BYTECODE),
17003            )
17004        }
17005        /// Returns a reference to the address.
17006        #[inline]
17007        pub const fn address(&self) -> &alloy_sol_types::private::Address {
17008            &self.address
17009        }
17010        /// Sets the address.
17011        #[inline]
17012        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
17013            self.address = address;
17014        }
17015        /// Sets the address and returns `self`.
17016        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
17017            self.set_address(address);
17018            self
17019        }
17020        /// Returns a reference to the provider.
17021        #[inline]
17022        pub const fn provider(&self) -> &P {
17023            &self.provider
17024        }
17025    }
17026    impl<P: ::core::clone::Clone, N> LightClientV3Instance<&P, N> {
17027        /// Clones the provider and returns a new instance with the cloned provider.
17028        #[inline]
17029        pub fn with_cloned_provider(self) -> LightClientV3Instance<P, N> {
17030            LightClientV3Instance {
17031                address: self.address,
17032                provider: ::core::clone::Clone::clone(&self.provider),
17033                _network: ::core::marker::PhantomData,
17034            }
17035        }
17036    }
17037    /// Function calls.
17038    #[automatically_derived]
17039    impl<
17040        P: alloy_contract::private::Provider<N>,
17041        N: alloy_contract::private::Network,
17042    > LightClientV3Instance<P, N> {
17043        /// Creates a new call builder using this contract instance's provider and address.
17044        ///
17045        /// Note that the call can be any function call, not just those defined in this
17046        /// contract. Prefer using the other methods for building type-safe contract calls.
17047        pub fn call_builder<C: alloy_sol_types::SolCall>(
17048            &self,
17049            call: &C,
17050        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
17051            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
17052        }
17053        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
17054        pub fn UPGRADE_INTERFACE_VERSION(
17055            &self,
17056        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
17057            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
17058        }
17059        ///Creates a new call builder for the [`_getVk`] function.
17060        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<&P, _getVkCall, N> {
17061            self.call_builder(&_getVkCall)
17062        }
17063        ///Creates a new call builder for the [`authRoot`] function.
17064        pub fn authRoot(&self) -> alloy_contract::SolCallBuilder<&P, authRootCall, N> {
17065            self.call_builder(&authRootCall)
17066        }
17067        ///Creates a new call builder for the [`blocksPerEpoch`] function.
17068        pub fn blocksPerEpoch(
17069            &self,
17070        ) -> alloy_contract::SolCallBuilder<&P, blocksPerEpochCall, N> {
17071            self.call_builder(&blocksPerEpochCall)
17072        }
17073        ///Creates a new call builder for the [`currentBlockNumber`] function.
17074        pub fn currentBlockNumber(
17075            &self,
17076        ) -> alloy_contract::SolCallBuilder<&P, currentBlockNumberCall, N> {
17077            self.call_builder(&currentBlockNumberCall)
17078        }
17079        ///Creates a new call builder for the [`currentEpoch`] function.
17080        pub fn currentEpoch(
17081            &self,
17082        ) -> alloy_contract::SolCallBuilder<&P, currentEpochCall, N> {
17083            self.call_builder(&currentEpochCall)
17084        }
17085        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
17086        pub fn disablePermissionedProverMode(
17087            &self,
17088        ) -> alloy_contract::SolCallBuilder<&P, disablePermissionedProverModeCall, N> {
17089            self.call_builder(&disablePermissionedProverModeCall)
17090        }
17091        ///Creates a new call builder for the [`epochFromBlockNumber`] function.
17092        pub fn epochFromBlockNumber(
17093            &self,
17094            _blockNum: u64,
17095            _blocksPerEpoch: u64,
17096        ) -> alloy_contract::SolCallBuilder<&P, epochFromBlockNumberCall, N> {
17097            self.call_builder(
17098                &epochFromBlockNumberCall {
17099                    _blockNum,
17100                    _blocksPerEpoch,
17101                },
17102            )
17103        }
17104        ///Creates a new call builder for the [`epochStartBlock`] function.
17105        pub fn epochStartBlock(
17106            &self,
17107        ) -> alloy_contract::SolCallBuilder<&P, epochStartBlockCall, N> {
17108            self.call_builder(&epochStartBlockCall)
17109        }
17110        ///Creates a new call builder for the [`finalizedState`] function.
17111        pub fn finalizedState(
17112            &self,
17113        ) -> alloy_contract::SolCallBuilder<&P, finalizedStateCall, N> {
17114            self.call_builder(&finalizedStateCall)
17115        }
17116        ///Creates a new call builder for the [`genesisStakeTableState`] function.
17117        pub fn genesisStakeTableState(
17118            &self,
17119        ) -> alloy_contract::SolCallBuilder<&P, genesisStakeTableStateCall, N> {
17120            self.call_builder(&genesisStakeTableStateCall)
17121        }
17122        ///Creates a new call builder for the [`genesisState`] function.
17123        pub fn genesisState(
17124            &self,
17125        ) -> alloy_contract::SolCallBuilder<&P, genesisStateCall, N> {
17126            self.call_builder(&genesisStateCall)
17127        }
17128        ///Creates a new call builder for the [`getHotShotCommitment`] function.
17129        pub fn getHotShotCommitment(
17130            &self,
17131            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
17132        ) -> alloy_contract::SolCallBuilder<&P, getHotShotCommitmentCall, N> {
17133            self.call_builder(
17134                &getHotShotCommitmentCall {
17135                    hotShotBlockHeight,
17136                },
17137            )
17138        }
17139        ///Creates a new call builder for the [`getStateHistoryCount`] function.
17140        pub fn getStateHistoryCount(
17141            &self,
17142        ) -> alloy_contract::SolCallBuilder<&P, getStateHistoryCountCall, N> {
17143            self.call_builder(&getStateHistoryCountCall)
17144        }
17145        ///Creates a new call builder for the [`getVersion`] function.
17146        pub fn getVersion(
17147            &self,
17148        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
17149            self.call_builder(&getVersionCall)
17150        }
17151        ///Creates a new call builder for the [`initialize`] function.
17152        pub fn initialize(
17153            &self,
17154            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
17155            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
17156            _stateHistoryRetentionPeriod: u32,
17157            owner: alloy::sol_types::private::Address,
17158        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
17159            self.call_builder(
17160                &initializeCall {
17161                    _genesis,
17162                    _genesisStakeTableState,
17163                    _stateHistoryRetentionPeriod,
17164                    owner,
17165                },
17166            )
17167        }
17168        ///Creates a new call builder for the [`initializeV2`] function.
17169        pub fn initializeV2(
17170            &self,
17171            _blocksPerEpoch: u64,
17172            _epochStartBlock: u64,
17173        ) -> alloy_contract::SolCallBuilder<&P, initializeV2Call, N> {
17174            self.call_builder(
17175                &initializeV2Call {
17176                    _blocksPerEpoch,
17177                    _epochStartBlock,
17178                },
17179            )
17180        }
17181        ///Creates a new call builder for the [`initializeV3`] function.
17182        pub fn initializeV3(
17183            &self,
17184        ) -> alloy_contract::SolCallBuilder<&P, initializeV3Call, N> {
17185            self.call_builder(&initializeV3Call)
17186        }
17187        ///Creates a new call builder for the [`isEpochRoot`] function.
17188        pub fn isEpochRoot(
17189            &self,
17190            blockHeight: u64,
17191        ) -> alloy_contract::SolCallBuilder<&P, isEpochRootCall, N> {
17192            self.call_builder(&isEpochRootCall { blockHeight })
17193        }
17194        ///Creates a new call builder for the [`isGtEpochRoot`] function.
17195        pub fn isGtEpochRoot(
17196            &self,
17197            blockHeight: u64,
17198        ) -> alloy_contract::SolCallBuilder<&P, isGtEpochRootCall, N> {
17199            self.call_builder(&isGtEpochRootCall { blockHeight })
17200        }
17201        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
17202        pub fn isPermissionedProverEnabled(
17203            &self,
17204        ) -> alloy_contract::SolCallBuilder<&P, isPermissionedProverEnabledCall, N> {
17205            self.call_builder(&isPermissionedProverEnabledCall)
17206        }
17207        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
17208        pub fn lagOverEscapeHatchThreshold(
17209            &self,
17210            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
17211            blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
17212        ) -> alloy_contract::SolCallBuilder<&P, lagOverEscapeHatchThresholdCall, N> {
17213            self.call_builder(
17214                &lagOverEscapeHatchThresholdCall {
17215                    blockNumber,
17216                    blockThreshold,
17217                },
17218            )
17219        }
17220        ///Creates a new call builder for the [`newFinalizedState_0`] function.
17221        pub fn newFinalizedState_0(
17222            &self,
17223            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
17224            _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
17225        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_0Call, N> {
17226            self.call_builder(&newFinalizedState_0Call { _0, _1 })
17227        }
17228        ///Creates a new call builder for the [`newFinalizedState_1`] function.
17229        pub fn newFinalizedState_1(
17230            &self,
17231            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
17232            _1: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
17233            _2: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
17234        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_1Call, N> {
17235            self.call_builder(
17236                &newFinalizedState_1Call {
17237                    _0,
17238                    _1,
17239                    _2,
17240                },
17241            )
17242        }
17243        ///Creates a new call builder for the [`newFinalizedState_2`] function.
17244        pub fn newFinalizedState_2(
17245            &self,
17246            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
17247            nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
17248            newAuthRoot: alloy::sol_types::private::primitives::aliases::U256,
17249            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
17250        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_2Call, N> {
17251            self.call_builder(
17252                &newFinalizedState_2Call {
17253                    newState,
17254                    nextStakeTable,
17255                    newAuthRoot,
17256                    proof,
17257                },
17258            )
17259        }
17260        ///Creates a new call builder for the [`owner`] function.
17261        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
17262            self.call_builder(&ownerCall)
17263        }
17264        ///Creates a new call builder for the [`permissionedProver`] function.
17265        pub fn permissionedProver(
17266            &self,
17267        ) -> alloy_contract::SolCallBuilder<&P, permissionedProverCall, N> {
17268            self.call_builder(&permissionedProverCall)
17269        }
17270        ///Creates a new call builder for the [`proxiableUUID`] function.
17271        pub fn proxiableUUID(
17272            &self,
17273        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
17274            self.call_builder(&proxiableUUIDCall)
17275        }
17276        ///Creates a new call builder for the [`renounceOwnership`] function.
17277        pub fn renounceOwnership(
17278            &self,
17279        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
17280            self.call_builder(&renounceOwnershipCall)
17281        }
17282        ///Creates a new call builder for the [`setPermissionedProver`] function.
17283        pub fn setPermissionedProver(
17284            &self,
17285            prover: alloy::sol_types::private::Address,
17286        ) -> alloy_contract::SolCallBuilder<&P, setPermissionedProverCall, N> {
17287            self.call_builder(
17288                &setPermissionedProverCall {
17289                    prover,
17290                },
17291            )
17292        }
17293        ///Creates a new call builder for the [`setStateHistoryRetentionPeriod`] function.
17294        pub fn setStateHistoryRetentionPeriod(
17295            &self,
17296            historySeconds: u32,
17297        ) -> alloy_contract::SolCallBuilder<&P, setStateHistoryRetentionPeriodCall, N> {
17298            self.call_builder(
17299                &setStateHistoryRetentionPeriodCall {
17300                    historySeconds,
17301                },
17302            )
17303        }
17304        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
17305        pub fn setstateHistoryRetentionPeriod(
17306            &self,
17307            historySeconds: u32,
17308        ) -> alloy_contract::SolCallBuilder<&P, setstateHistoryRetentionPeriodCall, N> {
17309            self.call_builder(
17310                &setstateHistoryRetentionPeriodCall {
17311                    historySeconds,
17312                },
17313            )
17314        }
17315        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
17316        pub fn stateHistoryCommitments(
17317            &self,
17318            _0: alloy::sol_types::private::primitives::aliases::U256,
17319        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryCommitmentsCall, N> {
17320            self.call_builder(&stateHistoryCommitmentsCall(_0))
17321        }
17322        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
17323        pub fn stateHistoryFirstIndex(
17324            &self,
17325        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryFirstIndexCall, N> {
17326            self.call_builder(&stateHistoryFirstIndexCall)
17327        }
17328        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
17329        pub fn stateHistoryRetentionPeriod(
17330            &self,
17331        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryRetentionPeriodCall, N> {
17332            self.call_builder(&stateHistoryRetentionPeriodCall)
17333        }
17334        ///Creates a new call builder for the [`transferOwnership`] function.
17335        pub fn transferOwnership(
17336            &self,
17337            newOwner: alloy::sol_types::private::Address,
17338        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
17339            self.call_builder(&transferOwnershipCall { newOwner })
17340        }
17341        ///Creates a new call builder for the [`updateEpochStartBlock`] function.
17342        pub fn updateEpochStartBlock(
17343            &self,
17344            newEpochStartBlock: u64,
17345        ) -> alloy_contract::SolCallBuilder<&P, updateEpochStartBlockCall, N> {
17346            self.call_builder(
17347                &updateEpochStartBlockCall {
17348                    newEpochStartBlock,
17349                },
17350            )
17351        }
17352        ///Creates a new call builder for the [`upgradeToAndCall`] function.
17353        pub fn upgradeToAndCall(
17354            &self,
17355            newImplementation: alloy::sol_types::private::Address,
17356            data: alloy::sol_types::private::Bytes,
17357        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
17358            self.call_builder(
17359                &upgradeToAndCallCall {
17360                    newImplementation,
17361                    data,
17362                },
17363            )
17364        }
17365        ///Creates a new call builder for the [`votingStakeTableState`] function.
17366        pub fn votingStakeTableState(
17367            &self,
17368        ) -> alloy_contract::SolCallBuilder<&P, votingStakeTableStateCall, N> {
17369            self.call_builder(&votingStakeTableStateCall)
17370        }
17371    }
17372    /// Event filters.
17373    #[automatically_derived]
17374    impl<
17375        P: alloy_contract::private::Provider<N>,
17376        N: alloy_contract::private::Network,
17377    > LightClientV3Instance<P, N> {
17378        /// Creates a new event filter using this contract instance's provider and address.
17379        ///
17380        /// Note that the type can be any event, not just those defined in this contract.
17381        /// Prefer using the other methods for building type-safe event filters.
17382        pub fn event_filter<E: alloy_sol_types::SolEvent>(
17383            &self,
17384        ) -> alloy_contract::Event<&P, E, N> {
17385            alloy_contract::Event::new_sol(&self.provider, &self.address)
17386        }
17387        ///Creates a new event filter for the [`Initialized`] event.
17388        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
17389            self.event_filter::<Initialized>()
17390        }
17391        ///Creates a new event filter for the [`NewEpoch`] event.
17392        pub fn NewEpoch_filter(&self) -> alloy_contract::Event<&P, NewEpoch, N> {
17393            self.event_filter::<NewEpoch>()
17394        }
17395        ///Creates a new event filter for the [`NewState`] event.
17396        pub fn NewState_filter(&self) -> alloy_contract::Event<&P, NewState, N> {
17397            self.event_filter::<NewState>()
17398        }
17399        ///Creates a new event filter for the [`OwnershipTransferred`] event.
17400        pub fn OwnershipTransferred_filter(
17401            &self,
17402        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
17403            self.event_filter::<OwnershipTransferred>()
17404        }
17405        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
17406        pub fn PermissionedProverNotRequired_filter(
17407            &self,
17408        ) -> alloy_contract::Event<&P, PermissionedProverNotRequired, N> {
17409            self.event_filter::<PermissionedProverNotRequired>()
17410        }
17411        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
17412        pub fn PermissionedProverRequired_filter(
17413            &self,
17414        ) -> alloy_contract::Event<&P, PermissionedProverRequired, N> {
17415            self.event_filter::<PermissionedProverRequired>()
17416        }
17417        ///Creates a new event filter for the [`Upgrade`] event.
17418        pub fn Upgrade_filter(&self) -> alloy_contract::Event<&P, Upgrade, N> {
17419            self.event_filter::<Upgrade>()
17420        }
17421        ///Creates a new event filter for the [`Upgraded`] event.
17422        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
17423            self.event_filter::<Upgraded>()
17424        }
17425    }
17426}