hotshot_contract_adapter/bindings/
light_client.rs

1///Module containing a contract's types and functions.
2/**
3
4```solidity
5library BN254 {
6    type BaseField is uint256;
7    type ScalarField is uint256;
8    struct G1Point { BaseField x; BaseField y; }
9}
10```*/
11#[allow(
12    non_camel_case_types,
13    non_snake_case,
14    clippy::pub_underscore_fields,
15    clippy::style,
16    clippy::empty_structs_with_brackets
17)]
18pub mod BN254 {
19    use super::*;
20    use alloy::sol_types as alloy_sol_types;
21    #[derive(serde::Serialize, serde::Deserialize)]
22    #[derive(Default, Debug, PartialEq, Eq, Hash)]
23    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
24    #[derive(Clone)]
25    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
26    const _: () = {
27        use alloy::sol_types as alloy_sol_types;
28        #[automatically_derived]
29        impl alloy_sol_types::private::SolTypeValue<BaseField>
30        for alloy::sol_types::private::primitives::aliases::U256 {
31            #[inline]
32            fn stv_to_tokens(
33                &self,
34            ) -> <alloy::sol_types::sol_data::Uint<
35                256,
36            > as alloy_sol_types::SolType>::Token<'_> {
37                alloy_sol_types::private::SolTypeValue::<
38                    alloy::sol_types::sol_data::Uint<256>,
39                >::stv_to_tokens(self)
40            }
41            #[inline]
42            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
43                <alloy::sol_types::sol_data::Uint<
44                    256,
45                > as alloy_sol_types::SolType>::tokenize(self)
46                    .0
47            }
48            #[inline]
49            fn stv_abi_encode_packed_to(
50                &self,
51                out: &mut alloy_sol_types::private::Vec<u8>,
52            ) {
53                <alloy::sol_types::sol_data::Uint<
54                    256,
55                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
56            }
57            #[inline]
58            fn stv_abi_packed_encoded_size(&self) -> usize {
59                <alloy::sol_types::sol_data::Uint<
60                    256,
61                > as alloy_sol_types::SolType>::abi_encoded_size(self)
62            }
63        }
64        #[automatically_derived]
65        impl BaseField {
66            /// The Solidity type name.
67            pub const NAME: &'static str = stringify!(@ name);
68            /// Convert from the underlying value type.
69            #[inline]
70            pub const fn from_underlying(
71                value: alloy::sol_types::private::primitives::aliases::U256,
72            ) -> Self {
73                Self(value)
74            }
75            /// Return the underlying value.
76            #[inline]
77            pub const fn into_underlying(
78                self,
79            ) -> alloy::sol_types::private::primitives::aliases::U256 {
80                self.0
81            }
82            /// Return the single encoding of this value, delegating to the
83            /// underlying type.
84            #[inline]
85            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
86                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
87            }
88            /// Return the packed encoding of this value, delegating to the
89            /// underlying type.
90            #[inline]
91            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
92                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
93            }
94        }
95        #[automatically_derived]
96        impl From<alloy::sol_types::private::primitives::aliases::U256> for BaseField {
97            fn from(
98                value: alloy::sol_types::private::primitives::aliases::U256,
99            ) -> Self {
100                Self::from_underlying(value)
101            }
102        }
103        #[automatically_derived]
104        impl From<BaseField> for alloy::sol_types::private::primitives::aliases::U256 {
105            fn from(value: BaseField) -> Self {
106                value.into_underlying()
107            }
108        }
109        #[automatically_derived]
110        impl alloy_sol_types::SolType for BaseField {
111            type RustType = alloy::sol_types::private::primitives::aliases::U256;
112            type Token<'a> = <alloy::sol_types::sol_data::Uint<
113                256,
114            > as alloy_sol_types::SolType>::Token<'a>;
115            const SOL_NAME: &'static str = Self::NAME;
116            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
117                256,
118            > as alloy_sol_types::SolType>::ENCODED_SIZE;
119            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
120                256,
121            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
122            #[inline]
123            fn valid_token(token: &Self::Token<'_>) -> bool {
124                Self::type_check(token).is_ok()
125            }
126            #[inline]
127            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
128                <alloy::sol_types::sol_data::Uint<
129                    256,
130                > as alloy_sol_types::SolType>::type_check(token)
131            }
132            #[inline]
133            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
134                <alloy::sol_types::sol_data::Uint<
135                    256,
136                > as alloy_sol_types::SolType>::detokenize(token)
137            }
138        }
139        #[automatically_derived]
140        impl alloy_sol_types::EventTopic for BaseField {
141            #[inline]
142            fn topic_preimage_length(rust: &Self::RustType) -> usize {
143                <alloy::sol_types::sol_data::Uint<
144                    256,
145                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
146            }
147            #[inline]
148            fn encode_topic_preimage(
149                rust: &Self::RustType,
150                out: &mut alloy_sol_types::private::Vec<u8>,
151            ) {
152                <alloy::sol_types::sol_data::Uint<
153                    256,
154                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
155            }
156            #[inline]
157            fn encode_topic(
158                rust: &Self::RustType,
159            ) -> alloy_sol_types::abi::token::WordToken {
160                <alloy::sol_types::sol_data::Uint<
161                    256,
162                > as alloy_sol_types::EventTopic>::encode_topic(rust)
163            }
164        }
165    };
166    #[derive(serde::Serialize, serde::Deserialize)]
167    #[derive(Default, Debug, PartialEq, Eq, Hash)]
168    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
169    #[derive(Clone)]
170    pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
171    const _: () = {
172        use alloy::sol_types as alloy_sol_types;
173        #[automatically_derived]
174        impl alloy_sol_types::private::SolTypeValue<ScalarField>
175        for alloy::sol_types::private::primitives::aliases::U256 {
176            #[inline]
177            fn stv_to_tokens(
178                &self,
179            ) -> <alloy::sol_types::sol_data::Uint<
180                256,
181            > as alloy_sol_types::SolType>::Token<'_> {
182                alloy_sol_types::private::SolTypeValue::<
183                    alloy::sol_types::sol_data::Uint<256>,
184                >::stv_to_tokens(self)
185            }
186            #[inline]
187            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
188                <alloy::sol_types::sol_data::Uint<
189                    256,
190                > as alloy_sol_types::SolType>::tokenize(self)
191                    .0
192            }
193            #[inline]
194            fn stv_abi_encode_packed_to(
195                &self,
196                out: &mut alloy_sol_types::private::Vec<u8>,
197            ) {
198                <alloy::sol_types::sol_data::Uint<
199                    256,
200                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
201            }
202            #[inline]
203            fn stv_abi_packed_encoded_size(&self) -> usize {
204                <alloy::sol_types::sol_data::Uint<
205                    256,
206                > as alloy_sol_types::SolType>::abi_encoded_size(self)
207            }
208        }
209        #[automatically_derived]
210        impl ScalarField {
211            /// The Solidity type name.
212            pub const NAME: &'static str = stringify!(@ name);
213            /// Convert from the underlying value type.
214            #[inline]
215            pub const fn from_underlying(
216                value: alloy::sol_types::private::primitives::aliases::U256,
217            ) -> Self {
218                Self(value)
219            }
220            /// Return the underlying value.
221            #[inline]
222            pub const fn into_underlying(
223                self,
224            ) -> alloy::sol_types::private::primitives::aliases::U256 {
225                self.0
226            }
227            /// Return the single encoding of this value, delegating to the
228            /// underlying type.
229            #[inline]
230            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
231                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
232            }
233            /// Return the packed encoding of this value, delegating to the
234            /// underlying type.
235            #[inline]
236            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
237                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
238            }
239        }
240        #[automatically_derived]
241        impl From<alloy::sol_types::private::primitives::aliases::U256> for ScalarField {
242            fn from(
243                value: alloy::sol_types::private::primitives::aliases::U256,
244            ) -> Self {
245                Self::from_underlying(value)
246            }
247        }
248        #[automatically_derived]
249        impl From<ScalarField> for alloy::sol_types::private::primitives::aliases::U256 {
250            fn from(value: ScalarField) -> Self {
251                value.into_underlying()
252            }
253        }
254        #[automatically_derived]
255        impl alloy_sol_types::SolType for ScalarField {
256            type RustType = alloy::sol_types::private::primitives::aliases::U256;
257            type Token<'a> = <alloy::sol_types::sol_data::Uint<
258                256,
259            > as alloy_sol_types::SolType>::Token<'a>;
260            const SOL_NAME: &'static str = Self::NAME;
261            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
262                256,
263            > as alloy_sol_types::SolType>::ENCODED_SIZE;
264            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
265                256,
266            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
267            #[inline]
268            fn valid_token(token: &Self::Token<'_>) -> bool {
269                Self::type_check(token).is_ok()
270            }
271            #[inline]
272            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
273                <alloy::sol_types::sol_data::Uint<
274                    256,
275                > as alloy_sol_types::SolType>::type_check(token)
276            }
277            #[inline]
278            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
279                <alloy::sol_types::sol_data::Uint<
280                    256,
281                > as alloy_sol_types::SolType>::detokenize(token)
282            }
283        }
284        #[automatically_derived]
285        impl alloy_sol_types::EventTopic for ScalarField {
286            #[inline]
287            fn topic_preimage_length(rust: &Self::RustType) -> usize {
288                <alloy::sol_types::sol_data::Uint<
289                    256,
290                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
291            }
292            #[inline]
293            fn encode_topic_preimage(
294                rust: &Self::RustType,
295                out: &mut alloy_sol_types::private::Vec<u8>,
296            ) {
297                <alloy::sol_types::sol_data::Uint<
298                    256,
299                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
300            }
301            #[inline]
302            fn encode_topic(
303                rust: &Self::RustType,
304            ) -> alloy_sol_types::abi::token::WordToken {
305                <alloy::sol_types::sol_data::Uint<
306                    256,
307                > as alloy_sol_types::EventTopic>::encode_topic(rust)
308            }
309        }
310    };
311    #[derive(serde::Serialize, serde::Deserialize)]
312    #[derive(Default, Debug, PartialEq, Eq, Hash)]
313    /**```solidity
314struct G1Point { BaseField x; BaseField y; }
315```*/
316    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
317    #[derive(Clone)]
318    pub struct G1Point {
319        #[allow(missing_docs)]
320        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
321        #[allow(missing_docs)]
322        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
323    }
324    #[allow(
325        non_camel_case_types,
326        non_snake_case,
327        clippy::pub_underscore_fields,
328        clippy::style
329    )]
330    const _: () = {
331        use alloy::sol_types as alloy_sol_types;
332        #[doc(hidden)]
333        #[allow(dead_code)]
334        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
335        #[doc(hidden)]
336        type UnderlyingRustTuple<'a> = (
337            <BaseField as alloy::sol_types::SolType>::RustType,
338            <BaseField as alloy::sol_types::SolType>::RustType,
339        );
340        #[cfg(test)]
341        #[allow(dead_code, unreachable_patterns)]
342        fn _type_assertion(
343            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
344        ) {
345            match _t {
346                alloy_sol_types::private::AssertTypeEq::<
347                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
348                >(_) => {}
349            }
350        }
351        #[automatically_derived]
352        #[doc(hidden)]
353        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
354            fn from(value: G1Point) -> Self {
355                (value.x, value.y)
356            }
357        }
358        #[automatically_derived]
359        #[doc(hidden)]
360        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
361            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
362                Self { x: tuple.0, y: tuple.1 }
363            }
364        }
365        #[automatically_derived]
366        impl alloy_sol_types::SolValue for G1Point {
367            type SolType = Self;
368        }
369        #[automatically_derived]
370        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
371            #[inline]
372            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
373                (
374                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
375                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
376                )
377            }
378            #[inline]
379            fn stv_abi_encoded_size(&self) -> usize {
380                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
381                    return size;
382                }
383                let tuple = <UnderlyingRustTuple<
384                    '_,
385                > as ::core::convert::From<Self>>::from(self.clone());
386                <UnderlyingSolTuple<
387                    '_,
388                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
389            }
390            #[inline]
391            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
392                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
393            }
394            #[inline]
395            fn stv_abi_encode_packed_to(
396                &self,
397                out: &mut alloy_sol_types::private::Vec<u8>,
398            ) {
399                let tuple = <UnderlyingRustTuple<
400                    '_,
401                > as ::core::convert::From<Self>>::from(self.clone());
402                <UnderlyingSolTuple<
403                    '_,
404                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
405            }
406            #[inline]
407            fn stv_abi_packed_encoded_size(&self) -> usize {
408                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
409                    return size;
410                }
411                let tuple = <UnderlyingRustTuple<
412                    '_,
413                > as ::core::convert::From<Self>>::from(self.clone());
414                <UnderlyingSolTuple<
415                    '_,
416                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
417            }
418        }
419        #[automatically_derived]
420        impl alloy_sol_types::SolType for G1Point {
421            type RustType = Self;
422            type Token<'a> = <UnderlyingSolTuple<
423                'a,
424            > as alloy_sol_types::SolType>::Token<'a>;
425            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
426            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
427                '_,
428            > as alloy_sol_types::SolType>::ENCODED_SIZE;
429            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
430                '_,
431            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
432            #[inline]
433            fn valid_token(token: &Self::Token<'_>) -> bool {
434                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
435            }
436            #[inline]
437            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
438                let tuple = <UnderlyingSolTuple<
439                    '_,
440                > as alloy_sol_types::SolType>::detokenize(token);
441                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
442            }
443        }
444        #[automatically_derived]
445        impl alloy_sol_types::SolStruct for G1Point {
446            const NAME: &'static str = "G1Point";
447            #[inline]
448            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
449                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
450            }
451            #[inline]
452            fn eip712_components() -> alloy_sol_types::private::Vec<
453                alloy_sol_types::private::Cow<'static, str>,
454            > {
455                alloy_sol_types::private::Vec::new()
456            }
457            #[inline]
458            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
459                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
460            }
461            #[inline]
462            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
463                [
464                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
465                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
466                ]
467                    .concat()
468            }
469        }
470        #[automatically_derived]
471        impl alloy_sol_types::EventTopic for G1Point {
472            #[inline]
473            fn topic_preimage_length(rust: &Self::RustType) -> usize {
474                0usize
475                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
476                        &rust.x,
477                    )
478                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
479                        &rust.y,
480                    )
481            }
482            #[inline]
483            fn encode_topic_preimage(
484                rust: &Self::RustType,
485                out: &mut alloy_sol_types::private::Vec<u8>,
486            ) {
487                out.reserve(
488                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
489                );
490                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
491                    &rust.x,
492                    out,
493                );
494                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
495                    &rust.y,
496                    out,
497                );
498            }
499            #[inline]
500            fn encode_topic(
501                rust: &Self::RustType,
502            ) -> alloy_sol_types::abi::token::WordToken {
503                let mut out = alloy_sol_types::private::Vec::new();
504                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
505                    rust,
506                    &mut out,
507                );
508                alloy_sol_types::abi::token::WordToken(
509                    alloy_sol_types::private::keccak256(out),
510                )
511            }
512        }
513    };
514    use alloy::contract as alloy_contract;
515    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
516
517See the [wrapper's documentation](`BN254Instance`) for more details.*/
518    #[inline]
519    pub const fn new<
520        P: alloy_contract::private::Provider<N>,
521        N: alloy_contract::private::Network,
522    >(address: alloy_sol_types::private::Address, __provider: P) -> BN254Instance<P, N> {
523        BN254Instance::<P, N>::new(address, __provider)
524    }
525    /**A [`BN254`](self) instance.
526
527Contains type-safe methods for interacting with an on-chain instance of the
528[`BN254`](self) contract located at a given `address`, using a given
529provider `P`.
530
531If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
532documentation on how to provide it), the `deploy` and `deploy_builder` methods can
533be used to deploy a new instance of the contract.
534
535See the [module-level documentation](self) for all the available methods.*/
536    #[derive(Clone)]
537    pub struct BN254Instance<P, N = alloy_contract::private::Ethereum> {
538        address: alloy_sol_types::private::Address,
539        provider: P,
540        _network: ::core::marker::PhantomData<N>,
541    }
542    #[automatically_derived]
543    impl<P, N> ::core::fmt::Debug for BN254Instance<P, N> {
544        #[inline]
545        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
546            f.debug_tuple("BN254Instance").field(&self.address).finish()
547        }
548    }
549    /// Instantiation and getters/setters.
550    #[automatically_derived]
551    impl<
552        P: alloy_contract::private::Provider<N>,
553        N: alloy_contract::private::Network,
554    > BN254Instance<P, N> {
555        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
556
557See the [wrapper's documentation](`BN254Instance`) for more details.*/
558        #[inline]
559        pub const fn new(
560            address: alloy_sol_types::private::Address,
561            __provider: P,
562        ) -> Self {
563            Self {
564                address,
565                provider: __provider,
566                _network: ::core::marker::PhantomData,
567            }
568        }
569        /// Returns a reference to the address.
570        #[inline]
571        pub const fn address(&self) -> &alloy_sol_types::private::Address {
572            &self.address
573        }
574        /// Sets the address.
575        #[inline]
576        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
577            self.address = address;
578        }
579        /// Sets the address and returns `self`.
580        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
581            self.set_address(address);
582            self
583        }
584        /// Returns a reference to the provider.
585        #[inline]
586        pub const fn provider(&self) -> &P {
587            &self.provider
588        }
589    }
590    impl<P: ::core::clone::Clone, N> BN254Instance<&P, N> {
591        /// Clones the provider and returns a new instance with the cloned provider.
592        #[inline]
593        pub fn with_cloned_provider(self) -> BN254Instance<P, N> {
594            BN254Instance {
595                address: self.address,
596                provider: ::core::clone::Clone::clone(&self.provider),
597                _network: ::core::marker::PhantomData,
598            }
599        }
600    }
601    /// Function calls.
602    #[automatically_derived]
603    impl<
604        P: alloy_contract::private::Provider<N>,
605        N: alloy_contract::private::Network,
606    > BN254Instance<P, N> {
607        /// Creates a new call builder using this contract instance's provider and address.
608        ///
609        /// Note that the call can be any function call, not just those defined in this
610        /// contract. Prefer using the other methods for building type-safe contract calls.
611        pub fn call_builder<C: alloy_sol_types::SolCall>(
612            &self,
613            call: &C,
614        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
615            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
616        }
617    }
618    /// Event filters.
619    #[automatically_derived]
620    impl<
621        P: alloy_contract::private::Provider<N>,
622        N: alloy_contract::private::Network,
623    > BN254Instance<P, N> {
624        /// Creates a new event filter using this contract instance's provider and address.
625        ///
626        /// Note that the type can be any event, not just those defined in this contract.
627        /// Prefer using the other methods for building type-safe event filters.
628        pub fn event_filter<E: alloy_sol_types::SolEvent>(
629            &self,
630        ) -> alloy_contract::Event<&P, E, N> {
631            alloy_contract::Event::new_sol(&self.provider, &self.address)
632        }
633    }
634}
635///Module containing a contract's types and functions.
636/**
637
638```solidity
639library IPlonkVerifier {
640    struct PlonkProof { BN254.G1Point wire0; BN254.G1Point wire1; BN254.G1Point wire2; BN254.G1Point wire3; BN254.G1Point wire4; BN254.G1Point prodPerm; BN254.G1Point split0; BN254.G1Point split1; BN254.G1Point split2; BN254.G1Point split3; BN254.G1Point split4; BN254.G1Point zeta; BN254.G1Point zetaOmega; BN254.ScalarField wireEval0; BN254.ScalarField wireEval1; BN254.ScalarField wireEval2; BN254.ScalarField wireEval3; BN254.ScalarField wireEval4; BN254.ScalarField sigmaEval0; BN254.ScalarField sigmaEval1; BN254.ScalarField sigmaEval2; BN254.ScalarField sigmaEval3; BN254.ScalarField prodPermZetaOmegaEval; }
641    struct VerifyingKey { uint256 domainSize; uint256 numInputs; BN254.G1Point sigma0; BN254.G1Point sigma1; BN254.G1Point sigma2; BN254.G1Point sigma3; BN254.G1Point sigma4; BN254.G1Point q1; BN254.G1Point q2; BN254.G1Point q3; BN254.G1Point q4; BN254.G1Point qM12; BN254.G1Point qM34; BN254.G1Point qO; BN254.G1Point qC; BN254.G1Point qH1; BN254.G1Point qH2; BN254.G1Point qH3; BN254.G1Point qH4; BN254.G1Point qEcc; bytes32 g2LSB; bytes32 g2MSB; }
642}
643```*/
644#[allow(
645    non_camel_case_types,
646    non_snake_case,
647    clippy::pub_underscore_fields,
648    clippy::style,
649    clippy::empty_structs_with_brackets
650)]
651pub mod IPlonkVerifier {
652    use super::*;
653    use alloy::sol_types as alloy_sol_types;
654    #[derive(serde::Serialize, serde::Deserialize)]
655    #[derive()]
656    /**```solidity
657struct PlonkProof { BN254.G1Point wire0; BN254.G1Point wire1; BN254.G1Point wire2; BN254.G1Point wire3; BN254.G1Point wire4; BN254.G1Point prodPerm; BN254.G1Point split0; BN254.G1Point split1; BN254.G1Point split2; BN254.G1Point split3; BN254.G1Point split4; BN254.G1Point zeta; BN254.G1Point zetaOmega; BN254.ScalarField wireEval0; BN254.ScalarField wireEval1; BN254.ScalarField wireEval2; BN254.ScalarField wireEval3; BN254.ScalarField wireEval4; BN254.ScalarField sigmaEval0; BN254.ScalarField sigmaEval1; BN254.ScalarField sigmaEval2; BN254.ScalarField sigmaEval3; BN254.ScalarField prodPermZetaOmegaEval; }
658```*/
659    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
660    #[derive(Clone)]
661    pub struct PlonkProof {
662        #[allow(missing_docs)]
663        pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
664        #[allow(missing_docs)]
665        pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
666        #[allow(missing_docs)]
667        pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
668        #[allow(missing_docs)]
669        pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
670        #[allow(missing_docs)]
671        pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
672        #[allow(missing_docs)]
673        pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
674        #[allow(missing_docs)]
675        pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
676        #[allow(missing_docs)]
677        pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
678        #[allow(missing_docs)]
679        pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
680        #[allow(missing_docs)]
681        pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
682        #[allow(missing_docs)]
683        pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
684        #[allow(missing_docs)]
685        pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
686        #[allow(missing_docs)]
687        pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
688        #[allow(missing_docs)]
689        pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
690        #[allow(missing_docs)]
691        pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
692        #[allow(missing_docs)]
693        pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
694        #[allow(missing_docs)]
695        pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
696        #[allow(missing_docs)]
697        pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
698        #[allow(missing_docs)]
699        pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
700        #[allow(missing_docs)]
701        pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
702        #[allow(missing_docs)]
703        pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
704        #[allow(missing_docs)]
705        pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
706        #[allow(missing_docs)]
707        pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
708    }
709    #[allow(
710        non_camel_case_types,
711        non_snake_case,
712        clippy::pub_underscore_fields,
713        clippy::style
714    )]
715    const _: () = {
716        use alloy::sol_types as alloy_sol_types;
717        #[doc(hidden)]
718        #[allow(dead_code)]
719        type UnderlyingSolTuple<'a> = (
720            BN254::G1Point,
721            BN254::G1Point,
722            BN254::G1Point,
723            BN254::G1Point,
724            BN254::G1Point,
725            BN254::G1Point,
726            BN254::G1Point,
727            BN254::G1Point,
728            BN254::G1Point,
729            BN254::G1Point,
730            BN254::G1Point,
731            BN254::G1Point,
732            BN254::G1Point,
733            BN254::ScalarField,
734            BN254::ScalarField,
735            BN254::ScalarField,
736            BN254::ScalarField,
737            BN254::ScalarField,
738            BN254::ScalarField,
739            BN254::ScalarField,
740            BN254::ScalarField,
741            BN254::ScalarField,
742            BN254::ScalarField,
743        );
744        #[doc(hidden)]
745        type UnderlyingRustTuple<'a> = (
746            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
747            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
748            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
749            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
750            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
751            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
752            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
753            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
754            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
755            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
756            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
757            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
758            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
759            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
760            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
761            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
762            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
763            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
764            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
765            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
766            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
767            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
768            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
769        );
770        #[cfg(test)]
771        #[allow(dead_code, unreachable_patterns)]
772        fn _type_assertion(
773            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
774        ) {
775            match _t {
776                alloy_sol_types::private::AssertTypeEq::<
777                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
778                >(_) => {}
779            }
780        }
781        #[automatically_derived]
782        #[doc(hidden)]
783        impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
784            fn from(value: PlonkProof) -> Self {
785                (
786                    value.wire0,
787                    value.wire1,
788                    value.wire2,
789                    value.wire3,
790                    value.wire4,
791                    value.prodPerm,
792                    value.split0,
793                    value.split1,
794                    value.split2,
795                    value.split3,
796                    value.split4,
797                    value.zeta,
798                    value.zetaOmega,
799                    value.wireEval0,
800                    value.wireEval1,
801                    value.wireEval2,
802                    value.wireEval3,
803                    value.wireEval4,
804                    value.sigmaEval0,
805                    value.sigmaEval1,
806                    value.sigmaEval2,
807                    value.sigmaEval3,
808                    value.prodPermZetaOmegaEval,
809                )
810            }
811        }
812        #[automatically_derived]
813        #[doc(hidden)]
814        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
815            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
816                Self {
817                    wire0: tuple.0,
818                    wire1: tuple.1,
819                    wire2: tuple.2,
820                    wire3: tuple.3,
821                    wire4: tuple.4,
822                    prodPerm: tuple.5,
823                    split0: tuple.6,
824                    split1: tuple.7,
825                    split2: tuple.8,
826                    split3: tuple.9,
827                    split4: tuple.10,
828                    zeta: tuple.11,
829                    zetaOmega: tuple.12,
830                    wireEval0: tuple.13,
831                    wireEval1: tuple.14,
832                    wireEval2: tuple.15,
833                    wireEval3: tuple.16,
834                    wireEval4: tuple.17,
835                    sigmaEval0: tuple.18,
836                    sigmaEval1: tuple.19,
837                    sigmaEval2: tuple.20,
838                    sigmaEval3: tuple.21,
839                    prodPermZetaOmegaEval: tuple.22,
840                }
841            }
842        }
843        #[automatically_derived]
844        impl alloy_sol_types::SolValue for PlonkProof {
845            type SolType = Self;
846        }
847        #[automatically_derived]
848        impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
849            #[inline]
850            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
851                (
852                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
853                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
854                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
855                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
856                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
857                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
858                        &self.prodPerm,
859                    ),
860                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
861                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
862                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
863                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
864                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
865                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
866                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
867                        &self.zetaOmega,
868                    ),
869                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
870                        &self.wireEval0,
871                    ),
872                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
873                        &self.wireEval1,
874                    ),
875                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
876                        &self.wireEval2,
877                    ),
878                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
879                        &self.wireEval3,
880                    ),
881                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
882                        &self.wireEval4,
883                    ),
884                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
885                        &self.sigmaEval0,
886                    ),
887                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
888                        &self.sigmaEval1,
889                    ),
890                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
891                        &self.sigmaEval2,
892                    ),
893                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
894                        &self.sigmaEval3,
895                    ),
896                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
897                        &self.prodPermZetaOmegaEval,
898                    ),
899                )
900            }
901            #[inline]
902            fn stv_abi_encoded_size(&self) -> usize {
903                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
904                    return size;
905                }
906                let tuple = <UnderlyingRustTuple<
907                    '_,
908                > as ::core::convert::From<Self>>::from(self.clone());
909                <UnderlyingSolTuple<
910                    '_,
911                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
912            }
913            #[inline]
914            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
915                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
916            }
917            #[inline]
918            fn stv_abi_encode_packed_to(
919                &self,
920                out: &mut alloy_sol_types::private::Vec<u8>,
921            ) {
922                let tuple = <UnderlyingRustTuple<
923                    '_,
924                > as ::core::convert::From<Self>>::from(self.clone());
925                <UnderlyingSolTuple<
926                    '_,
927                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
928            }
929            #[inline]
930            fn stv_abi_packed_encoded_size(&self) -> usize {
931                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
932                    return size;
933                }
934                let tuple = <UnderlyingRustTuple<
935                    '_,
936                > as ::core::convert::From<Self>>::from(self.clone());
937                <UnderlyingSolTuple<
938                    '_,
939                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
940            }
941        }
942        #[automatically_derived]
943        impl alloy_sol_types::SolType for PlonkProof {
944            type RustType = Self;
945            type Token<'a> = <UnderlyingSolTuple<
946                'a,
947            > as alloy_sol_types::SolType>::Token<'a>;
948            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
949            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
950                '_,
951            > as alloy_sol_types::SolType>::ENCODED_SIZE;
952            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
953                '_,
954            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
955            #[inline]
956            fn valid_token(token: &Self::Token<'_>) -> bool {
957                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
958            }
959            #[inline]
960            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
961                let tuple = <UnderlyingSolTuple<
962                    '_,
963                > as alloy_sol_types::SolType>::detokenize(token);
964                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
965            }
966        }
967        #[automatically_derived]
968        impl alloy_sol_types::SolStruct for PlonkProof {
969            const NAME: &'static str = "PlonkProof";
970            #[inline]
971            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
972                alloy_sol_types::private::Cow::Borrowed(
973                    "PlonkProof(G1Point wire0,G1Point wire1,G1Point wire2,G1Point wire3,G1Point wire4,G1Point prodPerm,G1Point split0,G1Point split1,G1Point split2,G1Point split3,G1Point split4,G1Point zeta,G1Point zetaOmega,uint256 wireEval0,uint256 wireEval1,uint256 wireEval2,uint256 wireEval3,uint256 wireEval4,uint256 sigmaEval0,uint256 sigmaEval1,uint256 sigmaEval2,uint256 sigmaEval3,uint256 prodPermZetaOmegaEval)",
974                )
975            }
976            #[inline]
977            fn eip712_components() -> alloy_sol_types::private::Vec<
978                alloy_sol_types::private::Cow<'static, str>,
979            > {
980                let mut components = alloy_sol_types::private::Vec::with_capacity(13);
981                components
982                    .push(
983                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
984                    );
985                components
986                    .extend(
987                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
988                    );
989                components
990                    .push(
991                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
992                    );
993                components
994                    .extend(
995                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
996                    );
997                components
998                    .push(
999                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1000                    );
1001                components
1002                    .extend(
1003                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1004                    );
1005                components
1006                    .push(
1007                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1008                    );
1009                components
1010                    .extend(
1011                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1012                    );
1013                components
1014                    .push(
1015                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1016                    );
1017                components
1018                    .extend(
1019                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1020                    );
1021                components
1022                    .push(
1023                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1024                    );
1025                components
1026                    .extend(
1027                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1028                    );
1029                components
1030                    .push(
1031                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1032                    );
1033                components
1034                    .extend(
1035                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1036                    );
1037                components
1038                    .push(
1039                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1040                    );
1041                components
1042                    .extend(
1043                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1044                    );
1045                components
1046                    .push(
1047                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1048                    );
1049                components
1050                    .extend(
1051                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1052                    );
1053                components
1054                    .push(
1055                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1056                    );
1057                components
1058                    .extend(
1059                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1060                    );
1061                components
1062                    .push(
1063                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1064                    );
1065                components
1066                    .extend(
1067                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1068                    );
1069                components
1070                    .push(
1071                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1072                    );
1073                components
1074                    .extend(
1075                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1076                    );
1077                components
1078                    .push(
1079                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1080                    );
1081                components
1082                    .extend(
1083                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1084                    );
1085                components
1086            }
1087            #[inline]
1088            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1089                [
1090                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1091                            &self.wire0,
1092                        )
1093                        .0,
1094                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1095                            &self.wire1,
1096                        )
1097                        .0,
1098                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1099                            &self.wire2,
1100                        )
1101                        .0,
1102                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1103                            &self.wire3,
1104                        )
1105                        .0,
1106                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1107                            &self.wire4,
1108                        )
1109                        .0,
1110                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1111                            &self.prodPerm,
1112                        )
1113                        .0,
1114                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1115                            &self.split0,
1116                        )
1117                        .0,
1118                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1119                            &self.split1,
1120                        )
1121                        .0,
1122                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1123                            &self.split2,
1124                        )
1125                        .0,
1126                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1127                            &self.split3,
1128                        )
1129                        .0,
1130                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1131                            &self.split4,
1132                        )
1133                        .0,
1134                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1135                            &self.zeta,
1136                        )
1137                        .0,
1138                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1139                            &self.zetaOmega,
1140                        )
1141                        .0,
1142                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1143                            &self.wireEval0,
1144                        )
1145                        .0,
1146                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1147                            &self.wireEval1,
1148                        )
1149                        .0,
1150                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1151                            &self.wireEval2,
1152                        )
1153                        .0,
1154                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1155                            &self.wireEval3,
1156                        )
1157                        .0,
1158                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1159                            &self.wireEval4,
1160                        )
1161                        .0,
1162                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1163                            &self.sigmaEval0,
1164                        )
1165                        .0,
1166                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1167                            &self.sigmaEval1,
1168                        )
1169                        .0,
1170                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1171                            &self.sigmaEval2,
1172                        )
1173                        .0,
1174                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1175                            &self.sigmaEval3,
1176                        )
1177                        .0,
1178                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1179                            &self.prodPermZetaOmegaEval,
1180                        )
1181                        .0,
1182                ]
1183                    .concat()
1184            }
1185        }
1186        #[automatically_derived]
1187        impl alloy_sol_types::EventTopic for PlonkProof {
1188            #[inline]
1189            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1190                0usize
1191                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1192                        &rust.wire0,
1193                    )
1194                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1195                        &rust.wire1,
1196                    )
1197                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1198                        &rust.wire2,
1199                    )
1200                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1201                        &rust.wire3,
1202                    )
1203                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1204                        &rust.wire4,
1205                    )
1206                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1207                        &rust.prodPerm,
1208                    )
1209                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1210                        &rust.split0,
1211                    )
1212                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1213                        &rust.split1,
1214                    )
1215                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1216                        &rust.split2,
1217                    )
1218                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1219                        &rust.split3,
1220                    )
1221                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1222                        &rust.split4,
1223                    )
1224                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1225                        &rust.zeta,
1226                    )
1227                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1228                        &rust.zetaOmega,
1229                    )
1230                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1231                        &rust.wireEval0,
1232                    )
1233                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1234                        &rust.wireEval1,
1235                    )
1236                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1237                        &rust.wireEval2,
1238                    )
1239                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1240                        &rust.wireEval3,
1241                    )
1242                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1243                        &rust.wireEval4,
1244                    )
1245                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1246                        &rust.sigmaEval0,
1247                    )
1248                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1249                        &rust.sigmaEval1,
1250                    )
1251                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1252                        &rust.sigmaEval2,
1253                    )
1254                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1255                        &rust.sigmaEval3,
1256                    )
1257                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1258                        &rust.prodPermZetaOmegaEval,
1259                    )
1260            }
1261            #[inline]
1262            fn encode_topic_preimage(
1263                rust: &Self::RustType,
1264                out: &mut alloy_sol_types::private::Vec<u8>,
1265            ) {
1266                out.reserve(
1267                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1268                );
1269                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1270                    &rust.wire0,
1271                    out,
1272                );
1273                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1274                    &rust.wire1,
1275                    out,
1276                );
1277                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1278                    &rust.wire2,
1279                    out,
1280                );
1281                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1282                    &rust.wire3,
1283                    out,
1284                );
1285                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1286                    &rust.wire4,
1287                    out,
1288                );
1289                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1290                    &rust.prodPerm,
1291                    out,
1292                );
1293                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1294                    &rust.split0,
1295                    out,
1296                );
1297                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1298                    &rust.split1,
1299                    out,
1300                );
1301                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1302                    &rust.split2,
1303                    out,
1304                );
1305                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1306                    &rust.split3,
1307                    out,
1308                );
1309                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1310                    &rust.split4,
1311                    out,
1312                );
1313                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1314                    &rust.zeta,
1315                    out,
1316                );
1317                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1318                    &rust.zetaOmega,
1319                    out,
1320                );
1321                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1322                    &rust.wireEval0,
1323                    out,
1324                );
1325                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1326                    &rust.wireEval1,
1327                    out,
1328                );
1329                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1330                    &rust.wireEval2,
1331                    out,
1332                );
1333                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1334                    &rust.wireEval3,
1335                    out,
1336                );
1337                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1338                    &rust.wireEval4,
1339                    out,
1340                );
1341                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1342                    &rust.sigmaEval0,
1343                    out,
1344                );
1345                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1346                    &rust.sigmaEval1,
1347                    out,
1348                );
1349                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1350                    &rust.sigmaEval2,
1351                    out,
1352                );
1353                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1354                    &rust.sigmaEval3,
1355                    out,
1356                );
1357                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1358                    &rust.prodPermZetaOmegaEval,
1359                    out,
1360                );
1361            }
1362            #[inline]
1363            fn encode_topic(
1364                rust: &Self::RustType,
1365            ) -> alloy_sol_types::abi::token::WordToken {
1366                let mut out = alloy_sol_types::private::Vec::new();
1367                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1368                    rust,
1369                    &mut out,
1370                );
1371                alloy_sol_types::abi::token::WordToken(
1372                    alloy_sol_types::private::keccak256(out),
1373                )
1374            }
1375        }
1376    };
1377    #[derive(serde::Serialize, serde::Deserialize)]
1378    #[derive()]
1379    /**```solidity
1380struct VerifyingKey { uint256 domainSize; uint256 numInputs; BN254.G1Point sigma0; BN254.G1Point sigma1; BN254.G1Point sigma2; BN254.G1Point sigma3; BN254.G1Point sigma4; BN254.G1Point q1; BN254.G1Point q2; BN254.G1Point q3; BN254.G1Point q4; BN254.G1Point qM12; BN254.G1Point qM34; BN254.G1Point qO; BN254.G1Point qC; BN254.G1Point qH1; BN254.G1Point qH2; BN254.G1Point qH3; BN254.G1Point qH4; BN254.G1Point qEcc; bytes32 g2LSB; bytes32 g2MSB; }
1381```*/
1382    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1383    #[derive(Clone)]
1384    pub struct VerifyingKey {
1385        #[allow(missing_docs)]
1386        pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1387        #[allow(missing_docs)]
1388        pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1389        #[allow(missing_docs)]
1390        pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1391        #[allow(missing_docs)]
1392        pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1393        #[allow(missing_docs)]
1394        pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1395        #[allow(missing_docs)]
1396        pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1397        #[allow(missing_docs)]
1398        pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1399        #[allow(missing_docs)]
1400        pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1401        #[allow(missing_docs)]
1402        pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1403        #[allow(missing_docs)]
1404        pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1405        #[allow(missing_docs)]
1406        pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1407        #[allow(missing_docs)]
1408        pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1409        #[allow(missing_docs)]
1410        pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1411        #[allow(missing_docs)]
1412        pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1413        #[allow(missing_docs)]
1414        pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1415        #[allow(missing_docs)]
1416        pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1417        #[allow(missing_docs)]
1418        pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1419        #[allow(missing_docs)]
1420        pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1421        #[allow(missing_docs)]
1422        pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1423        #[allow(missing_docs)]
1424        pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1425        #[allow(missing_docs)]
1426        pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1427        #[allow(missing_docs)]
1428        pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1429    }
1430    #[allow(
1431        non_camel_case_types,
1432        non_snake_case,
1433        clippy::pub_underscore_fields,
1434        clippy::style
1435    )]
1436    const _: () = {
1437        use alloy::sol_types as alloy_sol_types;
1438        #[doc(hidden)]
1439        #[allow(dead_code)]
1440        type UnderlyingSolTuple<'a> = (
1441            alloy::sol_types::sol_data::Uint<256>,
1442            alloy::sol_types::sol_data::Uint<256>,
1443            BN254::G1Point,
1444            BN254::G1Point,
1445            BN254::G1Point,
1446            BN254::G1Point,
1447            BN254::G1Point,
1448            BN254::G1Point,
1449            BN254::G1Point,
1450            BN254::G1Point,
1451            BN254::G1Point,
1452            BN254::G1Point,
1453            BN254::G1Point,
1454            BN254::G1Point,
1455            BN254::G1Point,
1456            BN254::G1Point,
1457            BN254::G1Point,
1458            BN254::G1Point,
1459            BN254::G1Point,
1460            BN254::G1Point,
1461            alloy::sol_types::sol_data::FixedBytes<32>,
1462            alloy::sol_types::sol_data::FixedBytes<32>,
1463        );
1464        #[doc(hidden)]
1465        type UnderlyingRustTuple<'a> = (
1466            alloy::sol_types::private::primitives::aliases::U256,
1467            alloy::sol_types::private::primitives::aliases::U256,
1468            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1469            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1470            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1471            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1472            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1473            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1474            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1475            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1476            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1477            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1478            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1479            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1480            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1481            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1482            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1483            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1484            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1485            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1486            alloy::sol_types::private::FixedBytes<32>,
1487            alloy::sol_types::private::FixedBytes<32>,
1488        );
1489        #[cfg(test)]
1490        #[allow(dead_code, unreachable_patterns)]
1491        fn _type_assertion(
1492            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1493        ) {
1494            match _t {
1495                alloy_sol_types::private::AssertTypeEq::<
1496                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1497                >(_) => {}
1498            }
1499        }
1500        #[automatically_derived]
1501        #[doc(hidden)]
1502        impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1503            fn from(value: VerifyingKey) -> Self {
1504                (
1505                    value.domainSize,
1506                    value.numInputs,
1507                    value.sigma0,
1508                    value.sigma1,
1509                    value.sigma2,
1510                    value.sigma3,
1511                    value.sigma4,
1512                    value.q1,
1513                    value.q2,
1514                    value.q3,
1515                    value.q4,
1516                    value.qM12,
1517                    value.qM34,
1518                    value.qO,
1519                    value.qC,
1520                    value.qH1,
1521                    value.qH2,
1522                    value.qH3,
1523                    value.qH4,
1524                    value.qEcc,
1525                    value.g2LSB,
1526                    value.g2MSB,
1527                )
1528            }
1529        }
1530        #[automatically_derived]
1531        #[doc(hidden)]
1532        impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1533            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1534                Self {
1535                    domainSize: tuple.0,
1536                    numInputs: tuple.1,
1537                    sigma0: tuple.2,
1538                    sigma1: tuple.3,
1539                    sigma2: tuple.4,
1540                    sigma3: tuple.5,
1541                    sigma4: tuple.6,
1542                    q1: tuple.7,
1543                    q2: tuple.8,
1544                    q3: tuple.9,
1545                    q4: tuple.10,
1546                    qM12: tuple.11,
1547                    qM34: tuple.12,
1548                    qO: tuple.13,
1549                    qC: tuple.14,
1550                    qH1: tuple.15,
1551                    qH2: tuple.16,
1552                    qH3: tuple.17,
1553                    qH4: tuple.18,
1554                    qEcc: tuple.19,
1555                    g2LSB: tuple.20,
1556                    g2MSB: tuple.21,
1557                }
1558            }
1559        }
1560        #[automatically_derived]
1561        impl alloy_sol_types::SolValue for VerifyingKey {
1562            type SolType = Self;
1563        }
1564        #[automatically_derived]
1565        impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1566            #[inline]
1567            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1568                (
1569                    <alloy::sol_types::sol_data::Uint<
1570                        256,
1571                    > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1572                    <alloy::sol_types::sol_data::Uint<
1573                        256,
1574                    > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1575                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1576                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1577                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1578                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1579                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1580                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1581                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1582                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1583                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1584                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1585                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1586                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1587                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1588                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1589                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1590                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1591                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1592                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1593                    <alloy::sol_types::sol_data::FixedBytes<
1594                        32,
1595                    > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1596                    <alloy::sol_types::sol_data::FixedBytes<
1597                        32,
1598                    > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1599                )
1600            }
1601            #[inline]
1602            fn stv_abi_encoded_size(&self) -> usize {
1603                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1604                    return size;
1605                }
1606                let tuple = <UnderlyingRustTuple<
1607                    '_,
1608                > as ::core::convert::From<Self>>::from(self.clone());
1609                <UnderlyingSolTuple<
1610                    '_,
1611                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1612            }
1613            #[inline]
1614            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1615                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1616            }
1617            #[inline]
1618            fn stv_abi_encode_packed_to(
1619                &self,
1620                out: &mut alloy_sol_types::private::Vec<u8>,
1621            ) {
1622                let tuple = <UnderlyingRustTuple<
1623                    '_,
1624                > as ::core::convert::From<Self>>::from(self.clone());
1625                <UnderlyingSolTuple<
1626                    '_,
1627                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1628            }
1629            #[inline]
1630            fn stv_abi_packed_encoded_size(&self) -> usize {
1631                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1632                    return size;
1633                }
1634                let tuple = <UnderlyingRustTuple<
1635                    '_,
1636                > as ::core::convert::From<Self>>::from(self.clone());
1637                <UnderlyingSolTuple<
1638                    '_,
1639                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1640            }
1641        }
1642        #[automatically_derived]
1643        impl alloy_sol_types::SolType for VerifyingKey {
1644            type RustType = Self;
1645            type Token<'a> = <UnderlyingSolTuple<
1646                'a,
1647            > as alloy_sol_types::SolType>::Token<'a>;
1648            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1649            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1650                '_,
1651            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1652            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1653                '_,
1654            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1655            #[inline]
1656            fn valid_token(token: &Self::Token<'_>) -> bool {
1657                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1658            }
1659            #[inline]
1660            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1661                let tuple = <UnderlyingSolTuple<
1662                    '_,
1663                > as alloy_sol_types::SolType>::detokenize(token);
1664                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1665            }
1666        }
1667        #[automatically_derived]
1668        impl alloy_sol_types::SolStruct for VerifyingKey {
1669            const NAME: &'static str = "VerifyingKey";
1670            #[inline]
1671            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1672                alloy_sol_types::private::Cow::Borrowed(
1673                    "VerifyingKey(uint256 domainSize,uint256 numInputs,G1Point sigma0,G1Point sigma1,G1Point sigma2,G1Point sigma3,G1Point sigma4,G1Point q1,G1Point q2,G1Point q3,G1Point q4,G1Point qM12,G1Point qM34,G1Point qO,G1Point qC,G1Point qH1,G1Point qH2,G1Point qH3,G1Point qH4,G1Point qEcc,bytes32 g2LSB,bytes32 g2MSB)",
1674                )
1675            }
1676            #[inline]
1677            fn eip712_components() -> alloy_sol_types::private::Vec<
1678                alloy_sol_types::private::Cow<'static, str>,
1679            > {
1680                let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1681                components
1682                    .push(
1683                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1684                    );
1685                components
1686                    .extend(
1687                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1688                    );
1689                components
1690                    .push(
1691                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1692                    );
1693                components
1694                    .extend(
1695                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1696                    );
1697                components
1698                    .push(
1699                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1700                    );
1701                components
1702                    .extend(
1703                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1704                    );
1705                components
1706                    .push(
1707                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1708                    );
1709                components
1710                    .extend(
1711                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1712                    );
1713                components
1714                    .push(
1715                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1716                    );
1717                components
1718                    .extend(
1719                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1720                    );
1721                components
1722                    .push(
1723                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1724                    );
1725                components
1726                    .extend(
1727                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1728                    );
1729                components
1730                    .push(
1731                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1732                    );
1733                components
1734                    .extend(
1735                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1736                    );
1737                components
1738                    .push(
1739                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1740                    );
1741                components
1742                    .extend(
1743                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1744                    );
1745                components
1746                    .push(
1747                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1748                    );
1749                components
1750                    .extend(
1751                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1752                    );
1753                components
1754                    .push(
1755                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1756                    );
1757                components
1758                    .extend(
1759                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1760                    );
1761                components
1762                    .push(
1763                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1764                    );
1765                components
1766                    .extend(
1767                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1768                    );
1769                components
1770                    .push(
1771                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1772                    );
1773                components
1774                    .extend(
1775                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1776                    );
1777                components
1778                    .push(
1779                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1780                    );
1781                components
1782                    .extend(
1783                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1784                    );
1785                components
1786                    .push(
1787                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1788                    );
1789                components
1790                    .extend(
1791                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1792                    );
1793                components
1794                    .push(
1795                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1796                    );
1797                components
1798                    .extend(
1799                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1800                    );
1801                components
1802                    .push(
1803                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1804                    );
1805                components
1806                    .extend(
1807                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1808                    );
1809                components
1810                    .push(
1811                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1812                    );
1813                components
1814                    .extend(
1815                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1816                    );
1817                components
1818                    .push(
1819                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1820                    );
1821                components
1822                    .extend(
1823                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1824                    );
1825                components
1826            }
1827            #[inline]
1828            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1829                [
1830                    <alloy::sol_types::sol_data::Uint<
1831                        256,
1832                    > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1833                        .0,
1834                    <alloy::sol_types::sol_data::Uint<
1835                        256,
1836                    > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1837                        .0,
1838                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1839                            &self.sigma0,
1840                        )
1841                        .0,
1842                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1843                            &self.sigma1,
1844                        )
1845                        .0,
1846                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1847                            &self.sigma2,
1848                        )
1849                        .0,
1850                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1851                            &self.sigma3,
1852                        )
1853                        .0,
1854                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1855                            &self.sigma4,
1856                        )
1857                        .0,
1858                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1859                            &self.q1,
1860                        )
1861                        .0,
1862                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1863                            &self.q2,
1864                        )
1865                        .0,
1866                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1867                            &self.q3,
1868                        )
1869                        .0,
1870                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1871                            &self.q4,
1872                        )
1873                        .0,
1874                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1875                            &self.qM12,
1876                        )
1877                        .0,
1878                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1879                            &self.qM34,
1880                        )
1881                        .0,
1882                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1883                            &self.qO,
1884                        )
1885                        .0,
1886                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1887                            &self.qC,
1888                        )
1889                        .0,
1890                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1891                            &self.qH1,
1892                        )
1893                        .0,
1894                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1895                            &self.qH2,
1896                        )
1897                        .0,
1898                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1899                            &self.qH3,
1900                        )
1901                        .0,
1902                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1903                            &self.qH4,
1904                        )
1905                        .0,
1906                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1907                            &self.qEcc,
1908                        )
1909                        .0,
1910                    <alloy::sol_types::sol_data::FixedBytes<
1911                        32,
1912                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1913                        .0,
1914                    <alloy::sol_types::sol_data::FixedBytes<
1915                        32,
1916                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1917                        .0,
1918                ]
1919                    .concat()
1920            }
1921        }
1922        #[automatically_derived]
1923        impl alloy_sol_types::EventTopic for VerifyingKey {
1924            #[inline]
1925            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1926                0usize
1927                    + <alloy::sol_types::sol_data::Uint<
1928                        256,
1929                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1930                        &rust.domainSize,
1931                    )
1932                    + <alloy::sol_types::sol_data::Uint<
1933                        256,
1934                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1935                        &rust.numInputs,
1936                    )
1937                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1938                        &rust.sigma0,
1939                    )
1940                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1941                        &rust.sigma1,
1942                    )
1943                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1944                        &rust.sigma2,
1945                    )
1946                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1947                        &rust.sigma3,
1948                    )
1949                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1950                        &rust.sigma4,
1951                    )
1952                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1953                        &rust.q1,
1954                    )
1955                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1956                        &rust.q2,
1957                    )
1958                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1959                        &rust.q3,
1960                    )
1961                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1962                        &rust.q4,
1963                    )
1964                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1965                        &rust.qM12,
1966                    )
1967                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1968                        &rust.qM34,
1969                    )
1970                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1971                        &rust.qO,
1972                    )
1973                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1974                        &rust.qC,
1975                    )
1976                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1977                        &rust.qH1,
1978                    )
1979                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1980                        &rust.qH2,
1981                    )
1982                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1983                        &rust.qH3,
1984                    )
1985                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1986                        &rust.qH4,
1987                    )
1988                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1989                        &rust.qEcc,
1990                    )
1991                    + <alloy::sol_types::sol_data::FixedBytes<
1992                        32,
1993                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1994                    + <alloy::sol_types::sol_data::FixedBytes<
1995                        32,
1996                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1997            }
1998            #[inline]
1999            fn encode_topic_preimage(
2000                rust: &Self::RustType,
2001                out: &mut alloy_sol_types::private::Vec<u8>,
2002            ) {
2003                out.reserve(
2004                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2005                );
2006                <alloy::sol_types::sol_data::Uint<
2007                    256,
2008                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2009                    &rust.domainSize,
2010                    out,
2011                );
2012                <alloy::sol_types::sol_data::Uint<
2013                    256,
2014                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2015                    &rust.numInputs,
2016                    out,
2017                );
2018                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2019                    &rust.sigma0,
2020                    out,
2021                );
2022                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2023                    &rust.sigma1,
2024                    out,
2025                );
2026                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2027                    &rust.sigma2,
2028                    out,
2029                );
2030                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2031                    &rust.sigma3,
2032                    out,
2033                );
2034                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2035                    &rust.sigma4,
2036                    out,
2037                );
2038                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2039                    &rust.q1,
2040                    out,
2041                );
2042                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2043                    &rust.q2,
2044                    out,
2045                );
2046                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2047                    &rust.q3,
2048                    out,
2049                );
2050                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2051                    &rust.q4,
2052                    out,
2053                );
2054                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2055                    &rust.qM12,
2056                    out,
2057                );
2058                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2059                    &rust.qM34,
2060                    out,
2061                );
2062                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2063                    &rust.qO,
2064                    out,
2065                );
2066                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2067                    &rust.qC,
2068                    out,
2069                );
2070                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2071                    &rust.qH1,
2072                    out,
2073                );
2074                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2075                    &rust.qH2,
2076                    out,
2077                );
2078                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2079                    &rust.qH3,
2080                    out,
2081                );
2082                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2083                    &rust.qH4,
2084                    out,
2085                );
2086                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2087                    &rust.qEcc,
2088                    out,
2089                );
2090                <alloy::sol_types::sol_data::FixedBytes<
2091                    32,
2092                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2093                    &rust.g2LSB,
2094                    out,
2095                );
2096                <alloy::sol_types::sol_data::FixedBytes<
2097                    32,
2098                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2099                    &rust.g2MSB,
2100                    out,
2101                );
2102            }
2103            #[inline]
2104            fn encode_topic(
2105                rust: &Self::RustType,
2106            ) -> alloy_sol_types::abi::token::WordToken {
2107                let mut out = alloy_sol_types::private::Vec::new();
2108                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2109                    rust,
2110                    &mut out,
2111                );
2112                alloy_sol_types::abi::token::WordToken(
2113                    alloy_sol_types::private::keccak256(out),
2114                )
2115            }
2116        }
2117    };
2118    use alloy::contract as alloy_contract;
2119    /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2120
2121See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2122    #[inline]
2123    pub const fn new<
2124        P: alloy_contract::private::Provider<N>,
2125        N: alloy_contract::private::Network,
2126    >(
2127        address: alloy_sol_types::private::Address,
2128        __provider: P,
2129    ) -> IPlonkVerifierInstance<P, N> {
2130        IPlonkVerifierInstance::<P, N>::new(address, __provider)
2131    }
2132    /**A [`IPlonkVerifier`](self) instance.
2133
2134Contains type-safe methods for interacting with an on-chain instance of the
2135[`IPlonkVerifier`](self) contract located at a given `address`, using a given
2136provider `P`.
2137
2138If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2139documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2140be used to deploy a new instance of the contract.
2141
2142See the [module-level documentation](self) for all the available methods.*/
2143    #[derive(Clone)]
2144    pub struct IPlonkVerifierInstance<P, N = alloy_contract::private::Ethereum> {
2145        address: alloy_sol_types::private::Address,
2146        provider: P,
2147        _network: ::core::marker::PhantomData<N>,
2148    }
2149    #[automatically_derived]
2150    impl<P, N> ::core::fmt::Debug for IPlonkVerifierInstance<P, N> {
2151        #[inline]
2152        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2153            f.debug_tuple("IPlonkVerifierInstance").field(&self.address).finish()
2154        }
2155    }
2156    /// Instantiation and getters/setters.
2157    #[automatically_derived]
2158    impl<
2159        P: alloy_contract::private::Provider<N>,
2160        N: alloy_contract::private::Network,
2161    > IPlonkVerifierInstance<P, N> {
2162        /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2163
2164See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2165        #[inline]
2166        pub const fn new(
2167            address: alloy_sol_types::private::Address,
2168            __provider: P,
2169        ) -> Self {
2170            Self {
2171                address,
2172                provider: __provider,
2173                _network: ::core::marker::PhantomData,
2174            }
2175        }
2176        /// Returns a reference to the address.
2177        #[inline]
2178        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2179            &self.address
2180        }
2181        /// Sets the address.
2182        #[inline]
2183        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2184            self.address = address;
2185        }
2186        /// Sets the address and returns `self`.
2187        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2188            self.set_address(address);
2189            self
2190        }
2191        /// Returns a reference to the provider.
2192        #[inline]
2193        pub const fn provider(&self) -> &P {
2194            &self.provider
2195        }
2196    }
2197    impl<P: ::core::clone::Clone, N> IPlonkVerifierInstance<&P, N> {
2198        /// Clones the provider and returns a new instance with the cloned provider.
2199        #[inline]
2200        pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<P, N> {
2201            IPlonkVerifierInstance {
2202                address: self.address,
2203                provider: ::core::clone::Clone::clone(&self.provider),
2204                _network: ::core::marker::PhantomData,
2205            }
2206        }
2207    }
2208    /// Function calls.
2209    #[automatically_derived]
2210    impl<
2211        P: alloy_contract::private::Provider<N>,
2212        N: alloy_contract::private::Network,
2213    > IPlonkVerifierInstance<P, N> {
2214        /// Creates a new call builder using this contract instance's provider and address.
2215        ///
2216        /// Note that the call can be any function call, not just those defined in this
2217        /// contract. Prefer using the other methods for building type-safe contract calls.
2218        pub fn call_builder<C: alloy_sol_types::SolCall>(
2219            &self,
2220            call: &C,
2221        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2222            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2223        }
2224    }
2225    /// Event filters.
2226    #[automatically_derived]
2227    impl<
2228        P: alloy_contract::private::Provider<N>,
2229        N: alloy_contract::private::Network,
2230    > IPlonkVerifierInstance<P, N> {
2231        /// Creates a new event filter using this contract instance's provider and address.
2232        ///
2233        /// Note that the type can be any event, not just those defined in this contract.
2234        /// Prefer using the other methods for building type-safe event filters.
2235        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2236            &self,
2237        ) -> alloy_contract::Event<&P, E, N> {
2238            alloy_contract::Event::new_sol(&self.provider, &self.address)
2239        }
2240    }
2241}
2242/**
2243
2244Generated by the following Solidity interface...
2245```solidity
2246library BN254 {
2247    type BaseField is uint256;
2248    type ScalarField is uint256;
2249    struct G1Point {
2250        BaseField x;
2251        BaseField y;
2252    }
2253}
2254
2255library IPlonkVerifier {
2256    struct PlonkProof {
2257        BN254.G1Point wire0;
2258        BN254.G1Point wire1;
2259        BN254.G1Point wire2;
2260        BN254.G1Point wire3;
2261        BN254.G1Point wire4;
2262        BN254.G1Point prodPerm;
2263        BN254.G1Point split0;
2264        BN254.G1Point split1;
2265        BN254.G1Point split2;
2266        BN254.G1Point split3;
2267        BN254.G1Point split4;
2268        BN254.G1Point zeta;
2269        BN254.G1Point zetaOmega;
2270        BN254.ScalarField wireEval0;
2271        BN254.ScalarField wireEval1;
2272        BN254.ScalarField wireEval2;
2273        BN254.ScalarField wireEval3;
2274        BN254.ScalarField wireEval4;
2275        BN254.ScalarField sigmaEval0;
2276        BN254.ScalarField sigmaEval1;
2277        BN254.ScalarField sigmaEval2;
2278        BN254.ScalarField sigmaEval3;
2279        BN254.ScalarField prodPermZetaOmegaEval;
2280    }
2281    struct VerifyingKey {
2282        uint256 domainSize;
2283        uint256 numInputs;
2284        BN254.G1Point sigma0;
2285        BN254.G1Point sigma1;
2286        BN254.G1Point sigma2;
2287        BN254.G1Point sigma3;
2288        BN254.G1Point sigma4;
2289        BN254.G1Point q1;
2290        BN254.G1Point q2;
2291        BN254.G1Point q3;
2292        BN254.G1Point q4;
2293        BN254.G1Point qM12;
2294        BN254.G1Point qM34;
2295        BN254.G1Point qO;
2296        BN254.G1Point qC;
2297        BN254.G1Point qH1;
2298        BN254.G1Point qH2;
2299        BN254.G1Point qH3;
2300        BN254.G1Point qH4;
2301        BN254.G1Point qEcc;
2302        bytes32 g2LSB;
2303        bytes32 g2MSB;
2304    }
2305}
2306
2307interface LightClient {
2308    struct LightClientState {
2309        uint64 viewNum;
2310        uint64 blockHeight;
2311        BN254.ScalarField blockCommRoot;
2312    }
2313    struct StakeTableState {
2314        uint256 threshold;
2315        BN254.ScalarField blsKeyComm;
2316        BN254.ScalarField schnorrKeyComm;
2317        BN254.ScalarField amountComm;
2318    }
2319
2320    error AddressEmptyCode(address target);
2321    error ERC1967InvalidImplementation(address implementation);
2322    error ERC1967NonPayable();
2323    error FailedInnerCall();
2324    error InsufficientSnapshotHistory();
2325    error InvalidAddress();
2326    error InvalidArgs();
2327    error InvalidHotShotBlockForCommitmentCheck();
2328    error InvalidInitialization();
2329    error InvalidMaxStateHistory();
2330    error InvalidProof();
2331    error InvalidScalar();
2332    error NoChangeRequired();
2333    error NotInitializing();
2334    error OutdatedState();
2335    error OwnableInvalidOwner(address owner);
2336    error OwnableUnauthorizedAccount(address account);
2337    error ProverNotPermissioned();
2338    error UUPSUnauthorizedCallContext();
2339    error UUPSUnsupportedProxiableUUID(bytes32 slot);
2340    error WrongStakeTableUsed();
2341
2342    event Initialized(uint64 version);
2343    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
2344    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
2345    event PermissionedProverNotRequired();
2346    event PermissionedProverRequired(address permissionedProver);
2347    event Upgrade(address implementation);
2348    event Upgraded(address indexed implementation);
2349
2350    constructor();
2351
2352    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
2353    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
2354    function currentBlockNumber() external view returns (uint256);
2355    function disablePermissionedProverMode() external;
2356    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
2357    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
2358    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
2359    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
2360    function getStateHistoryCount() external view returns (uint256);
2361    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
2362    function initialize(LightClientState memory _genesis, StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
2363    function isPermissionedProverEnabled() external view returns (bool);
2364    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
2365    function newFinalizedState(LightClientState memory newState, IPlonkVerifier.PlonkProof memory proof) external;
2366    function owner() external view returns (address);
2367    function permissionedProver() external view returns (address);
2368    function proxiableUUID() external view returns (bytes32);
2369    function renounceOwnership() external;
2370    function setPermissionedProver(address prover) external;
2371    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
2372    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
2373    function stateHistoryFirstIndex() external view returns (uint64);
2374    function stateHistoryRetentionPeriod() external view returns (uint32);
2375    function transferOwnership(address newOwner) external;
2376    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
2377}
2378```
2379
2380...which was generated by the following JSON ABI:
2381```json
2382[
2383  {
2384    "type": "constructor",
2385    "inputs": [],
2386    "stateMutability": "nonpayable"
2387  },
2388  {
2389    "type": "function",
2390    "name": "UPGRADE_INTERFACE_VERSION",
2391    "inputs": [],
2392    "outputs": [
2393      {
2394        "name": "",
2395        "type": "string",
2396        "internalType": "string"
2397      }
2398    ],
2399    "stateMutability": "view"
2400  },
2401  {
2402    "type": "function",
2403    "name": "_getVk",
2404    "inputs": [],
2405    "outputs": [
2406      {
2407        "name": "vk",
2408        "type": "tuple",
2409        "internalType": "struct IPlonkVerifier.VerifyingKey",
2410        "components": [
2411          {
2412            "name": "domainSize",
2413            "type": "uint256",
2414            "internalType": "uint256"
2415          },
2416          {
2417            "name": "numInputs",
2418            "type": "uint256",
2419            "internalType": "uint256"
2420          },
2421          {
2422            "name": "sigma0",
2423            "type": "tuple",
2424            "internalType": "struct BN254.G1Point",
2425            "components": [
2426              {
2427                "name": "x",
2428                "type": "uint256",
2429                "internalType": "BN254.BaseField"
2430              },
2431              {
2432                "name": "y",
2433                "type": "uint256",
2434                "internalType": "BN254.BaseField"
2435              }
2436            ]
2437          },
2438          {
2439            "name": "sigma1",
2440            "type": "tuple",
2441            "internalType": "struct BN254.G1Point",
2442            "components": [
2443              {
2444                "name": "x",
2445                "type": "uint256",
2446                "internalType": "BN254.BaseField"
2447              },
2448              {
2449                "name": "y",
2450                "type": "uint256",
2451                "internalType": "BN254.BaseField"
2452              }
2453            ]
2454          },
2455          {
2456            "name": "sigma2",
2457            "type": "tuple",
2458            "internalType": "struct BN254.G1Point",
2459            "components": [
2460              {
2461                "name": "x",
2462                "type": "uint256",
2463                "internalType": "BN254.BaseField"
2464              },
2465              {
2466                "name": "y",
2467                "type": "uint256",
2468                "internalType": "BN254.BaseField"
2469              }
2470            ]
2471          },
2472          {
2473            "name": "sigma3",
2474            "type": "tuple",
2475            "internalType": "struct BN254.G1Point",
2476            "components": [
2477              {
2478                "name": "x",
2479                "type": "uint256",
2480                "internalType": "BN254.BaseField"
2481              },
2482              {
2483                "name": "y",
2484                "type": "uint256",
2485                "internalType": "BN254.BaseField"
2486              }
2487            ]
2488          },
2489          {
2490            "name": "sigma4",
2491            "type": "tuple",
2492            "internalType": "struct BN254.G1Point",
2493            "components": [
2494              {
2495                "name": "x",
2496                "type": "uint256",
2497                "internalType": "BN254.BaseField"
2498              },
2499              {
2500                "name": "y",
2501                "type": "uint256",
2502                "internalType": "BN254.BaseField"
2503              }
2504            ]
2505          },
2506          {
2507            "name": "q1",
2508            "type": "tuple",
2509            "internalType": "struct BN254.G1Point",
2510            "components": [
2511              {
2512                "name": "x",
2513                "type": "uint256",
2514                "internalType": "BN254.BaseField"
2515              },
2516              {
2517                "name": "y",
2518                "type": "uint256",
2519                "internalType": "BN254.BaseField"
2520              }
2521            ]
2522          },
2523          {
2524            "name": "q2",
2525            "type": "tuple",
2526            "internalType": "struct BN254.G1Point",
2527            "components": [
2528              {
2529                "name": "x",
2530                "type": "uint256",
2531                "internalType": "BN254.BaseField"
2532              },
2533              {
2534                "name": "y",
2535                "type": "uint256",
2536                "internalType": "BN254.BaseField"
2537              }
2538            ]
2539          },
2540          {
2541            "name": "q3",
2542            "type": "tuple",
2543            "internalType": "struct BN254.G1Point",
2544            "components": [
2545              {
2546                "name": "x",
2547                "type": "uint256",
2548                "internalType": "BN254.BaseField"
2549              },
2550              {
2551                "name": "y",
2552                "type": "uint256",
2553                "internalType": "BN254.BaseField"
2554              }
2555            ]
2556          },
2557          {
2558            "name": "q4",
2559            "type": "tuple",
2560            "internalType": "struct BN254.G1Point",
2561            "components": [
2562              {
2563                "name": "x",
2564                "type": "uint256",
2565                "internalType": "BN254.BaseField"
2566              },
2567              {
2568                "name": "y",
2569                "type": "uint256",
2570                "internalType": "BN254.BaseField"
2571              }
2572            ]
2573          },
2574          {
2575            "name": "qM12",
2576            "type": "tuple",
2577            "internalType": "struct BN254.G1Point",
2578            "components": [
2579              {
2580                "name": "x",
2581                "type": "uint256",
2582                "internalType": "BN254.BaseField"
2583              },
2584              {
2585                "name": "y",
2586                "type": "uint256",
2587                "internalType": "BN254.BaseField"
2588              }
2589            ]
2590          },
2591          {
2592            "name": "qM34",
2593            "type": "tuple",
2594            "internalType": "struct BN254.G1Point",
2595            "components": [
2596              {
2597                "name": "x",
2598                "type": "uint256",
2599                "internalType": "BN254.BaseField"
2600              },
2601              {
2602                "name": "y",
2603                "type": "uint256",
2604                "internalType": "BN254.BaseField"
2605              }
2606            ]
2607          },
2608          {
2609            "name": "qO",
2610            "type": "tuple",
2611            "internalType": "struct BN254.G1Point",
2612            "components": [
2613              {
2614                "name": "x",
2615                "type": "uint256",
2616                "internalType": "BN254.BaseField"
2617              },
2618              {
2619                "name": "y",
2620                "type": "uint256",
2621                "internalType": "BN254.BaseField"
2622              }
2623            ]
2624          },
2625          {
2626            "name": "qC",
2627            "type": "tuple",
2628            "internalType": "struct BN254.G1Point",
2629            "components": [
2630              {
2631                "name": "x",
2632                "type": "uint256",
2633                "internalType": "BN254.BaseField"
2634              },
2635              {
2636                "name": "y",
2637                "type": "uint256",
2638                "internalType": "BN254.BaseField"
2639              }
2640            ]
2641          },
2642          {
2643            "name": "qH1",
2644            "type": "tuple",
2645            "internalType": "struct BN254.G1Point",
2646            "components": [
2647              {
2648                "name": "x",
2649                "type": "uint256",
2650                "internalType": "BN254.BaseField"
2651              },
2652              {
2653                "name": "y",
2654                "type": "uint256",
2655                "internalType": "BN254.BaseField"
2656              }
2657            ]
2658          },
2659          {
2660            "name": "qH2",
2661            "type": "tuple",
2662            "internalType": "struct BN254.G1Point",
2663            "components": [
2664              {
2665                "name": "x",
2666                "type": "uint256",
2667                "internalType": "BN254.BaseField"
2668              },
2669              {
2670                "name": "y",
2671                "type": "uint256",
2672                "internalType": "BN254.BaseField"
2673              }
2674            ]
2675          },
2676          {
2677            "name": "qH3",
2678            "type": "tuple",
2679            "internalType": "struct BN254.G1Point",
2680            "components": [
2681              {
2682                "name": "x",
2683                "type": "uint256",
2684                "internalType": "BN254.BaseField"
2685              },
2686              {
2687                "name": "y",
2688                "type": "uint256",
2689                "internalType": "BN254.BaseField"
2690              }
2691            ]
2692          },
2693          {
2694            "name": "qH4",
2695            "type": "tuple",
2696            "internalType": "struct BN254.G1Point",
2697            "components": [
2698              {
2699                "name": "x",
2700                "type": "uint256",
2701                "internalType": "BN254.BaseField"
2702              },
2703              {
2704                "name": "y",
2705                "type": "uint256",
2706                "internalType": "BN254.BaseField"
2707              }
2708            ]
2709          },
2710          {
2711            "name": "qEcc",
2712            "type": "tuple",
2713            "internalType": "struct BN254.G1Point",
2714            "components": [
2715              {
2716                "name": "x",
2717                "type": "uint256",
2718                "internalType": "BN254.BaseField"
2719              },
2720              {
2721                "name": "y",
2722                "type": "uint256",
2723                "internalType": "BN254.BaseField"
2724              }
2725            ]
2726          },
2727          {
2728            "name": "g2LSB",
2729            "type": "bytes32",
2730            "internalType": "bytes32"
2731          },
2732          {
2733            "name": "g2MSB",
2734            "type": "bytes32",
2735            "internalType": "bytes32"
2736          }
2737        ]
2738      }
2739    ],
2740    "stateMutability": "pure"
2741  },
2742  {
2743    "type": "function",
2744    "name": "currentBlockNumber",
2745    "inputs": [],
2746    "outputs": [
2747      {
2748        "name": "",
2749        "type": "uint256",
2750        "internalType": "uint256"
2751      }
2752    ],
2753    "stateMutability": "view"
2754  },
2755  {
2756    "type": "function",
2757    "name": "disablePermissionedProverMode",
2758    "inputs": [],
2759    "outputs": [],
2760    "stateMutability": "nonpayable"
2761  },
2762  {
2763    "type": "function",
2764    "name": "finalizedState",
2765    "inputs": [],
2766    "outputs": [
2767      {
2768        "name": "viewNum",
2769        "type": "uint64",
2770        "internalType": "uint64"
2771      },
2772      {
2773        "name": "blockHeight",
2774        "type": "uint64",
2775        "internalType": "uint64"
2776      },
2777      {
2778        "name": "blockCommRoot",
2779        "type": "uint256",
2780        "internalType": "BN254.ScalarField"
2781      }
2782    ],
2783    "stateMutability": "view"
2784  },
2785  {
2786    "type": "function",
2787    "name": "genesisStakeTableState",
2788    "inputs": [],
2789    "outputs": [
2790      {
2791        "name": "threshold",
2792        "type": "uint256",
2793        "internalType": "uint256"
2794      },
2795      {
2796        "name": "blsKeyComm",
2797        "type": "uint256",
2798        "internalType": "BN254.ScalarField"
2799      },
2800      {
2801        "name": "schnorrKeyComm",
2802        "type": "uint256",
2803        "internalType": "BN254.ScalarField"
2804      },
2805      {
2806        "name": "amountComm",
2807        "type": "uint256",
2808        "internalType": "BN254.ScalarField"
2809      }
2810    ],
2811    "stateMutability": "view"
2812  },
2813  {
2814    "type": "function",
2815    "name": "genesisState",
2816    "inputs": [],
2817    "outputs": [
2818      {
2819        "name": "viewNum",
2820        "type": "uint64",
2821        "internalType": "uint64"
2822      },
2823      {
2824        "name": "blockHeight",
2825        "type": "uint64",
2826        "internalType": "uint64"
2827      },
2828      {
2829        "name": "blockCommRoot",
2830        "type": "uint256",
2831        "internalType": "BN254.ScalarField"
2832      }
2833    ],
2834    "stateMutability": "view"
2835  },
2836  {
2837    "type": "function",
2838    "name": "getHotShotCommitment",
2839    "inputs": [
2840      {
2841        "name": "hotShotBlockHeight",
2842        "type": "uint256",
2843        "internalType": "uint256"
2844      }
2845    ],
2846    "outputs": [
2847      {
2848        "name": "hotShotBlockCommRoot",
2849        "type": "uint256",
2850        "internalType": "BN254.ScalarField"
2851      },
2852      {
2853        "name": "hotshotBlockHeight",
2854        "type": "uint64",
2855        "internalType": "uint64"
2856      }
2857    ],
2858    "stateMutability": "view"
2859  },
2860  {
2861    "type": "function",
2862    "name": "getStateHistoryCount",
2863    "inputs": [],
2864    "outputs": [
2865      {
2866        "name": "",
2867        "type": "uint256",
2868        "internalType": "uint256"
2869      }
2870    ],
2871    "stateMutability": "view"
2872  },
2873  {
2874    "type": "function",
2875    "name": "getVersion",
2876    "inputs": [],
2877    "outputs": [
2878      {
2879        "name": "majorVersion",
2880        "type": "uint8",
2881        "internalType": "uint8"
2882      },
2883      {
2884        "name": "minorVersion",
2885        "type": "uint8",
2886        "internalType": "uint8"
2887      },
2888      {
2889        "name": "patchVersion",
2890        "type": "uint8",
2891        "internalType": "uint8"
2892      }
2893    ],
2894    "stateMutability": "pure"
2895  },
2896  {
2897    "type": "function",
2898    "name": "initialize",
2899    "inputs": [
2900      {
2901        "name": "_genesis",
2902        "type": "tuple",
2903        "internalType": "struct LightClient.LightClientState",
2904        "components": [
2905          {
2906            "name": "viewNum",
2907            "type": "uint64",
2908            "internalType": "uint64"
2909          },
2910          {
2911            "name": "blockHeight",
2912            "type": "uint64",
2913            "internalType": "uint64"
2914          },
2915          {
2916            "name": "blockCommRoot",
2917            "type": "uint256",
2918            "internalType": "BN254.ScalarField"
2919          }
2920        ]
2921      },
2922      {
2923        "name": "_genesisStakeTableState",
2924        "type": "tuple",
2925        "internalType": "struct LightClient.StakeTableState",
2926        "components": [
2927          {
2928            "name": "threshold",
2929            "type": "uint256",
2930            "internalType": "uint256"
2931          },
2932          {
2933            "name": "blsKeyComm",
2934            "type": "uint256",
2935            "internalType": "BN254.ScalarField"
2936          },
2937          {
2938            "name": "schnorrKeyComm",
2939            "type": "uint256",
2940            "internalType": "BN254.ScalarField"
2941          },
2942          {
2943            "name": "amountComm",
2944            "type": "uint256",
2945            "internalType": "BN254.ScalarField"
2946          }
2947        ]
2948      },
2949      {
2950        "name": "_stateHistoryRetentionPeriod",
2951        "type": "uint32",
2952        "internalType": "uint32"
2953      },
2954      {
2955        "name": "owner",
2956        "type": "address",
2957        "internalType": "address"
2958      }
2959    ],
2960    "outputs": [],
2961    "stateMutability": "nonpayable"
2962  },
2963  {
2964    "type": "function",
2965    "name": "isPermissionedProverEnabled",
2966    "inputs": [],
2967    "outputs": [
2968      {
2969        "name": "",
2970        "type": "bool",
2971        "internalType": "bool"
2972      }
2973    ],
2974    "stateMutability": "view"
2975  },
2976  {
2977    "type": "function",
2978    "name": "lagOverEscapeHatchThreshold",
2979    "inputs": [
2980      {
2981        "name": "blockNumber",
2982        "type": "uint256",
2983        "internalType": "uint256"
2984      },
2985      {
2986        "name": "blockThreshold",
2987        "type": "uint256",
2988        "internalType": "uint256"
2989      }
2990    ],
2991    "outputs": [
2992      {
2993        "name": "",
2994        "type": "bool",
2995        "internalType": "bool"
2996      }
2997    ],
2998    "stateMutability": "view"
2999  },
3000  {
3001    "type": "function",
3002    "name": "newFinalizedState",
3003    "inputs": [
3004      {
3005        "name": "newState",
3006        "type": "tuple",
3007        "internalType": "struct LightClient.LightClientState",
3008        "components": [
3009          {
3010            "name": "viewNum",
3011            "type": "uint64",
3012            "internalType": "uint64"
3013          },
3014          {
3015            "name": "blockHeight",
3016            "type": "uint64",
3017            "internalType": "uint64"
3018          },
3019          {
3020            "name": "blockCommRoot",
3021            "type": "uint256",
3022            "internalType": "BN254.ScalarField"
3023          }
3024        ]
3025      },
3026      {
3027        "name": "proof",
3028        "type": "tuple",
3029        "internalType": "struct IPlonkVerifier.PlonkProof",
3030        "components": [
3031          {
3032            "name": "wire0",
3033            "type": "tuple",
3034            "internalType": "struct BN254.G1Point",
3035            "components": [
3036              {
3037                "name": "x",
3038                "type": "uint256",
3039                "internalType": "BN254.BaseField"
3040              },
3041              {
3042                "name": "y",
3043                "type": "uint256",
3044                "internalType": "BN254.BaseField"
3045              }
3046            ]
3047          },
3048          {
3049            "name": "wire1",
3050            "type": "tuple",
3051            "internalType": "struct BN254.G1Point",
3052            "components": [
3053              {
3054                "name": "x",
3055                "type": "uint256",
3056                "internalType": "BN254.BaseField"
3057              },
3058              {
3059                "name": "y",
3060                "type": "uint256",
3061                "internalType": "BN254.BaseField"
3062              }
3063            ]
3064          },
3065          {
3066            "name": "wire2",
3067            "type": "tuple",
3068            "internalType": "struct BN254.G1Point",
3069            "components": [
3070              {
3071                "name": "x",
3072                "type": "uint256",
3073                "internalType": "BN254.BaseField"
3074              },
3075              {
3076                "name": "y",
3077                "type": "uint256",
3078                "internalType": "BN254.BaseField"
3079              }
3080            ]
3081          },
3082          {
3083            "name": "wire3",
3084            "type": "tuple",
3085            "internalType": "struct BN254.G1Point",
3086            "components": [
3087              {
3088                "name": "x",
3089                "type": "uint256",
3090                "internalType": "BN254.BaseField"
3091              },
3092              {
3093                "name": "y",
3094                "type": "uint256",
3095                "internalType": "BN254.BaseField"
3096              }
3097            ]
3098          },
3099          {
3100            "name": "wire4",
3101            "type": "tuple",
3102            "internalType": "struct BN254.G1Point",
3103            "components": [
3104              {
3105                "name": "x",
3106                "type": "uint256",
3107                "internalType": "BN254.BaseField"
3108              },
3109              {
3110                "name": "y",
3111                "type": "uint256",
3112                "internalType": "BN254.BaseField"
3113              }
3114            ]
3115          },
3116          {
3117            "name": "prodPerm",
3118            "type": "tuple",
3119            "internalType": "struct BN254.G1Point",
3120            "components": [
3121              {
3122                "name": "x",
3123                "type": "uint256",
3124                "internalType": "BN254.BaseField"
3125              },
3126              {
3127                "name": "y",
3128                "type": "uint256",
3129                "internalType": "BN254.BaseField"
3130              }
3131            ]
3132          },
3133          {
3134            "name": "split0",
3135            "type": "tuple",
3136            "internalType": "struct BN254.G1Point",
3137            "components": [
3138              {
3139                "name": "x",
3140                "type": "uint256",
3141                "internalType": "BN254.BaseField"
3142              },
3143              {
3144                "name": "y",
3145                "type": "uint256",
3146                "internalType": "BN254.BaseField"
3147              }
3148            ]
3149          },
3150          {
3151            "name": "split1",
3152            "type": "tuple",
3153            "internalType": "struct BN254.G1Point",
3154            "components": [
3155              {
3156                "name": "x",
3157                "type": "uint256",
3158                "internalType": "BN254.BaseField"
3159              },
3160              {
3161                "name": "y",
3162                "type": "uint256",
3163                "internalType": "BN254.BaseField"
3164              }
3165            ]
3166          },
3167          {
3168            "name": "split2",
3169            "type": "tuple",
3170            "internalType": "struct BN254.G1Point",
3171            "components": [
3172              {
3173                "name": "x",
3174                "type": "uint256",
3175                "internalType": "BN254.BaseField"
3176              },
3177              {
3178                "name": "y",
3179                "type": "uint256",
3180                "internalType": "BN254.BaseField"
3181              }
3182            ]
3183          },
3184          {
3185            "name": "split3",
3186            "type": "tuple",
3187            "internalType": "struct BN254.G1Point",
3188            "components": [
3189              {
3190                "name": "x",
3191                "type": "uint256",
3192                "internalType": "BN254.BaseField"
3193              },
3194              {
3195                "name": "y",
3196                "type": "uint256",
3197                "internalType": "BN254.BaseField"
3198              }
3199            ]
3200          },
3201          {
3202            "name": "split4",
3203            "type": "tuple",
3204            "internalType": "struct BN254.G1Point",
3205            "components": [
3206              {
3207                "name": "x",
3208                "type": "uint256",
3209                "internalType": "BN254.BaseField"
3210              },
3211              {
3212                "name": "y",
3213                "type": "uint256",
3214                "internalType": "BN254.BaseField"
3215              }
3216            ]
3217          },
3218          {
3219            "name": "zeta",
3220            "type": "tuple",
3221            "internalType": "struct BN254.G1Point",
3222            "components": [
3223              {
3224                "name": "x",
3225                "type": "uint256",
3226                "internalType": "BN254.BaseField"
3227              },
3228              {
3229                "name": "y",
3230                "type": "uint256",
3231                "internalType": "BN254.BaseField"
3232              }
3233            ]
3234          },
3235          {
3236            "name": "zetaOmega",
3237            "type": "tuple",
3238            "internalType": "struct BN254.G1Point",
3239            "components": [
3240              {
3241                "name": "x",
3242                "type": "uint256",
3243                "internalType": "BN254.BaseField"
3244              },
3245              {
3246                "name": "y",
3247                "type": "uint256",
3248                "internalType": "BN254.BaseField"
3249              }
3250            ]
3251          },
3252          {
3253            "name": "wireEval0",
3254            "type": "uint256",
3255            "internalType": "BN254.ScalarField"
3256          },
3257          {
3258            "name": "wireEval1",
3259            "type": "uint256",
3260            "internalType": "BN254.ScalarField"
3261          },
3262          {
3263            "name": "wireEval2",
3264            "type": "uint256",
3265            "internalType": "BN254.ScalarField"
3266          },
3267          {
3268            "name": "wireEval3",
3269            "type": "uint256",
3270            "internalType": "BN254.ScalarField"
3271          },
3272          {
3273            "name": "wireEval4",
3274            "type": "uint256",
3275            "internalType": "BN254.ScalarField"
3276          },
3277          {
3278            "name": "sigmaEval0",
3279            "type": "uint256",
3280            "internalType": "BN254.ScalarField"
3281          },
3282          {
3283            "name": "sigmaEval1",
3284            "type": "uint256",
3285            "internalType": "BN254.ScalarField"
3286          },
3287          {
3288            "name": "sigmaEval2",
3289            "type": "uint256",
3290            "internalType": "BN254.ScalarField"
3291          },
3292          {
3293            "name": "sigmaEval3",
3294            "type": "uint256",
3295            "internalType": "BN254.ScalarField"
3296          },
3297          {
3298            "name": "prodPermZetaOmegaEval",
3299            "type": "uint256",
3300            "internalType": "BN254.ScalarField"
3301          }
3302        ]
3303      }
3304    ],
3305    "outputs": [],
3306    "stateMutability": "nonpayable"
3307  },
3308  {
3309    "type": "function",
3310    "name": "owner",
3311    "inputs": [],
3312    "outputs": [
3313      {
3314        "name": "",
3315        "type": "address",
3316        "internalType": "address"
3317      }
3318    ],
3319    "stateMutability": "view"
3320  },
3321  {
3322    "type": "function",
3323    "name": "permissionedProver",
3324    "inputs": [],
3325    "outputs": [
3326      {
3327        "name": "",
3328        "type": "address",
3329        "internalType": "address"
3330      }
3331    ],
3332    "stateMutability": "view"
3333  },
3334  {
3335    "type": "function",
3336    "name": "proxiableUUID",
3337    "inputs": [],
3338    "outputs": [
3339      {
3340        "name": "",
3341        "type": "bytes32",
3342        "internalType": "bytes32"
3343      }
3344    ],
3345    "stateMutability": "view"
3346  },
3347  {
3348    "type": "function",
3349    "name": "renounceOwnership",
3350    "inputs": [],
3351    "outputs": [],
3352    "stateMutability": "nonpayable"
3353  },
3354  {
3355    "type": "function",
3356    "name": "setPermissionedProver",
3357    "inputs": [
3358      {
3359        "name": "prover",
3360        "type": "address",
3361        "internalType": "address"
3362      }
3363    ],
3364    "outputs": [],
3365    "stateMutability": "nonpayable"
3366  },
3367  {
3368    "type": "function",
3369    "name": "setstateHistoryRetentionPeriod",
3370    "inputs": [
3371      {
3372        "name": "historySeconds",
3373        "type": "uint32",
3374        "internalType": "uint32"
3375      }
3376    ],
3377    "outputs": [],
3378    "stateMutability": "nonpayable"
3379  },
3380  {
3381    "type": "function",
3382    "name": "stateHistoryCommitments",
3383    "inputs": [
3384      {
3385        "name": "",
3386        "type": "uint256",
3387        "internalType": "uint256"
3388      }
3389    ],
3390    "outputs": [
3391      {
3392        "name": "l1BlockHeight",
3393        "type": "uint64",
3394        "internalType": "uint64"
3395      },
3396      {
3397        "name": "l1BlockTimestamp",
3398        "type": "uint64",
3399        "internalType": "uint64"
3400      },
3401      {
3402        "name": "hotShotBlockHeight",
3403        "type": "uint64",
3404        "internalType": "uint64"
3405      },
3406      {
3407        "name": "hotShotBlockCommRoot",
3408        "type": "uint256",
3409        "internalType": "BN254.ScalarField"
3410      }
3411    ],
3412    "stateMutability": "view"
3413  },
3414  {
3415    "type": "function",
3416    "name": "stateHistoryFirstIndex",
3417    "inputs": [],
3418    "outputs": [
3419      {
3420        "name": "",
3421        "type": "uint64",
3422        "internalType": "uint64"
3423      }
3424    ],
3425    "stateMutability": "view"
3426  },
3427  {
3428    "type": "function",
3429    "name": "stateHistoryRetentionPeriod",
3430    "inputs": [],
3431    "outputs": [
3432      {
3433        "name": "",
3434        "type": "uint32",
3435        "internalType": "uint32"
3436      }
3437    ],
3438    "stateMutability": "view"
3439  },
3440  {
3441    "type": "function",
3442    "name": "transferOwnership",
3443    "inputs": [
3444      {
3445        "name": "newOwner",
3446        "type": "address",
3447        "internalType": "address"
3448      }
3449    ],
3450    "outputs": [],
3451    "stateMutability": "nonpayable"
3452  },
3453  {
3454    "type": "function",
3455    "name": "upgradeToAndCall",
3456    "inputs": [
3457      {
3458        "name": "newImplementation",
3459        "type": "address",
3460        "internalType": "address"
3461      },
3462      {
3463        "name": "data",
3464        "type": "bytes",
3465        "internalType": "bytes"
3466      }
3467    ],
3468    "outputs": [],
3469    "stateMutability": "payable"
3470  },
3471  {
3472    "type": "event",
3473    "name": "Initialized",
3474    "inputs": [
3475      {
3476        "name": "version",
3477        "type": "uint64",
3478        "indexed": false,
3479        "internalType": "uint64"
3480      }
3481    ],
3482    "anonymous": false
3483  },
3484  {
3485    "type": "event",
3486    "name": "NewState",
3487    "inputs": [
3488      {
3489        "name": "viewNum",
3490        "type": "uint64",
3491        "indexed": true,
3492        "internalType": "uint64"
3493      },
3494      {
3495        "name": "blockHeight",
3496        "type": "uint64",
3497        "indexed": true,
3498        "internalType": "uint64"
3499      },
3500      {
3501        "name": "blockCommRoot",
3502        "type": "uint256",
3503        "indexed": false,
3504        "internalType": "BN254.ScalarField"
3505      }
3506    ],
3507    "anonymous": false
3508  },
3509  {
3510    "type": "event",
3511    "name": "OwnershipTransferred",
3512    "inputs": [
3513      {
3514        "name": "previousOwner",
3515        "type": "address",
3516        "indexed": true,
3517        "internalType": "address"
3518      },
3519      {
3520        "name": "newOwner",
3521        "type": "address",
3522        "indexed": true,
3523        "internalType": "address"
3524      }
3525    ],
3526    "anonymous": false
3527  },
3528  {
3529    "type": "event",
3530    "name": "PermissionedProverNotRequired",
3531    "inputs": [],
3532    "anonymous": false
3533  },
3534  {
3535    "type": "event",
3536    "name": "PermissionedProverRequired",
3537    "inputs": [
3538      {
3539        "name": "permissionedProver",
3540        "type": "address",
3541        "indexed": false,
3542        "internalType": "address"
3543      }
3544    ],
3545    "anonymous": false
3546  },
3547  {
3548    "type": "event",
3549    "name": "Upgrade",
3550    "inputs": [
3551      {
3552        "name": "implementation",
3553        "type": "address",
3554        "indexed": false,
3555        "internalType": "address"
3556      }
3557    ],
3558    "anonymous": false
3559  },
3560  {
3561    "type": "event",
3562    "name": "Upgraded",
3563    "inputs": [
3564      {
3565        "name": "implementation",
3566        "type": "address",
3567        "indexed": true,
3568        "internalType": "address"
3569      }
3570    ],
3571    "anonymous": false
3572  },
3573  {
3574    "type": "error",
3575    "name": "AddressEmptyCode",
3576    "inputs": [
3577      {
3578        "name": "target",
3579        "type": "address",
3580        "internalType": "address"
3581      }
3582    ]
3583  },
3584  {
3585    "type": "error",
3586    "name": "ERC1967InvalidImplementation",
3587    "inputs": [
3588      {
3589        "name": "implementation",
3590        "type": "address",
3591        "internalType": "address"
3592      }
3593    ]
3594  },
3595  {
3596    "type": "error",
3597    "name": "ERC1967NonPayable",
3598    "inputs": []
3599  },
3600  {
3601    "type": "error",
3602    "name": "FailedInnerCall",
3603    "inputs": []
3604  },
3605  {
3606    "type": "error",
3607    "name": "InsufficientSnapshotHistory",
3608    "inputs": []
3609  },
3610  {
3611    "type": "error",
3612    "name": "InvalidAddress",
3613    "inputs": []
3614  },
3615  {
3616    "type": "error",
3617    "name": "InvalidArgs",
3618    "inputs": []
3619  },
3620  {
3621    "type": "error",
3622    "name": "InvalidHotShotBlockForCommitmentCheck",
3623    "inputs": []
3624  },
3625  {
3626    "type": "error",
3627    "name": "InvalidInitialization",
3628    "inputs": []
3629  },
3630  {
3631    "type": "error",
3632    "name": "InvalidMaxStateHistory",
3633    "inputs": []
3634  },
3635  {
3636    "type": "error",
3637    "name": "InvalidProof",
3638    "inputs": []
3639  },
3640  {
3641    "type": "error",
3642    "name": "InvalidScalar",
3643    "inputs": []
3644  },
3645  {
3646    "type": "error",
3647    "name": "NoChangeRequired",
3648    "inputs": []
3649  },
3650  {
3651    "type": "error",
3652    "name": "NotInitializing",
3653    "inputs": []
3654  },
3655  {
3656    "type": "error",
3657    "name": "OutdatedState",
3658    "inputs": []
3659  },
3660  {
3661    "type": "error",
3662    "name": "OwnableInvalidOwner",
3663    "inputs": [
3664      {
3665        "name": "owner",
3666        "type": "address",
3667        "internalType": "address"
3668      }
3669    ]
3670  },
3671  {
3672    "type": "error",
3673    "name": "OwnableUnauthorizedAccount",
3674    "inputs": [
3675      {
3676        "name": "account",
3677        "type": "address",
3678        "internalType": "address"
3679      }
3680    ]
3681  },
3682  {
3683    "type": "error",
3684    "name": "ProverNotPermissioned",
3685    "inputs": []
3686  },
3687  {
3688    "type": "error",
3689    "name": "UUPSUnauthorizedCallContext",
3690    "inputs": []
3691  },
3692  {
3693    "type": "error",
3694    "name": "UUPSUnsupportedProxiableUUID",
3695    "inputs": [
3696      {
3697        "name": "slot",
3698        "type": "bytes32",
3699        "internalType": "bytes32"
3700      }
3701    ]
3702  },
3703  {
3704    "type": "error",
3705    "name": "WrongStakeTableUsed",
3706    "inputs": []
3707  }
3708]
3709```*/
3710#[allow(
3711    non_camel_case_types,
3712    non_snake_case,
3713    clippy::pub_underscore_fields,
3714    clippy::style,
3715    clippy::empty_structs_with_brackets
3716)]
3717pub mod LightClient {
3718    use super::*;
3719    use alloy::sol_types as alloy_sol_types;
3720    /// The creation / init bytecode of the contract.
3721    ///
3722    /// ```text
3723    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612b2d6100f95f395f81816116e40152818161170d015261188a0152612b2d5ff3fe608060405260043610610161575f3560e01c8063715018a6116100cd5780639fdb54a711610087578063d24d933d11610062578063d24d933d1461051a578063e030330114610549578063f2fde38b14610568578063f9e50d1914610587575f5ffd5b80639fdb54a714610450578063ad3cb1cc146104a5578063c23b9e9e146104e2575f5ffd5b8063715018a61461035b578063826e41fc1461036f5780638584d23f1461039a5780638da5cb5b146103d657806396c1ca61146104125780639baa3cc914610431575f5ffd5b8063313df7b11161011e578063313df7b11461028c578063378ec23b146102c3578063426d3194146102df5780634f1ef2861461032057806352d1902d1461033357806369cc6a0414610347575f5ffd5b8063013fa5fc1461016557806302b592f3146101865780630d8e6e2c146101e357806312173c2c1461020e5780632063d4f71461022f5780632f79889d1461024e575b5f5ffd5b348015610170575f5ffd5b5061018461017f366004611f3d565b61059b565b005b348015610191575f5ffd5b506101a56101a0366004611f56565b61064e565b6040516101da94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156101ee575f5ffd5b5060408051600181525f60208201819052918101919091526060016101da565b348015610219575f5ffd5b50610222610697565b6040516101da9190611f6d565b34801561023a575f5ffd5b506101846102493660046122a2565b6106ac565b348015610259575f5ffd5b5060085461027490600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016101da565b348015610297575f5ffd5b506008546102ab906001600160a01b031681565b6040516001600160a01b0390911681526020016101da565b3480156102ce575f5ffd5b50435b6040519081526020016101da565b3480156102ea575f5ffd5b505f546001546002546003546103009392919084565b6040805194855260208501939093529183015260608201526080016101da565b61018461032e366004612452565b610806565b34801561033e575f5ffd5b506102d1610825565b348015610352575f5ffd5b50610184610840565b348015610366575f5ffd5b506101846108ae565b34801561037a575f5ffd5b506008546001600160a01b031615155b60405190151581526020016101da565b3480156103a5575f5ffd5b506103b96103b4366004611f56565b6108bf565b604080519283526001600160401b039091166020830152016101da565b3480156103e1575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166102ab565b34801561041d575f5ffd5b5061018461042c366004612508565b6109ea565b34801561043c575f5ffd5b5061018461044b366004612521565b610a73565b34801561045b575f5ffd5b5060065460075461047f916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016101da565b3480156104b0575f5ffd5b506104d5604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101da91906125ca565b3480156104ed575f5ffd5b5060085461050590600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016101da565b348015610525575f5ffd5b5060045460055461047f916001600160401b0380821692600160401b909204169083565b348015610554575f5ffd5b5061038a6105633660046125ff565b610b95565b348015610573575f5ffd5b50610184610582366004611f3d565b610cef565b348015610592575f5ffd5b506009546102d1565b6105a3610d31565b6001600160a01b0381166105ca5760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036105f95760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b6009818154811061065d575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b61069f611c9f565b6106a7610d8c565b905090565b6008546001600160a01b0316151580156106d157506008546001600160a01b03163314155b156106ef576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b039182169116111580610728575060065460208301516001600160401b03600160401b9092048216911611155b156107465760405163051c46ef60e01b815260040160405180910390fd5b61075382604001516113bb565b61075d82826113fc565b81516006805460208501516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408201516007556107aa6107a34390565b42846114f0565b81602001516001600160401b0316825f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae684604001516040516107fa91815260200190565b60405180910390a35050565b61080e6116d9565b6108178261177d565b61082182826117be565b5050565b5f61082e61187f565b505f516020612b015f395f51905f5290565b610848610d31565b6008546001600160a01b03161561089357600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b6108b6610d31565b6108ac5f6118c8565b600980545f918291906108d3600183612633565b815481106108e3576108e3612646565b5f918252602090912060029091020154600160801b90046001600160401b0316841061092257604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b818110156109e357846009828154811061095257610952612646565b5f918252602090912060029091020154600160801b90046001600160401b031611156109db576009818154811061098b5761098b612646565b905f5260205f20906002020160010154600982815481106109ae576109ae612646565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610936565b5050915091565b6109f2610d31565b610e108163ffffffff161080610a1157506301e133808163ffffffff16115b80610a2f575060085463ffffffff600160a01b909104811690821611155b15610a4d576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610ab75750825b90505f826001600160401b03166001148015610ad25750303b155b905081158015610ae0575080155b15610afe5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610b2857845460ff60401b1916600160401b1785555b610b3186611938565b610b39611949565b610b44898989611951565b8315610b8a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6009545f9043841180610ba6575080155b80610bf05750600854600980549091600160c01b90046001600160401b0316908110610bd457610bd4612646565b5f9182526020909120600290910201546001600160401b031684105b15610c0e5760405163b0b4387760e01b815260040160405180910390fd5b5f8080610c1c600185612633565b90505b81610cb857600854600160c01b90046001600160401b03168110610cb8578660098281548110610c5157610c51612646565b5f9182526020909120600290910201546001600160401b031611610ca6576001915060098181548110610c8657610c86612646565b5f9182526020909120600290910201546001600160401b03169250610cb8565b80610cb08161265a565b915050610c1f565b81610cd65760405163b0b4387760e01b815260040160405180910390fd5b85610ce18489612633565b119450505050505b92915050565b610cf7610d31565b6001600160a01b038116610d2557604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610d2e816118c8565b50565b33610d637f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146108ac5760405163118cdaa760e01b8152336004820152602401610d1c565b610d94611c9f565b621000008152600760208201527f23783d0e9777b7af65fbf849da7edb75e74b1eaf503e025d7f2f7f80991befa26040820151527f2a4e2fe8adfa53f468525582d5184c4c70bbdb946c21f216418a9879705e54a76020604083015101527f0624b2c1e77f24afceaf39451743b9fa80d5853fca7ba00389c675650774009b6060820151527f250d7719e94ca2df00dfe327938f5a8d4d837779b99837ca777a53d39127b1796020606083015101527f0dc09515152eaea66d0db2f571cc995e369d26fe647394f10db5398c917519dc6080820151527f1273144d6cec2c4a68b24a149379c0f5592bb7fbddbe32fa171919950ca404cb6020608083015101527f119521bb68caec216e2f05eeb466fb3abfe1f39baf7fe7cb392ea057b6a2d9bf60a0820151527f2d52adeaba8045e53ab526fe9982d0ea452def6b3ea0253d27a19ef3b46e8428602060a083015101527f16c3b5b217d302975a920d13374524d7a52e4a50fd7fb930842271ebf4a84efd60c0820151527f200788916b907b196972bde304318e885a2521514b2db5e4a11899c51204f089602060c083015101527f1127581afe753defca9aef12e7332db9978a200b1699ce3888c0f3aea6111dc360e0820151527f0881e13f00723be1a04872ed02b2d078c31e80feaf27724e262ce97c2cb0bb1d602060e083015101527f1482a3a6bb91d6483d153683e2404f2f5546e0e895530fdf132091498406e3de610100820151527efa52db3d52d905ead1248102f3a80a43a90d8400c68f60a62c543c417b2f4b602061010083015101527f0a57dadd4a55199525ac6ac6fabc87a4cccfdc98142bcef9dbf47de00ecc5164610120820151527f18d95abd9b8e12c36936aa218cfff582548a6bbff25c338c2006eaeb1fe5b696602061012083015101527f2bc40e91dd169b8bc143a02952a1b6c6e627bfeb7a2bbe5078e14123f3c54c1c610140820151527f108d65a20c579b6d9883275eb6889fc3f5fc79735ca9f611a13b67daa2fbc8d0602061014083015101527f21bc1f86d0608e5f0626b467ee6f8282b619223f60a7acb0fc63ba7bdaf783be610160820151527f05ef3282f8eef01515fb9a8a7d6ca06b8b007d1d512403efb268fb03ce5f09e9602061016083015101527f2cab66c1cb5a83869e73ac34fbe467486999babd541d9010ee9a804806eee4ef610180820151527f2db1982419c5a4a17593acff9535fa967683d75c8aec01319b64b84aada2ad84602061018083015101527f2c38667c6c7eb868bdd30c34dd3f4b84d9b9b1a27d7867b364c8b7831423e9086101a0820151527f2b2cb4044dd51165c48138219d51cf8d1689f91ed3eeefead6e055eb488a2ce260206101a083015101527f2d48e54703011df2c74a14dafde3af4fd83ec71875d8ddc3554658640cc955016101c0820151527f243a99d80d32eb5408b59d5b08302bede070d3fb0a8efe2f2262f865bffb4d0d60206101c083015101527f0455d2325bf6269a66f07d838f55f36947a3cd9b87edd8480bced95cbb45cc116101e0820151527f0f66d9085a6ed60b838179987e240992bff4c0516ccf6ccde4a1ca94ce8b986460206101e083015101527f2bac0d23c8585d1487ec611b5effc97e5852fea43a7cba36ccdd2c207931f394610200820151527f1860b54e01a06aea5adb4b13bf5baebab92b736807a3a89ff2040992b06ee6ec602061020083015101527f0c0bfa1c2fc6f8ed01233d5168db1e1dfe725504f032f669f50a92ae77c72906610220820151527f0d741e124c7d1069b8a400cbcdcfd90128a533901ad4de1e037fe72984dc34cf602061022083015101527f01cfed30085c9efce04668205794aa39b1a8ee591234b4c77a22f8c26d899e05610240820151527f2ab68ac82d36cedb647d14a5b0035e8c9a0be84780b7bae1133a27a880966ed1602061024083015101527f072e1d50f8b5cf8d574b3847276477d95bbd5116351000841f728da44f4043b5610260820151527f23f8ea6eacd0876d57220f57eabacbe76a2323411663731a251d5dca36f1b59f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806108215760405163016c173360e21b815260040160405180910390fd5b5f611405610697565b905061140f611f04565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a08301525f5460c08301525163ce537a7760e01b815273ffffffffffffffffffffffffffffffffffffffff9063ce537a779061148e9085908590889060040161284b565b602060405180830381865af41580156114a9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114cd9190612a6b565b6114ea576040516309bde33960e01b815260040160405180910390fd5b50505050565b60095415801590611565575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b031690811061153057611530612646565b5f91825260209091206002909102015461155a90600160401b90046001600160401b031684612a8a565b6001600160401b0316115b156115f857600854600980549091600160c01b90046001600160401b031690811061159257611592612646565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b03169060186115d283612aa9565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061175f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166117535f516020612b015f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156108ac5760405163703e46dd60e11b815260040160405180910390fd5b611785610d31565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610643565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611818575060408051601f3d908101601f1916820190925261181591810190612ad3565b60015b61184057604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d1c565b5f516020612b015f395f51905f52811461187057604051632a87526960e21b815260048101829052602401610d1c565b61187a8383611a7d565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108ac5760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611940611ad2565b610d2e81611b1b565b6108ac611ad2565b82516001600160401b0316151580611975575060208301516001600160401b031615155b8061198257506020820151155b8061198f57506040820151155b8061199c57506060820151155b806119a657508151155b806119b85750610e108163ffffffff16105b806119cc57506301e133808163ffffffff16115b156119ea576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b611a8682611b23565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611aca5761187a8282611b86565b610821611bf8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166108ac57604051631afcd79f60e31b815260040160405180910390fd5b610cf7611ad2565b806001600160a01b03163b5f03611b5857604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d1c565b5f516020612b015f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611ba29190612aea565b5f60405180830381855af49150503d805f8114611bda576040519150601f19603f3d011682016040523d82523d5f602084013e611bdf565b606091505b5091509150611bef858383611c17565b95945050505050565b34156108ac5760405163b398979f60e01b815260040160405180910390fd5b606082611c2c57611c2782611c76565b611c6f565b8151158015611c4357506001600160a01b0384163b155b15611c6c57604051639996b31560e01b81526001600160a01b0385166004820152602401610d1c565b50805b9392505050565b805115611c865780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f8152602001611cd260405180604001604052805f81526020015f81525090565b8152602001611cf260405180604001604052805f81526020015f81525090565b8152602001611d1260405180604001604052805f81526020015f81525090565b8152602001611d3260405180604001604052805f81526020015f81525090565b8152602001611d5260405180604001604052805f81526020015f81525090565b8152602001611d7260405180604001604052805f81526020015f81525090565b8152602001611d9260405180604001604052805f81526020015f81525090565b8152602001611db260405180604001604052805f81526020015f81525090565b8152602001611dd260405180604001604052805f81526020015f81525090565b8152602001611df260405180604001604052805f81526020015f81525090565b8152602001611e1260405180604001604052805f81526020015f81525090565b8152602001611e3260405180604001604052805f81526020015f81525090565b8152602001611e5260405180604001604052805f81526020015f81525090565b8152602001611e7260405180604001604052805f81526020015f81525090565b8152602001611e9260405180604001604052805f81526020015f81525090565b8152602001611eb260405180604001604052805f81526020015f81525090565b8152602001611ed260405180604001604052805f81526020015f81525090565b8152602001611ef260405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b6040518060e001604052806007906020820280368337509192915050565b80356001600160a01b0381168114611f38575f5ffd5b919050565b5f60208284031215611f4d575f5ffd5b611c6f82611f22565b5f60208284031215611f66575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151611f9f604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b03811182821017156121a5576121a561216e565b60405290565b604051601f8201601f191681016001600160401b03811182821017156121d3576121d361216e565b604052919050565b80356001600160401b0381168114611f38575f5ffd5b5f60608284031215612201575f5ffd5b604051606081016001600160401b03811182821017156122235761222361216e565b604052905080612232836121db565b8152612240602084016121db565b6020820152604092830135920191909152919050565b5f60408284031215612266575f5ffd5b604080519081016001600160401b03811182821017156122885761228861216e565b604052823581526020928301359281019290925250919050565b5f5f8284036104e08112156122b5575f5ffd5b6122bf85856121f1565b9250610480605f19820112156122d3575f5ffd5b506122dc612182565b6122e98560608601612256565b81526122f88560a08601612256565b602082015261230a8560e08601612256565b604082015261231d856101208601612256565b6060820152612330856101608601612256565b6080820152612343856101a08601612256565b60a0820152612356856101e08601612256565b60c0820152612369856102208601612256565b60e082015261237c856102608601612256565b610100820152612390856102a08601612256565b6101208201526123a4856102e08601612256565b6101408201526123b8856103208601612256565b6101608201526123cc856103608601612256565b6101808201526103a08401356101a08201526103c08401356101c08201526103e08401356101e08201526104008401356102008201526104208401356102208201526104408401356102408201526104608401356102608201526104808401356102808201526104a08401356102a08201526104c0909301356102c08401525092909150565b5f5f60408385031215612463575f5ffd5b61246c83611f22565b915060208301356001600160401b03811115612486575f5ffd5b8301601f81018513612496575f5ffd5b80356001600160401b038111156124af576124af61216e565b6124c2601f8201601f19166020016121ab565b8181528660208385010111156124d6575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff81168114611f38575f5ffd5b5f60208284031215612518575f5ffd5b611c6f826124f5565b5f5f5f5f848603610120811215612536575f5ffd5b61254087876121f1565b94506080605f1982011215612553575f5ffd5b50604051608081016001600160401b03811182821017156125765761257661216e565b604090815260608781013583526080880135602084015260a08801359183019190915260c08701359082015292506125b060e086016124f5565b91506125bf6101008601611f22565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215612610575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610ce957610ce961261f565b634e487b7160e01b5f52603260045260245ffd5b5f816126685761266861261f565b505f190190565b805f5b60078110156114ea578151845260209384019390910190600101612672565b6126a682825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a60820190508451825260208501516020830152604085015161287d604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152612a5561050083018561266f565b612a636105e0830184612691565b949350505050565b5f60208284031215612a7b575f5ffd5b81518015158114611c6f575f5ffd5b6001600160401b038281168282160390811115610ce957610ce961261f565b5f6001600160401b0382166001600160401b038103612aca57612aca61261f565b60010192915050565b5f60208284031215612ae3575f5ffd5b5051919050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
3724    /// ```
3725    #[rustfmt::skip]
3726    #[allow(clippy::all)]
3727    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3728        b"`\xA0`@R0`\x80R4\x80\x15a\0\x13W__\xFD[Pa\0\x1Ca\0!V[a\0\xD3V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80Th\x01\0\0\0\0\0\0\0\0\x90\x04`\xFF\x16\x15a\0qW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80T`\x01`\x01`@\x1B\x03\x90\x81\x16\x14a\0\xD0W\x80T`\x01`\x01`@\x1B\x03\x19\x16`\x01`\x01`@\x1B\x03\x90\x81\x17\x82U`@Q\x90\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PV[`\x80Qa+-a\0\xF9_9_\x81\x81a\x16\xE4\x01R\x81\x81a\x17\r\x01Ra\x18\x8A\x01Ra+-_\xF3\xFE`\x80`@R`\x046\x10a\x01aW_5`\xE0\x1C\x80cqP\x18\xA6\x11a\0\xCDW\x80c\x9F\xDBT\xA7\x11a\0\x87W\x80c\xD2M\x93=\x11a\0bW\x80c\xD2M\x93=\x14a\x05\x1AW\x80c\xE003\x01\x14a\x05IW\x80c\xF2\xFD\xE3\x8B\x14a\x05hW\x80c\xF9\xE5\r\x19\x14a\x05\x87W__\xFD[\x80c\x9F\xDBT\xA7\x14a\x04PW\x80c\xAD<\xB1\xCC\x14a\x04\xA5W\x80c\xC2;\x9E\x9E\x14a\x04\xE2W__\xFD[\x80cqP\x18\xA6\x14a\x03[W\x80c\x82nA\xFC\x14a\x03oW\x80c\x85\x84\xD2?\x14a\x03\x9AW\x80c\x8D\xA5\xCB[\x14a\x03\xD6W\x80c\x96\xC1\xCAa\x14a\x04\x12W\x80c\x9B\xAA<\xC9\x14a\x041W__\xFD[\x80c1=\xF7\xB1\x11a\x01\x1EW\x80c1=\xF7\xB1\x14a\x02\x8CW\x80c7\x8E\xC2;\x14a\x02\xC3W\x80cBm1\x94\x14a\x02\xDFW\x80cO\x1E\xF2\x86\x14a\x03 W\x80cR\xD1\x90-\x14a\x033W\x80ci\xCCj\x04\x14a\x03GW__\xFD[\x80c\x01?\xA5\xFC\x14a\x01eW\x80c\x02\xB5\x92\xF3\x14a\x01\x86W\x80c\r\x8En,\x14a\x01\xE3W\x80c\x12\x17<,\x14a\x02\x0EW\x80c c\xD4\xF7\x14a\x02/W\x80c/y\x88\x9D\x14a\x02NW[__\xFD[4\x80\x15a\x01pW__\xFD[Pa\x01\x84a\x01\x7F6`\x04a\x1F=V[a\x05\x9BV[\0[4\x80\x15a\x01\x91W__\xFD[Pa\x01\xA5a\x01\xA06`\x04a\x1FVV[a\x06NV[`@Qa\x01\xDA\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\x01\xEEW__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x01\xDAV[4\x80\x15a\x02\x19W__\xFD[Pa\x02\"a\x06\x97V[`@Qa\x01\xDA\x91\x90a\x1FmV[4\x80\x15a\x02:W__\xFD[Pa\x01\x84a\x02I6`\x04a\"\xA2V[a\x06\xACV[4\x80\x15a\x02YW__\xFD[P`\x08Ta\x02t\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\x97W__\xFD[P`\x08Ta\x02\xAB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xCEW__\xFD[PC[`@Q\x90\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xEAW__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\0\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x01\xDAV[a\x01\x84a\x03.6`\x04a$RV[a\x08\x06V[4\x80\x15a\x03>W__\xFD[Pa\x02\xD1a\x08%V[4\x80\x15a\x03RW__\xFD[Pa\x01\x84a\x08@V[4\x80\x15a\x03fW__\xFD[Pa\x01\x84a\x08\xAEV[4\x80\x15a\x03zW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15[`@Q\x90\x15\x15\x81R` \x01a\x01\xDAV[4\x80\x15a\x03\xA5W__\xFD[Pa\x03\xB9a\x03\xB46`\x04a\x1FVV[a\x08\xBFV[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x01\xDAV[4\x80\x15a\x03\xE1W__\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\x02\xABV[4\x80\x15a\x04\x1DW__\xFD[Pa\x01\x84a\x04,6`\x04a%\x08V[a\t\xEAV[4\x80\x15a\x04<W__\xFD[Pa\x01\x84a\x04K6`\x04a%!V[a\nsV[4\x80\x15a\x04[W__\xFD[P`\x06T`\x07Ta\x04\x7F\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\x01\xDAV[4\x80\x15a\x04\xB0W__\xFD[Pa\x04\xD5`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x01\xDA\x91\x90a%\xCAV[4\x80\x15a\x04\xEDW__\xFD[P`\x08Ta\x05\x05\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x05%W__\xFD[P`\x04T`\x05Ta\x04\x7F\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x05TW__\xFD[Pa\x03\x8Aa\x05c6`\x04a%\xFFV[a\x0B\x95V[4\x80\x15a\x05sW__\xFD[Pa\x01\x84a\x05\x826`\x04a\x1F=V[a\x0C\xEFV[4\x80\x15a\x05\x92W__\xFD[P`\tTa\x02\xD1V[a\x05\xA3a\r1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x05\xCAW`@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\x05\xF9W`@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\x06]W_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\x06\x9Fa\x1C\x9FV[a\x06\xA7a\r\x8CV[\x90P\x90V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x06\xD1WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x06\xEFW`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x82Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x07(WP`\x06T` \x83\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x07FW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x07S\x82`@\x01Qa\x13\xBBV[a\x07]\x82\x82a\x13\xFCV[\x81Q`\x06\x80T` \x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x82\x01Q`\x07Ua\x07\xAAa\x07\xA3C\x90V[B\x84a\x14\xF0V[\x81` \x01Q`\x01`\x01`@\x1B\x03\x16\x82_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x84`@\x01Q`@Qa\x07\xFA\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPV[a\x08\x0Ea\x16\xD9V[a\x08\x17\x82a\x17}V[a\x08!\x82\x82a\x17\xBEV[PPV[_a\x08.a\x18\x7FV[P_Q` a+\x01_9_Q\x90_R\x90V[a\x08Ha\r1V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x08\x93W`\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\x08\xB6a\r1V[a\x08\xAC_a\x18\xC8V[`\t\x80T_\x91\x82\x91\x90a\x08\xD3`\x01\x83a&3V[\x81T\x81\x10a\x08\xE3Wa\x08\xE3a&FV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\t\"W`@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\t\xE3W\x84`\t\x82\x81T\x81\x10a\tRWa\tRa&FV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\t\xDBW`\t\x81\x81T\x81\x10a\t\x8BWa\t\x8Ba&FV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\t\xAEWa\t\xAEa&FV[\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\t6V[PP\x91P\x91V[a\t\xF2a\r1V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\n\x11WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\n/WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\nMW`@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[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\n\xB7WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\n\xD2WP0;\x15[\x90P\x81\x15\x80\x15a\n\xE0WP\x80\x15[\x15a\n\xFEW`@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\x0B(W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0B1\x86a\x198V[a\x0B9a\x19IV[a\x0BD\x89\x89\x89a\x19QV[\x83\x15a\x0B\x8AW\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[`\tT_\x90C\x84\x11\x80a\x0B\xA6WP\x80\x15[\x80a\x0B\xF0WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x0B\xD4Wa\x0B\xD4a&FV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x0C\x0EW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x0C\x1C`\x01\x85a&3V[\x90P[\x81a\x0C\xB8W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x0C\xB8W\x86`\t\x82\x81T\x81\x10a\x0CQWa\x0CQa&FV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x0C\xA6W`\x01\x91P`\t\x81\x81T\x81\x10a\x0C\x86Wa\x0C\x86a&FV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x0C\xB8V[\x80a\x0C\xB0\x81a&ZV[\x91PPa\x0C\x1FV[\x81a\x0C\xD6W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x0C\xE1\x84\x89a&3V[\x11\x94PPPPP[\x92\x91PPV[a\x0C\xF7a\r1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r%W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\r.\x81a\x18\xC8V[PV[3a\rc\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\x08\xACW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r\x1CV[a\r\x94a\x1C\x9FV[b\x10\0\0\x81R`\x07` \x82\x01R\x7F#x=\x0E\x97w\xB7\xAFe\xFB\xF8I\xDA~\xDBu\xE7K\x1E\xAFP>\x02]\x7F/\x7F\x80\x99\x1B\xEF\xA2`@\x82\x01QR\x7F*N/\xE8\xAD\xFAS\xF4hRU\x82\xD5\x18LLp\xBB\xDB\x94l!\xF2\x16A\x8A\x98yp^T\xA7` `@\x83\x01Q\x01R\x7F\x06$\xB2\xC1\xE7\x7F$\xAF\xCE\xAF9E\x17C\xB9\xFA\x80\xD5\x85?\xCA{\xA0\x03\x89\xC6ue\x07t\0\x9B``\x82\x01QR\x7F%\rw\x19\xE9L\xA2\xDF\0\xDF\xE3'\x93\x8FZ\x8DM\x83wy\xB9\x987\xCAwzS\xD3\x91'\xB1y` ``\x83\x01Q\x01R\x7F\r\xC0\x95\x15\x15.\xAE\xA6m\r\xB2\xF5q\xCC\x99^6\x9D&\xFEds\x94\xF1\r\xB59\x8C\x91u\x19\xDC`\x80\x82\x01QR\x7F\x12s\x14Ml\xEC,Jh\xB2J\x14\x93y\xC0\xF5Y+\xB7\xFB\xDD\xBE2\xFA\x17\x19\x19\x95\x0C\xA4\x04\xCB` `\x80\x83\x01Q\x01R\x7F\x11\x95!\xBBh\xCA\xEC!n/\x05\xEE\xB4f\xFB:\xBF\xE1\xF3\x9B\xAF\x7F\xE7\xCB9.\xA0W\xB6\xA2\xD9\xBF`\xA0\x82\x01QR\x7F-R\xAD\xEA\xBA\x80E\xE5:\xB5&\xFE\x99\x82\xD0\xEAE-\xEFk>\xA0%='\xA1\x9E\xF3\xB4n\x84(` `\xA0\x83\x01Q\x01R\x7F\x16\xC3\xB5\xB2\x17\xD3\x02\x97Z\x92\r\x137E$\xD7\xA5.JP\xFD\x7F\xB90\x84\"q\xEB\xF4\xA8N\xFD`\xC0\x82\x01QR\x7F \x07\x88\x91k\x90{\x19ir\xBD\xE3\x041\x8E\x88Z%!QK-\xB5\xE4\xA1\x18\x99\xC5\x12\x04\xF0\x89` `\xC0\x83\x01Q\x01R\x7F\x11'X\x1A\xFEu=\xEF\xCA\x9A\xEF\x12\xE73-\xB9\x97\x8A \x0B\x16\x99\xCE8\x88\xC0\xF3\xAE\xA6\x11\x1D\xC3`\xE0\x82\x01QR\x7F\x08\x81\xE1?\0r;\xE1\xA0Hr\xED\x02\xB2\xD0x\xC3\x1E\x80\xFE\xAF'rN&,\xE9|,\xB0\xBB\x1D` `\xE0\x83\x01Q\x01R\x7F\x14\x82\xA3\xA6\xBB\x91\xD6H=\x156\x83\xE2@O/UF\xE0\xE8\x95S\x0F\xDF\x13 \x91I\x84\x06\xE3\xDEa\x01\0\x82\x01QR~\xFAR\xDB=R\xD9\x05\xEA\xD1$\x81\x02\xF3\xA8\nC\xA9\r\x84\0\xC6\x8F`\xA6,T<A{/K` a\x01\0\x83\x01Q\x01R\x7F\nW\xDA\xDDJU\x19\x95%\xACj\xC6\xFA\xBC\x87\xA4\xCC\xCF\xDC\x98\x14+\xCE\xF9\xDB\xF4}\xE0\x0E\xCCQda\x01 \x82\x01QR\x7F\x18\xD9Z\xBD\x9B\x8E\x12\xC3i6\xAA!\x8C\xFF\xF5\x82T\x8Ak\xBF\xF2\\3\x8C \x06\xEA\xEB\x1F\xE5\xB6\x96` a\x01 \x83\x01Q\x01R\x7F+\xC4\x0E\x91\xDD\x16\x9B\x8B\xC1C\xA0)R\xA1\xB6\xC6\xE6'\xBF\xEBz+\xBEPx\xE1A#\xF3\xC5L\x1Ca\x01@\x82\x01QR\x7F\x10\x8De\xA2\x0CW\x9Bm\x98\x83'^\xB6\x88\x9F\xC3\xF5\xFCys\\\xA9\xF6\x11\xA1;g\xDA\xA2\xFB\xC8\xD0` a\x01@\x83\x01Q\x01R\x7F!\xBC\x1F\x86\xD0`\x8E_\x06&\xB4g\xEEo\x82\x82\xB6\x19\"?`\xA7\xAC\xB0\xFCc\xBA{\xDA\xF7\x83\xBEa\x01`\x82\x01QR\x7F\x05\xEF2\x82\xF8\xEE\xF0\x15\x15\xFB\x9A\x8A}l\xA0k\x8B\0}\x1DQ$\x03\xEF\xB2h\xFB\x03\xCE_\t\xE9` a\x01`\x83\x01Q\x01R\x7F,\xABf\xC1\xCBZ\x83\x86\x9Es\xAC4\xFB\xE4gHi\x99\xBA\xBDT\x1D\x90\x10\xEE\x9A\x80H\x06\xEE\xE4\xEFa\x01\x80\x82\x01QR\x7F-\xB1\x98$\x19\xC5\xA4\xA1u\x93\xAC\xFF\x955\xFA\x96v\x83\xD7\\\x8A\xEC\x011\x9Bd\xB8J\xAD\xA2\xAD\x84` a\x01\x80\x83\x01Q\x01R\x7F,8f|l~\xB8h\xBD\xD3\x0C4\xDD?K\x84\xD9\xB9\xB1\xA2}xg\xB3d\xC8\xB7\x83\x14#\xE9\x08a\x01\xA0\x82\x01QR\x7F+,\xB4\x04M\xD5\x11e\xC4\x818!\x9DQ\xCF\x8D\x16\x89\xF9\x1E\xD3\xEE\xEF\xEA\xD6\xE0U\xEBH\x8A,\xE2` a\x01\xA0\x83\x01Q\x01R\x7F-H\xE5G\x03\x01\x1D\xF2\xC7J\x14\xDA\xFD\xE3\xAFO\xD8>\xC7\x18u\xD8\xDD\xC3UFXd\x0C\xC9U\x01a\x01\xC0\x82\x01QR\x7F$:\x99\xD8\r2\xEBT\x08\xB5\x9D[\x080+\xED\xE0p\xD3\xFB\n\x8E\xFE/\"b\xF8e\xBF\xFBM\r` a\x01\xC0\x83\x01Q\x01R\x7F\x04U\xD22[\xF6&\x9Af\xF0}\x83\x8FU\xF3iG\xA3\xCD\x9B\x87\xED\xD8H\x0B\xCE\xD9\\\xBBE\xCC\x11a\x01\xE0\x82\x01QR\x7F\x0Ff\xD9\x08Zn\xD6\x0B\x83\x81y\x98~$\t\x92\xBF\xF4\xC0Ql\xCFl\xCD\xE4\xA1\xCA\x94\xCE\x8B\x98d` a\x01\xE0\x83\x01Q\x01R\x7F+\xAC\r#\xC8X]\x14\x87\xECa\x1B^\xFF\xC9~XR\xFE\xA4:|\xBA6\xCC\xDD, y1\xF3\x94a\x02\0\x82\x01QR\x7F\x18`\xB5N\x01\xA0j\xEAZ\xDBK\x13\xBF[\xAE\xBA\xB9+sh\x07\xA3\xA8\x9F\xF2\x04\t\x92\xB0n\xE6\xEC` a\x02\0\x83\x01Q\x01R\x7F\x0C\x0B\xFA\x1C/\xC6\xF8\xED\x01#=Qh\xDB\x1E\x1D\xFErU\x04\xF02\xF6i\xF5\n\x92\xAEw\xC7)\x06a\x02 \x82\x01QR\x7F\rt\x1E\x12L}\x10i\xB8\xA4\0\xCB\xCD\xCF\xD9\x01(\xA53\x90\x1A\xD4\xDE\x1E\x03\x7F\xE7)\x84\xDC4\xCF` a\x02 \x83\x01Q\x01R\x7F\x01\xCF\xED0\x08\\\x9E\xFC\xE0Fh W\x94\xAA9\xB1\xA8\xEEY\x124\xB4\xC7z\"\xF8\xC2m\x89\x9E\x05a\x02@\x82\x01QR\x7F*\xB6\x8A\xC8-6\xCE\xDBd}\x14\xA5\xB0\x03^\x8C\x9A\x0B\xE8G\x80\xB7\xBA\xE1\x13:'\xA8\x80\x96n\xD1` a\x02@\x83\x01Q\x01R\x7F\x07.\x1DP\xF8\xB5\xCF\x8DWK8G'dw\xD9[\xBDQ\x165\x10\0\x84\x1Fr\x8D\xA4O@C\xB5a\x02`\x82\x01QR\x7F#\xF8\xEAn\xAC\xD0\x87mW\"\x0FW\xEA\xBA\xCB\xE7j##A\x16cs\x1A%\x1D]\xCA6\xF1\xB5\x9F` 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[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\x08!W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x14\x05a\x06\x97V[\x90Pa\x14\x0Fa\x1F\x04V[\x83Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x82R` \x85\x01Q\x16\x81`\x01` \x02\x01R`@\x84\x81\x01Q\x82\x82\x01R`\x01T``\x83\x01R`\x02T`\x80\x83\x01R`\x03T`\xA0\x83\x01R_T`\xC0\x83\x01RQc\xCESzw`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90c\xCESzw\x90a\x14\x8E\x90\x85\x90\x85\x90\x88\x90`\x04\x01a(KV[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x14\xA9W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x14\xCD\x91\x90a*kV[a\x14\xEAW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[`\tT\x15\x80\x15\x90a\x15eWP`\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\x150Wa\x150a&FV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x15Z\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a*\x8AV[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x15\xF8W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x15\x92Wa\x15\x92a&FV[_\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\x15\xD2\x83a*\xA9V[\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[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\x17_WP\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\x17S_Q` a+\x01_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x08\xACW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x17\x85a\r1V[`@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\x06CV[\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\x18\x18WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18\x15\x91\x81\x01\x90a*\xD3V[`\x01[a\x18@W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r\x1CV[_Q` a+\x01_9_Q\x90_R\x81\x14a\x18pW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\x1CV[a\x18z\x83\x83a\x1A}V[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\x08\xACW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[a\x19@a\x1A\xD2V[a\r.\x81a\x1B\x1BV[a\x08\xACa\x1A\xD2V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x19uWP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x19\x82WP` \x82\x01Q\x15[\x80a\x19\x8FWP`@\x82\x01Q\x15[\x80a\x19\x9CWP``\x82\x01Q\x15[\x80a\x19\xA6WP\x81Q\x15[\x80a\x19\xB8WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x19\xCCWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x19\xEAW`@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[a\x1A\x86\x82a\x1B#V[`@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\x1A\xCAWa\x18z\x82\x82a\x1B\x86V[a\x08!a\x1B\xF8V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0T`\x01`@\x1B\x90\x04`\xFF\x16a\x08\xACW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\xF7a\x1A\xD2V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1BXW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r\x1CV[_Q` a+\x01_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\x1B\xA2\x91\x90a*\xEAV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1B\xDAW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1B\xDFV[``\x91P[P\x91P\x91Pa\x1B\xEF\x85\x83\x83a\x1C\x17V[\x95\x94PPPPPV[4\x15a\x08\xACW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a\x1C,Wa\x1C'\x82a\x1CvV[a\x1CoV[\x81Q\x15\x80\x15a\x1CCWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x1ClW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r\x1CV[P\x80[\x93\x92PPPV[\x80Q\x15a\x1C\x86W\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\x1C\xD2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1C\xF2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\x12`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1DR`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Dr`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\x92`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xB2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xD2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xF2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x12`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1ER`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Er`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x92`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xB2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xD2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xF2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\xE0\x01`@R\x80`\x07\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x1F8W__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\x1FMW__\xFD[a\x1Co\x82a\x1F\"V[_` \x82\x84\x03\x12\x15a\x1FfW__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa\x1F\x9F`@\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[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a!\xA5Wa!\xA5a!nV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a!\xD3Wa!\xD3a!nV[`@R\x91\x90PV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x1F8W__\xFD[_``\x82\x84\x03\x12\x15a\"\x01W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"#Wa\"#a!nV[`@R\x90P\x80a\"2\x83a!\xDBV[\x81Ra\"@` \x84\x01a!\xDBV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a\"fW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"\x88Wa\"\x88a!nV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[__\x82\x84\x03a\x04\xE0\x81\x12\x15a\"\xB5W__\xFD[a\"\xBF\x85\x85a!\xF1V[\x92Pa\x04\x80`_\x19\x82\x01\x12\x15a\"\xD3W__\xFD[Pa\"\xDCa!\x82V[a\"\xE9\x85``\x86\x01a\"VV[\x81Ra\"\xF8\x85`\xA0\x86\x01a\"VV[` \x82\x01Ra#\n\x85`\xE0\x86\x01a\"VV[`@\x82\x01Ra#\x1D\x85a\x01 \x86\x01a\"VV[``\x82\x01Ra#0\x85a\x01`\x86\x01a\"VV[`\x80\x82\x01Ra#C\x85a\x01\xA0\x86\x01a\"VV[`\xA0\x82\x01Ra#V\x85a\x01\xE0\x86\x01a\"VV[`\xC0\x82\x01Ra#i\x85a\x02 \x86\x01a\"VV[`\xE0\x82\x01Ra#|\x85a\x02`\x86\x01a\"VV[a\x01\0\x82\x01Ra#\x90\x85a\x02\xA0\x86\x01a\"VV[a\x01 \x82\x01Ra#\xA4\x85a\x02\xE0\x86\x01a\"VV[a\x01@\x82\x01Ra#\xB8\x85a\x03 \x86\x01a\"VV[a\x01`\x82\x01Ra#\xCC\x85a\x03`\x86\x01a\"VV[a\x01\x80\x82\x01Ra\x03\xA0\x84\x015a\x01\xA0\x82\x01Ra\x03\xC0\x84\x015a\x01\xC0\x82\x01Ra\x03\xE0\x84\x015a\x01\xE0\x82\x01Ra\x04\0\x84\x015a\x02\0\x82\x01Ra\x04 \x84\x015a\x02 \x82\x01Ra\x04@\x84\x015a\x02@\x82\x01Ra\x04`\x84\x015a\x02`\x82\x01Ra\x04\x80\x84\x015a\x02\x80\x82\x01Ra\x04\xA0\x84\x015a\x02\xA0\x82\x01Ra\x04\xC0\x90\x93\x015a\x02\xC0\x84\x01RP\x92\x90\x91PV[__`@\x83\x85\x03\x12\x15a$cW__\xFD[a$l\x83a\x1F\"V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a$\x86W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a$\x96W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a$\xAFWa$\xAFa!nV[a$\xC2`\x1F\x82\x01`\x1F\x19\x16` \x01a!\xABV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a$\xD6W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1F8W__\xFD[_` \x82\x84\x03\x12\x15a%\x18W__\xFD[a\x1Co\x82a$\xF5V[____\x84\x86\x03a\x01 \x81\x12\x15a%6W__\xFD[a%@\x87\x87a!\xF1V[\x94P`\x80`_\x19\x82\x01\x12\x15a%SW__\xFD[P`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a%vWa%va!nV[`@\x90\x81R``\x87\x81\x015\x83R`\x80\x88\x015` \x84\x01R`\xA0\x88\x015\x91\x83\x01\x91\x90\x91R`\xC0\x87\x015\x90\x82\x01R\x92Pa%\xB0`\xE0\x86\x01a$\xF5V[\x91Pa%\xBFa\x01\0\x86\x01a\x1F\"V[\x90P\x92\x95\x91\x94P\x92PV[` \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\x15a&\x10W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x0C\xE9Wa\x0C\xE9a&\x1FV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x81a&hWa&ha&\x1FV[P_\x19\x01\x90V[\x80_[`\x07\x81\x10\x15a\x14\xEAW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a&rV[a&\xA6\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\x01Qa(}`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x85\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x85\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x85\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x85\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x85\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x85\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x85\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x85\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x85\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x85\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x85\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x85\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x85\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x85\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x85\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x85\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x85\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x85\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x85\x01Qa\x04\xE0\x83\x01Ra*Ua\x05\0\x83\x01\x85a&oV[a*ca\x05\xE0\x83\x01\x84a&\x91V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a*{W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1CoW__\xFD[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x0C\xE9Wa\x0C\xE9a&\x1FV[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a*\xCAWa*\xCAa&\x1FV[`\x01\x01\x92\x91PPV[_` \x82\x84\x03\x12\x15a*\xE3W__\xFD[PQ\x91\x90PV[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08\x1C\0\n",
3729    );
3730    /// The runtime bytecode of the contract, as deployed on the network.
3731    ///
3732    /// ```text
3733    ///0x608060405260043610610161575f3560e01c8063715018a6116100cd5780639fdb54a711610087578063d24d933d11610062578063d24d933d1461051a578063e030330114610549578063f2fde38b14610568578063f9e50d1914610587575f5ffd5b80639fdb54a714610450578063ad3cb1cc146104a5578063c23b9e9e146104e2575f5ffd5b8063715018a61461035b578063826e41fc1461036f5780638584d23f1461039a5780638da5cb5b146103d657806396c1ca61146104125780639baa3cc914610431575f5ffd5b8063313df7b11161011e578063313df7b11461028c578063378ec23b146102c3578063426d3194146102df5780634f1ef2861461032057806352d1902d1461033357806369cc6a0414610347575f5ffd5b8063013fa5fc1461016557806302b592f3146101865780630d8e6e2c146101e357806312173c2c1461020e5780632063d4f71461022f5780632f79889d1461024e575b5f5ffd5b348015610170575f5ffd5b5061018461017f366004611f3d565b61059b565b005b348015610191575f5ffd5b506101a56101a0366004611f56565b61064e565b6040516101da94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156101ee575f5ffd5b5060408051600181525f60208201819052918101919091526060016101da565b348015610219575f5ffd5b50610222610697565b6040516101da9190611f6d565b34801561023a575f5ffd5b506101846102493660046122a2565b6106ac565b348015610259575f5ffd5b5060085461027490600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016101da565b348015610297575f5ffd5b506008546102ab906001600160a01b031681565b6040516001600160a01b0390911681526020016101da565b3480156102ce575f5ffd5b50435b6040519081526020016101da565b3480156102ea575f5ffd5b505f546001546002546003546103009392919084565b6040805194855260208501939093529183015260608201526080016101da565b61018461032e366004612452565b610806565b34801561033e575f5ffd5b506102d1610825565b348015610352575f5ffd5b50610184610840565b348015610366575f5ffd5b506101846108ae565b34801561037a575f5ffd5b506008546001600160a01b031615155b60405190151581526020016101da565b3480156103a5575f5ffd5b506103b96103b4366004611f56565b6108bf565b604080519283526001600160401b039091166020830152016101da565b3480156103e1575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166102ab565b34801561041d575f5ffd5b5061018461042c366004612508565b6109ea565b34801561043c575f5ffd5b5061018461044b366004612521565b610a73565b34801561045b575f5ffd5b5060065460075461047f916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016101da565b3480156104b0575f5ffd5b506104d5604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101da91906125ca565b3480156104ed575f5ffd5b5060085461050590600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016101da565b348015610525575f5ffd5b5060045460055461047f916001600160401b0380821692600160401b909204169083565b348015610554575f5ffd5b5061038a6105633660046125ff565b610b95565b348015610573575f5ffd5b50610184610582366004611f3d565b610cef565b348015610592575f5ffd5b506009546102d1565b6105a3610d31565b6001600160a01b0381166105ca5760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036105f95760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b6009818154811061065d575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b61069f611c9f565b6106a7610d8c565b905090565b6008546001600160a01b0316151580156106d157506008546001600160a01b03163314155b156106ef576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b039182169116111580610728575060065460208301516001600160401b03600160401b9092048216911611155b156107465760405163051c46ef60e01b815260040160405180910390fd5b61075382604001516113bb565b61075d82826113fc565b81516006805460208501516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408201516007556107aa6107a34390565b42846114f0565b81602001516001600160401b0316825f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae684604001516040516107fa91815260200190565b60405180910390a35050565b61080e6116d9565b6108178261177d565b61082182826117be565b5050565b5f61082e61187f565b505f516020612b015f395f51905f5290565b610848610d31565b6008546001600160a01b03161561089357600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b6108b6610d31565b6108ac5f6118c8565b600980545f918291906108d3600183612633565b815481106108e3576108e3612646565b5f918252602090912060029091020154600160801b90046001600160401b0316841061092257604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b818110156109e357846009828154811061095257610952612646565b5f918252602090912060029091020154600160801b90046001600160401b031611156109db576009818154811061098b5761098b612646565b905f5260205f20906002020160010154600982815481106109ae576109ae612646565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610936565b5050915091565b6109f2610d31565b610e108163ffffffff161080610a1157506301e133808163ffffffff16115b80610a2f575060085463ffffffff600160a01b909104811690821611155b15610a4d576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610ab75750825b90505f826001600160401b03166001148015610ad25750303b155b905081158015610ae0575080155b15610afe5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610b2857845460ff60401b1916600160401b1785555b610b3186611938565b610b39611949565b610b44898989611951565b8315610b8a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6009545f9043841180610ba6575080155b80610bf05750600854600980549091600160c01b90046001600160401b0316908110610bd457610bd4612646565b5f9182526020909120600290910201546001600160401b031684105b15610c0e5760405163b0b4387760e01b815260040160405180910390fd5b5f8080610c1c600185612633565b90505b81610cb857600854600160c01b90046001600160401b03168110610cb8578660098281548110610c5157610c51612646565b5f9182526020909120600290910201546001600160401b031611610ca6576001915060098181548110610c8657610c86612646565b5f9182526020909120600290910201546001600160401b03169250610cb8565b80610cb08161265a565b915050610c1f565b81610cd65760405163b0b4387760e01b815260040160405180910390fd5b85610ce18489612633565b119450505050505b92915050565b610cf7610d31565b6001600160a01b038116610d2557604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610d2e816118c8565b50565b33610d637f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146108ac5760405163118cdaa760e01b8152336004820152602401610d1c565b610d94611c9f565b621000008152600760208201527f23783d0e9777b7af65fbf849da7edb75e74b1eaf503e025d7f2f7f80991befa26040820151527f2a4e2fe8adfa53f468525582d5184c4c70bbdb946c21f216418a9879705e54a76020604083015101527f0624b2c1e77f24afceaf39451743b9fa80d5853fca7ba00389c675650774009b6060820151527f250d7719e94ca2df00dfe327938f5a8d4d837779b99837ca777a53d39127b1796020606083015101527f0dc09515152eaea66d0db2f571cc995e369d26fe647394f10db5398c917519dc6080820151527f1273144d6cec2c4a68b24a149379c0f5592bb7fbddbe32fa171919950ca404cb6020608083015101527f119521bb68caec216e2f05eeb466fb3abfe1f39baf7fe7cb392ea057b6a2d9bf60a0820151527f2d52adeaba8045e53ab526fe9982d0ea452def6b3ea0253d27a19ef3b46e8428602060a083015101527f16c3b5b217d302975a920d13374524d7a52e4a50fd7fb930842271ebf4a84efd60c0820151527f200788916b907b196972bde304318e885a2521514b2db5e4a11899c51204f089602060c083015101527f1127581afe753defca9aef12e7332db9978a200b1699ce3888c0f3aea6111dc360e0820151527f0881e13f00723be1a04872ed02b2d078c31e80feaf27724e262ce97c2cb0bb1d602060e083015101527f1482a3a6bb91d6483d153683e2404f2f5546e0e895530fdf132091498406e3de610100820151527efa52db3d52d905ead1248102f3a80a43a90d8400c68f60a62c543c417b2f4b602061010083015101527f0a57dadd4a55199525ac6ac6fabc87a4cccfdc98142bcef9dbf47de00ecc5164610120820151527f18d95abd9b8e12c36936aa218cfff582548a6bbff25c338c2006eaeb1fe5b696602061012083015101527f2bc40e91dd169b8bc143a02952a1b6c6e627bfeb7a2bbe5078e14123f3c54c1c610140820151527f108d65a20c579b6d9883275eb6889fc3f5fc79735ca9f611a13b67daa2fbc8d0602061014083015101527f21bc1f86d0608e5f0626b467ee6f8282b619223f60a7acb0fc63ba7bdaf783be610160820151527f05ef3282f8eef01515fb9a8a7d6ca06b8b007d1d512403efb268fb03ce5f09e9602061016083015101527f2cab66c1cb5a83869e73ac34fbe467486999babd541d9010ee9a804806eee4ef610180820151527f2db1982419c5a4a17593acff9535fa967683d75c8aec01319b64b84aada2ad84602061018083015101527f2c38667c6c7eb868bdd30c34dd3f4b84d9b9b1a27d7867b364c8b7831423e9086101a0820151527f2b2cb4044dd51165c48138219d51cf8d1689f91ed3eeefead6e055eb488a2ce260206101a083015101527f2d48e54703011df2c74a14dafde3af4fd83ec71875d8ddc3554658640cc955016101c0820151527f243a99d80d32eb5408b59d5b08302bede070d3fb0a8efe2f2262f865bffb4d0d60206101c083015101527f0455d2325bf6269a66f07d838f55f36947a3cd9b87edd8480bced95cbb45cc116101e0820151527f0f66d9085a6ed60b838179987e240992bff4c0516ccf6ccde4a1ca94ce8b986460206101e083015101527f2bac0d23c8585d1487ec611b5effc97e5852fea43a7cba36ccdd2c207931f394610200820151527f1860b54e01a06aea5adb4b13bf5baebab92b736807a3a89ff2040992b06ee6ec602061020083015101527f0c0bfa1c2fc6f8ed01233d5168db1e1dfe725504f032f669f50a92ae77c72906610220820151527f0d741e124c7d1069b8a400cbcdcfd90128a533901ad4de1e037fe72984dc34cf602061022083015101527f01cfed30085c9efce04668205794aa39b1a8ee591234b4c77a22f8c26d899e05610240820151527f2ab68ac82d36cedb647d14a5b0035e8c9a0be84780b7bae1133a27a880966ed1602061024083015101527f072e1d50f8b5cf8d574b3847276477d95bbd5116351000841f728da44f4043b5610260820151527f23f8ea6eacd0876d57220f57eabacbe76a2323411663731a251d5dca36f1b59f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806108215760405163016c173360e21b815260040160405180910390fd5b5f611405610697565b905061140f611f04565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a08301525f5460c08301525163ce537a7760e01b815273ffffffffffffffffffffffffffffffffffffffff9063ce537a779061148e9085908590889060040161284b565b602060405180830381865af41580156114a9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114cd9190612a6b565b6114ea576040516309bde33960e01b815260040160405180910390fd5b50505050565b60095415801590611565575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b031690811061153057611530612646565b5f91825260209091206002909102015461155a90600160401b90046001600160401b031684612a8a565b6001600160401b0316115b156115f857600854600980549091600160c01b90046001600160401b031690811061159257611592612646565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b03169060186115d283612aa9565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061175f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166117535f516020612b015f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156108ac5760405163703e46dd60e11b815260040160405180910390fd5b611785610d31565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610643565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611818575060408051601f3d908101601f1916820190925261181591810190612ad3565b60015b61184057604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d1c565b5f516020612b015f395f51905f52811461187057604051632a87526960e21b815260048101829052602401610d1c565b61187a8383611a7d565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108ac5760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611940611ad2565b610d2e81611b1b565b6108ac611ad2565b82516001600160401b0316151580611975575060208301516001600160401b031615155b8061198257506020820151155b8061198f57506040820151155b8061199c57506060820151155b806119a657508151155b806119b85750610e108163ffffffff16105b806119cc57506301e133808163ffffffff16115b156119ea576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b611a8682611b23565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611aca5761187a8282611b86565b610821611bf8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166108ac57604051631afcd79f60e31b815260040160405180910390fd5b610cf7611ad2565b806001600160a01b03163b5f03611b5857604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d1c565b5f516020612b015f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611ba29190612aea565b5f60405180830381855af49150503d805f8114611bda576040519150601f19603f3d011682016040523d82523d5f602084013e611bdf565b606091505b5091509150611bef858383611c17565b95945050505050565b34156108ac5760405163b398979f60e01b815260040160405180910390fd5b606082611c2c57611c2782611c76565b611c6f565b8151158015611c4357506001600160a01b0384163b155b15611c6c57604051639996b31560e01b81526001600160a01b0385166004820152602401610d1c565b50805b9392505050565b805115611c865780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f8152602001611cd260405180604001604052805f81526020015f81525090565b8152602001611cf260405180604001604052805f81526020015f81525090565b8152602001611d1260405180604001604052805f81526020015f81525090565b8152602001611d3260405180604001604052805f81526020015f81525090565b8152602001611d5260405180604001604052805f81526020015f81525090565b8152602001611d7260405180604001604052805f81526020015f81525090565b8152602001611d9260405180604001604052805f81526020015f81525090565b8152602001611db260405180604001604052805f81526020015f81525090565b8152602001611dd260405180604001604052805f81526020015f81525090565b8152602001611df260405180604001604052805f81526020015f81525090565b8152602001611e1260405180604001604052805f81526020015f81525090565b8152602001611e3260405180604001604052805f81526020015f81525090565b8152602001611e5260405180604001604052805f81526020015f81525090565b8152602001611e7260405180604001604052805f81526020015f81525090565b8152602001611e9260405180604001604052805f81526020015f81525090565b8152602001611eb260405180604001604052805f81526020015f81525090565b8152602001611ed260405180604001604052805f81526020015f81525090565b8152602001611ef260405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b6040518060e001604052806007906020820280368337509192915050565b80356001600160a01b0381168114611f38575f5ffd5b919050565b5f60208284031215611f4d575f5ffd5b611c6f82611f22565b5f60208284031215611f66575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151611f9f604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b03811182821017156121a5576121a561216e565b60405290565b604051601f8201601f191681016001600160401b03811182821017156121d3576121d361216e565b604052919050565b80356001600160401b0381168114611f38575f5ffd5b5f60608284031215612201575f5ffd5b604051606081016001600160401b03811182821017156122235761222361216e565b604052905080612232836121db565b8152612240602084016121db565b6020820152604092830135920191909152919050565b5f60408284031215612266575f5ffd5b604080519081016001600160401b03811182821017156122885761228861216e565b604052823581526020928301359281019290925250919050565b5f5f8284036104e08112156122b5575f5ffd5b6122bf85856121f1565b9250610480605f19820112156122d3575f5ffd5b506122dc612182565b6122e98560608601612256565b81526122f88560a08601612256565b602082015261230a8560e08601612256565b604082015261231d856101208601612256565b6060820152612330856101608601612256565b6080820152612343856101a08601612256565b60a0820152612356856101e08601612256565b60c0820152612369856102208601612256565b60e082015261237c856102608601612256565b610100820152612390856102a08601612256565b6101208201526123a4856102e08601612256565b6101408201526123b8856103208601612256565b6101608201526123cc856103608601612256565b6101808201526103a08401356101a08201526103c08401356101c08201526103e08401356101e08201526104008401356102008201526104208401356102208201526104408401356102408201526104608401356102608201526104808401356102808201526104a08401356102a08201526104c0909301356102c08401525092909150565b5f5f60408385031215612463575f5ffd5b61246c83611f22565b915060208301356001600160401b03811115612486575f5ffd5b8301601f81018513612496575f5ffd5b80356001600160401b038111156124af576124af61216e565b6124c2601f8201601f19166020016121ab565b8181528660208385010111156124d6575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff81168114611f38575f5ffd5b5f60208284031215612518575f5ffd5b611c6f826124f5565b5f5f5f5f848603610120811215612536575f5ffd5b61254087876121f1565b94506080605f1982011215612553575f5ffd5b50604051608081016001600160401b03811182821017156125765761257661216e565b604090815260608781013583526080880135602084015260a08801359183019190915260c08701359082015292506125b060e086016124f5565b91506125bf6101008601611f22565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215612610575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610ce957610ce961261f565b634e487b7160e01b5f52603260045260245ffd5b5f816126685761266861261f565b505f190190565b805f5b60078110156114ea578151845260209384019390910190600101612672565b6126a682825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a60820190508451825260208501516020830152604085015161287d604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152612a5561050083018561266f565b612a636105e0830184612691565b949350505050565b5f60208284031215612a7b575f5ffd5b81518015158114611c6f575f5ffd5b6001600160401b038281168282160390811115610ce957610ce961261f565b5f6001600160401b0382166001600160401b038103612aca57612aca61261f565b60010192915050565b5f60208284031215612ae3575f5ffd5b5051919050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
3734    /// ```
3735    #[rustfmt::skip]
3736    #[allow(clippy::all)]
3737    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3738        b"`\x80`@R`\x046\x10a\x01aW_5`\xE0\x1C\x80cqP\x18\xA6\x11a\0\xCDW\x80c\x9F\xDBT\xA7\x11a\0\x87W\x80c\xD2M\x93=\x11a\0bW\x80c\xD2M\x93=\x14a\x05\x1AW\x80c\xE003\x01\x14a\x05IW\x80c\xF2\xFD\xE3\x8B\x14a\x05hW\x80c\xF9\xE5\r\x19\x14a\x05\x87W__\xFD[\x80c\x9F\xDBT\xA7\x14a\x04PW\x80c\xAD<\xB1\xCC\x14a\x04\xA5W\x80c\xC2;\x9E\x9E\x14a\x04\xE2W__\xFD[\x80cqP\x18\xA6\x14a\x03[W\x80c\x82nA\xFC\x14a\x03oW\x80c\x85\x84\xD2?\x14a\x03\x9AW\x80c\x8D\xA5\xCB[\x14a\x03\xD6W\x80c\x96\xC1\xCAa\x14a\x04\x12W\x80c\x9B\xAA<\xC9\x14a\x041W__\xFD[\x80c1=\xF7\xB1\x11a\x01\x1EW\x80c1=\xF7\xB1\x14a\x02\x8CW\x80c7\x8E\xC2;\x14a\x02\xC3W\x80cBm1\x94\x14a\x02\xDFW\x80cO\x1E\xF2\x86\x14a\x03 W\x80cR\xD1\x90-\x14a\x033W\x80ci\xCCj\x04\x14a\x03GW__\xFD[\x80c\x01?\xA5\xFC\x14a\x01eW\x80c\x02\xB5\x92\xF3\x14a\x01\x86W\x80c\r\x8En,\x14a\x01\xE3W\x80c\x12\x17<,\x14a\x02\x0EW\x80c c\xD4\xF7\x14a\x02/W\x80c/y\x88\x9D\x14a\x02NW[__\xFD[4\x80\x15a\x01pW__\xFD[Pa\x01\x84a\x01\x7F6`\x04a\x1F=V[a\x05\x9BV[\0[4\x80\x15a\x01\x91W__\xFD[Pa\x01\xA5a\x01\xA06`\x04a\x1FVV[a\x06NV[`@Qa\x01\xDA\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\x01\xEEW__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x01\xDAV[4\x80\x15a\x02\x19W__\xFD[Pa\x02\"a\x06\x97V[`@Qa\x01\xDA\x91\x90a\x1FmV[4\x80\x15a\x02:W__\xFD[Pa\x01\x84a\x02I6`\x04a\"\xA2V[a\x06\xACV[4\x80\x15a\x02YW__\xFD[P`\x08Ta\x02t\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\x97W__\xFD[P`\x08Ta\x02\xAB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xCEW__\xFD[PC[`@Q\x90\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xEAW__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\0\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x01\xDAV[a\x01\x84a\x03.6`\x04a$RV[a\x08\x06V[4\x80\x15a\x03>W__\xFD[Pa\x02\xD1a\x08%V[4\x80\x15a\x03RW__\xFD[Pa\x01\x84a\x08@V[4\x80\x15a\x03fW__\xFD[Pa\x01\x84a\x08\xAEV[4\x80\x15a\x03zW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15[`@Q\x90\x15\x15\x81R` \x01a\x01\xDAV[4\x80\x15a\x03\xA5W__\xFD[Pa\x03\xB9a\x03\xB46`\x04a\x1FVV[a\x08\xBFV[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x01\xDAV[4\x80\x15a\x03\xE1W__\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\x02\xABV[4\x80\x15a\x04\x1DW__\xFD[Pa\x01\x84a\x04,6`\x04a%\x08V[a\t\xEAV[4\x80\x15a\x04<W__\xFD[Pa\x01\x84a\x04K6`\x04a%!V[a\nsV[4\x80\x15a\x04[W__\xFD[P`\x06T`\x07Ta\x04\x7F\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\x01\xDAV[4\x80\x15a\x04\xB0W__\xFD[Pa\x04\xD5`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x01\xDA\x91\x90a%\xCAV[4\x80\x15a\x04\xEDW__\xFD[P`\x08Ta\x05\x05\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x05%W__\xFD[P`\x04T`\x05Ta\x04\x7F\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x05TW__\xFD[Pa\x03\x8Aa\x05c6`\x04a%\xFFV[a\x0B\x95V[4\x80\x15a\x05sW__\xFD[Pa\x01\x84a\x05\x826`\x04a\x1F=V[a\x0C\xEFV[4\x80\x15a\x05\x92W__\xFD[P`\tTa\x02\xD1V[a\x05\xA3a\r1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x05\xCAW`@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\x05\xF9W`@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\x06]W_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\x06\x9Fa\x1C\x9FV[a\x06\xA7a\r\x8CV[\x90P\x90V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x06\xD1WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x06\xEFW`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x82Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x07(WP`\x06T` \x83\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x07FW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x07S\x82`@\x01Qa\x13\xBBV[a\x07]\x82\x82a\x13\xFCV[\x81Q`\x06\x80T` \x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x82\x01Q`\x07Ua\x07\xAAa\x07\xA3C\x90V[B\x84a\x14\xF0V[\x81` \x01Q`\x01`\x01`@\x1B\x03\x16\x82_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x84`@\x01Q`@Qa\x07\xFA\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPV[a\x08\x0Ea\x16\xD9V[a\x08\x17\x82a\x17}V[a\x08!\x82\x82a\x17\xBEV[PPV[_a\x08.a\x18\x7FV[P_Q` a+\x01_9_Q\x90_R\x90V[a\x08Ha\r1V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x08\x93W`\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\x08\xB6a\r1V[a\x08\xAC_a\x18\xC8V[`\t\x80T_\x91\x82\x91\x90a\x08\xD3`\x01\x83a&3V[\x81T\x81\x10a\x08\xE3Wa\x08\xE3a&FV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\t\"W`@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\t\xE3W\x84`\t\x82\x81T\x81\x10a\tRWa\tRa&FV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\t\xDBW`\t\x81\x81T\x81\x10a\t\x8BWa\t\x8Ba&FV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\t\xAEWa\t\xAEa&FV[\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\t6V[PP\x91P\x91V[a\t\xF2a\r1V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\n\x11WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\n/WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\nMW`@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[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\n\xB7WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\n\xD2WP0;\x15[\x90P\x81\x15\x80\x15a\n\xE0WP\x80\x15[\x15a\n\xFEW`@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\x0B(W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0B1\x86a\x198V[a\x0B9a\x19IV[a\x0BD\x89\x89\x89a\x19QV[\x83\x15a\x0B\x8AW\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[`\tT_\x90C\x84\x11\x80a\x0B\xA6WP\x80\x15[\x80a\x0B\xF0WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x0B\xD4Wa\x0B\xD4a&FV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x0C\x0EW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x0C\x1C`\x01\x85a&3V[\x90P[\x81a\x0C\xB8W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x0C\xB8W\x86`\t\x82\x81T\x81\x10a\x0CQWa\x0CQa&FV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x0C\xA6W`\x01\x91P`\t\x81\x81T\x81\x10a\x0C\x86Wa\x0C\x86a&FV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x0C\xB8V[\x80a\x0C\xB0\x81a&ZV[\x91PPa\x0C\x1FV[\x81a\x0C\xD6W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x0C\xE1\x84\x89a&3V[\x11\x94PPPPP[\x92\x91PPV[a\x0C\xF7a\r1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r%W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\r.\x81a\x18\xC8V[PV[3a\rc\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\x08\xACW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r\x1CV[a\r\x94a\x1C\x9FV[b\x10\0\0\x81R`\x07` \x82\x01R\x7F#x=\x0E\x97w\xB7\xAFe\xFB\xF8I\xDA~\xDBu\xE7K\x1E\xAFP>\x02]\x7F/\x7F\x80\x99\x1B\xEF\xA2`@\x82\x01QR\x7F*N/\xE8\xAD\xFAS\xF4hRU\x82\xD5\x18LLp\xBB\xDB\x94l!\xF2\x16A\x8A\x98yp^T\xA7` `@\x83\x01Q\x01R\x7F\x06$\xB2\xC1\xE7\x7F$\xAF\xCE\xAF9E\x17C\xB9\xFA\x80\xD5\x85?\xCA{\xA0\x03\x89\xC6ue\x07t\0\x9B``\x82\x01QR\x7F%\rw\x19\xE9L\xA2\xDF\0\xDF\xE3'\x93\x8FZ\x8DM\x83wy\xB9\x987\xCAwzS\xD3\x91'\xB1y` ``\x83\x01Q\x01R\x7F\r\xC0\x95\x15\x15.\xAE\xA6m\r\xB2\xF5q\xCC\x99^6\x9D&\xFEds\x94\xF1\r\xB59\x8C\x91u\x19\xDC`\x80\x82\x01QR\x7F\x12s\x14Ml\xEC,Jh\xB2J\x14\x93y\xC0\xF5Y+\xB7\xFB\xDD\xBE2\xFA\x17\x19\x19\x95\x0C\xA4\x04\xCB` `\x80\x83\x01Q\x01R\x7F\x11\x95!\xBBh\xCA\xEC!n/\x05\xEE\xB4f\xFB:\xBF\xE1\xF3\x9B\xAF\x7F\xE7\xCB9.\xA0W\xB6\xA2\xD9\xBF`\xA0\x82\x01QR\x7F-R\xAD\xEA\xBA\x80E\xE5:\xB5&\xFE\x99\x82\xD0\xEAE-\xEFk>\xA0%='\xA1\x9E\xF3\xB4n\x84(` `\xA0\x83\x01Q\x01R\x7F\x16\xC3\xB5\xB2\x17\xD3\x02\x97Z\x92\r\x137E$\xD7\xA5.JP\xFD\x7F\xB90\x84\"q\xEB\xF4\xA8N\xFD`\xC0\x82\x01QR\x7F \x07\x88\x91k\x90{\x19ir\xBD\xE3\x041\x8E\x88Z%!QK-\xB5\xE4\xA1\x18\x99\xC5\x12\x04\xF0\x89` `\xC0\x83\x01Q\x01R\x7F\x11'X\x1A\xFEu=\xEF\xCA\x9A\xEF\x12\xE73-\xB9\x97\x8A \x0B\x16\x99\xCE8\x88\xC0\xF3\xAE\xA6\x11\x1D\xC3`\xE0\x82\x01QR\x7F\x08\x81\xE1?\0r;\xE1\xA0Hr\xED\x02\xB2\xD0x\xC3\x1E\x80\xFE\xAF'rN&,\xE9|,\xB0\xBB\x1D` `\xE0\x83\x01Q\x01R\x7F\x14\x82\xA3\xA6\xBB\x91\xD6H=\x156\x83\xE2@O/UF\xE0\xE8\x95S\x0F\xDF\x13 \x91I\x84\x06\xE3\xDEa\x01\0\x82\x01QR~\xFAR\xDB=R\xD9\x05\xEA\xD1$\x81\x02\xF3\xA8\nC\xA9\r\x84\0\xC6\x8F`\xA6,T<A{/K` a\x01\0\x83\x01Q\x01R\x7F\nW\xDA\xDDJU\x19\x95%\xACj\xC6\xFA\xBC\x87\xA4\xCC\xCF\xDC\x98\x14+\xCE\xF9\xDB\xF4}\xE0\x0E\xCCQda\x01 \x82\x01QR\x7F\x18\xD9Z\xBD\x9B\x8E\x12\xC3i6\xAA!\x8C\xFF\xF5\x82T\x8Ak\xBF\xF2\\3\x8C \x06\xEA\xEB\x1F\xE5\xB6\x96` a\x01 \x83\x01Q\x01R\x7F+\xC4\x0E\x91\xDD\x16\x9B\x8B\xC1C\xA0)R\xA1\xB6\xC6\xE6'\xBF\xEBz+\xBEPx\xE1A#\xF3\xC5L\x1Ca\x01@\x82\x01QR\x7F\x10\x8De\xA2\x0CW\x9Bm\x98\x83'^\xB6\x88\x9F\xC3\xF5\xFCys\\\xA9\xF6\x11\xA1;g\xDA\xA2\xFB\xC8\xD0` a\x01@\x83\x01Q\x01R\x7F!\xBC\x1F\x86\xD0`\x8E_\x06&\xB4g\xEEo\x82\x82\xB6\x19\"?`\xA7\xAC\xB0\xFCc\xBA{\xDA\xF7\x83\xBEa\x01`\x82\x01QR\x7F\x05\xEF2\x82\xF8\xEE\xF0\x15\x15\xFB\x9A\x8A}l\xA0k\x8B\0}\x1DQ$\x03\xEF\xB2h\xFB\x03\xCE_\t\xE9` a\x01`\x83\x01Q\x01R\x7F,\xABf\xC1\xCBZ\x83\x86\x9Es\xAC4\xFB\xE4gHi\x99\xBA\xBDT\x1D\x90\x10\xEE\x9A\x80H\x06\xEE\xE4\xEFa\x01\x80\x82\x01QR\x7F-\xB1\x98$\x19\xC5\xA4\xA1u\x93\xAC\xFF\x955\xFA\x96v\x83\xD7\\\x8A\xEC\x011\x9Bd\xB8J\xAD\xA2\xAD\x84` a\x01\x80\x83\x01Q\x01R\x7F,8f|l~\xB8h\xBD\xD3\x0C4\xDD?K\x84\xD9\xB9\xB1\xA2}xg\xB3d\xC8\xB7\x83\x14#\xE9\x08a\x01\xA0\x82\x01QR\x7F+,\xB4\x04M\xD5\x11e\xC4\x818!\x9DQ\xCF\x8D\x16\x89\xF9\x1E\xD3\xEE\xEF\xEA\xD6\xE0U\xEBH\x8A,\xE2` a\x01\xA0\x83\x01Q\x01R\x7F-H\xE5G\x03\x01\x1D\xF2\xC7J\x14\xDA\xFD\xE3\xAFO\xD8>\xC7\x18u\xD8\xDD\xC3UFXd\x0C\xC9U\x01a\x01\xC0\x82\x01QR\x7F$:\x99\xD8\r2\xEBT\x08\xB5\x9D[\x080+\xED\xE0p\xD3\xFB\n\x8E\xFE/\"b\xF8e\xBF\xFBM\r` a\x01\xC0\x83\x01Q\x01R\x7F\x04U\xD22[\xF6&\x9Af\xF0}\x83\x8FU\xF3iG\xA3\xCD\x9B\x87\xED\xD8H\x0B\xCE\xD9\\\xBBE\xCC\x11a\x01\xE0\x82\x01QR\x7F\x0Ff\xD9\x08Zn\xD6\x0B\x83\x81y\x98~$\t\x92\xBF\xF4\xC0Ql\xCFl\xCD\xE4\xA1\xCA\x94\xCE\x8B\x98d` a\x01\xE0\x83\x01Q\x01R\x7F+\xAC\r#\xC8X]\x14\x87\xECa\x1B^\xFF\xC9~XR\xFE\xA4:|\xBA6\xCC\xDD, y1\xF3\x94a\x02\0\x82\x01QR\x7F\x18`\xB5N\x01\xA0j\xEAZ\xDBK\x13\xBF[\xAE\xBA\xB9+sh\x07\xA3\xA8\x9F\xF2\x04\t\x92\xB0n\xE6\xEC` a\x02\0\x83\x01Q\x01R\x7F\x0C\x0B\xFA\x1C/\xC6\xF8\xED\x01#=Qh\xDB\x1E\x1D\xFErU\x04\xF02\xF6i\xF5\n\x92\xAEw\xC7)\x06a\x02 \x82\x01QR\x7F\rt\x1E\x12L}\x10i\xB8\xA4\0\xCB\xCD\xCF\xD9\x01(\xA53\x90\x1A\xD4\xDE\x1E\x03\x7F\xE7)\x84\xDC4\xCF` a\x02 \x83\x01Q\x01R\x7F\x01\xCF\xED0\x08\\\x9E\xFC\xE0Fh W\x94\xAA9\xB1\xA8\xEEY\x124\xB4\xC7z\"\xF8\xC2m\x89\x9E\x05a\x02@\x82\x01QR\x7F*\xB6\x8A\xC8-6\xCE\xDBd}\x14\xA5\xB0\x03^\x8C\x9A\x0B\xE8G\x80\xB7\xBA\xE1\x13:'\xA8\x80\x96n\xD1` a\x02@\x83\x01Q\x01R\x7F\x07.\x1DP\xF8\xB5\xCF\x8DWK8G'dw\xD9[\xBDQ\x165\x10\0\x84\x1Fr\x8D\xA4O@C\xB5a\x02`\x82\x01QR\x7F#\xF8\xEAn\xAC\xD0\x87mW\"\x0FW\xEA\xBA\xCB\xE7j##A\x16cs\x1A%\x1D]\xCA6\xF1\xB5\x9F` 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[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\x08!W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x14\x05a\x06\x97V[\x90Pa\x14\x0Fa\x1F\x04V[\x83Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x82R` \x85\x01Q\x16\x81`\x01` \x02\x01R`@\x84\x81\x01Q\x82\x82\x01R`\x01T``\x83\x01R`\x02T`\x80\x83\x01R`\x03T`\xA0\x83\x01R_T`\xC0\x83\x01RQc\xCESzw`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90c\xCESzw\x90a\x14\x8E\x90\x85\x90\x85\x90\x88\x90`\x04\x01a(KV[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x14\xA9W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x14\xCD\x91\x90a*kV[a\x14\xEAW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[`\tT\x15\x80\x15\x90a\x15eWP`\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\x150Wa\x150a&FV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x15Z\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a*\x8AV[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x15\xF8W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x15\x92Wa\x15\x92a&FV[_\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\x15\xD2\x83a*\xA9V[\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[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\x17_WP\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\x17S_Q` a+\x01_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x08\xACW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x17\x85a\r1V[`@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\x06CV[\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\x18\x18WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18\x15\x91\x81\x01\x90a*\xD3V[`\x01[a\x18@W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r\x1CV[_Q` a+\x01_9_Q\x90_R\x81\x14a\x18pW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\x1CV[a\x18z\x83\x83a\x1A}V[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\x08\xACW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[a\x19@a\x1A\xD2V[a\r.\x81a\x1B\x1BV[a\x08\xACa\x1A\xD2V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x19uWP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x19\x82WP` \x82\x01Q\x15[\x80a\x19\x8FWP`@\x82\x01Q\x15[\x80a\x19\x9CWP``\x82\x01Q\x15[\x80a\x19\xA6WP\x81Q\x15[\x80a\x19\xB8WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x19\xCCWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x19\xEAW`@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[a\x1A\x86\x82a\x1B#V[`@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\x1A\xCAWa\x18z\x82\x82a\x1B\x86V[a\x08!a\x1B\xF8V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0T`\x01`@\x1B\x90\x04`\xFF\x16a\x08\xACW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\xF7a\x1A\xD2V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1BXW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r\x1CV[_Q` a+\x01_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\x1B\xA2\x91\x90a*\xEAV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1B\xDAW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1B\xDFV[``\x91P[P\x91P\x91Pa\x1B\xEF\x85\x83\x83a\x1C\x17V[\x95\x94PPPPPV[4\x15a\x08\xACW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a\x1C,Wa\x1C'\x82a\x1CvV[a\x1CoV[\x81Q\x15\x80\x15a\x1CCWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x1ClW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r\x1CV[P\x80[\x93\x92PPPV[\x80Q\x15a\x1C\x86W\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\x1C\xD2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1C\xF2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\x12`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1DR`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Dr`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\x92`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xB2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xD2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xF2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x12`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1ER`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Er`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x92`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xB2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xD2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xF2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\xE0\x01`@R\x80`\x07\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x1F8W__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\x1FMW__\xFD[a\x1Co\x82a\x1F\"V[_` \x82\x84\x03\x12\x15a\x1FfW__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa\x1F\x9F`@\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[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a!\xA5Wa!\xA5a!nV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a!\xD3Wa!\xD3a!nV[`@R\x91\x90PV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x1F8W__\xFD[_``\x82\x84\x03\x12\x15a\"\x01W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"#Wa\"#a!nV[`@R\x90P\x80a\"2\x83a!\xDBV[\x81Ra\"@` \x84\x01a!\xDBV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a\"fW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"\x88Wa\"\x88a!nV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[__\x82\x84\x03a\x04\xE0\x81\x12\x15a\"\xB5W__\xFD[a\"\xBF\x85\x85a!\xF1V[\x92Pa\x04\x80`_\x19\x82\x01\x12\x15a\"\xD3W__\xFD[Pa\"\xDCa!\x82V[a\"\xE9\x85``\x86\x01a\"VV[\x81Ra\"\xF8\x85`\xA0\x86\x01a\"VV[` \x82\x01Ra#\n\x85`\xE0\x86\x01a\"VV[`@\x82\x01Ra#\x1D\x85a\x01 \x86\x01a\"VV[``\x82\x01Ra#0\x85a\x01`\x86\x01a\"VV[`\x80\x82\x01Ra#C\x85a\x01\xA0\x86\x01a\"VV[`\xA0\x82\x01Ra#V\x85a\x01\xE0\x86\x01a\"VV[`\xC0\x82\x01Ra#i\x85a\x02 \x86\x01a\"VV[`\xE0\x82\x01Ra#|\x85a\x02`\x86\x01a\"VV[a\x01\0\x82\x01Ra#\x90\x85a\x02\xA0\x86\x01a\"VV[a\x01 \x82\x01Ra#\xA4\x85a\x02\xE0\x86\x01a\"VV[a\x01@\x82\x01Ra#\xB8\x85a\x03 \x86\x01a\"VV[a\x01`\x82\x01Ra#\xCC\x85a\x03`\x86\x01a\"VV[a\x01\x80\x82\x01Ra\x03\xA0\x84\x015a\x01\xA0\x82\x01Ra\x03\xC0\x84\x015a\x01\xC0\x82\x01Ra\x03\xE0\x84\x015a\x01\xE0\x82\x01Ra\x04\0\x84\x015a\x02\0\x82\x01Ra\x04 \x84\x015a\x02 \x82\x01Ra\x04@\x84\x015a\x02@\x82\x01Ra\x04`\x84\x015a\x02`\x82\x01Ra\x04\x80\x84\x015a\x02\x80\x82\x01Ra\x04\xA0\x84\x015a\x02\xA0\x82\x01Ra\x04\xC0\x90\x93\x015a\x02\xC0\x84\x01RP\x92\x90\x91PV[__`@\x83\x85\x03\x12\x15a$cW__\xFD[a$l\x83a\x1F\"V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a$\x86W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a$\x96W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a$\xAFWa$\xAFa!nV[a$\xC2`\x1F\x82\x01`\x1F\x19\x16` \x01a!\xABV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a$\xD6W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1F8W__\xFD[_` \x82\x84\x03\x12\x15a%\x18W__\xFD[a\x1Co\x82a$\xF5V[____\x84\x86\x03a\x01 \x81\x12\x15a%6W__\xFD[a%@\x87\x87a!\xF1V[\x94P`\x80`_\x19\x82\x01\x12\x15a%SW__\xFD[P`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a%vWa%va!nV[`@\x90\x81R``\x87\x81\x015\x83R`\x80\x88\x015` \x84\x01R`\xA0\x88\x015\x91\x83\x01\x91\x90\x91R`\xC0\x87\x015\x90\x82\x01R\x92Pa%\xB0`\xE0\x86\x01a$\xF5V[\x91Pa%\xBFa\x01\0\x86\x01a\x1F\"V[\x90P\x92\x95\x91\x94P\x92PV[` \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\x15a&\x10W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x0C\xE9Wa\x0C\xE9a&\x1FV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x81a&hWa&ha&\x1FV[P_\x19\x01\x90V[\x80_[`\x07\x81\x10\x15a\x14\xEAW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a&rV[a&\xA6\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\x01Qa(}`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x85\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x85\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x85\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x85\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x85\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x85\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x85\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x85\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x85\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x85\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x85\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x85\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x85\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x85\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x85\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x85\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x85\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x85\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x85\x01Qa\x04\xE0\x83\x01Ra*Ua\x05\0\x83\x01\x85a&oV[a*ca\x05\xE0\x83\x01\x84a&\x91V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a*{W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1CoW__\xFD[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x0C\xE9Wa\x0C\xE9a&\x1FV[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a*\xCAWa*\xCAa&\x1FV[`\x01\x01\x92\x91PPV[_` \x82\x84\x03\x12\x15a*\xE3W__\xFD[PQ\x91\x90PV[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08\x1C\0\n",
3739    );
3740    #[derive(serde::Serialize, serde::Deserialize)]
3741    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3742    /**```solidity
3743struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
3744```*/
3745    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3746    #[derive(Clone)]
3747    pub struct LightClientState {
3748        #[allow(missing_docs)]
3749        pub viewNum: u64,
3750        #[allow(missing_docs)]
3751        pub blockHeight: u64,
3752        #[allow(missing_docs)]
3753        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
3754    }
3755    #[allow(
3756        non_camel_case_types,
3757        non_snake_case,
3758        clippy::pub_underscore_fields,
3759        clippy::style
3760    )]
3761    const _: () = {
3762        use alloy::sol_types as alloy_sol_types;
3763        #[doc(hidden)]
3764        #[allow(dead_code)]
3765        type UnderlyingSolTuple<'a> = (
3766            alloy::sol_types::sol_data::Uint<64>,
3767            alloy::sol_types::sol_data::Uint<64>,
3768            BN254::ScalarField,
3769        );
3770        #[doc(hidden)]
3771        type UnderlyingRustTuple<'a> = (
3772            u64,
3773            u64,
3774            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
3775        );
3776        #[cfg(test)]
3777        #[allow(dead_code, unreachable_patterns)]
3778        fn _type_assertion(
3779            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3780        ) {
3781            match _t {
3782                alloy_sol_types::private::AssertTypeEq::<
3783                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3784                >(_) => {}
3785            }
3786        }
3787        #[automatically_derived]
3788        #[doc(hidden)]
3789        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
3790            fn from(value: LightClientState) -> Self {
3791                (value.viewNum, value.blockHeight, value.blockCommRoot)
3792            }
3793        }
3794        #[automatically_derived]
3795        #[doc(hidden)]
3796        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
3797            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3798                Self {
3799                    viewNum: tuple.0,
3800                    blockHeight: tuple.1,
3801                    blockCommRoot: tuple.2,
3802                }
3803            }
3804        }
3805        #[automatically_derived]
3806        impl alloy_sol_types::SolValue for LightClientState {
3807            type SolType = Self;
3808        }
3809        #[automatically_derived]
3810        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
3811            #[inline]
3812            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
3813                (
3814                    <alloy::sol_types::sol_data::Uint<
3815                        64,
3816                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
3817                    <alloy::sol_types::sol_data::Uint<
3818                        64,
3819                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
3820                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
3821                        &self.blockCommRoot,
3822                    ),
3823                )
3824            }
3825            #[inline]
3826            fn stv_abi_encoded_size(&self) -> usize {
3827                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
3828                    return size;
3829                }
3830                let tuple = <UnderlyingRustTuple<
3831                    '_,
3832                > as ::core::convert::From<Self>>::from(self.clone());
3833                <UnderlyingSolTuple<
3834                    '_,
3835                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
3836            }
3837            #[inline]
3838            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
3839                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
3840            }
3841            #[inline]
3842            fn stv_abi_encode_packed_to(
3843                &self,
3844                out: &mut alloy_sol_types::private::Vec<u8>,
3845            ) {
3846                let tuple = <UnderlyingRustTuple<
3847                    '_,
3848                > as ::core::convert::From<Self>>::from(self.clone());
3849                <UnderlyingSolTuple<
3850                    '_,
3851                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
3852            }
3853            #[inline]
3854            fn stv_abi_packed_encoded_size(&self) -> usize {
3855                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
3856                    return size;
3857                }
3858                let tuple = <UnderlyingRustTuple<
3859                    '_,
3860                > as ::core::convert::From<Self>>::from(self.clone());
3861                <UnderlyingSolTuple<
3862                    '_,
3863                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
3864            }
3865        }
3866        #[automatically_derived]
3867        impl alloy_sol_types::SolType for LightClientState {
3868            type RustType = Self;
3869            type Token<'a> = <UnderlyingSolTuple<
3870                'a,
3871            > as alloy_sol_types::SolType>::Token<'a>;
3872            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
3873            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
3874                '_,
3875            > as alloy_sol_types::SolType>::ENCODED_SIZE;
3876            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
3877                '_,
3878            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
3879            #[inline]
3880            fn valid_token(token: &Self::Token<'_>) -> bool {
3881                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
3882            }
3883            #[inline]
3884            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
3885                let tuple = <UnderlyingSolTuple<
3886                    '_,
3887                > as alloy_sol_types::SolType>::detokenize(token);
3888                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
3889            }
3890        }
3891        #[automatically_derived]
3892        impl alloy_sol_types::SolStruct for LightClientState {
3893            const NAME: &'static str = "LightClientState";
3894            #[inline]
3895            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
3896                alloy_sol_types::private::Cow::Borrowed(
3897                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
3898                )
3899            }
3900            #[inline]
3901            fn eip712_components() -> alloy_sol_types::private::Vec<
3902                alloy_sol_types::private::Cow<'static, str>,
3903            > {
3904                alloy_sol_types::private::Vec::new()
3905            }
3906            #[inline]
3907            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
3908                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
3909            }
3910            #[inline]
3911            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
3912                [
3913                    <alloy::sol_types::sol_data::Uint<
3914                        64,
3915                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
3916                        .0,
3917                    <alloy::sol_types::sol_data::Uint<
3918                        64,
3919                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
3920                        .0,
3921                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
3922                            &self.blockCommRoot,
3923                        )
3924                        .0,
3925                ]
3926                    .concat()
3927            }
3928        }
3929        #[automatically_derived]
3930        impl alloy_sol_types::EventTopic for LightClientState {
3931            #[inline]
3932            fn topic_preimage_length(rust: &Self::RustType) -> usize {
3933                0usize
3934                    + <alloy::sol_types::sol_data::Uint<
3935                        64,
3936                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
3937                        &rust.viewNum,
3938                    )
3939                    + <alloy::sol_types::sol_data::Uint<
3940                        64,
3941                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
3942                        &rust.blockHeight,
3943                    )
3944                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
3945                        &rust.blockCommRoot,
3946                    )
3947            }
3948            #[inline]
3949            fn encode_topic_preimage(
3950                rust: &Self::RustType,
3951                out: &mut alloy_sol_types::private::Vec<u8>,
3952            ) {
3953                out.reserve(
3954                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
3955                );
3956                <alloy::sol_types::sol_data::Uint<
3957                    64,
3958                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3959                    &rust.viewNum,
3960                    out,
3961                );
3962                <alloy::sol_types::sol_data::Uint<
3963                    64,
3964                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3965                    &rust.blockHeight,
3966                    out,
3967                );
3968                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
3969                    &rust.blockCommRoot,
3970                    out,
3971                );
3972            }
3973            #[inline]
3974            fn encode_topic(
3975                rust: &Self::RustType,
3976            ) -> alloy_sol_types::abi::token::WordToken {
3977                let mut out = alloy_sol_types::private::Vec::new();
3978                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
3979                    rust,
3980                    &mut out,
3981                );
3982                alloy_sol_types::abi::token::WordToken(
3983                    alloy_sol_types::private::keccak256(out),
3984                )
3985            }
3986        }
3987    };
3988    #[derive(serde::Serialize, serde::Deserialize)]
3989    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3990    /**```solidity
3991struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
3992```*/
3993    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3994    #[derive(Clone)]
3995    pub struct StakeTableState {
3996        #[allow(missing_docs)]
3997        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
3998        #[allow(missing_docs)]
3999        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
4000        #[allow(missing_docs)]
4001        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
4002        #[allow(missing_docs)]
4003        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
4004    }
4005    #[allow(
4006        non_camel_case_types,
4007        non_snake_case,
4008        clippy::pub_underscore_fields,
4009        clippy::style
4010    )]
4011    const _: () = {
4012        use alloy::sol_types as alloy_sol_types;
4013        #[doc(hidden)]
4014        #[allow(dead_code)]
4015        type UnderlyingSolTuple<'a> = (
4016            alloy::sol_types::sol_data::Uint<256>,
4017            BN254::ScalarField,
4018            BN254::ScalarField,
4019            BN254::ScalarField,
4020        );
4021        #[doc(hidden)]
4022        type UnderlyingRustTuple<'a> = (
4023            alloy::sol_types::private::primitives::aliases::U256,
4024            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
4025            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
4026            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
4027        );
4028        #[cfg(test)]
4029        #[allow(dead_code, unreachable_patterns)]
4030        fn _type_assertion(
4031            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4032        ) {
4033            match _t {
4034                alloy_sol_types::private::AssertTypeEq::<
4035                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4036                >(_) => {}
4037            }
4038        }
4039        #[automatically_derived]
4040        #[doc(hidden)]
4041        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
4042            fn from(value: StakeTableState) -> Self {
4043                (
4044                    value.threshold,
4045                    value.blsKeyComm,
4046                    value.schnorrKeyComm,
4047                    value.amountComm,
4048                )
4049            }
4050        }
4051        #[automatically_derived]
4052        #[doc(hidden)]
4053        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
4054            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4055                Self {
4056                    threshold: tuple.0,
4057                    blsKeyComm: tuple.1,
4058                    schnorrKeyComm: tuple.2,
4059                    amountComm: tuple.3,
4060                }
4061            }
4062        }
4063        #[automatically_derived]
4064        impl alloy_sol_types::SolValue for StakeTableState {
4065            type SolType = Self;
4066        }
4067        #[automatically_derived]
4068        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
4069            #[inline]
4070            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
4071                (
4072                    <alloy::sol_types::sol_data::Uint<
4073                        256,
4074                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
4075                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
4076                        &self.blsKeyComm,
4077                    ),
4078                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
4079                        &self.schnorrKeyComm,
4080                    ),
4081                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
4082                        &self.amountComm,
4083                    ),
4084                )
4085            }
4086            #[inline]
4087            fn stv_abi_encoded_size(&self) -> usize {
4088                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
4089                    return size;
4090                }
4091                let tuple = <UnderlyingRustTuple<
4092                    '_,
4093                > as ::core::convert::From<Self>>::from(self.clone());
4094                <UnderlyingSolTuple<
4095                    '_,
4096                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
4097            }
4098            #[inline]
4099            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
4100                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
4101            }
4102            #[inline]
4103            fn stv_abi_encode_packed_to(
4104                &self,
4105                out: &mut alloy_sol_types::private::Vec<u8>,
4106            ) {
4107                let tuple = <UnderlyingRustTuple<
4108                    '_,
4109                > as ::core::convert::From<Self>>::from(self.clone());
4110                <UnderlyingSolTuple<
4111                    '_,
4112                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
4113            }
4114            #[inline]
4115            fn stv_abi_packed_encoded_size(&self) -> usize {
4116                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
4117                    return size;
4118                }
4119                let tuple = <UnderlyingRustTuple<
4120                    '_,
4121                > as ::core::convert::From<Self>>::from(self.clone());
4122                <UnderlyingSolTuple<
4123                    '_,
4124                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
4125            }
4126        }
4127        #[automatically_derived]
4128        impl alloy_sol_types::SolType for StakeTableState {
4129            type RustType = Self;
4130            type Token<'a> = <UnderlyingSolTuple<
4131                'a,
4132            > as alloy_sol_types::SolType>::Token<'a>;
4133            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
4134            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
4135                '_,
4136            > as alloy_sol_types::SolType>::ENCODED_SIZE;
4137            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
4138                '_,
4139            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
4140            #[inline]
4141            fn valid_token(token: &Self::Token<'_>) -> bool {
4142                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
4143            }
4144            #[inline]
4145            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
4146                let tuple = <UnderlyingSolTuple<
4147                    '_,
4148                > as alloy_sol_types::SolType>::detokenize(token);
4149                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
4150            }
4151        }
4152        #[automatically_derived]
4153        impl alloy_sol_types::SolStruct for StakeTableState {
4154            const NAME: &'static str = "StakeTableState";
4155            #[inline]
4156            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
4157                alloy_sol_types::private::Cow::Borrowed(
4158                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
4159                )
4160            }
4161            #[inline]
4162            fn eip712_components() -> alloy_sol_types::private::Vec<
4163                alloy_sol_types::private::Cow<'static, str>,
4164            > {
4165                alloy_sol_types::private::Vec::new()
4166            }
4167            #[inline]
4168            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
4169                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
4170            }
4171            #[inline]
4172            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
4173                [
4174                    <alloy::sol_types::sol_data::Uint<
4175                        256,
4176                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
4177                        .0,
4178                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
4179                            &self.blsKeyComm,
4180                        )
4181                        .0,
4182                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
4183                            &self.schnorrKeyComm,
4184                        )
4185                        .0,
4186                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
4187                            &self.amountComm,
4188                        )
4189                        .0,
4190                ]
4191                    .concat()
4192            }
4193        }
4194        #[automatically_derived]
4195        impl alloy_sol_types::EventTopic for StakeTableState {
4196            #[inline]
4197            fn topic_preimage_length(rust: &Self::RustType) -> usize {
4198                0usize
4199                    + <alloy::sol_types::sol_data::Uint<
4200                        256,
4201                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
4202                        &rust.threshold,
4203                    )
4204                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
4205                        &rust.blsKeyComm,
4206                    )
4207                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
4208                        &rust.schnorrKeyComm,
4209                    )
4210                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
4211                        &rust.amountComm,
4212                    )
4213            }
4214            #[inline]
4215            fn encode_topic_preimage(
4216                rust: &Self::RustType,
4217                out: &mut alloy_sol_types::private::Vec<u8>,
4218            ) {
4219                out.reserve(
4220                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
4221                );
4222                <alloy::sol_types::sol_data::Uint<
4223                    256,
4224                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
4225                    &rust.threshold,
4226                    out,
4227                );
4228                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
4229                    &rust.blsKeyComm,
4230                    out,
4231                );
4232                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
4233                    &rust.schnorrKeyComm,
4234                    out,
4235                );
4236                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
4237                    &rust.amountComm,
4238                    out,
4239                );
4240            }
4241            #[inline]
4242            fn encode_topic(
4243                rust: &Self::RustType,
4244            ) -> alloy_sol_types::abi::token::WordToken {
4245                let mut out = alloy_sol_types::private::Vec::new();
4246                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
4247                    rust,
4248                    &mut out,
4249                );
4250                alloy_sol_types::abi::token::WordToken(
4251                    alloy_sol_types::private::keccak256(out),
4252                )
4253            }
4254        }
4255    };
4256    #[derive(serde::Serialize, serde::Deserialize)]
4257    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4258    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
4259```solidity
4260error AddressEmptyCode(address target);
4261```*/
4262    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4263    #[derive(Clone)]
4264    pub struct AddressEmptyCode {
4265        #[allow(missing_docs)]
4266        pub target: alloy::sol_types::private::Address,
4267    }
4268    #[allow(
4269        non_camel_case_types,
4270        non_snake_case,
4271        clippy::pub_underscore_fields,
4272        clippy::style
4273    )]
4274    const _: () = {
4275        use alloy::sol_types as alloy_sol_types;
4276        #[doc(hidden)]
4277        #[allow(dead_code)]
4278        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4279        #[doc(hidden)]
4280        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4281        #[cfg(test)]
4282        #[allow(dead_code, unreachable_patterns)]
4283        fn _type_assertion(
4284            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4285        ) {
4286            match _t {
4287                alloy_sol_types::private::AssertTypeEq::<
4288                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4289                >(_) => {}
4290            }
4291        }
4292        #[automatically_derived]
4293        #[doc(hidden)]
4294        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
4295            fn from(value: AddressEmptyCode) -> Self {
4296                (value.target,)
4297            }
4298        }
4299        #[automatically_derived]
4300        #[doc(hidden)]
4301        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
4302            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4303                Self { target: tuple.0 }
4304            }
4305        }
4306        #[automatically_derived]
4307        impl alloy_sol_types::SolError for AddressEmptyCode {
4308            type Parameters<'a> = UnderlyingSolTuple<'a>;
4309            type Token<'a> = <Self::Parameters<
4310                'a,
4311            > as alloy_sol_types::SolType>::Token<'a>;
4312            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
4313            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
4314            #[inline]
4315            fn new<'a>(
4316                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4317            ) -> Self {
4318                tuple.into()
4319            }
4320            #[inline]
4321            fn tokenize(&self) -> Self::Token<'_> {
4322                (
4323                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4324                        &self.target,
4325                    ),
4326                )
4327            }
4328            #[inline]
4329            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4330                <Self::Parameters<
4331                    '_,
4332                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4333                    .map(Self::new)
4334            }
4335        }
4336    };
4337    #[derive(serde::Serialize, serde::Deserialize)]
4338    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4339    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
4340```solidity
4341error ERC1967InvalidImplementation(address implementation);
4342```*/
4343    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4344    #[derive(Clone)]
4345    pub struct ERC1967InvalidImplementation {
4346        #[allow(missing_docs)]
4347        pub implementation: alloy::sol_types::private::Address,
4348    }
4349    #[allow(
4350        non_camel_case_types,
4351        non_snake_case,
4352        clippy::pub_underscore_fields,
4353        clippy::style
4354    )]
4355    const _: () = {
4356        use alloy::sol_types as alloy_sol_types;
4357        #[doc(hidden)]
4358        #[allow(dead_code)]
4359        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4360        #[doc(hidden)]
4361        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4362        #[cfg(test)]
4363        #[allow(dead_code, unreachable_patterns)]
4364        fn _type_assertion(
4365            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4366        ) {
4367            match _t {
4368                alloy_sol_types::private::AssertTypeEq::<
4369                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4370                >(_) => {}
4371            }
4372        }
4373        #[automatically_derived]
4374        #[doc(hidden)]
4375        impl ::core::convert::From<ERC1967InvalidImplementation>
4376        for UnderlyingRustTuple<'_> {
4377            fn from(value: ERC1967InvalidImplementation) -> Self {
4378                (value.implementation,)
4379            }
4380        }
4381        #[automatically_derived]
4382        #[doc(hidden)]
4383        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4384        for ERC1967InvalidImplementation {
4385            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4386                Self { implementation: tuple.0 }
4387            }
4388        }
4389        #[automatically_derived]
4390        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
4391            type Parameters<'a> = UnderlyingSolTuple<'a>;
4392            type Token<'a> = <Self::Parameters<
4393                'a,
4394            > as alloy_sol_types::SolType>::Token<'a>;
4395            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
4396            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
4397            #[inline]
4398            fn new<'a>(
4399                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4400            ) -> Self {
4401                tuple.into()
4402            }
4403            #[inline]
4404            fn tokenize(&self) -> Self::Token<'_> {
4405                (
4406                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4407                        &self.implementation,
4408                    ),
4409                )
4410            }
4411            #[inline]
4412            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4413                <Self::Parameters<
4414                    '_,
4415                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4416                    .map(Self::new)
4417            }
4418        }
4419    };
4420    #[derive(serde::Serialize, serde::Deserialize)]
4421    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4422    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
4423```solidity
4424error ERC1967NonPayable();
4425```*/
4426    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4427    #[derive(Clone)]
4428    pub struct ERC1967NonPayable;
4429    #[allow(
4430        non_camel_case_types,
4431        non_snake_case,
4432        clippy::pub_underscore_fields,
4433        clippy::style
4434    )]
4435    const _: () = {
4436        use alloy::sol_types as alloy_sol_types;
4437        #[doc(hidden)]
4438        #[allow(dead_code)]
4439        type UnderlyingSolTuple<'a> = ();
4440        #[doc(hidden)]
4441        type UnderlyingRustTuple<'a> = ();
4442        #[cfg(test)]
4443        #[allow(dead_code, unreachable_patterns)]
4444        fn _type_assertion(
4445            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4446        ) {
4447            match _t {
4448                alloy_sol_types::private::AssertTypeEq::<
4449                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4450                >(_) => {}
4451            }
4452        }
4453        #[automatically_derived]
4454        #[doc(hidden)]
4455        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
4456            fn from(value: ERC1967NonPayable) -> Self {
4457                ()
4458            }
4459        }
4460        #[automatically_derived]
4461        #[doc(hidden)]
4462        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
4463            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4464                Self
4465            }
4466        }
4467        #[automatically_derived]
4468        impl alloy_sol_types::SolError for ERC1967NonPayable {
4469            type Parameters<'a> = UnderlyingSolTuple<'a>;
4470            type Token<'a> = <Self::Parameters<
4471                'a,
4472            > as alloy_sol_types::SolType>::Token<'a>;
4473            const SIGNATURE: &'static str = "ERC1967NonPayable()";
4474            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
4475            #[inline]
4476            fn new<'a>(
4477                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4478            ) -> Self {
4479                tuple.into()
4480            }
4481            #[inline]
4482            fn tokenize(&self) -> Self::Token<'_> {
4483                ()
4484            }
4485            #[inline]
4486            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4487                <Self::Parameters<
4488                    '_,
4489                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4490                    .map(Self::new)
4491            }
4492        }
4493    };
4494    #[derive(serde::Serialize, serde::Deserialize)]
4495    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4496    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
4497```solidity
4498error FailedInnerCall();
4499```*/
4500    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4501    #[derive(Clone)]
4502    pub struct FailedInnerCall;
4503    #[allow(
4504        non_camel_case_types,
4505        non_snake_case,
4506        clippy::pub_underscore_fields,
4507        clippy::style
4508    )]
4509    const _: () = {
4510        use alloy::sol_types as alloy_sol_types;
4511        #[doc(hidden)]
4512        #[allow(dead_code)]
4513        type UnderlyingSolTuple<'a> = ();
4514        #[doc(hidden)]
4515        type UnderlyingRustTuple<'a> = ();
4516        #[cfg(test)]
4517        #[allow(dead_code, unreachable_patterns)]
4518        fn _type_assertion(
4519            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4520        ) {
4521            match _t {
4522                alloy_sol_types::private::AssertTypeEq::<
4523                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4524                >(_) => {}
4525            }
4526        }
4527        #[automatically_derived]
4528        #[doc(hidden)]
4529        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
4530            fn from(value: FailedInnerCall) -> Self {
4531                ()
4532            }
4533        }
4534        #[automatically_derived]
4535        #[doc(hidden)]
4536        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
4537            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4538                Self
4539            }
4540        }
4541        #[automatically_derived]
4542        impl alloy_sol_types::SolError for FailedInnerCall {
4543            type Parameters<'a> = UnderlyingSolTuple<'a>;
4544            type Token<'a> = <Self::Parameters<
4545                'a,
4546            > as alloy_sol_types::SolType>::Token<'a>;
4547            const SIGNATURE: &'static str = "FailedInnerCall()";
4548            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
4549            #[inline]
4550            fn new<'a>(
4551                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4552            ) -> Self {
4553                tuple.into()
4554            }
4555            #[inline]
4556            fn tokenize(&self) -> Self::Token<'_> {
4557                ()
4558            }
4559            #[inline]
4560            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4561                <Self::Parameters<
4562                    '_,
4563                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4564                    .map(Self::new)
4565            }
4566        }
4567    };
4568    #[derive(serde::Serialize, serde::Deserialize)]
4569    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4570    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
4571```solidity
4572error InsufficientSnapshotHistory();
4573```*/
4574    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4575    #[derive(Clone)]
4576    pub struct InsufficientSnapshotHistory;
4577    #[allow(
4578        non_camel_case_types,
4579        non_snake_case,
4580        clippy::pub_underscore_fields,
4581        clippy::style
4582    )]
4583    const _: () = {
4584        use alloy::sol_types as alloy_sol_types;
4585        #[doc(hidden)]
4586        #[allow(dead_code)]
4587        type UnderlyingSolTuple<'a> = ();
4588        #[doc(hidden)]
4589        type UnderlyingRustTuple<'a> = ();
4590        #[cfg(test)]
4591        #[allow(dead_code, unreachable_patterns)]
4592        fn _type_assertion(
4593            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4594        ) {
4595            match _t {
4596                alloy_sol_types::private::AssertTypeEq::<
4597                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4598                >(_) => {}
4599            }
4600        }
4601        #[automatically_derived]
4602        #[doc(hidden)]
4603        impl ::core::convert::From<InsufficientSnapshotHistory>
4604        for UnderlyingRustTuple<'_> {
4605            fn from(value: InsufficientSnapshotHistory) -> Self {
4606                ()
4607            }
4608        }
4609        #[automatically_derived]
4610        #[doc(hidden)]
4611        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4612        for InsufficientSnapshotHistory {
4613            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4614                Self
4615            }
4616        }
4617        #[automatically_derived]
4618        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
4619            type Parameters<'a> = UnderlyingSolTuple<'a>;
4620            type Token<'a> = <Self::Parameters<
4621                'a,
4622            > as alloy_sol_types::SolType>::Token<'a>;
4623            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
4624            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
4625            #[inline]
4626            fn new<'a>(
4627                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4628            ) -> Self {
4629                tuple.into()
4630            }
4631            #[inline]
4632            fn tokenize(&self) -> Self::Token<'_> {
4633                ()
4634            }
4635            #[inline]
4636            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4637                <Self::Parameters<
4638                    '_,
4639                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4640                    .map(Self::new)
4641            }
4642        }
4643    };
4644    #[derive(serde::Serialize, serde::Deserialize)]
4645    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4646    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
4647```solidity
4648error InvalidAddress();
4649```*/
4650    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4651    #[derive(Clone)]
4652    pub struct InvalidAddress;
4653    #[allow(
4654        non_camel_case_types,
4655        non_snake_case,
4656        clippy::pub_underscore_fields,
4657        clippy::style
4658    )]
4659    const _: () = {
4660        use alloy::sol_types as alloy_sol_types;
4661        #[doc(hidden)]
4662        #[allow(dead_code)]
4663        type UnderlyingSolTuple<'a> = ();
4664        #[doc(hidden)]
4665        type UnderlyingRustTuple<'a> = ();
4666        #[cfg(test)]
4667        #[allow(dead_code, unreachable_patterns)]
4668        fn _type_assertion(
4669            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4670        ) {
4671            match _t {
4672                alloy_sol_types::private::AssertTypeEq::<
4673                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4674                >(_) => {}
4675            }
4676        }
4677        #[automatically_derived]
4678        #[doc(hidden)]
4679        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
4680            fn from(value: InvalidAddress) -> Self {
4681                ()
4682            }
4683        }
4684        #[automatically_derived]
4685        #[doc(hidden)]
4686        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
4687            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4688                Self
4689            }
4690        }
4691        #[automatically_derived]
4692        impl alloy_sol_types::SolError for InvalidAddress {
4693            type Parameters<'a> = UnderlyingSolTuple<'a>;
4694            type Token<'a> = <Self::Parameters<
4695                'a,
4696            > as alloy_sol_types::SolType>::Token<'a>;
4697            const SIGNATURE: &'static str = "InvalidAddress()";
4698            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
4699            #[inline]
4700            fn new<'a>(
4701                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4702            ) -> Self {
4703                tuple.into()
4704            }
4705            #[inline]
4706            fn tokenize(&self) -> Self::Token<'_> {
4707                ()
4708            }
4709            #[inline]
4710            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4711                <Self::Parameters<
4712                    '_,
4713                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4714                    .map(Self::new)
4715            }
4716        }
4717    };
4718    #[derive(serde::Serialize, serde::Deserialize)]
4719    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4720    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
4721```solidity
4722error InvalidArgs();
4723```*/
4724    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4725    #[derive(Clone)]
4726    pub struct InvalidArgs;
4727    #[allow(
4728        non_camel_case_types,
4729        non_snake_case,
4730        clippy::pub_underscore_fields,
4731        clippy::style
4732    )]
4733    const _: () = {
4734        use alloy::sol_types as alloy_sol_types;
4735        #[doc(hidden)]
4736        #[allow(dead_code)]
4737        type UnderlyingSolTuple<'a> = ();
4738        #[doc(hidden)]
4739        type UnderlyingRustTuple<'a> = ();
4740        #[cfg(test)]
4741        #[allow(dead_code, unreachable_patterns)]
4742        fn _type_assertion(
4743            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4744        ) {
4745            match _t {
4746                alloy_sol_types::private::AssertTypeEq::<
4747                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4748                >(_) => {}
4749            }
4750        }
4751        #[automatically_derived]
4752        #[doc(hidden)]
4753        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
4754            fn from(value: InvalidArgs) -> Self {
4755                ()
4756            }
4757        }
4758        #[automatically_derived]
4759        #[doc(hidden)]
4760        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
4761            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4762                Self
4763            }
4764        }
4765        #[automatically_derived]
4766        impl alloy_sol_types::SolError for InvalidArgs {
4767            type Parameters<'a> = UnderlyingSolTuple<'a>;
4768            type Token<'a> = <Self::Parameters<
4769                'a,
4770            > as alloy_sol_types::SolType>::Token<'a>;
4771            const SIGNATURE: &'static str = "InvalidArgs()";
4772            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
4773            #[inline]
4774            fn new<'a>(
4775                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4776            ) -> Self {
4777                tuple.into()
4778            }
4779            #[inline]
4780            fn tokenize(&self) -> Self::Token<'_> {
4781                ()
4782            }
4783            #[inline]
4784            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4785                <Self::Parameters<
4786                    '_,
4787                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4788                    .map(Self::new)
4789            }
4790        }
4791    };
4792    #[derive(serde::Serialize, serde::Deserialize)]
4793    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4794    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
4795```solidity
4796error InvalidHotShotBlockForCommitmentCheck();
4797```*/
4798    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4799    #[derive(Clone)]
4800    pub struct InvalidHotShotBlockForCommitmentCheck;
4801    #[allow(
4802        non_camel_case_types,
4803        non_snake_case,
4804        clippy::pub_underscore_fields,
4805        clippy::style
4806    )]
4807    const _: () = {
4808        use alloy::sol_types as alloy_sol_types;
4809        #[doc(hidden)]
4810        #[allow(dead_code)]
4811        type UnderlyingSolTuple<'a> = ();
4812        #[doc(hidden)]
4813        type UnderlyingRustTuple<'a> = ();
4814        #[cfg(test)]
4815        #[allow(dead_code, unreachable_patterns)]
4816        fn _type_assertion(
4817            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4818        ) {
4819            match _t {
4820                alloy_sol_types::private::AssertTypeEq::<
4821                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4822                >(_) => {}
4823            }
4824        }
4825        #[automatically_derived]
4826        #[doc(hidden)]
4827        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck>
4828        for UnderlyingRustTuple<'_> {
4829            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
4830                ()
4831            }
4832        }
4833        #[automatically_derived]
4834        #[doc(hidden)]
4835        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4836        for InvalidHotShotBlockForCommitmentCheck {
4837            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4838                Self
4839            }
4840        }
4841        #[automatically_derived]
4842        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
4843            type Parameters<'a> = UnderlyingSolTuple<'a>;
4844            type Token<'a> = <Self::Parameters<
4845                'a,
4846            > as alloy_sol_types::SolType>::Token<'a>;
4847            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
4848            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
4849            #[inline]
4850            fn new<'a>(
4851                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4852            ) -> Self {
4853                tuple.into()
4854            }
4855            #[inline]
4856            fn tokenize(&self) -> Self::Token<'_> {
4857                ()
4858            }
4859            #[inline]
4860            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4861                <Self::Parameters<
4862                    '_,
4863                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4864                    .map(Self::new)
4865            }
4866        }
4867    };
4868    #[derive(serde::Serialize, serde::Deserialize)]
4869    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4870    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
4871```solidity
4872error InvalidInitialization();
4873```*/
4874    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4875    #[derive(Clone)]
4876    pub struct InvalidInitialization;
4877    #[allow(
4878        non_camel_case_types,
4879        non_snake_case,
4880        clippy::pub_underscore_fields,
4881        clippy::style
4882    )]
4883    const _: () = {
4884        use alloy::sol_types as alloy_sol_types;
4885        #[doc(hidden)]
4886        #[allow(dead_code)]
4887        type UnderlyingSolTuple<'a> = ();
4888        #[doc(hidden)]
4889        type UnderlyingRustTuple<'a> = ();
4890        #[cfg(test)]
4891        #[allow(dead_code, unreachable_patterns)]
4892        fn _type_assertion(
4893            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4894        ) {
4895            match _t {
4896                alloy_sol_types::private::AssertTypeEq::<
4897                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4898                >(_) => {}
4899            }
4900        }
4901        #[automatically_derived]
4902        #[doc(hidden)]
4903        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
4904            fn from(value: InvalidInitialization) -> Self {
4905                ()
4906            }
4907        }
4908        #[automatically_derived]
4909        #[doc(hidden)]
4910        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
4911            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4912                Self
4913            }
4914        }
4915        #[automatically_derived]
4916        impl alloy_sol_types::SolError for InvalidInitialization {
4917            type Parameters<'a> = UnderlyingSolTuple<'a>;
4918            type Token<'a> = <Self::Parameters<
4919                'a,
4920            > as alloy_sol_types::SolType>::Token<'a>;
4921            const SIGNATURE: &'static str = "InvalidInitialization()";
4922            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
4923            #[inline]
4924            fn new<'a>(
4925                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4926            ) -> Self {
4927                tuple.into()
4928            }
4929            #[inline]
4930            fn tokenize(&self) -> Self::Token<'_> {
4931                ()
4932            }
4933            #[inline]
4934            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4935                <Self::Parameters<
4936                    '_,
4937                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4938                    .map(Self::new)
4939            }
4940        }
4941    };
4942    #[derive(serde::Serialize, serde::Deserialize)]
4943    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4944    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
4945```solidity
4946error InvalidMaxStateHistory();
4947```*/
4948    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4949    #[derive(Clone)]
4950    pub struct InvalidMaxStateHistory;
4951    #[allow(
4952        non_camel_case_types,
4953        non_snake_case,
4954        clippy::pub_underscore_fields,
4955        clippy::style
4956    )]
4957    const _: () = {
4958        use alloy::sol_types as alloy_sol_types;
4959        #[doc(hidden)]
4960        #[allow(dead_code)]
4961        type UnderlyingSolTuple<'a> = ();
4962        #[doc(hidden)]
4963        type UnderlyingRustTuple<'a> = ();
4964        #[cfg(test)]
4965        #[allow(dead_code, unreachable_patterns)]
4966        fn _type_assertion(
4967            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4968        ) {
4969            match _t {
4970                alloy_sol_types::private::AssertTypeEq::<
4971                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4972                >(_) => {}
4973            }
4974        }
4975        #[automatically_derived]
4976        #[doc(hidden)]
4977        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
4978            fn from(value: InvalidMaxStateHistory) -> Self {
4979                ()
4980            }
4981        }
4982        #[automatically_derived]
4983        #[doc(hidden)]
4984        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
4985            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4986                Self
4987            }
4988        }
4989        #[automatically_derived]
4990        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
4991            type Parameters<'a> = UnderlyingSolTuple<'a>;
4992            type Token<'a> = <Self::Parameters<
4993                'a,
4994            > as alloy_sol_types::SolType>::Token<'a>;
4995            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
4996            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
4997            #[inline]
4998            fn new<'a>(
4999                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5000            ) -> Self {
5001                tuple.into()
5002            }
5003            #[inline]
5004            fn tokenize(&self) -> Self::Token<'_> {
5005                ()
5006            }
5007            #[inline]
5008            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5009                <Self::Parameters<
5010                    '_,
5011                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5012                    .map(Self::new)
5013            }
5014        }
5015    };
5016    #[derive(serde::Serialize, serde::Deserialize)]
5017    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5018    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
5019```solidity
5020error InvalidProof();
5021```*/
5022    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5023    #[derive(Clone)]
5024    pub struct InvalidProof;
5025    #[allow(
5026        non_camel_case_types,
5027        non_snake_case,
5028        clippy::pub_underscore_fields,
5029        clippy::style
5030    )]
5031    const _: () = {
5032        use alloy::sol_types as alloy_sol_types;
5033        #[doc(hidden)]
5034        #[allow(dead_code)]
5035        type UnderlyingSolTuple<'a> = ();
5036        #[doc(hidden)]
5037        type UnderlyingRustTuple<'a> = ();
5038        #[cfg(test)]
5039        #[allow(dead_code, unreachable_patterns)]
5040        fn _type_assertion(
5041            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5042        ) {
5043            match _t {
5044                alloy_sol_types::private::AssertTypeEq::<
5045                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5046                >(_) => {}
5047            }
5048        }
5049        #[automatically_derived]
5050        #[doc(hidden)]
5051        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
5052            fn from(value: InvalidProof) -> Self {
5053                ()
5054            }
5055        }
5056        #[automatically_derived]
5057        #[doc(hidden)]
5058        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
5059            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5060                Self
5061            }
5062        }
5063        #[automatically_derived]
5064        impl alloy_sol_types::SolError for InvalidProof {
5065            type Parameters<'a> = UnderlyingSolTuple<'a>;
5066            type Token<'a> = <Self::Parameters<
5067                'a,
5068            > as alloy_sol_types::SolType>::Token<'a>;
5069            const SIGNATURE: &'static str = "InvalidProof()";
5070            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
5071            #[inline]
5072            fn new<'a>(
5073                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5074            ) -> Self {
5075                tuple.into()
5076            }
5077            #[inline]
5078            fn tokenize(&self) -> Self::Token<'_> {
5079                ()
5080            }
5081            #[inline]
5082            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5083                <Self::Parameters<
5084                    '_,
5085                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5086                    .map(Self::new)
5087            }
5088        }
5089    };
5090    #[derive(serde::Serialize, serde::Deserialize)]
5091    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5092    /**Custom error with signature `InvalidScalar()` and selector `0x05b05ccc`.
5093```solidity
5094error InvalidScalar();
5095```*/
5096    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5097    #[derive(Clone)]
5098    pub struct InvalidScalar;
5099    #[allow(
5100        non_camel_case_types,
5101        non_snake_case,
5102        clippy::pub_underscore_fields,
5103        clippy::style
5104    )]
5105    const _: () = {
5106        use alloy::sol_types as alloy_sol_types;
5107        #[doc(hidden)]
5108        #[allow(dead_code)]
5109        type UnderlyingSolTuple<'a> = ();
5110        #[doc(hidden)]
5111        type UnderlyingRustTuple<'a> = ();
5112        #[cfg(test)]
5113        #[allow(dead_code, unreachable_patterns)]
5114        fn _type_assertion(
5115            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5116        ) {
5117            match _t {
5118                alloy_sol_types::private::AssertTypeEq::<
5119                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5120                >(_) => {}
5121            }
5122        }
5123        #[automatically_derived]
5124        #[doc(hidden)]
5125        impl ::core::convert::From<InvalidScalar> for UnderlyingRustTuple<'_> {
5126            fn from(value: InvalidScalar) -> Self {
5127                ()
5128            }
5129        }
5130        #[automatically_derived]
5131        #[doc(hidden)]
5132        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidScalar {
5133            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5134                Self
5135            }
5136        }
5137        #[automatically_derived]
5138        impl alloy_sol_types::SolError for InvalidScalar {
5139            type Parameters<'a> = UnderlyingSolTuple<'a>;
5140            type Token<'a> = <Self::Parameters<
5141                'a,
5142            > as alloy_sol_types::SolType>::Token<'a>;
5143            const SIGNATURE: &'static str = "InvalidScalar()";
5144            const SELECTOR: [u8; 4] = [5u8, 176u8, 92u8, 204u8];
5145            #[inline]
5146            fn new<'a>(
5147                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5148            ) -> Self {
5149                tuple.into()
5150            }
5151            #[inline]
5152            fn tokenize(&self) -> Self::Token<'_> {
5153                ()
5154            }
5155            #[inline]
5156            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5157                <Self::Parameters<
5158                    '_,
5159                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5160                    .map(Self::new)
5161            }
5162        }
5163    };
5164    #[derive(serde::Serialize, serde::Deserialize)]
5165    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5166    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
5167```solidity
5168error NoChangeRequired();
5169```*/
5170    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5171    #[derive(Clone)]
5172    pub struct NoChangeRequired;
5173    #[allow(
5174        non_camel_case_types,
5175        non_snake_case,
5176        clippy::pub_underscore_fields,
5177        clippy::style
5178    )]
5179    const _: () = {
5180        use alloy::sol_types as alloy_sol_types;
5181        #[doc(hidden)]
5182        #[allow(dead_code)]
5183        type UnderlyingSolTuple<'a> = ();
5184        #[doc(hidden)]
5185        type UnderlyingRustTuple<'a> = ();
5186        #[cfg(test)]
5187        #[allow(dead_code, unreachable_patterns)]
5188        fn _type_assertion(
5189            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5190        ) {
5191            match _t {
5192                alloy_sol_types::private::AssertTypeEq::<
5193                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5194                >(_) => {}
5195            }
5196        }
5197        #[automatically_derived]
5198        #[doc(hidden)]
5199        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
5200            fn from(value: NoChangeRequired) -> Self {
5201                ()
5202            }
5203        }
5204        #[automatically_derived]
5205        #[doc(hidden)]
5206        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
5207            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5208                Self
5209            }
5210        }
5211        #[automatically_derived]
5212        impl alloy_sol_types::SolError for NoChangeRequired {
5213            type Parameters<'a> = UnderlyingSolTuple<'a>;
5214            type Token<'a> = <Self::Parameters<
5215                'a,
5216            > as alloy_sol_types::SolType>::Token<'a>;
5217            const SIGNATURE: &'static str = "NoChangeRequired()";
5218            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
5219            #[inline]
5220            fn new<'a>(
5221                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5222            ) -> Self {
5223                tuple.into()
5224            }
5225            #[inline]
5226            fn tokenize(&self) -> Self::Token<'_> {
5227                ()
5228            }
5229            #[inline]
5230            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5231                <Self::Parameters<
5232                    '_,
5233                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5234                    .map(Self::new)
5235            }
5236        }
5237    };
5238    #[derive(serde::Serialize, serde::Deserialize)]
5239    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5240    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
5241```solidity
5242error NotInitializing();
5243```*/
5244    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5245    #[derive(Clone)]
5246    pub struct NotInitializing;
5247    #[allow(
5248        non_camel_case_types,
5249        non_snake_case,
5250        clippy::pub_underscore_fields,
5251        clippy::style
5252    )]
5253    const _: () = {
5254        use alloy::sol_types as alloy_sol_types;
5255        #[doc(hidden)]
5256        #[allow(dead_code)]
5257        type UnderlyingSolTuple<'a> = ();
5258        #[doc(hidden)]
5259        type UnderlyingRustTuple<'a> = ();
5260        #[cfg(test)]
5261        #[allow(dead_code, unreachable_patterns)]
5262        fn _type_assertion(
5263            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5264        ) {
5265            match _t {
5266                alloy_sol_types::private::AssertTypeEq::<
5267                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5268                >(_) => {}
5269            }
5270        }
5271        #[automatically_derived]
5272        #[doc(hidden)]
5273        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
5274            fn from(value: NotInitializing) -> Self {
5275                ()
5276            }
5277        }
5278        #[automatically_derived]
5279        #[doc(hidden)]
5280        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
5281            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5282                Self
5283            }
5284        }
5285        #[automatically_derived]
5286        impl alloy_sol_types::SolError for NotInitializing {
5287            type Parameters<'a> = UnderlyingSolTuple<'a>;
5288            type Token<'a> = <Self::Parameters<
5289                'a,
5290            > as alloy_sol_types::SolType>::Token<'a>;
5291            const SIGNATURE: &'static str = "NotInitializing()";
5292            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
5293            #[inline]
5294            fn new<'a>(
5295                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5296            ) -> Self {
5297                tuple.into()
5298            }
5299            #[inline]
5300            fn tokenize(&self) -> Self::Token<'_> {
5301                ()
5302            }
5303            #[inline]
5304            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5305                <Self::Parameters<
5306                    '_,
5307                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5308                    .map(Self::new)
5309            }
5310        }
5311    };
5312    #[derive(serde::Serialize, serde::Deserialize)]
5313    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5314    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
5315```solidity
5316error OutdatedState();
5317```*/
5318    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5319    #[derive(Clone)]
5320    pub struct OutdatedState;
5321    #[allow(
5322        non_camel_case_types,
5323        non_snake_case,
5324        clippy::pub_underscore_fields,
5325        clippy::style
5326    )]
5327    const _: () = {
5328        use alloy::sol_types as alloy_sol_types;
5329        #[doc(hidden)]
5330        #[allow(dead_code)]
5331        type UnderlyingSolTuple<'a> = ();
5332        #[doc(hidden)]
5333        type UnderlyingRustTuple<'a> = ();
5334        #[cfg(test)]
5335        #[allow(dead_code, unreachable_patterns)]
5336        fn _type_assertion(
5337            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5338        ) {
5339            match _t {
5340                alloy_sol_types::private::AssertTypeEq::<
5341                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5342                >(_) => {}
5343            }
5344        }
5345        #[automatically_derived]
5346        #[doc(hidden)]
5347        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
5348            fn from(value: OutdatedState) -> Self {
5349                ()
5350            }
5351        }
5352        #[automatically_derived]
5353        #[doc(hidden)]
5354        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
5355            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5356                Self
5357            }
5358        }
5359        #[automatically_derived]
5360        impl alloy_sol_types::SolError for OutdatedState {
5361            type Parameters<'a> = UnderlyingSolTuple<'a>;
5362            type Token<'a> = <Self::Parameters<
5363                'a,
5364            > as alloy_sol_types::SolType>::Token<'a>;
5365            const SIGNATURE: &'static str = "OutdatedState()";
5366            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
5367            #[inline]
5368            fn new<'a>(
5369                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5370            ) -> Self {
5371                tuple.into()
5372            }
5373            #[inline]
5374            fn tokenize(&self) -> Self::Token<'_> {
5375                ()
5376            }
5377            #[inline]
5378            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5379                <Self::Parameters<
5380                    '_,
5381                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5382                    .map(Self::new)
5383            }
5384        }
5385    };
5386    #[derive(serde::Serialize, serde::Deserialize)]
5387    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5388    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
5389```solidity
5390error OwnableInvalidOwner(address owner);
5391```*/
5392    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5393    #[derive(Clone)]
5394    pub struct OwnableInvalidOwner {
5395        #[allow(missing_docs)]
5396        pub owner: alloy::sol_types::private::Address,
5397    }
5398    #[allow(
5399        non_camel_case_types,
5400        non_snake_case,
5401        clippy::pub_underscore_fields,
5402        clippy::style
5403    )]
5404    const _: () = {
5405        use alloy::sol_types as alloy_sol_types;
5406        #[doc(hidden)]
5407        #[allow(dead_code)]
5408        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5409        #[doc(hidden)]
5410        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5411        #[cfg(test)]
5412        #[allow(dead_code, unreachable_patterns)]
5413        fn _type_assertion(
5414            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5415        ) {
5416            match _t {
5417                alloy_sol_types::private::AssertTypeEq::<
5418                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5419                >(_) => {}
5420            }
5421        }
5422        #[automatically_derived]
5423        #[doc(hidden)]
5424        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
5425            fn from(value: OwnableInvalidOwner) -> Self {
5426                (value.owner,)
5427            }
5428        }
5429        #[automatically_derived]
5430        #[doc(hidden)]
5431        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
5432            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5433                Self { owner: tuple.0 }
5434            }
5435        }
5436        #[automatically_derived]
5437        impl alloy_sol_types::SolError for OwnableInvalidOwner {
5438            type Parameters<'a> = UnderlyingSolTuple<'a>;
5439            type Token<'a> = <Self::Parameters<
5440                'a,
5441            > as alloy_sol_types::SolType>::Token<'a>;
5442            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
5443            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
5444            #[inline]
5445            fn new<'a>(
5446                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5447            ) -> Self {
5448                tuple.into()
5449            }
5450            #[inline]
5451            fn tokenize(&self) -> Self::Token<'_> {
5452                (
5453                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5454                        &self.owner,
5455                    ),
5456                )
5457            }
5458            #[inline]
5459            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5460                <Self::Parameters<
5461                    '_,
5462                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5463                    .map(Self::new)
5464            }
5465        }
5466    };
5467    #[derive(serde::Serialize, serde::Deserialize)]
5468    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5469    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
5470```solidity
5471error OwnableUnauthorizedAccount(address account);
5472```*/
5473    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5474    #[derive(Clone)]
5475    pub struct OwnableUnauthorizedAccount {
5476        #[allow(missing_docs)]
5477        pub account: alloy::sol_types::private::Address,
5478    }
5479    #[allow(
5480        non_camel_case_types,
5481        non_snake_case,
5482        clippy::pub_underscore_fields,
5483        clippy::style
5484    )]
5485    const _: () = {
5486        use alloy::sol_types as alloy_sol_types;
5487        #[doc(hidden)]
5488        #[allow(dead_code)]
5489        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5490        #[doc(hidden)]
5491        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5492        #[cfg(test)]
5493        #[allow(dead_code, unreachable_patterns)]
5494        fn _type_assertion(
5495            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5496        ) {
5497            match _t {
5498                alloy_sol_types::private::AssertTypeEq::<
5499                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5500                >(_) => {}
5501            }
5502        }
5503        #[automatically_derived]
5504        #[doc(hidden)]
5505        impl ::core::convert::From<OwnableUnauthorizedAccount>
5506        for UnderlyingRustTuple<'_> {
5507            fn from(value: OwnableUnauthorizedAccount) -> Self {
5508                (value.account,)
5509            }
5510        }
5511        #[automatically_derived]
5512        #[doc(hidden)]
5513        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5514        for OwnableUnauthorizedAccount {
5515            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5516                Self { account: tuple.0 }
5517            }
5518        }
5519        #[automatically_derived]
5520        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
5521            type Parameters<'a> = UnderlyingSolTuple<'a>;
5522            type Token<'a> = <Self::Parameters<
5523                'a,
5524            > as alloy_sol_types::SolType>::Token<'a>;
5525            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
5526            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
5527            #[inline]
5528            fn new<'a>(
5529                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5530            ) -> Self {
5531                tuple.into()
5532            }
5533            #[inline]
5534            fn tokenize(&self) -> Self::Token<'_> {
5535                (
5536                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5537                        &self.account,
5538                    ),
5539                )
5540            }
5541            #[inline]
5542            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5543                <Self::Parameters<
5544                    '_,
5545                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5546                    .map(Self::new)
5547            }
5548        }
5549    };
5550    #[derive(serde::Serialize, serde::Deserialize)]
5551    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5552    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
5553```solidity
5554error ProverNotPermissioned();
5555```*/
5556    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5557    #[derive(Clone)]
5558    pub struct ProverNotPermissioned;
5559    #[allow(
5560        non_camel_case_types,
5561        non_snake_case,
5562        clippy::pub_underscore_fields,
5563        clippy::style
5564    )]
5565    const _: () = {
5566        use alloy::sol_types as alloy_sol_types;
5567        #[doc(hidden)]
5568        #[allow(dead_code)]
5569        type UnderlyingSolTuple<'a> = ();
5570        #[doc(hidden)]
5571        type UnderlyingRustTuple<'a> = ();
5572        #[cfg(test)]
5573        #[allow(dead_code, unreachable_patterns)]
5574        fn _type_assertion(
5575            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5576        ) {
5577            match _t {
5578                alloy_sol_types::private::AssertTypeEq::<
5579                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5580                >(_) => {}
5581            }
5582        }
5583        #[automatically_derived]
5584        #[doc(hidden)]
5585        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
5586            fn from(value: ProverNotPermissioned) -> Self {
5587                ()
5588            }
5589        }
5590        #[automatically_derived]
5591        #[doc(hidden)]
5592        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
5593            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5594                Self
5595            }
5596        }
5597        #[automatically_derived]
5598        impl alloy_sol_types::SolError for ProverNotPermissioned {
5599            type Parameters<'a> = UnderlyingSolTuple<'a>;
5600            type Token<'a> = <Self::Parameters<
5601                'a,
5602            > as alloy_sol_types::SolType>::Token<'a>;
5603            const SIGNATURE: &'static str = "ProverNotPermissioned()";
5604            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
5605            #[inline]
5606            fn new<'a>(
5607                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5608            ) -> Self {
5609                tuple.into()
5610            }
5611            #[inline]
5612            fn tokenize(&self) -> Self::Token<'_> {
5613                ()
5614            }
5615            #[inline]
5616            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5617                <Self::Parameters<
5618                    '_,
5619                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5620                    .map(Self::new)
5621            }
5622        }
5623    };
5624    #[derive(serde::Serialize, serde::Deserialize)]
5625    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5626    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
5627```solidity
5628error UUPSUnauthorizedCallContext();
5629```*/
5630    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5631    #[derive(Clone)]
5632    pub struct UUPSUnauthorizedCallContext;
5633    #[allow(
5634        non_camel_case_types,
5635        non_snake_case,
5636        clippy::pub_underscore_fields,
5637        clippy::style
5638    )]
5639    const _: () = {
5640        use alloy::sol_types as alloy_sol_types;
5641        #[doc(hidden)]
5642        #[allow(dead_code)]
5643        type UnderlyingSolTuple<'a> = ();
5644        #[doc(hidden)]
5645        type UnderlyingRustTuple<'a> = ();
5646        #[cfg(test)]
5647        #[allow(dead_code, unreachable_patterns)]
5648        fn _type_assertion(
5649            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5650        ) {
5651            match _t {
5652                alloy_sol_types::private::AssertTypeEq::<
5653                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5654                >(_) => {}
5655            }
5656        }
5657        #[automatically_derived]
5658        #[doc(hidden)]
5659        impl ::core::convert::From<UUPSUnauthorizedCallContext>
5660        for UnderlyingRustTuple<'_> {
5661            fn from(value: UUPSUnauthorizedCallContext) -> Self {
5662                ()
5663            }
5664        }
5665        #[automatically_derived]
5666        #[doc(hidden)]
5667        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5668        for UUPSUnauthorizedCallContext {
5669            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5670                Self
5671            }
5672        }
5673        #[automatically_derived]
5674        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
5675            type Parameters<'a> = UnderlyingSolTuple<'a>;
5676            type Token<'a> = <Self::Parameters<
5677                'a,
5678            > as alloy_sol_types::SolType>::Token<'a>;
5679            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
5680            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
5681            #[inline]
5682            fn new<'a>(
5683                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5684            ) -> Self {
5685                tuple.into()
5686            }
5687            #[inline]
5688            fn tokenize(&self) -> Self::Token<'_> {
5689                ()
5690            }
5691            #[inline]
5692            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5693                <Self::Parameters<
5694                    '_,
5695                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5696                    .map(Self::new)
5697            }
5698        }
5699    };
5700    #[derive(serde::Serialize, serde::Deserialize)]
5701    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5702    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
5703```solidity
5704error UUPSUnsupportedProxiableUUID(bytes32 slot);
5705```*/
5706    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5707    #[derive(Clone)]
5708    pub struct UUPSUnsupportedProxiableUUID {
5709        #[allow(missing_docs)]
5710        pub slot: alloy::sol_types::private::FixedBytes<32>,
5711    }
5712    #[allow(
5713        non_camel_case_types,
5714        non_snake_case,
5715        clippy::pub_underscore_fields,
5716        clippy::style
5717    )]
5718    const _: () = {
5719        use alloy::sol_types as alloy_sol_types;
5720        #[doc(hidden)]
5721        #[allow(dead_code)]
5722        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5723        #[doc(hidden)]
5724        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5725        #[cfg(test)]
5726        #[allow(dead_code, unreachable_patterns)]
5727        fn _type_assertion(
5728            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5729        ) {
5730            match _t {
5731                alloy_sol_types::private::AssertTypeEq::<
5732                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5733                >(_) => {}
5734            }
5735        }
5736        #[automatically_derived]
5737        #[doc(hidden)]
5738        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
5739        for UnderlyingRustTuple<'_> {
5740            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
5741                (value.slot,)
5742            }
5743        }
5744        #[automatically_derived]
5745        #[doc(hidden)]
5746        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5747        for UUPSUnsupportedProxiableUUID {
5748            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5749                Self { slot: tuple.0 }
5750            }
5751        }
5752        #[automatically_derived]
5753        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
5754            type Parameters<'a> = UnderlyingSolTuple<'a>;
5755            type Token<'a> = <Self::Parameters<
5756                'a,
5757            > as alloy_sol_types::SolType>::Token<'a>;
5758            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
5759            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
5760            #[inline]
5761            fn new<'a>(
5762                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5763            ) -> Self {
5764                tuple.into()
5765            }
5766            #[inline]
5767            fn tokenize(&self) -> Self::Token<'_> {
5768                (
5769                    <alloy::sol_types::sol_data::FixedBytes<
5770                        32,
5771                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
5772                )
5773            }
5774            #[inline]
5775            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5776                <Self::Parameters<
5777                    '_,
5778                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5779                    .map(Self::new)
5780            }
5781        }
5782    };
5783    #[derive(serde::Serialize, serde::Deserialize)]
5784    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5785    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
5786```solidity
5787error WrongStakeTableUsed();
5788```*/
5789    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5790    #[derive(Clone)]
5791    pub struct WrongStakeTableUsed;
5792    #[allow(
5793        non_camel_case_types,
5794        non_snake_case,
5795        clippy::pub_underscore_fields,
5796        clippy::style
5797    )]
5798    const _: () = {
5799        use alloy::sol_types as alloy_sol_types;
5800        #[doc(hidden)]
5801        #[allow(dead_code)]
5802        type UnderlyingSolTuple<'a> = ();
5803        #[doc(hidden)]
5804        type UnderlyingRustTuple<'a> = ();
5805        #[cfg(test)]
5806        #[allow(dead_code, unreachable_patterns)]
5807        fn _type_assertion(
5808            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5809        ) {
5810            match _t {
5811                alloy_sol_types::private::AssertTypeEq::<
5812                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5813                >(_) => {}
5814            }
5815        }
5816        #[automatically_derived]
5817        #[doc(hidden)]
5818        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
5819            fn from(value: WrongStakeTableUsed) -> Self {
5820                ()
5821            }
5822        }
5823        #[automatically_derived]
5824        #[doc(hidden)]
5825        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
5826            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5827                Self
5828            }
5829        }
5830        #[automatically_derived]
5831        impl alloy_sol_types::SolError for WrongStakeTableUsed {
5832            type Parameters<'a> = UnderlyingSolTuple<'a>;
5833            type Token<'a> = <Self::Parameters<
5834                'a,
5835            > as alloy_sol_types::SolType>::Token<'a>;
5836            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
5837            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
5838            #[inline]
5839            fn new<'a>(
5840                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5841            ) -> Self {
5842                tuple.into()
5843            }
5844            #[inline]
5845            fn tokenize(&self) -> Self::Token<'_> {
5846                ()
5847            }
5848            #[inline]
5849            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5850                <Self::Parameters<
5851                    '_,
5852                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5853                    .map(Self::new)
5854            }
5855        }
5856    };
5857    #[derive(serde::Serialize, serde::Deserialize)]
5858    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5859    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
5860```solidity
5861event Initialized(uint64 version);
5862```*/
5863    #[allow(
5864        non_camel_case_types,
5865        non_snake_case,
5866        clippy::pub_underscore_fields,
5867        clippy::style
5868    )]
5869    #[derive(Clone)]
5870    pub struct Initialized {
5871        #[allow(missing_docs)]
5872        pub version: u64,
5873    }
5874    #[allow(
5875        non_camel_case_types,
5876        non_snake_case,
5877        clippy::pub_underscore_fields,
5878        clippy::style
5879    )]
5880    const _: () = {
5881        use alloy::sol_types as alloy_sol_types;
5882        #[automatically_derived]
5883        impl alloy_sol_types::SolEvent for Initialized {
5884            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
5885            type DataToken<'a> = <Self::DataTuple<
5886                'a,
5887            > as alloy_sol_types::SolType>::Token<'a>;
5888            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5889            const SIGNATURE: &'static str = "Initialized(uint64)";
5890            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5891                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
5892                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
5893                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
5894            ]);
5895            const ANONYMOUS: bool = false;
5896            #[allow(unused_variables)]
5897            #[inline]
5898            fn new(
5899                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5900                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5901            ) -> Self {
5902                Self { version: data.0 }
5903            }
5904            #[inline]
5905            fn check_signature(
5906                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5907            ) -> alloy_sol_types::Result<()> {
5908                if topics.0 != Self::SIGNATURE_HASH {
5909                    return Err(
5910                        alloy_sol_types::Error::invalid_event_signature_hash(
5911                            Self::SIGNATURE,
5912                            topics.0,
5913                            Self::SIGNATURE_HASH,
5914                        ),
5915                    );
5916                }
5917                Ok(())
5918            }
5919            #[inline]
5920            fn tokenize_body(&self) -> Self::DataToken<'_> {
5921                (
5922                    <alloy::sol_types::sol_data::Uint<
5923                        64,
5924                    > as alloy_sol_types::SolType>::tokenize(&self.version),
5925                )
5926            }
5927            #[inline]
5928            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5929                (Self::SIGNATURE_HASH.into(),)
5930            }
5931            #[inline]
5932            fn encode_topics_raw(
5933                &self,
5934                out: &mut [alloy_sol_types::abi::token::WordToken],
5935            ) -> alloy_sol_types::Result<()> {
5936                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5937                    return Err(alloy_sol_types::Error::Overrun);
5938                }
5939                out[0usize] = alloy_sol_types::abi::token::WordToken(
5940                    Self::SIGNATURE_HASH,
5941                );
5942                Ok(())
5943            }
5944        }
5945        #[automatically_derived]
5946        impl alloy_sol_types::private::IntoLogData for Initialized {
5947            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5948                From::from(self)
5949            }
5950            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5951                From::from(&self)
5952            }
5953        }
5954        #[automatically_derived]
5955        impl From<&Initialized> for alloy_sol_types::private::LogData {
5956            #[inline]
5957            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
5958                alloy_sol_types::SolEvent::encode_log_data(this)
5959            }
5960        }
5961    };
5962    #[derive(serde::Serialize, serde::Deserialize)]
5963    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5964    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
5965```solidity
5966event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
5967```*/
5968    #[allow(
5969        non_camel_case_types,
5970        non_snake_case,
5971        clippy::pub_underscore_fields,
5972        clippy::style
5973    )]
5974    #[derive(Clone)]
5975    pub struct NewState {
5976        #[allow(missing_docs)]
5977        pub viewNum: u64,
5978        #[allow(missing_docs)]
5979        pub blockHeight: u64,
5980        #[allow(missing_docs)]
5981        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
5982    }
5983    #[allow(
5984        non_camel_case_types,
5985        non_snake_case,
5986        clippy::pub_underscore_fields,
5987        clippy::style
5988    )]
5989    const _: () = {
5990        use alloy::sol_types as alloy_sol_types;
5991        #[automatically_derived]
5992        impl alloy_sol_types::SolEvent for NewState {
5993            type DataTuple<'a> = (BN254::ScalarField,);
5994            type DataToken<'a> = <Self::DataTuple<
5995                'a,
5996            > as alloy_sol_types::SolType>::Token<'a>;
5997            type TopicList = (
5998                alloy_sol_types::sol_data::FixedBytes<32>,
5999                alloy::sol_types::sol_data::Uint<64>,
6000                alloy::sol_types::sol_data::Uint<64>,
6001            );
6002            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
6003            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6004                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
6005                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
6006                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
6007            ]);
6008            const ANONYMOUS: bool = false;
6009            #[allow(unused_variables)]
6010            #[inline]
6011            fn new(
6012                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6013                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6014            ) -> Self {
6015                Self {
6016                    viewNum: topics.1,
6017                    blockHeight: topics.2,
6018                    blockCommRoot: data.0,
6019                }
6020            }
6021            #[inline]
6022            fn check_signature(
6023                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6024            ) -> alloy_sol_types::Result<()> {
6025                if topics.0 != Self::SIGNATURE_HASH {
6026                    return Err(
6027                        alloy_sol_types::Error::invalid_event_signature_hash(
6028                            Self::SIGNATURE,
6029                            topics.0,
6030                            Self::SIGNATURE_HASH,
6031                        ),
6032                    );
6033                }
6034                Ok(())
6035            }
6036            #[inline]
6037            fn tokenize_body(&self) -> Self::DataToken<'_> {
6038                (
6039                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
6040                        &self.blockCommRoot,
6041                    ),
6042                )
6043            }
6044            #[inline]
6045            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6046                (
6047                    Self::SIGNATURE_HASH.into(),
6048                    self.viewNum.clone(),
6049                    self.blockHeight.clone(),
6050                )
6051            }
6052            #[inline]
6053            fn encode_topics_raw(
6054                &self,
6055                out: &mut [alloy_sol_types::abi::token::WordToken],
6056            ) -> alloy_sol_types::Result<()> {
6057                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6058                    return Err(alloy_sol_types::Error::Overrun);
6059                }
6060                out[0usize] = alloy_sol_types::abi::token::WordToken(
6061                    Self::SIGNATURE_HASH,
6062                );
6063                out[1usize] = <alloy::sol_types::sol_data::Uint<
6064                    64,
6065                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
6066                out[2usize] = <alloy::sol_types::sol_data::Uint<
6067                    64,
6068                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
6069                Ok(())
6070            }
6071        }
6072        #[automatically_derived]
6073        impl alloy_sol_types::private::IntoLogData for NewState {
6074            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6075                From::from(self)
6076            }
6077            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6078                From::from(&self)
6079            }
6080        }
6081        #[automatically_derived]
6082        impl From<&NewState> for alloy_sol_types::private::LogData {
6083            #[inline]
6084            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
6085                alloy_sol_types::SolEvent::encode_log_data(this)
6086            }
6087        }
6088    };
6089    #[derive(serde::Serialize, serde::Deserialize)]
6090    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6091    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
6092```solidity
6093event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
6094```*/
6095    #[allow(
6096        non_camel_case_types,
6097        non_snake_case,
6098        clippy::pub_underscore_fields,
6099        clippy::style
6100    )]
6101    #[derive(Clone)]
6102    pub struct OwnershipTransferred {
6103        #[allow(missing_docs)]
6104        pub previousOwner: alloy::sol_types::private::Address,
6105        #[allow(missing_docs)]
6106        pub newOwner: alloy::sol_types::private::Address,
6107    }
6108    #[allow(
6109        non_camel_case_types,
6110        non_snake_case,
6111        clippy::pub_underscore_fields,
6112        clippy::style
6113    )]
6114    const _: () = {
6115        use alloy::sol_types as alloy_sol_types;
6116        #[automatically_derived]
6117        impl alloy_sol_types::SolEvent for OwnershipTransferred {
6118            type DataTuple<'a> = ();
6119            type DataToken<'a> = <Self::DataTuple<
6120                'a,
6121            > as alloy_sol_types::SolType>::Token<'a>;
6122            type TopicList = (
6123                alloy_sol_types::sol_data::FixedBytes<32>,
6124                alloy::sol_types::sol_data::Address,
6125                alloy::sol_types::sol_data::Address,
6126            );
6127            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
6128            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6129                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
6130                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
6131                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
6132            ]);
6133            const ANONYMOUS: bool = false;
6134            #[allow(unused_variables)]
6135            #[inline]
6136            fn new(
6137                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6138                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6139            ) -> Self {
6140                Self {
6141                    previousOwner: topics.1,
6142                    newOwner: topics.2,
6143                }
6144            }
6145            #[inline]
6146            fn check_signature(
6147                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6148            ) -> alloy_sol_types::Result<()> {
6149                if topics.0 != Self::SIGNATURE_HASH {
6150                    return Err(
6151                        alloy_sol_types::Error::invalid_event_signature_hash(
6152                            Self::SIGNATURE,
6153                            topics.0,
6154                            Self::SIGNATURE_HASH,
6155                        ),
6156                    );
6157                }
6158                Ok(())
6159            }
6160            #[inline]
6161            fn tokenize_body(&self) -> Self::DataToken<'_> {
6162                ()
6163            }
6164            #[inline]
6165            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6166                (
6167                    Self::SIGNATURE_HASH.into(),
6168                    self.previousOwner.clone(),
6169                    self.newOwner.clone(),
6170                )
6171            }
6172            #[inline]
6173            fn encode_topics_raw(
6174                &self,
6175                out: &mut [alloy_sol_types::abi::token::WordToken],
6176            ) -> alloy_sol_types::Result<()> {
6177                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6178                    return Err(alloy_sol_types::Error::Overrun);
6179                }
6180                out[0usize] = alloy_sol_types::abi::token::WordToken(
6181                    Self::SIGNATURE_HASH,
6182                );
6183                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6184                    &self.previousOwner,
6185                );
6186                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6187                    &self.newOwner,
6188                );
6189                Ok(())
6190            }
6191        }
6192        #[automatically_derived]
6193        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
6194            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6195                From::from(self)
6196            }
6197            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6198                From::from(&self)
6199            }
6200        }
6201        #[automatically_derived]
6202        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
6203            #[inline]
6204            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
6205                alloy_sol_types::SolEvent::encode_log_data(this)
6206            }
6207        }
6208    };
6209    #[derive(serde::Serialize, serde::Deserialize)]
6210    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6211    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
6212```solidity
6213event PermissionedProverNotRequired();
6214```*/
6215    #[allow(
6216        non_camel_case_types,
6217        non_snake_case,
6218        clippy::pub_underscore_fields,
6219        clippy::style
6220    )]
6221    #[derive(Clone)]
6222    pub struct PermissionedProverNotRequired;
6223    #[allow(
6224        non_camel_case_types,
6225        non_snake_case,
6226        clippy::pub_underscore_fields,
6227        clippy::style
6228    )]
6229    const _: () = {
6230        use alloy::sol_types as alloy_sol_types;
6231        #[automatically_derived]
6232        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
6233            type DataTuple<'a> = ();
6234            type DataToken<'a> = <Self::DataTuple<
6235                'a,
6236            > as alloy_sol_types::SolType>::Token<'a>;
6237            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6238            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
6239            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6240                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
6241                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
6242                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
6243            ]);
6244            const ANONYMOUS: bool = false;
6245            #[allow(unused_variables)]
6246            #[inline]
6247            fn new(
6248                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6249                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6250            ) -> Self {
6251                Self {}
6252            }
6253            #[inline]
6254            fn check_signature(
6255                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6256            ) -> alloy_sol_types::Result<()> {
6257                if topics.0 != Self::SIGNATURE_HASH {
6258                    return Err(
6259                        alloy_sol_types::Error::invalid_event_signature_hash(
6260                            Self::SIGNATURE,
6261                            topics.0,
6262                            Self::SIGNATURE_HASH,
6263                        ),
6264                    );
6265                }
6266                Ok(())
6267            }
6268            #[inline]
6269            fn tokenize_body(&self) -> Self::DataToken<'_> {
6270                ()
6271            }
6272            #[inline]
6273            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6274                (Self::SIGNATURE_HASH.into(),)
6275            }
6276            #[inline]
6277            fn encode_topics_raw(
6278                &self,
6279                out: &mut [alloy_sol_types::abi::token::WordToken],
6280            ) -> alloy_sol_types::Result<()> {
6281                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6282                    return Err(alloy_sol_types::Error::Overrun);
6283                }
6284                out[0usize] = alloy_sol_types::abi::token::WordToken(
6285                    Self::SIGNATURE_HASH,
6286                );
6287                Ok(())
6288            }
6289        }
6290        #[automatically_derived]
6291        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
6292            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6293                From::from(self)
6294            }
6295            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6296                From::from(&self)
6297            }
6298        }
6299        #[automatically_derived]
6300        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
6301            #[inline]
6302            fn from(
6303                this: &PermissionedProverNotRequired,
6304            ) -> alloy_sol_types::private::LogData {
6305                alloy_sol_types::SolEvent::encode_log_data(this)
6306            }
6307        }
6308    };
6309    #[derive(serde::Serialize, serde::Deserialize)]
6310    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6311    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
6312```solidity
6313event PermissionedProverRequired(address permissionedProver);
6314```*/
6315    #[allow(
6316        non_camel_case_types,
6317        non_snake_case,
6318        clippy::pub_underscore_fields,
6319        clippy::style
6320    )]
6321    #[derive(Clone)]
6322    pub struct PermissionedProverRequired {
6323        #[allow(missing_docs)]
6324        pub permissionedProver: alloy::sol_types::private::Address,
6325    }
6326    #[allow(
6327        non_camel_case_types,
6328        non_snake_case,
6329        clippy::pub_underscore_fields,
6330        clippy::style
6331    )]
6332    const _: () = {
6333        use alloy::sol_types as alloy_sol_types;
6334        #[automatically_derived]
6335        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
6336            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6337            type DataToken<'a> = <Self::DataTuple<
6338                'a,
6339            > as alloy_sol_types::SolType>::Token<'a>;
6340            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6341            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
6342            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6343                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
6344                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
6345                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
6346            ]);
6347            const ANONYMOUS: bool = false;
6348            #[allow(unused_variables)]
6349            #[inline]
6350            fn new(
6351                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6352                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6353            ) -> Self {
6354                Self { permissionedProver: data.0 }
6355            }
6356            #[inline]
6357            fn check_signature(
6358                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6359            ) -> alloy_sol_types::Result<()> {
6360                if topics.0 != Self::SIGNATURE_HASH {
6361                    return Err(
6362                        alloy_sol_types::Error::invalid_event_signature_hash(
6363                            Self::SIGNATURE,
6364                            topics.0,
6365                            Self::SIGNATURE_HASH,
6366                        ),
6367                    );
6368                }
6369                Ok(())
6370            }
6371            #[inline]
6372            fn tokenize_body(&self) -> Self::DataToken<'_> {
6373                (
6374                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6375                        &self.permissionedProver,
6376                    ),
6377                )
6378            }
6379            #[inline]
6380            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6381                (Self::SIGNATURE_HASH.into(),)
6382            }
6383            #[inline]
6384            fn encode_topics_raw(
6385                &self,
6386                out: &mut [alloy_sol_types::abi::token::WordToken],
6387            ) -> alloy_sol_types::Result<()> {
6388                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6389                    return Err(alloy_sol_types::Error::Overrun);
6390                }
6391                out[0usize] = alloy_sol_types::abi::token::WordToken(
6392                    Self::SIGNATURE_HASH,
6393                );
6394                Ok(())
6395            }
6396        }
6397        #[automatically_derived]
6398        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
6399            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6400                From::from(self)
6401            }
6402            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6403                From::from(&self)
6404            }
6405        }
6406        #[automatically_derived]
6407        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
6408            #[inline]
6409            fn from(
6410                this: &PermissionedProverRequired,
6411            ) -> alloy_sol_types::private::LogData {
6412                alloy_sol_types::SolEvent::encode_log_data(this)
6413            }
6414        }
6415    };
6416    #[derive(serde::Serialize, serde::Deserialize)]
6417    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6418    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
6419```solidity
6420event Upgrade(address implementation);
6421```*/
6422    #[allow(
6423        non_camel_case_types,
6424        non_snake_case,
6425        clippy::pub_underscore_fields,
6426        clippy::style
6427    )]
6428    #[derive(Clone)]
6429    pub struct Upgrade {
6430        #[allow(missing_docs)]
6431        pub implementation: alloy::sol_types::private::Address,
6432    }
6433    #[allow(
6434        non_camel_case_types,
6435        non_snake_case,
6436        clippy::pub_underscore_fields,
6437        clippy::style
6438    )]
6439    const _: () = {
6440        use alloy::sol_types as alloy_sol_types;
6441        #[automatically_derived]
6442        impl alloy_sol_types::SolEvent for Upgrade {
6443            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6444            type DataToken<'a> = <Self::DataTuple<
6445                'a,
6446            > as alloy_sol_types::SolType>::Token<'a>;
6447            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6448            const SIGNATURE: &'static str = "Upgrade(address)";
6449            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6450                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
6451                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
6452                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
6453            ]);
6454            const ANONYMOUS: bool = false;
6455            #[allow(unused_variables)]
6456            #[inline]
6457            fn new(
6458                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6459                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6460            ) -> Self {
6461                Self { implementation: data.0 }
6462            }
6463            #[inline]
6464            fn check_signature(
6465                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6466            ) -> alloy_sol_types::Result<()> {
6467                if topics.0 != Self::SIGNATURE_HASH {
6468                    return Err(
6469                        alloy_sol_types::Error::invalid_event_signature_hash(
6470                            Self::SIGNATURE,
6471                            topics.0,
6472                            Self::SIGNATURE_HASH,
6473                        ),
6474                    );
6475                }
6476                Ok(())
6477            }
6478            #[inline]
6479            fn tokenize_body(&self) -> Self::DataToken<'_> {
6480                (
6481                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6482                        &self.implementation,
6483                    ),
6484                )
6485            }
6486            #[inline]
6487            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6488                (Self::SIGNATURE_HASH.into(),)
6489            }
6490            #[inline]
6491            fn encode_topics_raw(
6492                &self,
6493                out: &mut [alloy_sol_types::abi::token::WordToken],
6494            ) -> alloy_sol_types::Result<()> {
6495                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6496                    return Err(alloy_sol_types::Error::Overrun);
6497                }
6498                out[0usize] = alloy_sol_types::abi::token::WordToken(
6499                    Self::SIGNATURE_HASH,
6500                );
6501                Ok(())
6502            }
6503        }
6504        #[automatically_derived]
6505        impl alloy_sol_types::private::IntoLogData for Upgrade {
6506            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6507                From::from(self)
6508            }
6509            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6510                From::from(&self)
6511            }
6512        }
6513        #[automatically_derived]
6514        impl From<&Upgrade> for alloy_sol_types::private::LogData {
6515            #[inline]
6516            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
6517                alloy_sol_types::SolEvent::encode_log_data(this)
6518            }
6519        }
6520    };
6521    #[derive(serde::Serialize, serde::Deserialize)]
6522    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6523    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
6524```solidity
6525event Upgraded(address indexed implementation);
6526```*/
6527    #[allow(
6528        non_camel_case_types,
6529        non_snake_case,
6530        clippy::pub_underscore_fields,
6531        clippy::style
6532    )]
6533    #[derive(Clone)]
6534    pub struct Upgraded {
6535        #[allow(missing_docs)]
6536        pub implementation: alloy::sol_types::private::Address,
6537    }
6538    #[allow(
6539        non_camel_case_types,
6540        non_snake_case,
6541        clippy::pub_underscore_fields,
6542        clippy::style
6543    )]
6544    const _: () = {
6545        use alloy::sol_types as alloy_sol_types;
6546        #[automatically_derived]
6547        impl alloy_sol_types::SolEvent for Upgraded {
6548            type DataTuple<'a> = ();
6549            type DataToken<'a> = <Self::DataTuple<
6550                'a,
6551            > as alloy_sol_types::SolType>::Token<'a>;
6552            type TopicList = (
6553                alloy_sol_types::sol_data::FixedBytes<32>,
6554                alloy::sol_types::sol_data::Address,
6555            );
6556            const SIGNATURE: &'static str = "Upgraded(address)";
6557            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6558                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
6559                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
6560                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
6561            ]);
6562            const ANONYMOUS: bool = false;
6563            #[allow(unused_variables)]
6564            #[inline]
6565            fn new(
6566                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6567                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6568            ) -> Self {
6569                Self { implementation: topics.1 }
6570            }
6571            #[inline]
6572            fn check_signature(
6573                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6574            ) -> alloy_sol_types::Result<()> {
6575                if topics.0 != Self::SIGNATURE_HASH {
6576                    return Err(
6577                        alloy_sol_types::Error::invalid_event_signature_hash(
6578                            Self::SIGNATURE,
6579                            topics.0,
6580                            Self::SIGNATURE_HASH,
6581                        ),
6582                    );
6583                }
6584                Ok(())
6585            }
6586            #[inline]
6587            fn tokenize_body(&self) -> Self::DataToken<'_> {
6588                ()
6589            }
6590            #[inline]
6591            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6592                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
6593            }
6594            #[inline]
6595            fn encode_topics_raw(
6596                &self,
6597                out: &mut [alloy_sol_types::abi::token::WordToken],
6598            ) -> alloy_sol_types::Result<()> {
6599                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6600                    return Err(alloy_sol_types::Error::Overrun);
6601                }
6602                out[0usize] = alloy_sol_types::abi::token::WordToken(
6603                    Self::SIGNATURE_HASH,
6604                );
6605                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6606                    &self.implementation,
6607                );
6608                Ok(())
6609            }
6610        }
6611        #[automatically_derived]
6612        impl alloy_sol_types::private::IntoLogData for Upgraded {
6613            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6614                From::from(self)
6615            }
6616            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6617                From::from(&self)
6618            }
6619        }
6620        #[automatically_derived]
6621        impl From<&Upgraded> for alloy_sol_types::private::LogData {
6622            #[inline]
6623            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
6624                alloy_sol_types::SolEvent::encode_log_data(this)
6625            }
6626        }
6627    };
6628    /**Constructor`.
6629```solidity
6630constructor();
6631```*/
6632    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6633    #[derive(Clone)]
6634    pub struct constructorCall {}
6635    const _: () = {
6636        use alloy::sol_types as alloy_sol_types;
6637        {
6638            #[doc(hidden)]
6639            #[allow(dead_code)]
6640            type UnderlyingSolTuple<'a> = ();
6641            #[doc(hidden)]
6642            type UnderlyingRustTuple<'a> = ();
6643            #[cfg(test)]
6644            #[allow(dead_code, unreachable_patterns)]
6645            fn _type_assertion(
6646                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6647            ) {
6648                match _t {
6649                    alloy_sol_types::private::AssertTypeEq::<
6650                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6651                    >(_) => {}
6652                }
6653            }
6654            #[automatically_derived]
6655            #[doc(hidden)]
6656            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
6657                fn from(value: constructorCall) -> Self {
6658                    ()
6659                }
6660            }
6661            #[automatically_derived]
6662            #[doc(hidden)]
6663            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
6664                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6665                    Self {}
6666                }
6667            }
6668        }
6669        #[automatically_derived]
6670        impl alloy_sol_types::SolConstructor for constructorCall {
6671            type Parameters<'a> = ();
6672            type Token<'a> = <Self::Parameters<
6673                'a,
6674            > as alloy_sol_types::SolType>::Token<'a>;
6675            #[inline]
6676            fn new<'a>(
6677                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6678            ) -> Self {
6679                tuple.into()
6680            }
6681            #[inline]
6682            fn tokenize(&self) -> Self::Token<'_> {
6683                ()
6684            }
6685        }
6686    };
6687    #[derive(serde::Serialize, serde::Deserialize)]
6688    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6689    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
6690```solidity
6691function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
6692```*/
6693    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6694    #[derive(Clone)]
6695    pub struct UPGRADE_INTERFACE_VERSIONCall;
6696    #[derive(serde::Serialize, serde::Deserialize)]
6697    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6698    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
6699    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6700    #[derive(Clone)]
6701    pub struct UPGRADE_INTERFACE_VERSIONReturn {
6702        #[allow(missing_docs)]
6703        pub _0: alloy::sol_types::private::String,
6704    }
6705    #[allow(
6706        non_camel_case_types,
6707        non_snake_case,
6708        clippy::pub_underscore_fields,
6709        clippy::style
6710    )]
6711    const _: () = {
6712        use alloy::sol_types as alloy_sol_types;
6713        {
6714            #[doc(hidden)]
6715            #[allow(dead_code)]
6716            type UnderlyingSolTuple<'a> = ();
6717            #[doc(hidden)]
6718            type UnderlyingRustTuple<'a> = ();
6719            #[cfg(test)]
6720            #[allow(dead_code, unreachable_patterns)]
6721            fn _type_assertion(
6722                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6723            ) {
6724                match _t {
6725                    alloy_sol_types::private::AssertTypeEq::<
6726                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6727                    >(_) => {}
6728                }
6729            }
6730            #[automatically_derived]
6731            #[doc(hidden)]
6732            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
6733            for UnderlyingRustTuple<'_> {
6734                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
6735                    ()
6736                }
6737            }
6738            #[automatically_derived]
6739            #[doc(hidden)]
6740            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6741            for UPGRADE_INTERFACE_VERSIONCall {
6742                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6743                    Self
6744                }
6745            }
6746        }
6747        {
6748            #[doc(hidden)]
6749            #[allow(dead_code)]
6750            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
6751            #[doc(hidden)]
6752            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
6753            #[cfg(test)]
6754            #[allow(dead_code, unreachable_patterns)]
6755            fn _type_assertion(
6756                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6757            ) {
6758                match _t {
6759                    alloy_sol_types::private::AssertTypeEq::<
6760                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6761                    >(_) => {}
6762                }
6763            }
6764            #[automatically_derived]
6765            #[doc(hidden)]
6766            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
6767            for UnderlyingRustTuple<'_> {
6768                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
6769                    (value._0,)
6770                }
6771            }
6772            #[automatically_derived]
6773            #[doc(hidden)]
6774            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6775            for UPGRADE_INTERFACE_VERSIONReturn {
6776                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6777                    Self { _0: tuple.0 }
6778                }
6779            }
6780        }
6781        #[automatically_derived]
6782        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
6783            type Parameters<'a> = ();
6784            type Token<'a> = <Self::Parameters<
6785                'a,
6786            > as alloy_sol_types::SolType>::Token<'a>;
6787            type Return = alloy::sol_types::private::String;
6788            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
6789            type ReturnToken<'a> = <Self::ReturnTuple<
6790                'a,
6791            > as alloy_sol_types::SolType>::Token<'a>;
6792            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
6793            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
6794            #[inline]
6795            fn new<'a>(
6796                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6797            ) -> Self {
6798                tuple.into()
6799            }
6800            #[inline]
6801            fn tokenize(&self) -> Self::Token<'_> {
6802                ()
6803            }
6804            #[inline]
6805            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6806                (
6807                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
6808                        ret,
6809                    ),
6810                )
6811            }
6812            #[inline]
6813            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6814                <Self::ReturnTuple<
6815                    '_,
6816                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6817                    .map(|r| {
6818                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
6819                        r._0
6820                    })
6821            }
6822            #[inline]
6823            fn abi_decode_returns_validate(
6824                data: &[u8],
6825            ) -> alloy_sol_types::Result<Self::Return> {
6826                <Self::ReturnTuple<
6827                    '_,
6828                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6829                    .map(|r| {
6830                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
6831                        r._0
6832                    })
6833            }
6834        }
6835    };
6836    #[derive(serde::Serialize, serde::Deserialize)]
6837    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6838    /**Function with signature `_getVk()` and selector `0x12173c2c`.
6839```solidity
6840function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
6841```*/
6842    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6843    #[derive(Clone)]
6844    pub struct _getVkCall;
6845    #[derive(serde::Serialize, serde::Deserialize)]
6846    #[derive()]
6847    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
6848    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6849    #[derive(Clone)]
6850    pub struct _getVkReturn {
6851        #[allow(missing_docs)]
6852        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
6853    }
6854    #[allow(
6855        non_camel_case_types,
6856        non_snake_case,
6857        clippy::pub_underscore_fields,
6858        clippy::style
6859    )]
6860    const _: () = {
6861        use alloy::sol_types as alloy_sol_types;
6862        {
6863            #[doc(hidden)]
6864            #[allow(dead_code)]
6865            type UnderlyingSolTuple<'a> = ();
6866            #[doc(hidden)]
6867            type UnderlyingRustTuple<'a> = ();
6868            #[cfg(test)]
6869            #[allow(dead_code, unreachable_patterns)]
6870            fn _type_assertion(
6871                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6872            ) {
6873                match _t {
6874                    alloy_sol_types::private::AssertTypeEq::<
6875                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6876                    >(_) => {}
6877                }
6878            }
6879            #[automatically_derived]
6880            #[doc(hidden)]
6881            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
6882                fn from(value: _getVkCall) -> Self {
6883                    ()
6884                }
6885            }
6886            #[automatically_derived]
6887            #[doc(hidden)]
6888            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
6889                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6890                    Self
6891                }
6892            }
6893        }
6894        {
6895            #[doc(hidden)]
6896            #[allow(dead_code)]
6897            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
6898            #[doc(hidden)]
6899            type UnderlyingRustTuple<'a> = (
6900                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
6901            );
6902            #[cfg(test)]
6903            #[allow(dead_code, unreachable_patterns)]
6904            fn _type_assertion(
6905                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6906            ) {
6907                match _t {
6908                    alloy_sol_types::private::AssertTypeEq::<
6909                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6910                    >(_) => {}
6911                }
6912            }
6913            #[automatically_derived]
6914            #[doc(hidden)]
6915            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
6916                fn from(value: _getVkReturn) -> Self {
6917                    (value.vk,)
6918                }
6919            }
6920            #[automatically_derived]
6921            #[doc(hidden)]
6922            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
6923                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6924                    Self { vk: tuple.0 }
6925                }
6926            }
6927        }
6928        #[automatically_derived]
6929        impl alloy_sol_types::SolCall for _getVkCall {
6930            type Parameters<'a> = ();
6931            type Token<'a> = <Self::Parameters<
6932                'a,
6933            > as alloy_sol_types::SolType>::Token<'a>;
6934            type Return = <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType;
6935            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
6936            type ReturnToken<'a> = <Self::ReturnTuple<
6937                'a,
6938            > as alloy_sol_types::SolType>::Token<'a>;
6939            const SIGNATURE: &'static str = "_getVk()";
6940            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
6941            #[inline]
6942            fn new<'a>(
6943                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6944            ) -> Self {
6945                tuple.into()
6946            }
6947            #[inline]
6948            fn tokenize(&self) -> Self::Token<'_> {
6949                ()
6950            }
6951            #[inline]
6952            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6953                (
6954                    <IPlonkVerifier::VerifyingKey as alloy_sol_types::SolType>::tokenize(
6955                        ret,
6956                    ),
6957                )
6958            }
6959            #[inline]
6960            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6961                <Self::ReturnTuple<
6962                    '_,
6963                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6964                    .map(|r| {
6965                        let r: _getVkReturn = r.into();
6966                        r.vk
6967                    })
6968            }
6969            #[inline]
6970            fn abi_decode_returns_validate(
6971                data: &[u8],
6972            ) -> alloy_sol_types::Result<Self::Return> {
6973                <Self::ReturnTuple<
6974                    '_,
6975                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6976                    .map(|r| {
6977                        let r: _getVkReturn = r.into();
6978                        r.vk
6979                    })
6980            }
6981        }
6982    };
6983    #[derive(serde::Serialize, serde::Deserialize)]
6984    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6985    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
6986```solidity
6987function currentBlockNumber() external view returns (uint256);
6988```*/
6989    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6990    #[derive(Clone)]
6991    pub struct currentBlockNumberCall;
6992    #[derive(serde::Serialize, serde::Deserialize)]
6993    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6994    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
6995    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6996    #[derive(Clone)]
6997    pub struct currentBlockNumberReturn {
6998        #[allow(missing_docs)]
6999        pub _0: alloy::sol_types::private::primitives::aliases::U256,
7000    }
7001    #[allow(
7002        non_camel_case_types,
7003        non_snake_case,
7004        clippy::pub_underscore_fields,
7005        clippy::style
7006    )]
7007    const _: () = {
7008        use alloy::sol_types as alloy_sol_types;
7009        {
7010            #[doc(hidden)]
7011            #[allow(dead_code)]
7012            type UnderlyingSolTuple<'a> = ();
7013            #[doc(hidden)]
7014            type UnderlyingRustTuple<'a> = ();
7015            #[cfg(test)]
7016            #[allow(dead_code, unreachable_patterns)]
7017            fn _type_assertion(
7018                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7019            ) {
7020                match _t {
7021                    alloy_sol_types::private::AssertTypeEq::<
7022                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7023                    >(_) => {}
7024                }
7025            }
7026            #[automatically_derived]
7027            #[doc(hidden)]
7028            impl ::core::convert::From<currentBlockNumberCall>
7029            for UnderlyingRustTuple<'_> {
7030                fn from(value: currentBlockNumberCall) -> Self {
7031                    ()
7032                }
7033            }
7034            #[automatically_derived]
7035            #[doc(hidden)]
7036            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7037            for currentBlockNumberCall {
7038                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7039                    Self
7040                }
7041            }
7042        }
7043        {
7044            #[doc(hidden)]
7045            #[allow(dead_code)]
7046            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7047            #[doc(hidden)]
7048            type UnderlyingRustTuple<'a> = (
7049                alloy::sol_types::private::primitives::aliases::U256,
7050            );
7051            #[cfg(test)]
7052            #[allow(dead_code, unreachable_patterns)]
7053            fn _type_assertion(
7054                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7055            ) {
7056                match _t {
7057                    alloy_sol_types::private::AssertTypeEq::<
7058                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7059                    >(_) => {}
7060                }
7061            }
7062            #[automatically_derived]
7063            #[doc(hidden)]
7064            impl ::core::convert::From<currentBlockNumberReturn>
7065            for UnderlyingRustTuple<'_> {
7066                fn from(value: currentBlockNumberReturn) -> Self {
7067                    (value._0,)
7068                }
7069            }
7070            #[automatically_derived]
7071            #[doc(hidden)]
7072            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7073            for currentBlockNumberReturn {
7074                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7075                    Self { _0: tuple.0 }
7076                }
7077            }
7078        }
7079        #[automatically_derived]
7080        impl alloy_sol_types::SolCall for currentBlockNumberCall {
7081            type Parameters<'a> = ();
7082            type Token<'a> = <Self::Parameters<
7083                'a,
7084            > as alloy_sol_types::SolType>::Token<'a>;
7085            type Return = alloy::sol_types::private::primitives::aliases::U256;
7086            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7087            type ReturnToken<'a> = <Self::ReturnTuple<
7088                'a,
7089            > as alloy_sol_types::SolType>::Token<'a>;
7090            const SIGNATURE: &'static str = "currentBlockNumber()";
7091            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
7092            #[inline]
7093            fn new<'a>(
7094                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7095            ) -> Self {
7096                tuple.into()
7097            }
7098            #[inline]
7099            fn tokenize(&self) -> Self::Token<'_> {
7100                ()
7101            }
7102            #[inline]
7103            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7104                (
7105                    <alloy::sol_types::sol_data::Uint<
7106                        256,
7107                    > as alloy_sol_types::SolType>::tokenize(ret),
7108                )
7109            }
7110            #[inline]
7111            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7112                <Self::ReturnTuple<
7113                    '_,
7114                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7115                    .map(|r| {
7116                        let r: currentBlockNumberReturn = r.into();
7117                        r._0
7118                    })
7119            }
7120            #[inline]
7121            fn abi_decode_returns_validate(
7122                data: &[u8],
7123            ) -> alloy_sol_types::Result<Self::Return> {
7124                <Self::ReturnTuple<
7125                    '_,
7126                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7127                    .map(|r| {
7128                        let r: currentBlockNumberReturn = r.into();
7129                        r._0
7130                    })
7131            }
7132        }
7133    };
7134    #[derive(serde::Serialize, serde::Deserialize)]
7135    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7136    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
7137```solidity
7138function disablePermissionedProverMode() external;
7139```*/
7140    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7141    #[derive(Clone)]
7142    pub struct disablePermissionedProverModeCall;
7143    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
7144    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7145    #[derive(Clone)]
7146    pub struct disablePermissionedProverModeReturn {}
7147    #[allow(
7148        non_camel_case_types,
7149        non_snake_case,
7150        clippy::pub_underscore_fields,
7151        clippy::style
7152    )]
7153    const _: () = {
7154        use alloy::sol_types as alloy_sol_types;
7155        {
7156            #[doc(hidden)]
7157            #[allow(dead_code)]
7158            type UnderlyingSolTuple<'a> = ();
7159            #[doc(hidden)]
7160            type UnderlyingRustTuple<'a> = ();
7161            #[cfg(test)]
7162            #[allow(dead_code, unreachable_patterns)]
7163            fn _type_assertion(
7164                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7165            ) {
7166                match _t {
7167                    alloy_sol_types::private::AssertTypeEq::<
7168                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7169                    >(_) => {}
7170                }
7171            }
7172            #[automatically_derived]
7173            #[doc(hidden)]
7174            impl ::core::convert::From<disablePermissionedProverModeCall>
7175            for UnderlyingRustTuple<'_> {
7176                fn from(value: disablePermissionedProverModeCall) -> Self {
7177                    ()
7178                }
7179            }
7180            #[automatically_derived]
7181            #[doc(hidden)]
7182            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7183            for disablePermissionedProverModeCall {
7184                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7185                    Self
7186                }
7187            }
7188        }
7189        {
7190            #[doc(hidden)]
7191            #[allow(dead_code)]
7192            type UnderlyingSolTuple<'a> = ();
7193            #[doc(hidden)]
7194            type UnderlyingRustTuple<'a> = ();
7195            #[cfg(test)]
7196            #[allow(dead_code, unreachable_patterns)]
7197            fn _type_assertion(
7198                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7199            ) {
7200                match _t {
7201                    alloy_sol_types::private::AssertTypeEq::<
7202                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7203                    >(_) => {}
7204                }
7205            }
7206            #[automatically_derived]
7207            #[doc(hidden)]
7208            impl ::core::convert::From<disablePermissionedProverModeReturn>
7209            for UnderlyingRustTuple<'_> {
7210                fn from(value: disablePermissionedProverModeReturn) -> Self {
7211                    ()
7212                }
7213            }
7214            #[automatically_derived]
7215            #[doc(hidden)]
7216            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7217            for disablePermissionedProverModeReturn {
7218                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7219                    Self {}
7220                }
7221            }
7222        }
7223        impl disablePermissionedProverModeReturn {
7224            fn _tokenize(
7225                &self,
7226            ) -> <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::ReturnToken<
7227                '_,
7228            > {
7229                ()
7230            }
7231        }
7232        #[automatically_derived]
7233        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
7234            type Parameters<'a> = ();
7235            type Token<'a> = <Self::Parameters<
7236                'a,
7237            > as alloy_sol_types::SolType>::Token<'a>;
7238            type Return = disablePermissionedProverModeReturn;
7239            type ReturnTuple<'a> = ();
7240            type ReturnToken<'a> = <Self::ReturnTuple<
7241                'a,
7242            > as alloy_sol_types::SolType>::Token<'a>;
7243            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
7244            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
7245            #[inline]
7246            fn new<'a>(
7247                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7248            ) -> Self {
7249                tuple.into()
7250            }
7251            #[inline]
7252            fn tokenize(&self) -> Self::Token<'_> {
7253                ()
7254            }
7255            #[inline]
7256            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7257                disablePermissionedProverModeReturn::_tokenize(ret)
7258            }
7259            #[inline]
7260            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7261                <Self::ReturnTuple<
7262                    '_,
7263                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7264                    .map(Into::into)
7265            }
7266            #[inline]
7267            fn abi_decode_returns_validate(
7268                data: &[u8],
7269            ) -> alloy_sol_types::Result<Self::Return> {
7270                <Self::ReturnTuple<
7271                    '_,
7272                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7273                    .map(Into::into)
7274            }
7275        }
7276    };
7277    #[derive(serde::Serialize, serde::Deserialize)]
7278    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7279    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
7280```solidity
7281function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
7282```*/
7283    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7284    #[derive(Clone)]
7285    pub struct finalizedStateCall;
7286    #[derive(serde::Serialize, serde::Deserialize)]
7287    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7288    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
7289    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7290    #[derive(Clone)]
7291    pub struct finalizedStateReturn {
7292        #[allow(missing_docs)]
7293        pub viewNum: u64,
7294        #[allow(missing_docs)]
7295        pub blockHeight: u64,
7296        #[allow(missing_docs)]
7297        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7298    }
7299    #[allow(
7300        non_camel_case_types,
7301        non_snake_case,
7302        clippy::pub_underscore_fields,
7303        clippy::style
7304    )]
7305    const _: () = {
7306        use alloy::sol_types as alloy_sol_types;
7307        {
7308            #[doc(hidden)]
7309            #[allow(dead_code)]
7310            type UnderlyingSolTuple<'a> = ();
7311            #[doc(hidden)]
7312            type UnderlyingRustTuple<'a> = ();
7313            #[cfg(test)]
7314            #[allow(dead_code, unreachable_patterns)]
7315            fn _type_assertion(
7316                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7317            ) {
7318                match _t {
7319                    alloy_sol_types::private::AssertTypeEq::<
7320                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7321                    >(_) => {}
7322                }
7323            }
7324            #[automatically_derived]
7325            #[doc(hidden)]
7326            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
7327                fn from(value: finalizedStateCall) -> Self {
7328                    ()
7329                }
7330            }
7331            #[automatically_derived]
7332            #[doc(hidden)]
7333            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
7334                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7335                    Self
7336                }
7337            }
7338        }
7339        {
7340            #[doc(hidden)]
7341            #[allow(dead_code)]
7342            type UnderlyingSolTuple<'a> = (
7343                alloy::sol_types::sol_data::Uint<64>,
7344                alloy::sol_types::sol_data::Uint<64>,
7345                BN254::ScalarField,
7346            );
7347            #[doc(hidden)]
7348            type UnderlyingRustTuple<'a> = (
7349                u64,
7350                u64,
7351                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7352            );
7353            #[cfg(test)]
7354            #[allow(dead_code, unreachable_patterns)]
7355            fn _type_assertion(
7356                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7357            ) {
7358                match _t {
7359                    alloy_sol_types::private::AssertTypeEq::<
7360                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7361                    >(_) => {}
7362                }
7363            }
7364            #[automatically_derived]
7365            #[doc(hidden)]
7366            impl ::core::convert::From<finalizedStateReturn>
7367            for UnderlyingRustTuple<'_> {
7368                fn from(value: finalizedStateReturn) -> Self {
7369                    (value.viewNum, value.blockHeight, value.blockCommRoot)
7370                }
7371            }
7372            #[automatically_derived]
7373            #[doc(hidden)]
7374            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7375            for finalizedStateReturn {
7376                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7377                    Self {
7378                        viewNum: tuple.0,
7379                        blockHeight: tuple.1,
7380                        blockCommRoot: tuple.2,
7381                    }
7382                }
7383            }
7384        }
7385        impl finalizedStateReturn {
7386            fn _tokenize(
7387                &self,
7388            ) -> <finalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7389                (
7390                    <alloy::sol_types::sol_data::Uint<
7391                        64,
7392                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
7393                    <alloy::sol_types::sol_data::Uint<
7394                        64,
7395                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
7396                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7397                        &self.blockCommRoot,
7398                    ),
7399                )
7400            }
7401        }
7402        #[automatically_derived]
7403        impl alloy_sol_types::SolCall for finalizedStateCall {
7404            type Parameters<'a> = ();
7405            type Token<'a> = <Self::Parameters<
7406                'a,
7407            > as alloy_sol_types::SolType>::Token<'a>;
7408            type Return = finalizedStateReturn;
7409            type ReturnTuple<'a> = (
7410                alloy::sol_types::sol_data::Uint<64>,
7411                alloy::sol_types::sol_data::Uint<64>,
7412                BN254::ScalarField,
7413            );
7414            type ReturnToken<'a> = <Self::ReturnTuple<
7415                'a,
7416            > as alloy_sol_types::SolType>::Token<'a>;
7417            const SIGNATURE: &'static str = "finalizedState()";
7418            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
7419            #[inline]
7420            fn new<'a>(
7421                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7422            ) -> Self {
7423                tuple.into()
7424            }
7425            #[inline]
7426            fn tokenize(&self) -> Self::Token<'_> {
7427                ()
7428            }
7429            #[inline]
7430            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7431                finalizedStateReturn::_tokenize(ret)
7432            }
7433            #[inline]
7434            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7435                <Self::ReturnTuple<
7436                    '_,
7437                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7438                    .map(Into::into)
7439            }
7440            #[inline]
7441            fn abi_decode_returns_validate(
7442                data: &[u8],
7443            ) -> alloy_sol_types::Result<Self::Return> {
7444                <Self::ReturnTuple<
7445                    '_,
7446                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7447                    .map(Into::into)
7448            }
7449        }
7450    };
7451    #[derive(serde::Serialize, serde::Deserialize)]
7452    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7453    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
7454```solidity
7455function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
7456```*/
7457    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7458    #[derive(Clone)]
7459    pub struct genesisStakeTableStateCall;
7460    #[derive(serde::Serialize, serde::Deserialize)]
7461    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7462    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
7463    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7464    #[derive(Clone)]
7465    pub struct genesisStakeTableStateReturn {
7466        #[allow(missing_docs)]
7467        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
7468        #[allow(missing_docs)]
7469        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7470        #[allow(missing_docs)]
7471        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7472        #[allow(missing_docs)]
7473        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7474    }
7475    #[allow(
7476        non_camel_case_types,
7477        non_snake_case,
7478        clippy::pub_underscore_fields,
7479        clippy::style
7480    )]
7481    const _: () = {
7482        use alloy::sol_types as alloy_sol_types;
7483        {
7484            #[doc(hidden)]
7485            #[allow(dead_code)]
7486            type UnderlyingSolTuple<'a> = ();
7487            #[doc(hidden)]
7488            type UnderlyingRustTuple<'a> = ();
7489            #[cfg(test)]
7490            #[allow(dead_code, unreachable_patterns)]
7491            fn _type_assertion(
7492                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7493            ) {
7494                match _t {
7495                    alloy_sol_types::private::AssertTypeEq::<
7496                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7497                    >(_) => {}
7498                }
7499            }
7500            #[automatically_derived]
7501            #[doc(hidden)]
7502            impl ::core::convert::From<genesisStakeTableStateCall>
7503            for UnderlyingRustTuple<'_> {
7504                fn from(value: genesisStakeTableStateCall) -> Self {
7505                    ()
7506                }
7507            }
7508            #[automatically_derived]
7509            #[doc(hidden)]
7510            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7511            for genesisStakeTableStateCall {
7512                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7513                    Self
7514                }
7515            }
7516        }
7517        {
7518            #[doc(hidden)]
7519            #[allow(dead_code)]
7520            type UnderlyingSolTuple<'a> = (
7521                alloy::sol_types::sol_data::Uint<256>,
7522                BN254::ScalarField,
7523                BN254::ScalarField,
7524                BN254::ScalarField,
7525            );
7526            #[doc(hidden)]
7527            type UnderlyingRustTuple<'a> = (
7528                alloy::sol_types::private::primitives::aliases::U256,
7529                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7530                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7531                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7532            );
7533            #[cfg(test)]
7534            #[allow(dead_code, unreachable_patterns)]
7535            fn _type_assertion(
7536                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7537            ) {
7538                match _t {
7539                    alloy_sol_types::private::AssertTypeEq::<
7540                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7541                    >(_) => {}
7542                }
7543            }
7544            #[automatically_derived]
7545            #[doc(hidden)]
7546            impl ::core::convert::From<genesisStakeTableStateReturn>
7547            for UnderlyingRustTuple<'_> {
7548                fn from(value: genesisStakeTableStateReturn) -> Self {
7549                    (
7550                        value.threshold,
7551                        value.blsKeyComm,
7552                        value.schnorrKeyComm,
7553                        value.amountComm,
7554                    )
7555                }
7556            }
7557            #[automatically_derived]
7558            #[doc(hidden)]
7559            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7560            for genesisStakeTableStateReturn {
7561                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7562                    Self {
7563                        threshold: tuple.0,
7564                        blsKeyComm: tuple.1,
7565                        schnorrKeyComm: tuple.2,
7566                        amountComm: tuple.3,
7567                    }
7568                }
7569            }
7570        }
7571        impl genesisStakeTableStateReturn {
7572            fn _tokenize(
7573                &self,
7574            ) -> <genesisStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
7575                '_,
7576            > {
7577                (
7578                    <alloy::sol_types::sol_data::Uint<
7579                        256,
7580                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
7581                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7582                        &self.blsKeyComm,
7583                    ),
7584                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7585                        &self.schnorrKeyComm,
7586                    ),
7587                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7588                        &self.amountComm,
7589                    ),
7590                )
7591            }
7592        }
7593        #[automatically_derived]
7594        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
7595            type Parameters<'a> = ();
7596            type Token<'a> = <Self::Parameters<
7597                'a,
7598            > as alloy_sol_types::SolType>::Token<'a>;
7599            type Return = genesisStakeTableStateReturn;
7600            type ReturnTuple<'a> = (
7601                alloy::sol_types::sol_data::Uint<256>,
7602                BN254::ScalarField,
7603                BN254::ScalarField,
7604                BN254::ScalarField,
7605            );
7606            type ReturnToken<'a> = <Self::ReturnTuple<
7607                'a,
7608            > as alloy_sol_types::SolType>::Token<'a>;
7609            const SIGNATURE: &'static str = "genesisStakeTableState()";
7610            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
7611            #[inline]
7612            fn new<'a>(
7613                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7614            ) -> Self {
7615                tuple.into()
7616            }
7617            #[inline]
7618            fn tokenize(&self) -> Self::Token<'_> {
7619                ()
7620            }
7621            #[inline]
7622            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7623                genesisStakeTableStateReturn::_tokenize(ret)
7624            }
7625            #[inline]
7626            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7627                <Self::ReturnTuple<
7628                    '_,
7629                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7630                    .map(Into::into)
7631            }
7632            #[inline]
7633            fn abi_decode_returns_validate(
7634                data: &[u8],
7635            ) -> alloy_sol_types::Result<Self::Return> {
7636                <Self::ReturnTuple<
7637                    '_,
7638                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7639                    .map(Into::into)
7640            }
7641        }
7642    };
7643    #[derive(serde::Serialize, serde::Deserialize)]
7644    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7645    /**Function with signature `genesisState()` and selector `0xd24d933d`.
7646```solidity
7647function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
7648```*/
7649    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7650    #[derive(Clone)]
7651    pub struct genesisStateCall;
7652    #[derive(serde::Serialize, serde::Deserialize)]
7653    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7654    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
7655    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7656    #[derive(Clone)]
7657    pub struct genesisStateReturn {
7658        #[allow(missing_docs)]
7659        pub viewNum: u64,
7660        #[allow(missing_docs)]
7661        pub blockHeight: u64,
7662        #[allow(missing_docs)]
7663        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7664    }
7665    #[allow(
7666        non_camel_case_types,
7667        non_snake_case,
7668        clippy::pub_underscore_fields,
7669        clippy::style
7670    )]
7671    const _: () = {
7672        use alloy::sol_types as alloy_sol_types;
7673        {
7674            #[doc(hidden)]
7675            #[allow(dead_code)]
7676            type UnderlyingSolTuple<'a> = ();
7677            #[doc(hidden)]
7678            type UnderlyingRustTuple<'a> = ();
7679            #[cfg(test)]
7680            #[allow(dead_code, unreachable_patterns)]
7681            fn _type_assertion(
7682                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7683            ) {
7684                match _t {
7685                    alloy_sol_types::private::AssertTypeEq::<
7686                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7687                    >(_) => {}
7688                }
7689            }
7690            #[automatically_derived]
7691            #[doc(hidden)]
7692            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
7693                fn from(value: genesisStateCall) -> Self {
7694                    ()
7695                }
7696            }
7697            #[automatically_derived]
7698            #[doc(hidden)]
7699            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
7700                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7701                    Self
7702                }
7703            }
7704        }
7705        {
7706            #[doc(hidden)]
7707            #[allow(dead_code)]
7708            type UnderlyingSolTuple<'a> = (
7709                alloy::sol_types::sol_data::Uint<64>,
7710                alloy::sol_types::sol_data::Uint<64>,
7711                BN254::ScalarField,
7712            );
7713            #[doc(hidden)]
7714            type UnderlyingRustTuple<'a> = (
7715                u64,
7716                u64,
7717                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7718            );
7719            #[cfg(test)]
7720            #[allow(dead_code, unreachable_patterns)]
7721            fn _type_assertion(
7722                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7723            ) {
7724                match _t {
7725                    alloy_sol_types::private::AssertTypeEq::<
7726                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7727                    >(_) => {}
7728                }
7729            }
7730            #[automatically_derived]
7731            #[doc(hidden)]
7732            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
7733                fn from(value: genesisStateReturn) -> Self {
7734                    (value.viewNum, value.blockHeight, value.blockCommRoot)
7735                }
7736            }
7737            #[automatically_derived]
7738            #[doc(hidden)]
7739            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
7740                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7741                    Self {
7742                        viewNum: tuple.0,
7743                        blockHeight: tuple.1,
7744                        blockCommRoot: tuple.2,
7745                    }
7746                }
7747            }
7748        }
7749        impl genesisStateReturn {
7750            fn _tokenize(
7751                &self,
7752            ) -> <genesisStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7753                (
7754                    <alloy::sol_types::sol_data::Uint<
7755                        64,
7756                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
7757                    <alloy::sol_types::sol_data::Uint<
7758                        64,
7759                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
7760                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7761                        &self.blockCommRoot,
7762                    ),
7763                )
7764            }
7765        }
7766        #[automatically_derived]
7767        impl alloy_sol_types::SolCall for genesisStateCall {
7768            type Parameters<'a> = ();
7769            type Token<'a> = <Self::Parameters<
7770                'a,
7771            > as alloy_sol_types::SolType>::Token<'a>;
7772            type Return = genesisStateReturn;
7773            type ReturnTuple<'a> = (
7774                alloy::sol_types::sol_data::Uint<64>,
7775                alloy::sol_types::sol_data::Uint<64>,
7776                BN254::ScalarField,
7777            );
7778            type ReturnToken<'a> = <Self::ReturnTuple<
7779                'a,
7780            > as alloy_sol_types::SolType>::Token<'a>;
7781            const SIGNATURE: &'static str = "genesisState()";
7782            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
7783            #[inline]
7784            fn new<'a>(
7785                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7786            ) -> Self {
7787                tuple.into()
7788            }
7789            #[inline]
7790            fn tokenize(&self) -> Self::Token<'_> {
7791                ()
7792            }
7793            #[inline]
7794            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7795                genesisStateReturn::_tokenize(ret)
7796            }
7797            #[inline]
7798            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7799                <Self::ReturnTuple<
7800                    '_,
7801                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7802                    .map(Into::into)
7803            }
7804            #[inline]
7805            fn abi_decode_returns_validate(
7806                data: &[u8],
7807            ) -> alloy_sol_types::Result<Self::Return> {
7808                <Self::ReturnTuple<
7809                    '_,
7810                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7811                    .map(Into::into)
7812            }
7813        }
7814    };
7815    #[derive(serde::Serialize, serde::Deserialize)]
7816    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7817    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
7818```solidity
7819function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
7820```*/
7821    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7822    #[derive(Clone)]
7823    pub struct getHotShotCommitmentCall {
7824        #[allow(missing_docs)]
7825        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
7826    }
7827    #[derive(serde::Serialize, serde::Deserialize)]
7828    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7829    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
7830    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7831    #[derive(Clone)]
7832    pub struct getHotShotCommitmentReturn {
7833        #[allow(missing_docs)]
7834        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7835        #[allow(missing_docs)]
7836        pub hotshotBlockHeight: u64,
7837    }
7838    #[allow(
7839        non_camel_case_types,
7840        non_snake_case,
7841        clippy::pub_underscore_fields,
7842        clippy::style
7843    )]
7844    const _: () = {
7845        use alloy::sol_types as alloy_sol_types;
7846        {
7847            #[doc(hidden)]
7848            #[allow(dead_code)]
7849            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7850            #[doc(hidden)]
7851            type UnderlyingRustTuple<'a> = (
7852                alloy::sol_types::private::primitives::aliases::U256,
7853            );
7854            #[cfg(test)]
7855            #[allow(dead_code, unreachable_patterns)]
7856            fn _type_assertion(
7857                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7858            ) {
7859                match _t {
7860                    alloy_sol_types::private::AssertTypeEq::<
7861                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7862                    >(_) => {}
7863                }
7864            }
7865            #[automatically_derived]
7866            #[doc(hidden)]
7867            impl ::core::convert::From<getHotShotCommitmentCall>
7868            for UnderlyingRustTuple<'_> {
7869                fn from(value: getHotShotCommitmentCall) -> Self {
7870                    (value.hotShotBlockHeight,)
7871                }
7872            }
7873            #[automatically_derived]
7874            #[doc(hidden)]
7875            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7876            for getHotShotCommitmentCall {
7877                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7878                    Self {
7879                        hotShotBlockHeight: tuple.0,
7880                    }
7881                }
7882            }
7883        }
7884        {
7885            #[doc(hidden)]
7886            #[allow(dead_code)]
7887            type UnderlyingSolTuple<'a> = (
7888                BN254::ScalarField,
7889                alloy::sol_types::sol_data::Uint<64>,
7890            );
7891            #[doc(hidden)]
7892            type UnderlyingRustTuple<'a> = (
7893                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7894                u64,
7895            );
7896            #[cfg(test)]
7897            #[allow(dead_code, unreachable_patterns)]
7898            fn _type_assertion(
7899                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7900            ) {
7901                match _t {
7902                    alloy_sol_types::private::AssertTypeEq::<
7903                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7904                    >(_) => {}
7905                }
7906            }
7907            #[automatically_derived]
7908            #[doc(hidden)]
7909            impl ::core::convert::From<getHotShotCommitmentReturn>
7910            for UnderlyingRustTuple<'_> {
7911                fn from(value: getHotShotCommitmentReturn) -> Self {
7912                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
7913                }
7914            }
7915            #[automatically_derived]
7916            #[doc(hidden)]
7917            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7918            for getHotShotCommitmentReturn {
7919                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7920                    Self {
7921                        hotShotBlockCommRoot: tuple.0,
7922                        hotshotBlockHeight: tuple.1,
7923                    }
7924                }
7925            }
7926        }
7927        impl getHotShotCommitmentReturn {
7928            fn _tokenize(
7929                &self,
7930            ) -> <getHotShotCommitmentCall as alloy_sol_types::SolCall>::ReturnToken<
7931                '_,
7932            > {
7933                (
7934                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7935                        &self.hotShotBlockCommRoot,
7936                    ),
7937                    <alloy::sol_types::sol_data::Uint<
7938                        64,
7939                    > as alloy_sol_types::SolType>::tokenize(&self.hotshotBlockHeight),
7940                )
7941            }
7942        }
7943        #[automatically_derived]
7944        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
7945            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7946            type Token<'a> = <Self::Parameters<
7947                'a,
7948            > as alloy_sol_types::SolType>::Token<'a>;
7949            type Return = getHotShotCommitmentReturn;
7950            type ReturnTuple<'a> = (
7951                BN254::ScalarField,
7952                alloy::sol_types::sol_data::Uint<64>,
7953            );
7954            type ReturnToken<'a> = <Self::ReturnTuple<
7955                'a,
7956            > as alloy_sol_types::SolType>::Token<'a>;
7957            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
7958            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
7959            #[inline]
7960            fn new<'a>(
7961                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7962            ) -> Self {
7963                tuple.into()
7964            }
7965            #[inline]
7966            fn tokenize(&self) -> Self::Token<'_> {
7967                (
7968                    <alloy::sol_types::sol_data::Uint<
7969                        256,
7970                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
7971                )
7972            }
7973            #[inline]
7974            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7975                getHotShotCommitmentReturn::_tokenize(ret)
7976            }
7977            #[inline]
7978            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7979                <Self::ReturnTuple<
7980                    '_,
7981                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7982                    .map(Into::into)
7983            }
7984            #[inline]
7985            fn abi_decode_returns_validate(
7986                data: &[u8],
7987            ) -> alloy_sol_types::Result<Self::Return> {
7988                <Self::ReturnTuple<
7989                    '_,
7990                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7991                    .map(Into::into)
7992            }
7993        }
7994    };
7995    #[derive(serde::Serialize, serde::Deserialize)]
7996    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7997    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
7998```solidity
7999function getStateHistoryCount() external view returns (uint256);
8000```*/
8001    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8002    #[derive(Clone)]
8003    pub struct getStateHistoryCountCall;
8004    #[derive(serde::Serialize, serde::Deserialize)]
8005    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8006    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
8007    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8008    #[derive(Clone)]
8009    pub struct getStateHistoryCountReturn {
8010        #[allow(missing_docs)]
8011        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8012    }
8013    #[allow(
8014        non_camel_case_types,
8015        non_snake_case,
8016        clippy::pub_underscore_fields,
8017        clippy::style
8018    )]
8019    const _: () = {
8020        use alloy::sol_types as alloy_sol_types;
8021        {
8022            #[doc(hidden)]
8023            #[allow(dead_code)]
8024            type UnderlyingSolTuple<'a> = ();
8025            #[doc(hidden)]
8026            type UnderlyingRustTuple<'a> = ();
8027            #[cfg(test)]
8028            #[allow(dead_code, unreachable_patterns)]
8029            fn _type_assertion(
8030                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8031            ) {
8032                match _t {
8033                    alloy_sol_types::private::AssertTypeEq::<
8034                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8035                    >(_) => {}
8036                }
8037            }
8038            #[automatically_derived]
8039            #[doc(hidden)]
8040            impl ::core::convert::From<getStateHistoryCountCall>
8041            for UnderlyingRustTuple<'_> {
8042                fn from(value: getStateHistoryCountCall) -> Self {
8043                    ()
8044                }
8045            }
8046            #[automatically_derived]
8047            #[doc(hidden)]
8048            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8049            for getStateHistoryCountCall {
8050                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8051                    Self
8052                }
8053            }
8054        }
8055        {
8056            #[doc(hidden)]
8057            #[allow(dead_code)]
8058            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8059            #[doc(hidden)]
8060            type UnderlyingRustTuple<'a> = (
8061                alloy::sol_types::private::primitives::aliases::U256,
8062            );
8063            #[cfg(test)]
8064            #[allow(dead_code, unreachable_patterns)]
8065            fn _type_assertion(
8066                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8067            ) {
8068                match _t {
8069                    alloy_sol_types::private::AssertTypeEq::<
8070                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8071                    >(_) => {}
8072                }
8073            }
8074            #[automatically_derived]
8075            #[doc(hidden)]
8076            impl ::core::convert::From<getStateHistoryCountReturn>
8077            for UnderlyingRustTuple<'_> {
8078                fn from(value: getStateHistoryCountReturn) -> Self {
8079                    (value._0,)
8080                }
8081            }
8082            #[automatically_derived]
8083            #[doc(hidden)]
8084            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8085            for getStateHistoryCountReturn {
8086                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8087                    Self { _0: tuple.0 }
8088                }
8089            }
8090        }
8091        #[automatically_derived]
8092        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
8093            type Parameters<'a> = ();
8094            type Token<'a> = <Self::Parameters<
8095                'a,
8096            > as alloy_sol_types::SolType>::Token<'a>;
8097            type Return = alloy::sol_types::private::primitives::aliases::U256;
8098            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8099            type ReturnToken<'a> = <Self::ReturnTuple<
8100                'a,
8101            > as alloy_sol_types::SolType>::Token<'a>;
8102            const SIGNATURE: &'static str = "getStateHistoryCount()";
8103            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
8104            #[inline]
8105            fn new<'a>(
8106                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8107            ) -> Self {
8108                tuple.into()
8109            }
8110            #[inline]
8111            fn tokenize(&self) -> Self::Token<'_> {
8112                ()
8113            }
8114            #[inline]
8115            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8116                (
8117                    <alloy::sol_types::sol_data::Uint<
8118                        256,
8119                    > as alloy_sol_types::SolType>::tokenize(ret),
8120                )
8121            }
8122            #[inline]
8123            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8124                <Self::ReturnTuple<
8125                    '_,
8126                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8127                    .map(|r| {
8128                        let r: getStateHistoryCountReturn = r.into();
8129                        r._0
8130                    })
8131            }
8132            #[inline]
8133            fn abi_decode_returns_validate(
8134                data: &[u8],
8135            ) -> alloy_sol_types::Result<Self::Return> {
8136                <Self::ReturnTuple<
8137                    '_,
8138                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8139                    .map(|r| {
8140                        let r: getStateHistoryCountReturn = r.into();
8141                        r._0
8142                    })
8143            }
8144        }
8145    };
8146    #[derive(serde::Serialize, serde::Deserialize)]
8147    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8148    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
8149```solidity
8150function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
8151```*/
8152    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8153    #[derive(Clone)]
8154    pub struct getVersionCall;
8155    #[derive(serde::Serialize, serde::Deserialize)]
8156    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8157    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
8158    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8159    #[derive(Clone)]
8160    pub struct getVersionReturn {
8161        #[allow(missing_docs)]
8162        pub majorVersion: u8,
8163        #[allow(missing_docs)]
8164        pub minorVersion: u8,
8165        #[allow(missing_docs)]
8166        pub patchVersion: u8,
8167    }
8168    #[allow(
8169        non_camel_case_types,
8170        non_snake_case,
8171        clippy::pub_underscore_fields,
8172        clippy::style
8173    )]
8174    const _: () = {
8175        use alloy::sol_types as alloy_sol_types;
8176        {
8177            #[doc(hidden)]
8178            #[allow(dead_code)]
8179            type UnderlyingSolTuple<'a> = ();
8180            #[doc(hidden)]
8181            type UnderlyingRustTuple<'a> = ();
8182            #[cfg(test)]
8183            #[allow(dead_code, unreachable_patterns)]
8184            fn _type_assertion(
8185                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8186            ) {
8187                match _t {
8188                    alloy_sol_types::private::AssertTypeEq::<
8189                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8190                    >(_) => {}
8191                }
8192            }
8193            #[automatically_derived]
8194            #[doc(hidden)]
8195            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
8196                fn from(value: getVersionCall) -> Self {
8197                    ()
8198                }
8199            }
8200            #[automatically_derived]
8201            #[doc(hidden)]
8202            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
8203                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8204                    Self
8205                }
8206            }
8207        }
8208        {
8209            #[doc(hidden)]
8210            #[allow(dead_code)]
8211            type UnderlyingSolTuple<'a> = (
8212                alloy::sol_types::sol_data::Uint<8>,
8213                alloy::sol_types::sol_data::Uint<8>,
8214                alloy::sol_types::sol_data::Uint<8>,
8215            );
8216            #[doc(hidden)]
8217            type UnderlyingRustTuple<'a> = (u8, u8, u8);
8218            #[cfg(test)]
8219            #[allow(dead_code, unreachable_patterns)]
8220            fn _type_assertion(
8221                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8222            ) {
8223                match _t {
8224                    alloy_sol_types::private::AssertTypeEq::<
8225                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8226                    >(_) => {}
8227                }
8228            }
8229            #[automatically_derived]
8230            #[doc(hidden)]
8231            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
8232                fn from(value: getVersionReturn) -> Self {
8233                    (value.majorVersion, value.minorVersion, value.patchVersion)
8234                }
8235            }
8236            #[automatically_derived]
8237            #[doc(hidden)]
8238            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
8239                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8240                    Self {
8241                        majorVersion: tuple.0,
8242                        minorVersion: tuple.1,
8243                        patchVersion: tuple.2,
8244                    }
8245                }
8246            }
8247        }
8248        impl getVersionReturn {
8249            fn _tokenize(
8250                &self,
8251            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8252                (
8253                    <alloy::sol_types::sol_data::Uint<
8254                        8,
8255                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
8256                    <alloy::sol_types::sol_data::Uint<
8257                        8,
8258                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
8259                    <alloy::sol_types::sol_data::Uint<
8260                        8,
8261                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
8262                )
8263            }
8264        }
8265        #[automatically_derived]
8266        impl alloy_sol_types::SolCall for getVersionCall {
8267            type Parameters<'a> = ();
8268            type Token<'a> = <Self::Parameters<
8269                'a,
8270            > as alloy_sol_types::SolType>::Token<'a>;
8271            type Return = getVersionReturn;
8272            type ReturnTuple<'a> = (
8273                alloy::sol_types::sol_data::Uint<8>,
8274                alloy::sol_types::sol_data::Uint<8>,
8275                alloy::sol_types::sol_data::Uint<8>,
8276            );
8277            type ReturnToken<'a> = <Self::ReturnTuple<
8278                'a,
8279            > as alloy_sol_types::SolType>::Token<'a>;
8280            const SIGNATURE: &'static str = "getVersion()";
8281            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
8282            #[inline]
8283            fn new<'a>(
8284                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8285            ) -> Self {
8286                tuple.into()
8287            }
8288            #[inline]
8289            fn tokenize(&self) -> Self::Token<'_> {
8290                ()
8291            }
8292            #[inline]
8293            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8294                getVersionReturn::_tokenize(ret)
8295            }
8296            #[inline]
8297            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8298                <Self::ReturnTuple<
8299                    '_,
8300                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8301                    .map(Into::into)
8302            }
8303            #[inline]
8304            fn abi_decode_returns_validate(
8305                data: &[u8],
8306            ) -> alloy_sol_types::Result<Self::Return> {
8307                <Self::ReturnTuple<
8308                    '_,
8309                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8310                    .map(Into::into)
8311            }
8312        }
8313    };
8314    #[derive(serde::Serialize, serde::Deserialize)]
8315    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8316    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
8317```solidity
8318function initialize(LightClientState memory _genesis, StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
8319```*/
8320    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8321    #[derive(Clone)]
8322    pub struct initializeCall {
8323        #[allow(missing_docs)]
8324        pub _genesis: <LightClientState as alloy::sol_types::SolType>::RustType,
8325        #[allow(missing_docs)]
8326        pub _genesisStakeTableState: <StakeTableState as alloy::sol_types::SolType>::RustType,
8327        #[allow(missing_docs)]
8328        pub _stateHistoryRetentionPeriod: u32,
8329        #[allow(missing_docs)]
8330        pub owner: alloy::sol_types::private::Address,
8331    }
8332    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
8333    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8334    #[derive(Clone)]
8335    pub struct initializeReturn {}
8336    #[allow(
8337        non_camel_case_types,
8338        non_snake_case,
8339        clippy::pub_underscore_fields,
8340        clippy::style
8341    )]
8342    const _: () = {
8343        use alloy::sol_types as alloy_sol_types;
8344        {
8345            #[doc(hidden)]
8346            #[allow(dead_code)]
8347            type UnderlyingSolTuple<'a> = (
8348                LightClientState,
8349                StakeTableState,
8350                alloy::sol_types::sol_data::Uint<32>,
8351                alloy::sol_types::sol_data::Address,
8352            );
8353            #[doc(hidden)]
8354            type UnderlyingRustTuple<'a> = (
8355                <LightClientState as alloy::sol_types::SolType>::RustType,
8356                <StakeTableState as alloy::sol_types::SolType>::RustType,
8357                u32,
8358                alloy::sol_types::private::Address,
8359            );
8360            #[cfg(test)]
8361            #[allow(dead_code, unreachable_patterns)]
8362            fn _type_assertion(
8363                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8364            ) {
8365                match _t {
8366                    alloy_sol_types::private::AssertTypeEq::<
8367                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8368                    >(_) => {}
8369                }
8370            }
8371            #[automatically_derived]
8372            #[doc(hidden)]
8373            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
8374                fn from(value: initializeCall) -> Self {
8375                    (
8376                        value._genesis,
8377                        value._genesisStakeTableState,
8378                        value._stateHistoryRetentionPeriod,
8379                        value.owner,
8380                    )
8381                }
8382            }
8383            #[automatically_derived]
8384            #[doc(hidden)]
8385            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
8386                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8387                    Self {
8388                        _genesis: tuple.0,
8389                        _genesisStakeTableState: tuple.1,
8390                        _stateHistoryRetentionPeriod: tuple.2,
8391                        owner: tuple.3,
8392                    }
8393                }
8394            }
8395        }
8396        {
8397            #[doc(hidden)]
8398            #[allow(dead_code)]
8399            type UnderlyingSolTuple<'a> = ();
8400            #[doc(hidden)]
8401            type UnderlyingRustTuple<'a> = ();
8402            #[cfg(test)]
8403            #[allow(dead_code, unreachable_patterns)]
8404            fn _type_assertion(
8405                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8406            ) {
8407                match _t {
8408                    alloy_sol_types::private::AssertTypeEq::<
8409                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8410                    >(_) => {}
8411                }
8412            }
8413            #[automatically_derived]
8414            #[doc(hidden)]
8415            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
8416                fn from(value: initializeReturn) -> Self {
8417                    ()
8418                }
8419            }
8420            #[automatically_derived]
8421            #[doc(hidden)]
8422            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
8423                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8424                    Self {}
8425                }
8426            }
8427        }
8428        impl initializeReturn {
8429            fn _tokenize(
8430                &self,
8431            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8432                ()
8433            }
8434        }
8435        #[automatically_derived]
8436        impl alloy_sol_types::SolCall for initializeCall {
8437            type Parameters<'a> = (
8438                LightClientState,
8439                StakeTableState,
8440                alloy::sol_types::sol_data::Uint<32>,
8441                alloy::sol_types::sol_data::Address,
8442            );
8443            type Token<'a> = <Self::Parameters<
8444                'a,
8445            > as alloy_sol_types::SolType>::Token<'a>;
8446            type Return = initializeReturn;
8447            type ReturnTuple<'a> = ();
8448            type ReturnToken<'a> = <Self::ReturnTuple<
8449                'a,
8450            > as alloy_sol_types::SolType>::Token<'a>;
8451            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
8452            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
8453            #[inline]
8454            fn new<'a>(
8455                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8456            ) -> Self {
8457                tuple.into()
8458            }
8459            #[inline]
8460            fn tokenize(&self) -> Self::Token<'_> {
8461                (
8462                    <LightClientState as alloy_sol_types::SolType>::tokenize(
8463                        &self._genesis,
8464                    ),
8465                    <StakeTableState as alloy_sol_types::SolType>::tokenize(
8466                        &self._genesisStakeTableState,
8467                    ),
8468                    <alloy::sol_types::sol_data::Uint<
8469                        32,
8470                    > as alloy_sol_types::SolType>::tokenize(
8471                        &self._stateHistoryRetentionPeriod,
8472                    ),
8473                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8474                        &self.owner,
8475                    ),
8476                )
8477            }
8478            #[inline]
8479            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8480                initializeReturn::_tokenize(ret)
8481            }
8482            #[inline]
8483            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8484                <Self::ReturnTuple<
8485                    '_,
8486                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8487                    .map(Into::into)
8488            }
8489            #[inline]
8490            fn abi_decode_returns_validate(
8491                data: &[u8],
8492            ) -> alloy_sol_types::Result<Self::Return> {
8493                <Self::ReturnTuple<
8494                    '_,
8495                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8496                    .map(Into::into)
8497            }
8498        }
8499    };
8500    #[derive(serde::Serialize, serde::Deserialize)]
8501    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8502    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
8503```solidity
8504function isPermissionedProverEnabled() external view returns (bool);
8505```*/
8506    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8507    #[derive(Clone)]
8508    pub struct isPermissionedProverEnabledCall;
8509    #[derive(serde::Serialize, serde::Deserialize)]
8510    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8511    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
8512    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8513    #[derive(Clone)]
8514    pub struct isPermissionedProverEnabledReturn {
8515        #[allow(missing_docs)]
8516        pub _0: bool,
8517    }
8518    #[allow(
8519        non_camel_case_types,
8520        non_snake_case,
8521        clippy::pub_underscore_fields,
8522        clippy::style
8523    )]
8524    const _: () = {
8525        use alloy::sol_types as alloy_sol_types;
8526        {
8527            #[doc(hidden)]
8528            #[allow(dead_code)]
8529            type UnderlyingSolTuple<'a> = ();
8530            #[doc(hidden)]
8531            type UnderlyingRustTuple<'a> = ();
8532            #[cfg(test)]
8533            #[allow(dead_code, unreachable_patterns)]
8534            fn _type_assertion(
8535                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8536            ) {
8537                match _t {
8538                    alloy_sol_types::private::AssertTypeEq::<
8539                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8540                    >(_) => {}
8541                }
8542            }
8543            #[automatically_derived]
8544            #[doc(hidden)]
8545            impl ::core::convert::From<isPermissionedProverEnabledCall>
8546            for UnderlyingRustTuple<'_> {
8547                fn from(value: isPermissionedProverEnabledCall) -> Self {
8548                    ()
8549                }
8550            }
8551            #[automatically_derived]
8552            #[doc(hidden)]
8553            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8554            for isPermissionedProverEnabledCall {
8555                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8556                    Self
8557                }
8558            }
8559        }
8560        {
8561            #[doc(hidden)]
8562            #[allow(dead_code)]
8563            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8564            #[doc(hidden)]
8565            type UnderlyingRustTuple<'a> = (bool,);
8566            #[cfg(test)]
8567            #[allow(dead_code, unreachable_patterns)]
8568            fn _type_assertion(
8569                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8570            ) {
8571                match _t {
8572                    alloy_sol_types::private::AssertTypeEq::<
8573                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8574                    >(_) => {}
8575                }
8576            }
8577            #[automatically_derived]
8578            #[doc(hidden)]
8579            impl ::core::convert::From<isPermissionedProverEnabledReturn>
8580            for UnderlyingRustTuple<'_> {
8581                fn from(value: isPermissionedProverEnabledReturn) -> Self {
8582                    (value._0,)
8583                }
8584            }
8585            #[automatically_derived]
8586            #[doc(hidden)]
8587            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8588            for isPermissionedProverEnabledReturn {
8589                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8590                    Self { _0: tuple.0 }
8591                }
8592            }
8593        }
8594        #[automatically_derived]
8595        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
8596            type Parameters<'a> = ();
8597            type Token<'a> = <Self::Parameters<
8598                'a,
8599            > as alloy_sol_types::SolType>::Token<'a>;
8600            type Return = bool;
8601            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8602            type ReturnToken<'a> = <Self::ReturnTuple<
8603                'a,
8604            > as alloy_sol_types::SolType>::Token<'a>;
8605            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
8606            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
8607            #[inline]
8608            fn new<'a>(
8609                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8610            ) -> Self {
8611                tuple.into()
8612            }
8613            #[inline]
8614            fn tokenize(&self) -> Self::Token<'_> {
8615                ()
8616            }
8617            #[inline]
8618            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8619                (
8620                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
8621                        ret,
8622                    ),
8623                )
8624            }
8625            #[inline]
8626            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8627                <Self::ReturnTuple<
8628                    '_,
8629                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8630                    .map(|r| {
8631                        let r: isPermissionedProverEnabledReturn = r.into();
8632                        r._0
8633                    })
8634            }
8635            #[inline]
8636            fn abi_decode_returns_validate(
8637                data: &[u8],
8638            ) -> alloy_sol_types::Result<Self::Return> {
8639                <Self::ReturnTuple<
8640                    '_,
8641                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8642                    .map(|r| {
8643                        let r: isPermissionedProverEnabledReturn = r.into();
8644                        r._0
8645                    })
8646            }
8647        }
8648    };
8649    #[derive(serde::Serialize, serde::Deserialize)]
8650    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8651    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
8652```solidity
8653function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
8654```*/
8655    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8656    #[derive(Clone)]
8657    pub struct lagOverEscapeHatchThresholdCall {
8658        #[allow(missing_docs)]
8659        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
8660        #[allow(missing_docs)]
8661        pub blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
8662    }
8663    #[derive(serde::Serialize, serde::Deserialize)]
8664    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8665    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
8666    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8667    #[derive(Clone)]
8668    pub struct lagOverEscapeHatchThresholdReturn {
8669        #[allow(missing_docs)]
8670        pub _0: bool,
8671    }
8672    #[allow(
8673        non_camel_case_types,
8674        non_snake_case,
8675        clippy::pub_underscore_fields,
8676        clippy::style
8677    )]
8678    const _: () = {
8679        use alloy::sol_types as alloy_sol_types;
8680        {
8681            #[doc(hidden)]
8682            #[allow(dead_code)]
8683            type UnderlyingSolTuple<'a> = (
8684                alloy::sol_types::sol_data::Uint<256>,
8685                alloy::sol_types::sol_data::Uint<256>,
8686            );
8687            #[doc(hidden)]
8688            type UnderlyingRustTuple<'a> = (
8689                alloy::sol_types::private::primitives::aliases::U256,
8690                alloy::sol_types::private::primitives::aliases::U256,
8691            );
8692            #[cfg(test)]
8693            #[allow(dead_code, unreachable_patterns)]
8694            fn _type_assertion(
8695                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8696            ) {
8697                match _t {
8698                    alloy_sol_types::private::AssertTypeEq::<
8699                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8700                    >(_) => {}
8701                }
8702            }
8703            #[automatically_derived]
8704            #[doc(hidden)]
8705            impl ::core::convert::From<lagOverEscapeHatchThresholdCall>
8706            for UnderlyingRustTuple<'_> {
8707                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
8708                    (value.blockNumber, value.blockThreshold)
8709                }
8710            }
8711            #[automatically_derived]
8712            #[doc(hidden)]
8713            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8714            for lagOverEscapeHatchThresholdCall {
8715                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8716                    Self {
8717                        blockNumber: tuple.0,
8718                        blockThreshold: tuple.1,
8719                    }
8720                }
8721            }
8722        }
8723        {
8724            #[doc(hidden)]
8725            #[allow(dead_code)]
8726            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8727            #[doc(hidden)]
8728            type UnderlyingRustTuple<'a> = (bool,);
8729            #[cfg(test)]
8730            #[allow(dead_code, unreachable_patterns)]
8731            fn _type_assertion(
8732                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8733            ) {
8734                match _t {
8735                    alloy_sol_types::private::AssertTypeEq::<
8736                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8737                    >(_) => {}
8738                }
8739            }
8740            #[automatically_derived]
8741            #[doc(hidden)]
8742            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn>
8743            for UnderlyingRustTuple<'_> {
8744                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
8745                    (value._0,)
8746                }
8747            }
8748            #[automatically_derived]
8749            #[doc(hidden)]
8750            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8751            for lagOverEscapeHatchThresholdReturn {
8752                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8753                    Self { _0: tuple.0 }
8754                }
8755            }
8756        }
8757        #[automatically_derived]
8758        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
8759            type Parameters<'a> = (
8760                alloy::sol_types::sol_data::Uint<256>,
8761                alloy::sol_types::sol_data::Uint<256>,
8762            );
8763            type Token<'a> = <Self::Parameters<
8764                'a,
8765            > as alloy_sol_types::SolType>::Token<'a>;
8766            type Return = bool;
8767            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8768            type ReturnToken<'a> = <Self::ReturnTuple<
8769                'a,
8770            > as alloy_sol_types::SolType>::Token<'a>;
8771            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
8772            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
8773            #[inline]
8774            fn new<'a>(
8775                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8776            ) -> Self {
8777                tuple.into()
8778            }
8779            #[inline]
8780            fn tokenize(&self) -> Self::Token<'_> {
8781                (
8782                    <alloy::sol_types::sol_data::Uint<
8783                        256,
8784                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
8785                    <alloy::sol_types::sol_data::Uint<
8786                        256,
8787                    > as alloy_sol_types::SolType>::tokenize(&self.blockThreshold),
8788                )
8789            }
8790            #[inline]
8791            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8792                (
8793                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
8794                        ret,
8795                    ),
8796                )
8797            }
8798            #[inline]
8799            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8800                <Self::ReturnTuple<
8801                    '_,
8802                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8803                    .map(|r| {
8804                        let r: lagOverEscapeHatchThresholdReturn = r.into();
8805                        r._0
8806                    })
8807            }
8808            #[inline]
8809            fn abi_decode_returns_validate(
8810                data: &[u8],
8811            ) -> alloy_sol_types::Result<Self::Return> {
8812                <Self::ReturnTuple<
8813                    '_,
8814                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8815                    .map(|r| {
8816                        let r: lagOverEscapeHatchThresholdReturn = r.into();
8817                        r._0
8818                    })
8819            }
8820        }
8821    };
8822    #[derive(serde::Serialize, serde::Deserialize)]
8823    #[derive()]
8824    /**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`.
8825```solidity
8826function newFinalizedState(LightClientState memory newState, IPlonkVerifier.PlonkProof memory proof) external;
8827```*/
8828    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8829    #[derive(Clone)]
8830    pub struct newFinalizedStateCall {
8831        #[allow(missing_docs)]
8832        pub newState: <LightClientState as alloy::sol_types::SolType>::RustType,
8833        #[allow(missing_docs)]
8834        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
8835    }
8836    ///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))`](newFinalizedStateCall) function.
8837    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8838    #[derive(Clone)]
8839    pub struct newFinalizedStateReturn {}
8840    #[allow(
8841        non_camel_case_types,
8842        non_snake_case,
8843        clippy::pub_underscore_fields,
8844        clippy::style
8845    )]
8846    const _: () = {
8847        use alloy::sol_types as alloy_sol_types;
8848        {
8849            #[doc(hidden)]
8850            #[allow(dead_code)]
8851            type UnderlyingSolTuple<'a> = (LightClientState, IPlonkVerifier::PlonkProof);
8852            #[doc(hidden)]
8853            type UnderlyingRustTuple<'a> = (
8854                <LightClientState as alloy::sol_types::SolType>::RustType,
8855                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
8856            );
8857            #[cfg(test)]
8858            #[allow(dead_code, unreachable_patterns)]
8859            fn _type_assertion(
8860                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8861            ) {
8862                match _t {
8863                    alloy_sol_types::private::AssertTypeEq::<
8864                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8865                    >(_) => {}
8866                }
8867            }
8868            #[automatically_derived]
8869            #[doc(hidden)]
8870            impl ::core::convert::From<newFinalizedStateCall>
8871            for UnderlyingRustTuple<'_> {
8872                fn from(value: newFinalizedStateCall) -> Self {
8873                    (value.newState, value.proof)
8874                }
8875            }
8876            #[automatically_derived]
8877            #[doc(hidden)]
8878            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8879            for newFinalizedStateCall {
8880                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8881                    Self {
8882                        newState: tuple.0,
8883                        proof: tuple.1,
8884                    }
8885                }
8886            }
8887        }
8888        {
8889            #[doc(hidden)]
8890            #[allow(dead_code)]
8891            type UnderlyingSolTuple<'a> = ();
8892            #[doc(hidden)]
8893            type UnderlyingRustTuple<'a> = ();
8894            #[cfg(test)]
8895            #[allow(dead_code, unreachable_patterns)]
8896            fn _type_assertion(
8897                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8898            ) {
8899                match _t {
8900                    alloy_sol_types::private::AssertTypeEq::<
8901                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8902                    >(_) => {}
8903                }
8904            }
8905            #[automatically_derived]
8906            #[doc(hidden)]
8907            impl ::core::convert::From<newFinalizedStateReturn>
8908            for UnderlyingRustTuple<'_> {
8909                fn from(value: newFinalizedStateReturn) -> Self {
8910                    ()
8911                }
8912            }
8913            #[automatically_derived]
8914            #[doc(hidden)]
8915            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8916            for newFinalizedStateReturn {
8917                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8918                    Self {}
8919                }
8920            }
8921        }
8922        impl newFinalizedStateReturn {
8923            fn _tokenize(
8924                &self,
8925            ) -> <newFinalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8926                ()
8927            }
8928        }
8929        #[automatically_derived]
8930        impl alloy_sol_types::SolCall for newFinalizedStateCall {
8931            type Parameters<'a> = (LightClientState, IPlonkVerifier::PlonkProof);
8932            type Token<'a> = <Self::Parameters<
8933                'a,
8934            > as alloy_sol_types::SolType>::Token<'a>;
8935            type Return = newFinalizedStateReturn;
8936            type ReturnTuple<'a> = ();
8937            type ReturnToken<'a> = <Self::ReturnTuple<
8938                'a,
8939            > as alloy_sol_types::SolType>::Token<'a>;
8940            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))";
8941            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
8942            #[inline]
8943            fn new<'a>(
8944                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8945            ) -> Self {
8946                tuple.into()
8947            }
8948            #[inline]
8949            fn tokenize(&self) -> Self::Token<'_> {
8950                (
8951                    <LightClientState as alloy_sol_types::SolType>::tokenize(
8952                        &self.newState,
8953                    ),
8954                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
8955                        &self.proof,
8956                    ),
8957                )
8958            }
8959            #[inline]
8960            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8961                newFinalizedStateReturn::_tokenize(ret)
8962            }
8963            #[inline]
8964            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8965                <Self::ReturnTuple<
8966                    '_,
8967                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8968                    .map(Into::into)
8969            }
8970            #[inline]
8971            fn abi_decode_returns_validate(
8972                data: &[u8],
8973            ) -> alloy_sol_types::Result<Self::Return> {
8974                <Self::ReturnTuple<
8975                    '_,
8976                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8977                    .map(Into::into)
8978            }
8979        }
8980    };
8981    #[derive(serde::Serialize, serde::Deserialize)]
8982    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8983    /**Function with signature `owner()` and selector `0x8da5cb5b`.
8984```solidity
8985function owner() external view returns (address);
8986```*/
8987    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8988    #[derive(Clone)]
8989    pub struct ownerCall;
8990    #[derive(serde::Serialize, serde::Deserialize)]
8991    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8992    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
8993    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8994    #[derive(Clone)]
8995    pub struct ownerReturn {
8996        #[allow(missing_docs)]
8997        pub _0: alloy::sol_types::private::Address,
8998    }
8999    #[allow(
9000        non_camel_case_types,
9001        non_snake_case,
9002        clippy::pub_underscore_fields,
9003        clippy::style
9004    )]
9005    const _: () = {
9006        use alloy::sol_types as alloy_sol_types;
9007        {
9008            #[doc(hidden)]
9009            #[allow(dead_code)]
9010            type UnderlyingSolTuple<'a> = ();
9011            #[doc(hidden)]
9012            type UnderlyingRustTuple<'a> = ();
9013            #[cfg(test)]
9014            #[allow(dead_code, unreachable_patterns)]
9015            fn _type_assertion(
9016                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9017            ) {
9018                match _t {
9019                    alloy_sol_types::private::AssertTypeEq::<
9020                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9021                    >(_) => {}
9022                }
9023            }
9024            #[automatically_derived]
9025            #[doc(hidden)]
9026            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
9027                fn from(value: ownerCall) -> Self {
9028                    ()
9029                }
9030            }
9031            #[automatically_derived]
9032            #[doc(hidden)]
9033            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
9034                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9035                    Self
9036                }
9037            }
9038        }
9039        {
9040            #[doc(hidden)]
9041            #[allow(dead_code)]
9042            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9043            #[doc(hidden)]
9044            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9045            #[cfg(test)]
9046            #[allow(dead_code, unreachable_patterns)]
9047            fn _type_assertion(
9048                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9049            ) {
9050                match _t {
9051                    alloy_sol_types::private::AssertTypeEq::<
9052                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9053                    >(_) => {}
9054                }
9055            }
9056            #[automatically_derived]
9057            #[doc(hidden)]
9058            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
9059                fn from(value: ownerReturn) -> Self {
9060                    (value._0,)
9061                }
9062            }
9063            #[automatically_derived]
9064            #[doc(hidden)]
9065            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
9066                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9067                    Self { _0: tuple.0 }
9068                }
9069            }
9070        }
9071        #[automatically_derived]
9072        impl alloy_sol_types::SolCall for ownerCall {
9073            type Parameters<'a> = ();
9074            type Token<'a> = <Self::Parameters<
9075                'a,
9076            > as alloy_sol_types::SolType>::Token<'a>;
9077            type Return = alloy::sol_types::private::Address;
9078            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
9079            type ReturnToken<'a> = <Self::ReturnTuple<
9080                'a,
9081            > as alloy_sol_types::SolType>::Token<'a>;
9082            const SIGNATURE: &'static str = "owner()";
9083            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
9084            #[inline]
9085            fn new<'a>(
9086                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9087            ) -> Self {
9088                tuple.into()
9089            }
9090            #[inline]
9091            fn tokenize(&self) -> Self::Token<'_> {
9092                ()
9093            }
9094            #[inline]
9095            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9096                (
9097                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9098                        ret,
9099                    ),
9100                )
9101            }
9102            #[inline]
9103            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9104                <Self::ReturnTuple<
9105                    '_,
9106                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9107                    .map(|r| {
9108                        let r: ownerReturn = r.into();
9109                        r._0
9110                    })
9111            }
9112            #[inline]
9113            fn abi_decode_returns_validate(
9114                data: &[u8],
9115            ) -> alloy_sol_types::Result<Self::Return> {
9116                <Self::ReturnTuple<
9117                    '_,
9118                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9119                    .map(|r| {
9120                        let r: ownerReturn = r.into();
9121                        r._0
9122                    })
9123            }
9124        }
9125    };
9126    #[derive(serde::Serialize, serde::Deserialize)]
9127    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9128    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
9129```solidity
9130function permissionedProver() external view returns (address);
9131```*/
9132    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9133    #[derive(Clone)]
9134    pub struct permissionedProverCall;
9135    #[derive(serde::Serialize, serde::Deserialize)]
9136    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9137    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
9138    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9139    #[derive(Clone)]
9140    pub struct permissionedProverReturn {
9141        #[allow(missing_docs)]
9142        pub _0: alloy::sol_types::private::Address,
9143    }
9144    #[allow(
9145        non_camel_case_types,
9146        non_snake_case,
9147        clippy::pub_underscore_fields,
9148        clippy::style
9149    )]
9150    const _: () = {
9151        use alloy::sol_types as alloy_sol_types;
9152        {
9153            #[doc(hidden)]
9154            #[allow(dead_code)]
9155            type UnderlyingSolTuple<'a> = ();
9156            #[doc(hidden)]
9157            type UnderlyingRustTuple<'a> = ();
9158            #[cfg(test)]
9159            #[allow(dead_code, unreachable_patterns)]
9160            fn _type_assertion(
9161                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9162            ) {
9163                match _t {
9164                    alloy_sol_types::private::AssertTypeEq::<
9165                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9166                    >(_) => {}
9167                }
9168            }
9169            #[automatically_derived]
9170            #[doc(hidden)]
9171            impl ::core::convert::From<permissionedProverCall>
9172            for UnderlyingRustTuple<'_> {
9173                fn from(value: permissionedProverCall) -> Self {
9174                    ()
9175                }
9176            }
9177            #[automatically_derived]
9178            #[doc(hidden)]
9179            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9180            for permissionedProverCall {
9181                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9182                    Self
9183                }
9184            }
9185        }
9186        {
9187            #[doc(hidden)]
9188            #[allow(dead_code)]
9189            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9190            #[doc(hidden)]
9191            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9192            #[cfg(test)]
9193            #[allow(dead_code, unreachable_patterns)]
9194            fn _type_assertion(
9195                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9196            ) {
9197                match _t {
9198                    alloy_sol_types::private::AssertTypeEq::<
9199                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9200                    >(_) => {}
9201                }
9202            }
9203            #[automatically_derived]
9204            #[doc(hidden)]
9205            impl ::core::convert::From<permissionedProverReturn>
9206            for UnderlyingRustTuple<'_> {
9207                fn from(value: permissionedProverReturn) -> Self {
9208                    (value._0,)
9209                }
9210            }
9211            #[automatically_derived]
9212            #[doc(hidden)]
9213            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9214            for permissionedProverReturn {
9215                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9216                    Self { _0: tuple.0 }
9217                }
9218            }
9219        }
9220        #[automatically_derived]
9221        impl alloy_sol_types::SolCall for permissionedProverCall {
9222            type Parameters<'a> = ();
9223            type Token<'a> = <Self::Parameters<
9224                'a,
9225            > as alloy_sol_types::SolType>::Token<'a>;
9226            type Return = alloy::sol_types::private::Address;
9227            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
9228            type ReturnToken<'a> = <Self::ReturnTuple<
9229                'a,
9230            > as alloy_sol_types::SolType>::Token<'a>;
9231            const SIGNATURE: &'static str = "permissionedProver()";
9232            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
9233            #[inline]
9234            fn new<'a>(
9235                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9236            ) -> Self {
9237                tuple.into()
9238            }
9239            #[inline]
9240            fn tokenize(&self) -> Self::Token<'_> {
9241                ()
9242            }
9243            #[inline]
9244            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9245                (
9246                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9247                        ret,
9248                    ),
9249                )
9250            }
9251            #[inline]
9252            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9253                <Self::ReturnTuple<
9254                    '_,
9255                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9256                    .map(|r| {
9257                        let r: permissionedProverReturn = r.into();
9258                        r._0
9259                    })
9260            }
9261            #[inline]
9262            fn abi_decode_returns_validate(
9263                data: &[u8],
9264            ) -> alloy_sol_types::Result<Self::Return> {
9265                <Self::ReturnTuple<
9266                    '_,
9267                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9268                    .map(|r| {
9269                        let r: permissionedProverReturn = r.into();
9270                        r._0
9271                    })
9272            }
9273        }
9274    };
9275    #[derive(serde::Serialize, serde::Deserialize)]
9276    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9277    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
9278```solidity
9279function proxiableUUID() external view returns (bytes32);
9280```*/
9281    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9282    #[derive(Clone)]
9283    pub struct proxiableUUIDCall;
9284    #[derive(serde::Serialize, serde::Deserialize)]
9285    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9286    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
9287    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9288    #[derive(Clone)]
9289    pub struct proxiableUUIDReturn {
9290        #[allow(missing_docs)]
9291        pub _0: alloy::sol_types::private::FixedBytes<32>,
9292    }
9293    #[allow(
9294        non_camel_case_types,
9295        non_snake_case,
9296        clippy::pub_underscore_fields,
9297        clippy::style
9298    )]
9299    const _: () = {
9300        use alloy::sol_types as alloy_sol_types;
9301        {
9302            #[doc(hidden)]
9303            #[allow(dead_code)]
9304            type UnderlyingSolTuple<'a> = ();
9305            #[doc(hidden)]
9306            type UnderlyingRustTuple<'a> = ();
9307            #[cfg(test)]
9308            #[allow(dead_code, unreachable_patterns)]
9309            fn _type_assertion(
9310                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9311            ) {
9312                match _t {
9313                    alloy_sol_types::private::AssertTypeEq::<
9314                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9315                    >(_) => {}
9316                }
9317            }
9318            #[automatically_derived]
9319            #[doc(hidden)]
9320            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
9321                fn from(value: proxiableUUIDCall) -> Self {
9322                    ()
9323                }
9324            }
9325            #[automatically_derived]
9326            #[doc(hidden)]
9327            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
9328                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9329                    Self
9330                }
9331            }
9332        }
9333        {
9334            #[doc(hidden)]
9335            #[allow(dead_code)]
9336            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9337            #[doc(hidden)]
9338            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
9339            #[cfg(test)]
9340            #[allow(dead_code, unreachable_patterns)]
9341            fn _type_assertion(
9342                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9343            ) {
9344                match _t {
9345                    alloy_sol_types::private::AssertTypeEq::<
9346                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9347                    >(_) => {}
9348                }
9349            }
9350            #[automatically_derived]
9351            #[doc(hidden)]
9352            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
9353                fn from(value: proxiableUUIDReturn) -> Self {
9354                    (value._0,)
9355                }
9356            }
9357            #[automatically_derived]
9358            #[doc(hidden)]
9359            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
9360                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9361                    Self { _0: tuple.0 }
9362                }
9363            }
9364        }
9365        #[automatically_derived]
9366        impl alloy_sol_types::SolCall for proxiableUUIDCall {
9367            type Parameters<'a> = ();
9368            type Token<'a> = <Self::Parameters<
9369                'a,
9370            > as alloy_sol_types::SolType>::Token<'a>;
9371            type Return = alloy::sol_types::private::FixedBytes<32>;
9372            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9373            type ReturnToken<'a> = <Self::ReturnTuple<
9374                'a,
9375            > as alloy_sol_types::SolType>::Token<'a>;
9376            const SIGNATURE: &'static str = "proxiableUUID()";
9377            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
9378            #[inline]
9379            fn new<'a>(
9380                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9381            ) -> Self {
9382                tuple.into()
9383            }
9384            #[inline]
9385            fn tokenize(&self) -> Self::Token<'_> {
9386                ()
9387            }
9388            #[inline]
9389            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9390                (
9391                    <alloy::sol_types::sol_data::FixedBytes<
9392                        32,
9393                    > as alloy_sol_types::SolType>::tokenize(ret),
9394                )
9395            }
9396            #[inline]
9397            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9398                <Self::ReturnTuple<
9399                    '_,
9400                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9401                    .map(|r| {
9402                        let r: proxiableUUIDReturn = r.into();
9403                        r._0
9404                    })
9405            }
9406            #[inline]
9407            fn abi_decode_returns_validate(
9408                data: &[u8],
9409            ) -> alloy_sol_types::Result<Self::Return> {
9410                <Self::ReturnTuple<
9411                    '_,
9412                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9413                    .map(|r| {
9414                        let r: proxiableUUIDReturn = r.into();
9415                        r._0
9416                    })
9417            }
9418        }
9419    };
9420    #[derive(serde::Serialize, serde::Deserialize)]
9421    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9422    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
9423```solidity
9424function renounceOwnership() external;
9425```*/
9426    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9427    #[derive(Clone)]
9428    pub struct renounceOwnershipCall;
9429    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
9430    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9431    #[derive(Clone)]
9432    pub struct renounceOwnershipReturn {}
9433    #[allow(
9434        non_camel_case_types,
9435        non_snake_case,
9436        clippy::pub_underscore_fields,
9437        clippy::style
9438    )]
9439    const _: () = {
9440        use alloy::sol_types as alloy_sol_types;
9441        {
9442            #[doc(hidden)]
9443            #[allow(dead_code)]
9444            type UnderlyingSolTuple<'a> = ();
9445            #[doc(hidden)]
9446            type UnderlyingRustTuple<'a> = ();
9447            #[cfg(test)]
9448            #[allow(dead_code, unreachable_patterns)]
9449            fn _type_assertion(
9450                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9451            ) {
9452                match _t {
9453                    alloy_sol_types::private::AssertTypeEq::<
9454                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9455                    >(_) => {}
9456                }
9457            }
9458            #[automatically_derived]
9459            #[doc(hidden)]
9460            impl ::core::convert::From<renounceOwnershipCall>
9461            for UnderlyingRustTuple<'_> {
9462                fn from(value: renounceOwnershipCall) -> Self {
9463                    ()
9464                }
9465            }
9466            #[automatically_derived]
9467            #[doc(hidden)]
9468            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9469            for renounceOwnershipCall {
9470                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9471                    Self
9472                }
9473            }
9474        }
9475        {
9476            #[doc(hidden)]
9477            #[allow(dead_code)]
9478            type UnderlyingSolTuple<'a> = ();
9479            #[doc(hidden)]
9480            type UnderlyingRustTuple<'a> = ();
9481            #[cfg(test)]
9482            #[allow(dead_code, unreachable_patterns)]
9483            fn _type_assertion(
9484                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9485            ) {
9486                match _t {
9487                    alloy_sol_types::private::AssertTypeEq::<
9488                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9489                    >(_) => {}
9490                }
9491            }
9492            #[automatically_derived]
9493            #[doc(hidden)]
9494            impl ::core::convert::From<renounceOwnershipReturn>
9495            for UnderlyingRustTuple<'_> {
9496                fn from(value: renounceOwnershipReturn) -> Self {
9497                    ()
9498                }
9499            }
9500            #[automatically_derived]
9501            #[doc(hidden)]
9502            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9503            for renounceOwnershipReturn {
9504                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9505                    Self {}
9506                }
9507            }
9508        }
9509        impl renounceOwnershipReturn {
9510            fn _tokenize(
9511                &self,
9512            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9513                ()
9514            }
9515        }
9516        #[automatically_derived]
9517        impl alloy_sol_types::SolCall for renounceOwnershipCall {
9518            type Parameters<'a> = ();
9519            type Token<'a> = <Self::Parameters<
9520                'a,
9521            > as alloy_sol_types::SolType>::Token<'a>;
9522            type Return = renounceOwnershipReturn;
9523            type ReturnTuple<'a> = ();
9524            type ReturnToken<'a> = <Self::ReturnTuple<
9525                'a,
9526            > as alloy_sol_types::SolType>::Token<'a>;
9527            const SIGNATURE: &'static str = "renounceOwnership()";
9528            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
9529            #[inline]
9530            fn new<'a>(
9531                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9532            ) -> Self {
9533                tuple.into()
9534            }
9535            #[inline]
9536            fn tokenize(&self) -> Self::Token<'_> {
9537                ()
9538            }
9539            #[inline]
9540            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9541                renounceOwnershipReturn::_tokenize(ret)
9542            }
9543            #[inline]
9544            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9545                <Self::ReturnTuple<
9546                    '_,
9547                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9548                    .map(Into::into)
9549            }
9550            #[inline]
9551            fn abi_decode_returns_validate(
9552                data: &[u8],
9553            ) -> alloy_sol_types::Result<Self::Return> {
9554                <Self::ReturnTuple<
9555                    '_,
9556                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9557                    .map(Into::into)
9558            }
9559        }
9560    };
9561    #[derive(serde::Serialize, serde::Deserialize)]
9562    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9563    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
9564```solidity
9565function setPermissionedProver(address prover) external;
9566```*/
9567    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9568    #[derive(Clone)]
9569    pub struct setPermissionedProverCall {
9570        #[allow(missing_docs)]
9571        pub prover: alloy::sol_types::private::Address,
9572    }
9573    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
9574    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9575    #[derive(Clone)]
9576    pub struct setPermissionedProverReturn {}
9577    #[allow(
9578        non_camel_case_types,
9579        non_snake_case,
9580        clippy::pub_underscore_fields,
9581        clippy::style
9582    )]
9583    const _: () = {
9584        use alloy::sol_types as alloy_sol_types;
9585        {
9586            #[doc(hidden)]
9587            #[allow(dead_code)]
9588            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9589            #[doc(hidden)]
9590            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9591            #[cfg(test)]
9592            #[allow(dead_code, unreachable_patterns)]
9593            fn _type_assertion(
9594                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9595            ) {
9596                match _t {
9597                    alloy_sol_types::private::AssertTypeEq::<
9598                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9599                    >(_) => {}
9600                }
9601            }
9602            #[automatically_derived]
9603            #[doc(hidden)]
9604            impl ::core::convert::From<setPermissionedProverCall>
9605            for UnderlyingRustTuple<'_> {
9606                fn from(value: setPermissionedProverCall) -> Self {
9607                    (value.prover,)
9608                }
9609            }
9610            #[automatically_derived]
9611            #[doc(hidden)]
9612            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9613            for setPermissionedProverCall {
9614                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9615                    Self { prover: tuple.0 }
9616                }
9617            }
9618        }
9619        {
9620            #[doc(hidden)]
9621            #[allow(dead_code)]
9622            type UnderlyingSolTuple<'a> = ();
9623            #[doc(hidden)]
9624            type UnderlyingRustTuple<'a> = ();
9625            #[cfg(test)]
9626            #[allow(dead_code, unreachable_patterns)]
9627            fn _type_assertion(
9628                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9629            ) {
9630                match _t {
9631                    alloy_sol_types::private::AssertTypeEq::<
9632                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9633                    >(_) => {}
9634                }
9635            }
9636            #[automatically_derived]
9637            #[doc(hidden)]
9638            impl ::core::convert::From<setPermissionedProverReturn>
9639            for UnderlyingRustTuple<'_> {
9640                fn from(value: setPermissionedProverReturn) -> Self {
9641                    ()
9642                }
9643            }
9644            #[automatically_derived]
9645            #[doc(hidden)]
9646            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9647            for setPermissionedProverReturn {
9648                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9649                    Self {}
9650                }
9651            }
9652        }
9653        impl setPermissionedProverReturn {
9654            fn _tokenize(
9655                &self,
9656            ) -> <setPermissionedProverCall as alloy_sol_types::SolCall>::ReturnToken<
9657                '_,
9658            > {
9659                ()
9660            }
9661        }
9662        #[automatically_derived]
9663        impl alloy_sol_types::SolCall for setPermissionedProverCall {
9664            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
9665            type Token<'a> = <Self::Parameters<
9666                'a,
9667            > as alloy_sol_types::SolType>::Token<'a>;
9668            type Return = setPermissionedProverReturn;
9669            type ReturnTuple<'a> = ();
9670            type ReturnToken<'a> = <Self::ReturnTuple<
9671                'a,
9672            > as alloy_sol_types::SolType>::Token<'a>;
9673            const SIGNATURE: &'static str = "setPermissionedProver(address)";
9674            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
9675            #[inline]
9676            fn new<'a>(
9677                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9678            ) -> Self {
9679                tuple.into()
9680            }
9681            #[inline]
9682            fn tokenize(&self) -> Self::Token<'_> {
9683                (
9684                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9685                        &self.prover,
9686                    ),
9687                )
9688            }
9689            #[inline]
9690            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9691                setPermissionedProverReturn::_tokenize(ret)
9692            }
9693            #[inline]
9694            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9695                <Self::ReturnTuple<
9696                    '_,
9697                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9698                    .map(Into::into)
9699            }
9700            #[inline]
9701            fn abi_decode_returns_validate(
9702                data: &[u8],
9703            ) -> alloy_sol_types::Result<Self::Return> {
9704                <Self::ReturnTuple<
9705                    '_,
9706                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9707                    .map(Into::into)
9708            }
9709        }
9710    };
9711    #[derive(serde::Serialize, serde::Deserialize)]
9712    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9713    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
9714```solidity
9715function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
9716```*/
9717    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9718    #[derive(Clone)]
9719    pub struct setstateHistoryRetentionPeriodCall {
9720        #[allow(missing_docs)]
9721        pub historySeconds: u32,
9722    }
9723    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
9724    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9725    #[derive(Clone)]
9726    pub struct setstateHistoryRetentionPeriodReturn {}
9727    #[allow(
9728        non_camel_case_types,
9729        non_snake_case,
9730        clippy::pub_underscore_fields,
9731        clippy::style
9732    )]
9733    const _: () = {
9734        use alloy::sol_types as alloy_sol_types;
9735        {
9736            #[doc(hidden)]
9737            #[allow(dead_code)]
9738            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
9739            #[doc(hidden)]
9740            type UnderlyingRustTuple<'a> = (u32,);
9741            #[cfg(test)]
9742            #[allow(dead_code, unreachable_patterns)]
9743            fn _type_assertion(
9744                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9745            ) {
9746                match _t {
9747                    alloy_sol_types::private::AssertTypeEq::<
9748                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9749                    >(_) => {}
9750                }
9751            }
9752            #[automatically_derived]
9753            #[doc(hidden)]
9754            impl ::core::convert::From<setstateHistoryRetentionPeriodCall>
9755            for UnderlyingRustTuple<'_> {
9756                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
9757                    (value.historySeconds,)
9758                }
9759            }
9760            #[automatically_derived]
9761            #[doc(hidden)]
9762            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9763            for setstateHistoryRetentionPeriodCall {
9764                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9765                    Self { historySeconds: tuple.0 }
9766                }
9767            }
9768        }
9769        {
9770            #[doc(hidden)]
9771            #[allow(dead_code)]
9772            type UnderlyingSolTuple<'a> = ();
9773            #[doc(hidden)]
9774            type UnderlyingRustTuple<'a> = ();
9775            #[cfg(test)]
9776            #[allow(dead_code, unreachable_patterns)]
9777            fn _type_assertion(
9778                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9779            ) {
9780                match _t {
9781                    alloy_sol_types::private::AssertTypeEq::<
9782                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9783                    >(_) => {}
9784                }
9785            }
9786            #[automatically_derived]
9787            #[doc(hidden)]
9788            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn>
9789            for UnderlyingRustTuple<'_> {
9790                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
9791                    ()
9792                }
9793            }
9794            #[automatically_derived]
9795            #[doc(hidden)]
9796            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9797            for setstateHistoryRetentionPeriodReturn {
9798                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9799                    Self {}
9800                }
9801            }
9802        }
9803        impl setstateHistoryRetentionPeriodReturn {
9804            fn _tokenize(
9805                &self,
9806            ) -> <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
9807                '_,
9808            > {
9809                ()
9810            }
9811        }
9812        #[automatically_derived]
9813        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
9814            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
9815            type Token<'a> = <Self::Parameters<
9816                'a,
9817            > as alloy_sol_types::SolType>::Token<'a>;
9818            type Return = setstateHistoryRetentionPeriodReturn;
9819            type ReturnTuple<'a> = ();
9820            type ReturnToken<'a> = <Self::ReturnTuple<
9821                'a,
9822            > as alloy_sol_types::SolType>::Token<'a>;
9823            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
9824            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
9825            #[inline]
9826            fn new<'a>(
9827                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9828            ) -> Self {
9829                tuple.into()
9830            }
9831            #[inline]
9832            fn tokenize(&self) -> Self::Token<'_> {
9833                (
9834                    <alloy::sol_types::sol_data::Uint<
9835                        32,
9836                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
9837                )
9838            }
9839            #[inline]
9840            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9841                setstateHistoryRetentionPeriodReturn::_tokenize(ret)
9842            }
9843            #[inline]
9844            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9845                <Self::ReturnTuple<
9846                    '_,
9847                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9848                    .map(Into::into)
9849            }
9850            #[inline]
9851            fn abi_decode_returns_validate(
9852                data: &[u8],
9853            ) -> alloy_sol_types::Result<Self::Return> {
9854                <Self::ReturnTuple<
9855                    '_,
9856                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9857                    .map(Into::into)
9858            }
9859        }
9860    };
9861    #[derive(serde::Serialize, serde::Deserialize)]
9862    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9863    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
9864```solidity
9865function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
9866```*/
9867    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9868    #[derive(Clone)]
9869    pub struct stateHistoryCommitmentsCall(
9870        pub alloy::sol_types::private::primitives::aliases::U256,
9871    );
9872    #[derive(serde::Serialize, serde::Deserialize)]
9873    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9874    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
9875    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9876    #[derive(Clone)]
9877    pub struct stateHistoryCommitmentsReturn {
9878        #[allow(missing_docs)]
9879        pub l1BlockHeight: u64,
9880        #[allow(missing_docs)]
9881        pub l1BlockTimestamp: u64,
9882        #[allow(missing_docs)]
9883        pub hotShotBlockHeight: u64,
9884        #[allow(missing_docs)]
9885        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9886    }
9887    #[allow(
9888        non_camel_case_types,
9889        non_snake_case,
9890        clippy::pub_underscore_fields,
9891        clippy::style
9892    )]
9893    const _: () = {
9894        use alloy::sol_types as alloy_sol_types;
9895        {
9896            #[doc(hidden)]
9897            #[allow(dead_code)]
9898            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9899            #[doc(hidden)]
9900            type UnderlyingRustTuple<'a> = (
9901                alloy::sol_types::private::primitives::aliases::U256,
9902            );
9903            #[cfg(test)]
9904            #[allow(dead_code, unreachable_patterns)]
9905            fn _type_assertion(
9906                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9907            ) {
9908                match _t {
9909                    alloy_sol_types::private::AssertTypeEq::<
9910                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9911                    >(_) => {}
9912                }
9913            }
9914            #[automatically_derived]
9915            #[doc(hidden)]
9916            impl ::core::convert::From<stateHistoryCommitmentsCall>
9917            for UnderlyingRustTuple<'_> {
9918                fn from(value: stateHistoryCommitmentsCall) -> Self {
9919                    (value.0,)
9920                }
9921            }
9922            #[automatically_derived]
9923            #[doc(hidden)]
9924            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9925            for stateHistoryCommitmentsCall {
9926                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9927                    Self(tuple.0)
9928                }
9929            }
9930        }
9931        {
9932            #[doc(hidden)]
9933            #[allow(dead_code)]
9934            type UnderlyingSolTuple<'a> = (
9935                alloy::sol_types::sol_data::Uint<64>,
9936                alloy::sol_types::sol_data::Uint<64>,
9937                alloy::sol_types::sol_data::Uint<64>,
9938                BN254::ScalarField,
9939            );
9940            #[doc(hidden)]
9941            type UnderlyingRustTuple<'a> = (
9942                u64,
9943                u64,
9944                u64,
9945                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9946            );
9947            #[cfg(test)]
9948            #[allow(dead_code, unreachable_patterns)]
9949            fn _type_assertion(
9950                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9951            ) {
9952                match _t {
9953                    alloy_sol_types::private::AssertTypeEq::<
9954                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9955                    >(_) => {}
9956                }
9957            }
9958            #[automatically_derived]
9959            #[doc(hidden)]
9960            impl ::core::convert::From<stateHistoryCommitmentsReturn>
9961            for UnderlyingRustTuple<'_> {
9962                fn from(value: stateHistoryCommitmentsReturn) -> Self {
9963                    (
9964                        value.l1BlockHeight,
9965                        value.l1BlockTimestamp,
9966                        value.hotShotBlockHeight,
9967                        value.hotShotBlockCommRoot,
9968                    )
9969                }
9970            }
9971            #[automatically_derived]
9972            #[doc(hidden)]
9973            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9974            for stateHistoryCommitmentsReturn {
9975                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9976                    Self {
9977                        l1BlockHeight: tuple.0,
9978                        l1BlockTimestamp: tuple.1,
9979                        hotShotBlockHeight: tuple.2,
9980                        hotShotBlockCommRoot: tuple.3,
9981                    }
9982                }
9983            }
9984        }
9985        impl stateHistoryCommitmentsReturn {
9986            fn _tokenize(
9987                &self,
9988            ) -> <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::ReturnToken<
9989                '_,
9990            > {
9991                (
9992                    <alloy::sol_types::sol_data::Uint<
9993                        64,
9994                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
9995                    <alloy::sol_types::sol_data::Uint<
9996                        64,
9997                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
9998                    <alloy::sol_types::sol_data::Uint<
9999                        64,
10000                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
10001                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
10002                        &self.hotShotBlockCommRoot,
10003                    ),
10004                )
10005            }
10006        }
10007        #[automatically_derived]
10008        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
10009            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10010            type Token<'a> = <Self::Parameters<
10011                'a,
10012            > as alloy_sol_types::SolType>::Token<'a>;
10013            type Return = stateHistoryCommitmentsReturn;
10014            type ReturnTuple<'a> = (
10015                alloy::sol_types::sol_data::Uint<64>,
10016                alloy::sol_types::sol_data::Uint<64>,
10017                alloy::sol_types::sol_data::Uint<64>,
10018                BN254::ScalarField,
10019            );
10020            type ReturnToken<'a> = <Self::ReturnTuple<
10021                'a,
10022            > as alloy_sol_types::SolType>::Token<'a>;
10023            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
10024            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
10025            #[inline]
10026            fn new<'a>(
10027                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10028            ) -> Self {
10029                tuple.into()
10030            }
10031            #[inline]
10032            fn tokenize(&self) -> Self::Token<'_> {
10033                (
10034                    <alloy::sol_types::sol_data::Uint<
10035                        256,
10036                    > as alloy_sol_types::SolType>::tokenize(&self.0),
10037                )
10038            }
10039            #[inline]
10040            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10041                stateHistoryCommitmentsReturn::_tokenize(ret)
10042            }
10043            #[inline]
10044            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10045                <Self::ReturnTuple<
10046                    '_,
10047                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10048                    .map(Into::into)
10049            }
10050            #[inline]
10051            fn abi_decode_returns_validate(
10052                data: &[u8],
10053            ) -> alloy_sol_types::Result<Self::Return> {
10054                <Self::ReturnTuple<
10055                    '_,
10056                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10057                    .map(Into::into)
10058            }
10059        }
10060    };
10061    #[derive(serde::Serialize, serde::Deserialize)]
10062    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10063    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
10064```solidity
10065function stateHistoryFirstIndex() external view returns (uint64);
10066```*/
10067    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10068    #[derive(Clone)]
10069    pub struct stateHistoryFirstIndexCall;
10070    #[derive(serde::Serialize, serde::Deserialize)]
10071    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10072    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
10073    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10074    #[derive(Clone)]
10075    pub struct stateHistoryFirstIndexReturn {
10076        #[allow(missing_docs)]
10077        pub _0: u64,
10078    }
10079    #[allow(
10080        non_camel_case_types,
10081        non_snake_case,
10082        clippy::pub_underscore_fields,
10083        clippy::style
10084    )]
10085    const _: () = {
10086        use alloy::sol_types as alloy_sol_types;
10087        {
10088            #[doc(hidden)]
10089            #[allow(dead_code)]
10090            type UnderlyingSolTuple<'a> = ();
10091            #[doc(hidden)]
10092            type UnderlyingRustTuple<'a> = ();
10093            #[cfg(test)]
10094            #[allow(dead_code, unreachable_patterns)]
10095            fn _type_assertion(
10096                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10097            ) {
10098                match _t {
10099                    alloy_sol_types::private::AssertTypeEq::<
10100                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10101                    >(_) => {}
10102                }
10103            }
10104            #[automatically_derived]
10105            #[doc(hidden)]
10106            impl ::core::convert::From<stateHistoryFirstIndexCall>
10107            for UnderlyingRustTuple<'_> {
10108                fn from(value: stateHistoryFirstIndexCall) -> Self {
10109                    ()
10110                }
10111            }
10112            #[automatically_derived]
10113            #[doc(hidden)]
10114            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10115            for stateHistoryFirstIndexCall {
10116                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10117                    Self
10118                }
10119            }
10120        }
10121        {
10122            #[doc(hidden)]
10123            #[allow(dead_code)]
10124            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10125            #[doc(hidden)]
10126            type UnderlyingRustTuple<'a> = (u64,);
10127            #[cfg(test)]
10128            #[allow(dead_code, unreachable_patterns)]
10129            fn _type_assertion(
10130                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10131            ) {
10132                match _t {
10133                    alloy_sol_types::private::AssertTypeEq::<
10134                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10135                    >(_) => {}
10136                }
10137            }
10138            #[automatically_derived]
10139            #[doc(hidden)]
10140            impl ::core::convert::From<stateHistoryFirstIndexReturn>
10141            for UnderlyingRustTuple<'_> {
10142                fn from(value: stateHistoryFirstIndexReturn) -> Self {
10143                    (value._0,)
10144                }
10145            }
10146            #[automatically_derived]
10147            #[doc(hidden)]
10148            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10149            for stateHistoryFirstIndexReturn {
10150                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10151                    Self { _0: tuple.0 }
10152                }
10153            }
10154        }
10155        #[automatically_derived]
10156        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
10157            type Parameters<'a> = ();
10158            type Token<'a> = <Self::Parameters<
10159                'a,
10160            > as alloy_sol_types::SolType>::Token<'a>;
10161            type Return = u64;
10162            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10163            type ReturnToken<'a> = <Self::ReturnTuple<
10164                'a,
10165            > as alloy_sol_types::SolType>::Token<'a>;
10166            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
10167            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
10168            #[inline]
10169            fn new<'a>(
10170                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10171            ) -> Self {
10172                tuple.into()
10173            }
10174            #[inline]
10175            fn tokenize(&self) -> Self::Token<'_> {
10176                ()
10177            }
10178            #[inline]
10179            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10180                (
10181                    <alloy::sol_types::sol_data::Uint<
10182                        64,
10183                    > as alloy_sol_types::SolType>::tokenize(ret),
10184                )
10185            }
10186            #[inline]
10187            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10188                <Self::ReturnTuple<
10189                    '_,
10190                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10191                    .map(|r| {
10192                        let r: stateHistoryFirstIndexReturn = r.into();
10193                        r._0
10194                    })
10195            }
10196            #[inline]
10197            fn abi_decode_returns_validate(
10198                data: &[u8],
10199            ) -> alloy_sol_types::Result<Self::Return> {
10200                <Self::ReturnTuple<
10201                    '_,
10202                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10203                    .map(|r| {
10204                        let r: stateHistoryFirstIndexReturn = r.into();
10205                        r._0
10206                    })
10207            }
10208        }
10209    };
10210    #[derive(serde::Serialize, serde::Deserialize)]
10211    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10212    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
10213```solidity
10214function stateHistoryRetentionPeriod() external view returns (uint32);
10215```*/
10216    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10217    #[derive(Clone)]
10218    pub struct stateHistoryRetentionPeriodCall;
10219    #[derive(serde::Serialize, serde::Deserialize)]
10220    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10221    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
10222    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10223    #[derive(Clone)]
10224    pub struct stateHistoryRetentionPeriodReturn {
10225        #[allow(missing_docs)]
10226        pub _0: u32,
10227    }
10228    #[allow(
10229        non_camel_case_types,
10230        non_snake_case,
10231        clippy::pub_underscore_fields,
10232        clippy::style
10233    )]
10234    const _: () = {
10235        use alloy::sol_types as alloy_sol_types;
10236        {
10237            #[doc(hidden)]
10238            #[allow(dead_code)]
10239            type UnderlyingSolTuple<'a> = ();
10240            #[doc(hidden)]
10241            type UnderlyingRustTuple<'a> = ();
10242            #[cfg(test)]
10243            #[allow(dead_code, unreachable_patterns)]
10244            fn _type_assertion(
10245                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10246            ) {
10247                match _t {
10248                    alloy_sol_types::private::AssertTypeEq::<
10249                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10250                    >(_) => {}
10251                }
10252            }
10253            #[automatically_derived]
10254            #[doc(hidden)]
10255            impl ::core::convert::From<stateHistoryRetentionPeriodCall>
10256            for UnderlyingRustTuple<'_> {
10257                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
10258                    ()
10259                }
10260            }
10261            #[automatically_derived]
10262            #[doc(hidden)]
10263            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10264            for stateHistoryRetentionPeriodCall {
10265                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10266                    Self
10267                }
10268            }
10269        }
10270        {
10271            #[doc(hidden)]
10272            #[allow(dead_code)]
10273            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
10274            #[doc(hidden)]
10275            type UnderlyingRustTuple<'a> = (u32,);
10276            #[cfg(test)]
10277            #[allow(dead_code, unreachable_patterns)]
10278            fn _type_assertion(
10279                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10280            ) {
10281                match _t {
10282                    alloy_sol_types::private::AssertTypeEq::<
10283                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10284                    >(_) => {}
10285                }
10286            }
10287            #[automatically_derived]
10288            #[doc(hidden)]
10289            impl ::core::convert::From<stateHistoryRetentionPeriodReturn>
10290            for UnderlyingRustTuple<'_> {
10291                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
10292                    (value._0,)
10293                }
10294            }
10295            #[automatically_derived]
10296            #[doc(hidden)]
10297            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10298            for stateHistoryRetentionPeriodReturn {
10299                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10300                    Self { _0: tuple.0 }
10301                }
10302            }
10303        }
10304        #[automatically_derived]
10305        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
10306            type Parameters<'a> = ();
10307            type Token<'a> = <Self::Parameters<
10308                'a,
10309            > as alloy_sol_types::SolType>::Token<'a>;
10310            type Return = u32;
10311            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
10312            type ReturnToken<'a> = <Self::ReturnTuple<
10313                'a,
10314            > as alloy_sol_types::SolType>::Token<'a>;
10315            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
10316            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
10317            #[inline]
10318            fn new<'a>(
10319                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10320            ) -> Self {
10321                tuple.into()
10322            }
10323            #[inline]
10324            fn tokenize(&self) -> Self::Token<'_> {
10325                ()
10326            }
10327            #[inline]
10328            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10329                (
10330                    <alloy::sol_types::sol_data::Uint<
10331                        32,
10332                    > as alloy_sol_types::SolType>::tokenize(ret),
10333                )
10334            }
10335            #[inline]
10336            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10337                <Self::ReturnTuple<
10338                    '_,
10339                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10340                    .map(|r| {
10341                        let r: stateHistoryRetentionPeriodReturn = r.into();
10342                        r._0
10343                    })
10344            }
10345            #[inline]
10346            fn abi_decode_returns_validate(
10347                data: &[u8],
10348            ) -> alloy_sol_types::Result<Self::Return> {
10349                <Self::ReturnTuple<
10350                    '_,
10351                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10352                    .map(|r| {
10353                        let r: stateHistoryRetentionPeriodReturn = r.into();
10354                        r._0
10355                    })
10356            }
10357        }
10358    };
10359    #[derive(serde::Serialize, serde::Deserialize)]
10360    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10361    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
10362```solidity
10363function transferOwnership(address newOwner) external;
10364```*/
10365    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10366    #[derive(Clone)]
10367    pub struct transferOwnershipCall {
10368        #[allow(missing_docs)]
10369        pub newOwner: alloy::sol_types::private::Address,
10370    }
10371    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
10372    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10373    #[derive(Clone)]
10374    pub struct transferOwnershipReturn {}
10375    #[allow(
10376        non_camel_case_types,
10377        non_snake_case,
10378        clippy::pub_underscore_fields,
10379        clippy::style
10380    )]
10381    const _: () = {
10382        use alloy::sol_types as alloy_sol_types;
10383        {
10384            #[doc(hidden)]
10385            #[allow(dead_code)]
10386            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10387            #[doc(hidden)]
10388            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10389            #[cfg(test)]
10390            #[allow(dead_code, unreachable_patterns)]
10391            fn _type_assertion(
10392                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10393            ) {
10394                match _t {
10395                    alloy_sol_types::private::AssertTypeEq::<
10396                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10397                    >(_) => {}
10398                }
10399            }
10400            #[automatically_derived]
10401            #[doc(hidden)]
10402            impl ::core::convert::From<transferOwnershipCall>
10403            for UnderlyingRustTuple<'_> {
10404                fn from(value: transferOwnershipCall) -> Self {
10405                    (value.newOwner,)
10406                }
10407            }
10408            #[automatically_derived]
10409            #[doc(hidden)]
10410            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10411            for transferOwnershipCall {
10412                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10413                    Self { newOwner: tuple.0 }
10414                }
10415            }
10416        }
10417        {
10418            #[doc(hidden)]
10419            #[allow(dead_code)]
10420            type UnderlyingSolTuple<'a> = ();
10421            #[doc(hidden)]
10422            type UnderlyingRustTuple<'a> = ();
10423            #[cfg(test)]
10424            #[allow(dead_code, unreachable_patterns)]
10425            fn _type_assertion(
10426                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10427            ) {
10428                match _t {
10429                    alloy_sol_types::private::AssertTypeEq::<
10430                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10431                    >(_) => {}
10432                }
10433            }
10434            #[automatically_derived]
10435            #[doc(hidden)]
10436            impl ::core::convert::From<transferOwnershipReturn>
10437            for UnderlyingRustTuple<'_> {
10438                fn from(value: transferOwnershipReturn) -> Self {
10439                    ()
10440                }
10441            }
10442            #[automatically_derived]
10443            #[doc(hidden)]
10444            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10445            for transferOwnershipReturn {
10446                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10447                    Self {}
10448                }
10449            }
10450        }
10451        impl transferOwnershipReturn {
10452            fn _tokenize(
10453                &self,
10454            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10455                ()
10456            }
10457        }
10458        #[automatically_derived]
10459        impl alloy_sol_types::SolCall for transferOwnershipCall {
10460            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
10461            type Token<'a> = <Self::Parameters<
10462                'a,
10463            > as alloy_sol_types::SolType>::Token<'a>;
10464            type Return = transferOwnershipReturn;
10465            type ReturnTuple<'a> = ();
10466            type ReturnToken<'a> = <Self::ReturnTuple<
10467                'a,
10468            > as alloy_sol_types::SolType>::Token<'a>;
10469            const SIGNATURE: &'static str = "transferOwnership(address)";
10470            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
10471            #[inline]
10472            fn new<'a>(
10473                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10474            ) -> Self {
10475                tuple.into()
10476            }
10477            #[inline]
10478            fn tokenize(&self) -> Self::Token<'_> {
10479                (
10480                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10481                        &self.newOwner,
10482                    ),
10483                )
10484            }
10485            #[inline]
10486            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10487                transferOwnershipReturn::_tokenize(ret)
10488            }
10489            #[inline]
10490            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10491                <Self::ReturnTuple<
10492                    '_,
10493                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10494                    .map(Into::into)
10495            }
10496            #[inline]
10497            fn abi_decode_returns_validate(
10498                data: &[u8],
10499            ) -> alloy_sol_types::Result<Self::Return> {
10500                <Self::ReturnTuple<
10501                    '_,
10502                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10503                    .map(Into::into)
10504            }
10505        }
10506    };
10507    #[derive(serde::Serialize, serde::Deserialize)]
10508    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10509    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
10510```solidity
10511function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
10512```*/
10513    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10514    #[derive(Clone)]
10515    pub struct upgradeToAndCallCall {
10516        #[allow(missing_docs)]
10517        pub newImplementation: alloy::sol_types::private::Address,
10518        #[allow(missing_docs)]
10519        pub data: alloy::sol_types::private::Bytes,
10520    }
10521    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
10522    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10523    #[derive(Clone)]
10524    pub struct upgradeToAndCallReturn {}
10525    #[allow(
10526        non_camel_case_types,
10527        non_snake_case,
10528        clippy::pub_underscore_fields,
10529        clippy::style
10530    )]
10531    const _: () = {
10532        use alloy::sol_types as alloy_sol_types;
10533        {
10534            #[doc(hidden)]
10535            #[allow(dead_code)]
10536            type UnderlyingSolTuple<'a> = (
10537                alloy::sol_types::sol_data::Address,
10538                alloy::sol_types::sol_data::Bytes,
10539            );
10540            #[doc(hidden)]
10541            type UnderlyingRustTuple<'a> = (
10542                alloy::sol_types::private::Address,
10543                alloy::sol_types::private::Bytes,
10544            );
10545            #[cfg(test)]
10546            #[allow(dead_code, unreachable_patterns)]
10547            fn _type_assertion(
10548                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10549            ) {
10550                match _t {
10551                    alloy_sol_types::private::AssertTypeEq::<
10552                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10553                    >(_) => {}
10554                }
10555            }
10556            #[automatically_derived]
10557            #[doc(hidden)]
10558            impl ::core::convert::From<upgradeToAndCallCall>
10559            for UnderlyingRustTuple<'_> {
10560                fn from(value: upgradeToAndCallCall) -> Self {
10561                    (value.newImplementation, value.data)
10562                }
10563            }
10564            #[automatically_derived]
10565            #[doc(hidden)]
10566            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10567            for upgradeToAndCallCall {
10568                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10569                    Self {
10570                        newImplementation: tuple.0,
10571                        data: tuple.1,
10572                    }
10573                }
10574            }
10575        }
10576        {
10577            #[doc(hidden)]
10578            #[allow(dead_code)]
10579            type UnderlyingSolTuple<'a> = ();
10580            #[doc(hidden)]
10581            type UnderlyingRustTuple<'a> = ();
10582            #[cfg(test)]
10583            #[allow(dead_code, unreachable_patterns)]
10584            fn _type_assertion(
10585                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10586            ) {
10587                match _t {
10588                    alloy_sol_types::private::AssertTypeEq::<
10589                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10590                    >(_) => {}
10591                }
10592            }
10593            #[automatically_derived]
10594            #[doc(hidden)]
10595            impl ::core::convert::From<upgradeToAndCallReturn>
10596            for UnderlyingRustTuple<'_> {
10597                fn from(value: upgradeToAndCallReturn) -> Self {
10598                    ()
10599                }
10600            }
10601            #[automatically_derived]
10602            #[doc(hidden)]
10603            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10604            for upgradeToAndCallReturn {
10605                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10606                    Self {}
10607                }
10608            }
10609        }
10610        impl upgradeToAndCallReturn {
10611            fn _tokenize(
10612                &self,
10613            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10614                ()
10615            }
10616        }
10617        #[automatically_derived]
10618        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
10619            type Parameters<'a> = (
10620                alloy::sol_types::sol_data::Address,
10621                alloy::sol_types::sol_data::Bytes,
10622            );
10623            type Token<'a> = <Self::Parameters<
10624                'a,
10625            > as alloy_sol_types::SolType>::Token<'a>;
10626            type Return = upgradeToAndCallReturn;
10627            type ReturnTuple<'a> = ();
10628            type ReturnToken<'a> = <Self::ReturnTuple<
10629                'a,
10630            > as alloy_sol_types::SolType>::Token<'a>;
10631            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
10632            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
10633            #[inline]
10634            fn new<'a>(
10635                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10636            ) -> Self {
10637                tuple.into()
10638            }
10639            #[inline]
10640            fn tokenize(&self) -> Self::Token<'_> {
10641                (
10642                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10643                        &self.newImplementation,
10644                    ),
10645                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
10646                        &self.data,
10647                    ),
10648                )
10649            }
10650            #[inline]
10651            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10652                upgradeToAndCallReturn::_tokenize(ret)
10653            }
10654            #[inline]
10655            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10656                <Self::ReturnTuple<
10657                    '_,
10658                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10659                    .map(Into::into)
10660            }
10661            #[inline]
10662            fn abi_decode_returns_validate(
10663                data: &[u8],
10664            ) -> alloy_sol_types::Result<Self::Return> {
10665                <Self::ReturnTuple<
10666                    '_,
10667                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10668                    .map(Into::into)
10669            }
10670        }
10671    };
10672    ///Container for all the [`LightClient`](self) function calls.
10673    #[derive(serde::Serialize, serde::Deserialize)]
10674    #[derive()]
10675    pub enum LightClientCalls {
10676        #[allow(missing_docs)]
10677        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
10678        #[allow(missing_docs)]
10679        _getVk(_getVkCall),
10680        #[allow(missing_docs)]
10681        currentBlockNumber(currentBlockNumberCall),
10682        #[allow(missing_docs)]
10683        disablePermissionedProverMode(disablePermissionedProverModeCall),
10684        #[allow(missing_docs)]
10685        finalizedState(finalizedStateCall),
10686        #[allow(missing_docs)]
10687        genesisStakeTableState(genesisStakeTableStateCall),
10688        #[allow(missing_docs)]
10689        genesisState(genesisStateCall),
10690        #[allow(missing_docs)]
10691        getHotShotCommitment(getHotShotCommitmentCall),
10692        #[allow(missing_docs)]
10693        getStateHistoryCount(getStateHistoryCountCall),
10694        #[allow(missing_docs)]
10695        getVersion(getVersionCall),
10696        #[allow(missing_docs)]
10697        initialize(initializeCall),
10698        #[allow(missing_docs)]
10699        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
10700        #[allow(missing_docs)]
10701        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
10702        #[allow(missing_docs)]
10703        newFinalizedState(newFinalizedStateCall),
10704        #[allow(missing_docs)]
10705        owner(ownerCall),
10706        #[allow(missing_docs)]
10707        permissionedProver(permissionedProverCall),
10708        #[allow(missing_docs)]
10709        proxiableUUID(proxiableUUIDCall),
10710        #[allow(missing_docs)]
10711        renounceOwnership(renounceOwnershipCall),
10712        #[allow(missing_docs)]
10713        setPermissionedProver(setPermissionedProverCall),
10714        #[allow(missing_docs)]
10715        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
10716        #[allow(missing_docs)]
10717        stateHistoryCommitments(stateHistoryCommitmentsCall),
10718        #[allow(missing_docs)]
10719        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
10720        #[allow(missing_docs)]
10721        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
10722        #[allow(missing_docs)]
10723        transferOwnership(transferOwnershipCall),
10724        #[allow(missing_docs)]
10725        upgradeToAndCall(upgradeToAndCallCall),
10726    }
10727    #[automatically_derived]
10728    impl LightClientCalls {
10729        /// All the selectors of this enum.
10730        ///
10731        /// Note that the selectors might not be in the same order as the variants.
10732        /// No guarantees are made about the order of the selectors.
10733        ///
10734        /// Prefer using `SolInterface` methods instead.
10735        pub const SELECTORS: &'static [[u8; 4usize]] = &[
10736            [1u8, 63u8, 165u8, 252u8],
10737            [2u8, 181u8, 146u8, 243u8],
10738            [13u8, 142u8, 110u8, 44u8],
10739            [18u8, 23u8, 60u8, 44u8],
10740            [32u8, 99u8, 212u8, 247u8],
10741            [47u8, 121u8, 136u8, 157u8],
10742            [49u8, 61u8, 247u8, 177u8],
10743            [55u8, 142u8, 194u8, 59u8],
10744            [66u8, 109u8, 49u8, 148u8],
10745            [79u8, 30u8, 242u8, 134u8],
10746            [82u8, 209u8, 144u8, 45u8],
10747            [105u8, 204u8, 106u8, 4u8],
10748            [113u8, 80u8, 24u8, 166u8],
10749            [130u8, 110u8, 65u8, 252u8],
10750            [133u8, 132u8, 210u8, 63u8],
10751            [141u8, 165u8, 203u8, 91u8],
10752            [150u8, 193u8, 202u8, 97u8],
10753            [155u8, 170u8, 60u8, 201u8],
10754            [159u8, 219u8, 84u8, 167u8],
10755            [173u8, 60u8, 177u8, 204u8],
10756            [194u8, 59u8, 158u8, 158u8],
10757            [210u8, 77u8, 147u8, 61u8],
10758            [224u8, 48u8, 51u8, 1u8],
10759            [242u8, 253u8, 227u8, 139u8],
10760            [249u8, 229u8, 13u8, 25u8],
10761        ];
10762    }
10763    #[automatically_derived]
10764    impl alloy_sol_types::SolInterface for LightClientCalls {
10765        const NAME: &'static str = "LightClientCalls";
10766        const MIN_DATA_LENGTH: usize = 0usize;
10767        const COUNT: usize = 25usize;
10768        #[inline]
10769        fn selector(&self) -> [u8; 4] {
10770            match self {
10771                Self::UPGRADE_INTERFACE_VERSION(_) => {
10772                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
10773                }
10774                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
10775                Self::currentBlockNumber(_) => {
10776                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
10777                }
10778                Self::disablePermissionedProverMode(_) => {
10779                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
10780                }
10781                Self::finalizedState(_) => {
10782                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
10783                }
10784                Self::genesisStakeTableState(_) => {
10785                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
10786                }
10787                Self::genesisState(_) => {
10788                    <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR
10789                }
10790                Self::getHotShotCommitment(_) => {
10791                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
10792                }
10793                Self::getStateHistoryCount(_) => {
10794                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
10795                }
10796                Self::getVersion(_) => {
10797                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
10798                }
10799                Self::initialize(_) => {
10800                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
10801                }
10802                Self::isPermissionedProverEnabled(_) => {
10803                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
10804                }
10805                Self::lagOverEscapeHatchThreshold(_) => {
10806                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
10807                }
10808                Self::newFinalizedState(_) => {
10809                    <newFinalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
10810                }
10811                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
10812                Self::permissionedProver(_) => {
10813                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
10814                }
10815                Self::proxiableUUID(_) => {
10816                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
10817                }
10818                Self::renounceOwnership(_) => {
10819                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
10820                }
10821                Self::setPermissionedProver(_) => {
10822                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
10823                }
10824                Self::setstateHistoryRetentionPeriod(_) => {
10825                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
10826                }
10827                Self::stateHistoryCommitments(_) => {
10828                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
10829                }
10830                Self::stateHistoryFirstIndex(_) => {
10831                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
10832                }
10833                Self::stateHistoryRetentionPeriod(_) => {
10834                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
10835                }
10836                Self::transferOwnership(_) => {
10837                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
10838                }
10839                Self::upgradeToAndCall(_) => {
10840                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
10841                }
10842            }
10843        }
10844        #[inline]
10845        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
10846            Self::SELECTORS.get(i).copied()
10847        }
10848        #[inline]
10849        fn valid_selector(selector: [u8; 4]) -> bool {
10850            Self::SELECTORS.binary_search(&selector).is_ok()
10851        }
10852        #[inline]
10853        #[allow(non_snake_case)]
10854        fn abi_decode_raw(
10855            selector: [u8; 4],
10856            data: &[u8],
10857        ) -> alloy_sol_types::Result<Self> {
10858            static DECODE_SHIMS: &[fn(
10859                &[u8],
10860            ) -> alloy_sol_types::Result<LightClientCalls>] = &[
10861                {
10862                    fn setPermissionedProver(
10863                        data: &[u8],
10864                    ) -> alloy_sol_types::Result<LightClientCalls> {
10865                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
10866                                data,
10867                            )
10868                            .map(LightClientCalls::setPermissionedProver)
10869                    }
10870                    setPermissionedProver
10871                },
10872                {
10873                    fn stateHistoryCommitments(
10874                        data: &[u8],
10875                    ) -> alloy_sol_types::Result<LightClientCalls> {
10876                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
10877                                data,
10878                            )
10879                            .map(LightClientCalls::stateHistoryCommitments)
10880                    }
10881                    stateHistoryCommitments
10882                },
10883                {
10884                    fn getVersion(
10885                        data: &[u8],
10886                    ) -> alloy_sol_types::Result<LightClientCalls> {
10887                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
10888                                data,
10889                            )
10890                            .map(LightClientCalls::getVersion)
10891                    }
10892                    getVersion
10893                },
10894                {
10895                    fn _getVk(data: &[u8]) -> alloy_sol_types::Result<LightClientCalls> {
10896                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
10897                            .map(LightClientCalls::_getVk)
10898                    }
10899                    _getVk
10900                },
10901                {
10902                    fn newFinalizedState(
10903                        data: &[u8],
10904                    ) -> alloy_sol_types::Result<LightClientCalls> {
10905                        <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
10906                                data,
10907                            )
10908                            .map(LightClientCalls::newFinalizedState)
10909                    }
10910                    newFinalizedState
10911                },
10912                {
10913                    fn stateHistoryFirstIndex(
10914                        data: &[u8],
10915                    ) -> alloy_sol_types::Result<LightClientCalls> {
10916                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
10917                                data,
10918                            )
10919                            .map(LightClientCalls::stateHistoryFirstIndex)
10920                    }
10921                    stateHistoryFirstIndex
10922                },
10923                {
10924                    fn permissionedProver(
10925                        data: &[u8],
10926                    ) -> alloy_sol_types::Result<LightClientCalls> {
10927                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
10928                                data,
10929                            )
10930                            .map(LightClientCalls::permissionedProver)
10931                    }
10932                    permissionedProver
10933                },
10934                {
10935                    fn currentBlockNumber(
10936                        data: &[u8],
10937                    ) -> alloy_sol_types::Result<LightClientCalls> {
10938                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
10939                                data,
10940                            )
10941                            .map(LightClientCalls::currentBlockNumber)
10942                    }
10943                    currentBlockNumber
10944                },
10945                {
10946                    fn genesisStakeTableState(
10947                        data: &[u8],
10948                    ) -> alloy_sol_types::Result<LightClientCalls> {
10949                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
10950                                data,
10951                            )
10952                            .map(LightClientCalls::genesisStakeTableState)
10953                    }
10954                    genesisStakeTableState
10955                },
10956                {
10957                    fn upgradeToAndCall(
10958                        data: &[u8],
10959                    ) -> alloy_sol_types::Result<LightClientCalls> {
10960                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
10961                                data,
10962                            )
10963                            .map(LightClientCalls::upgradeToAndCall)
10964                    }
10965                    upgradeToAndCall
10966                },
10967                {
10968                    fn proxiableUUID(
10969                        data: &[u8],
10970                    ) -> alloy_sol_types::Result<LightClientCalls> {
10971                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
10972                                data,
10973                            )
10974                            .map(LightClientCalls::proxiableUUID)
10975                    }
10976                    proxiableUUID
10977                },
10978                {
10979                    fn disablePermissionedProverMode(
10980                        data: &[u8],
10981                    ) -> alloy_sol_types::Result<LightClientCalls> {
10982                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
10983                                data,
10984                            )
10985                            .map(LightClientCalls::disablePermissionedProverMode)
10986                    }
10987                    disablePermissionedProverMode
10988                },
10989                {
10990                    fn renounceOwnership(
10991                        data: &[u8],
10992                    ) -> alloy_sol_types::Result<LightClientCalls> {
10993                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
10994                                data,
10995                            )
10996                            .map(LightClientCalls::renounceOwnership)
10997                    }
10998                    renounceOwnership
10999                },
11000                {
11001                    fn isPermissionedProverEnabled(
11002                        data: &[u8],
11003                    ) -> alloy_sol_types::Result<LightClientCalls> {
11004                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
11005                                data,
11006                            )
11007                            .map(LightClientCalls::isPermissionedProverEnabled)
11008                    }
11009                    isPermissionedProverEnabled
11010                },
11011                {
11012                    fn getHotShotCommitment(
11013                        data: &[u8],
11014                    ) -> alloy_sol_types::Result<LightClientCalls> {
11015                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
11016                                data,
11017                            )
11018                            .map(LightClientCalls::getHotShotCommitment)
11019                    }
11020                    getHotShotCommitment
11021                },
11022                {
11023                    fn owner(data: &[u8]) -> alloy_sol_types::Result<LightClientCalls> {
11024                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
11025                            .map(LightClientCalls::owner)
11026                    }
11027                    owner
11028                },
11029                {
11030                    fn setstateHistoryRetentionPeriod(
11031                        data: &[u8],
11032                    ) -> alloy_sol_types::Result<LightClientCalls> {
11033                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
11034                                data,
11035                            )
11036                            .map(LightClientCalls::setstateHistoryRetentionPeriod)
11037                    }
11038                    setstateHistoryRetentionPeriod
11039                },
11040                {
11041                    fn initialize(
11042                        data: &[u8],
11043                    ) -> alloy_sol_types::Result<LightClientCalls> {
11044                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
11045                                data,
11046                            )
11047                            .map(LightClientCalls::initialize)
11048                    }
11049                    initialize
11050                },
11051                {
11052                    fn finalizedState(
11053                        data: &[u8],
11054                    ) -> alloy_sol_types::Result<LightClientCalls> {
11055                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
11056                                data,
11057                            )
11058                            .map(LightClientCalls::finalizedState)
11059                    }
11060                    finalizedState
11061                },
11062                {
11063                    fn UPGRADE_INTERFACE_VERSION(
11064                        data: &[u8],
11065                    ) -> alloy_sol_types::Result<LightClientCalls> {
11066                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
11067                                data,
11068                            )
11069                            .map(LightClientCalls::UPGRADE_INTERFACE_VERSION)
11070                    }
11071                    UPGRADE_INTERFACE_VERSION
11072                },
11073                {
11074                    fn stateHistoryRetentionPeriod(
11075                        data: &[u8],
11076                    ) -> alloy_sol_types::Result<LightClientCalls> {
11077                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
11078                                data,
11079                            )
11080                            .map(LightClientCalls::stateHistoryRetentionPeriod)
11081                    }
11082                    stateHistoryRetentionPeriod
11083                },
11084                {
11085                    fn genesisState(
11086                        data: &[u8],
11087                    ) -> alloy_sol_types::Result<LightClientCalls> {
11088                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
11089                                data,
11090                            )
11091                            .map(LightClientCalls::genesisState)
11092                    }
11093                    genesisState
11094                },
11095                {
11096                    fn lagOverEscapeHatchThreshold(
11097                        data: &[u8],
11098                    ) -> alloy_sol_types::Result<LightClientCalls> {
11099                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
11100                                data,
11101                            )
11102                            .map(LightClientCalls::lagOverEscapeHatchThreshold)
11103                    }
11104                    lagOverEscapeHatchThreshold
11105                },
11106                {
11107                    fn transferOwnership(
11108                        data: &[u8],
11109                    ) -> alloy_sol_types::Result<LightClientCalls> {
11110                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
11111                                data,
11112                            )
11113                            .map(LightClientCalls::transferOwnership)
11114                    }
11115                    transferOwnership
11116                },
11117                {
11118                    fn getStateHistoryCount(
11119                        data: &[u8],
11120                    ) -> alloy_sol_types::Result<LightClientCalls> {
11121                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
11122                                data,
11123                            )
11124                            .map(LightClientCalls::getStateHistoryCount)
11125                    }
11126                    getStateHistoryCount
11127                },
11128            ];
11129            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
11130                return Err(
11131                    alloy_sol_types::Error::unknown_selector(
11132                        <Self as alloy_sol_types::SolInterface>::NAME,
11133                        selector,
11134                    ),
11135                );
11136            };
11137            DECODE_SHIMS[idx](data)
11138        }
11139        #[inline]
11140        #[allow(non_snake_case)]
11141        fn abi_decode_raw_validate(
11142            selector: [u8; 4],
11143            data: &[u8],
11144        ) -> alloy_sol_types::Result<Self> {
11145            static DECODE_VALIDATE_SHIMS: &[fn(
11146                &[u8],
11147            ) -> alloy_sol_types::Result<LightClientCalls>] = &[
11148                {
11149                    fn setPermissionedProver(
11150                        data: &[u8],
11151                    ) -> alloy_sol_types::Result<LightClientCalls> {
11152                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11153                                data,
11154                            )
11155                            .map(LightClientCalls::setPermissionedProver)
11156                    }
11157                    setPermissionedProver
11158                },
11159                {
11160                    fn stateHistoryCommitments(
11161                        data: &[u8],
11162                    ) -> alloy_sol_types::Result<LightClientCalls> {
11163                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11164                                data,
11165                            )
11166                            .map(LightClientCalls::stateHistoryCommitments)
11167                    }
11168                    stateHistoryCommitments
11169                },
11170                {
11171                    fn getVersion(
11172                        data: &[u8],
11173                    ) -> alloy_sol_types::Result<LightClientCalls> {
11174                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11175                                data,
11176                            )
11177                            .map(LightClientCalls::getVersion)
11178                    }
11179                    getVersion
11180                },
11181                {
11182                    fn _getVk(data: &[u8]) -> alloy_sol_types::Result<LightClientCalls> {
11183                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11184                                data,
11185                            )
11186                            .map(LightClientCalls::_getVk)
11187                    }
11188                    _getVk
11189                },
11190                {
11191                    fn newFinalizedState(
11192                        data: &[u8],
11193                    ) -> alloy_sol_types::Result<LightClientCalls> {
11194                        <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11195                                data,
11196                            )
11197                            .map(LightClientCalls::newFinalizedState)
11198                    }
11199                    newFinalizedState
11200                },
11201                {
11202                    fn stateHistoryFirstIndex(
11203                        data: &[u8],
11204                    ) -> alloy_sol_types::Result<LightClientCalls> {
11205                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11206                                data,
11207                            )
11208                            .map(LightClientCalls::stateHistoryFirstIndex)
11209                    }
11210                    stateHistoryFirstIndex
11211                },
11212                {
11213                    fn permissionedProver(
11214                        data: &[u8],
11215                    ) -> alloy_sol_types::Result<LightClientCalls> {
11216                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11217                                data,
11218                            )
11219                            .map(LightClientCalls::permissionedProver)
11220                    }
11221                    permissionedProver
11222                },
11223                {
11224                    fn currentBlockNumber(
11225                        data: &[u8],
11226                    ) -> alloy_sol_types::Result<LightClientCalls> {
11227                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11228                                data,
11229                            )
11230                            .map(LightClientCalls::currentBlockNumber)
11231                    }
11232                    currentBlockNumber
11233                },
11234                {
11235                    fn genesisStakeTableState(
11236                        data: &[u8],
11237                    ) -> alloy_sol_types::Result<LightClientCalls> {
11238                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11239                                data,
11240                            )
11241                            .map(LightClientCalls::genesisStakeTableState)
11242                    }
11243                    genesisStakeTableState
11244                },
11245                {
11246                    fn upgradeToAndCall(
11247                        data: &[u8],
11248                    ) -> alloy_sol_types::Result<LightClientCalls> {
11249                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11250                                data,
11251                            )
11252                            .map(LightClientCalls::upgradeToAndCall)
11253                    }
11254                    upgradeToAndCall
11255                },
11256                {
11257                    fn proxiableUUID(
11258                        data: &[u8],
11259                    ) -> alloy_sol_types::Result<LightClientCalls> {
11260                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11261                                data,
11262                            )
11263                            .map(LightClientCalls::proxiableUUID)
11264                    }
11265                    proxiableUUID
11266                },
11267                {
11268                    fn disablePermissionedProverMode(
11269                        data: &[u8],
11270                    ) -> alloy_sol_types::Result<LightClientCalls> {
11271                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11272                                data,
11273                            )
11274                            .map(LightClientCalls::disablePermissionedProverMode)
11275                    }
11276                    disablePermissionedProverMode
11277                },
11278                {
11279                    fn renounceOwnership(
11280                        data: &[u8],
11281                    ) -> alloy_sol_types::Result<LightClientCalls> {
11282                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11283                                data,
11284                            )
11285                            .map(LightClientCalls::renounceOwnership)
11286                    }
11287                    renounceOwnership
11288                },
11289                {
11290                    fn isPermissionedProverEnabled(
11291                        data: &[u8],
11292                    ) -> alloy_sol_types::Result<LightClientCalls> {
11293                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11294                                data,
11295                            )
11296                            .map(LightClientCalls::isPermissionedProverEnabled)
11297                    }
11298                    isPermissionedProverEnabled
11299                },
11300                {
11301                    fn getHotShotCommitment(
11302                        data: &[u8],
11303                    ) -> alloy_sol_types::Result<LightClientCalls> {
11304                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11305                                data,
11306                            )
11307                            .map(LightClientCalls::getHotShotCommitment)
11308                    }
11309                    getHotShotCommitment
11310                },
11311                {
11312                    fn owner(data: &[u8]) -> alloy_sol_types::Result<LightClientCalls> {
11313                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11314                                data,
11315                            )
11316                            .map(LightClientCalls::owner)
11317                    }
11318                    owner
11319                },
11320                {
11321                    fn setstateHistoryRetentionPeriod(
11322                        data: &[u8],
11323                    ) -> alloy_sol_types::Result<LightClientCalls> {
11324                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11325                                data,
11326                            )
11327                            .map(LightClientCalls::setstateHistoryRetentionPeriod)
11328                    }
11329                    setstateHistoryRetentionPeriod
11330                },
11331                {
11332                    fn initialize(
11333                        data: &[u8],
11334                    ) -> alloy_sol_types::Result<LightClientCalls> {
11335                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11336                                data,
11337                            )
11338                            .map(LightClientCalls::initialize)
11339                    }
11340                    initialize
11341                },
11342                {
11343                    fn finalizedState(
11344                        data: &[u8],
11345                    ) -> alloy_sol_types::Result<LightClientCalls> {
11346                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11347                                data,
11348                            )
11349                            .map(LightClientCalls::finalizedState)
11350                    }
11351                    finalizedState
11352                },
11353                {
11354                    fn UPGRADE_INTERFACE_VERSION(
11355                        data: &[u8],
11356                    ) -> alloy_sol_types::Result<LightClientCalls> {
11357                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11358                                data,
11359                            )
11360                            .map(LightClientCalls::UPGRADE_INTERFACE_VERSION)
11361                    }
11362                    UPGRADE_INTERFACE_VERSION
11363                },
11364                {
11365                    fn stateHistoryRetentionPeriod(
11366                        data: &[u8],
11367                    ) -> alloy_sol_types::Result<LightClientCalls> {
11368                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11369                                data,
11370                            )
11371                            .map(LightClientCalls::stateHistoryRetentionPeriod)
11372                    }
11373                    stateHistoryRetentionPeriod
11374                },
11375                {
11376                    fn genesisState(
11377                        data: &[u8],
11378                    ) -> alloy_sol_types::Result<LightClientCalls> {
11379                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11380                                data,
11381                            )
11382                            .map(LightClientCalls::genesisState)
11383                    }
11384                    genesisState
11385                },
11386                {
11387                    fn lagOverEscapeHatchThreshold(
11388                        data: &[u8],
11389                    ) -> alloy_sol_types::Result<LightClientCalls> {
11390                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11391                                data,
11392                            )
11393                            .map(LightClientCalls::lagOverEscapeHatchThreshold)
11394                    }
11395                    lagOverEscapeHatchThreshold
11396                },
11397                {
11398                    fn transferOwnership(
11399                        data: &[u8],
11400                    ) -> alloy_sol_types::Result<LightClientCalls> {
11401                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11402                                data,
11403                            )
11404                            .map(LightClientCalls::transferOwnership)
11405                    }
11406                    transferOwnership
11407                },
11408                {
11409                    fn getStateHistoryCount(
11410                        data: &[u8],
11411                    ) -> alloy_sol_types::Result<LightClientCalls> {
11412                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11413                                data,
11414                            )
11415                            .map(LightClientCalls::getStateHistoryCount)
11416                    }
11417                    getStateHistoryCount
11418                },
11419            ];
11420            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
11421                return Err(
11422                    alloy_sol_types::Error::unknown_selector(
11423                        <Self as alloy_sol_types::SolInterface>::NAME,
11424                        selector,
11425                    ),
11426                );
11427            };
11428            DECODE_VALIDATE_SHIMS[idx](data)
11429        }
11430        #[inline]
11431        fn abi_encoded_size(&self) -> usize {
11432            match self {
11433                Self::UPGRADE_INTERFACE_VERSION(inner) => {
11434                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
11435                        inner,
11436                    )
11437                }
11438                Self::_getVk(inner) => {
11439                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11440                }
11441                Self::currentBlockNumber(inner) => {
11442                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
11443                        inner,
11444                    )
11445                }
11446                Self::disablePermissionedProverMode(inner) => {
11447                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
11448                        inner,
11449                    )
11450                }
11451                Self::finalizedState(inner) => {
11452                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11453                        inner,
11454                    )
11455                }
11456                Self::genesisStakeTableState(inner) => {
11457                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11458                        inner,
11459                    )
11460                }
11461                Self::genesisState(inner) => {
11462                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11463                        inner,
11464                    )
11465                }
11466                Self::getHotShotCommitment(inner) => {
11467                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
11468                        inner,
11469                    )
11470                }
11471                Self::getStateHistoryCount(inner) => {
11472                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
11473                        inner,
11474                    )
11475                }
11476                Self::getVersion(inner) => {
11477                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11478                }
11479                Self::initialize(inner) => {
11480                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11481                }
11482                Self::isPermissionedProverEnabled(inner) => {
11483                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
11484                        inner,
11485                    )
11486                }
11487                Self::lagOverEscapeHatchThreshold(inner) => {
11488                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
11489                        inner,
11490                    )
11491                }
11492                Self::newFinalizedState(inner) => {
11493                    <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11494                        inner,
11495                    )
11496                }
11497                Self::owner(inner) => {
11498                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11499                }
11500                Self::permissionedProver(inner) => {
11501                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
11502                        inner,
11503                    )
11504                }
11505                Self::proxiableUUID(inner) => {
11506                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
11507                        inner,
11508                    )
11509                }
11510                Self::renounceOwnership(inner) => {
11511                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
11512                        inner,
11513                    )
11514                }
11515                Self::setPermissionedProver(inner) => {
11516                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
11517                        inner,
11518                    )
11519                }
11520                Self::setstateHistoryRetentionPeriod(inner) => {
11521                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
11522                        inner,
11523                    )
11524                }
11525                Self::stateHistoryCommitments(inner) => {
11526                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
11527                        inner,
11528                    )
11529                }
11530                Self::stateHistoryFirstIndex(inner) => {
11531                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
11532                        inner,
11533                    )
11534                }
11535                Self::stateHistoryRetentionPeriod(inner) => {
11536                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
11537                        inner,
11538                    )
11539                }
11540                Self::transferOwnership(inner) => {
11541                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
11542                        inner,
11543                    )
11544                }
11545                Self::upgradeToAndCall(inner) => {
11546                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
11547                        inner,
11548                    )
11549                }
11550            }
11551        }
11552        #[inline]
11553        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
11554            match self {
11555                Self::UPGRADE_INTERFACE_VERSION(inner) => {
11556                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
11557                        inner,
11558                        out,
11559                    )
11560                }
11561                Self::_getVk(inner) => {
11562                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
11563                }
11564                Self::currentBlockNumber(inner) => {
11565                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
11566                        inner,
11567                        out,
11568                    )
11569                }
11570                Self::disablePermissionedProverMode(inner) => {
11571                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
11572                        inner,
11573                        out,
11574                    )
11575                }
11576                Self::finalizedState(inner) => {
11577                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
11578                        inner,
11579                        out,
11580                    )
11581                }
11582                Self::genesisStakeTableState(inner) => {
11583                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
11584                        inner,
11585                        out,
11586                    )
11587                }
11588                Self::genesisState(inner) => {
11589                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
11590                        inner,
11591                        out,
11592                    )
11593                }
11594                Self::getHotShotCommitment(inner) => {
11595                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
11596                        inner,
11597                        out,
11598                    )
11599                }
11600                Self::getStateHistoryCount(inner) => {
11601                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
11602                        inner,
11603                        out,
11604                    )
11605                }
11606                Self::getVersion(inner) => {
11607                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
11608                        inner,
11609                        out,
11610                    )
11611                }
11612                Self::initialize(inner) => {
11613                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
11614                        inner,
11615                        out,
11616                    )
11617                }
11618                Self::isPermissionedProverEnabled(inner) => {
11619                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
11620                        inner,
11621                        out,
11622                    )
11623                }
11624                Self::lagOverEscapeHatchThreshold(inner) => {
11625                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
11626                        inner,
11627                        out,
11628                    )
11629                }
11630                Self::newFinalizedState(inner) => {
11631                    <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
11632                        inner,
11633                        out,
11634                    )
11635                }
11636                Self::owner(inner) => {
11637                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
11638                }
11639                Self::permissionedProver(inner) => {
11640                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
11641                        inner,
11642                        out,
11643                    )
11644                }
11645                Self::proxiableUUID(inner) => {
11646                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
11647                        inner,
11648                        out,
11649                    )
11650                }
11651                Self::renounceOwnership(inner) => {
11652                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
11653                        inner,
11654                        out,
11655                    )
11656                }
11657                Self::setPermissionedProver(inner) => {
11658                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
11659                        inner,
11660                        out,
11661                    )
11662                }
11663                Self::setstateHistoryRetentionPeriod(inner) => {
11664                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
11665                        inner,
11666                        out,
11667                    )
11668                }
11669                Self::stateHistoryCommitments(inner) => {
11670                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
11671                        inner,
11672                        out,
11673                    )
11674                }
11675                Self::stateHistoryFirstIndex(inner) => {
11676                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
11677                        inner,
11678                        out,
11679                    )
11680                }
11681                Self::stateHistoryRetentionPeriod(inner) => {
11682                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
11683                        inner,
11684                        out,
11685                    )
11686                }
11687                Self::transferOwnership(inner) => {
11688                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
11689                        inner,
11690                        out,
11691                    )
11692                }
11693                Self::upgradeToAndCall(inner) => {
11694                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
11695                        inner,
11696                        out,
11697                    )
11698                }
11699            }
11700        }
11701    }
11702    ///Container for all the [`LightClient`](self) custom errors.
11703    #[derive(serde::Serialize, serde::Deserialize)]
11704    #[derive(Debug, PartialEq, Eq, Hash)]
11705    pub enum LightClientErrors {
11706        #[allow(missing_docs)]
11707        AddressEmptyCode(AddressEmptyCode),
11708        #[allow(missing_docs)]
11709        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
11710        #[allow(missing_docs)]
11711        ERC1967NonPayable(ERC1967NonPayable),
11712        #[allow(missing_docs)]
11713        FailedInnerCall(FailedInnerCall),
11714        #[allow(missing_docs)]
11715        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
11716        #[allow(missing_docs)]
11717        InvalidAddress(InvalidAddress),
11718        #[allow(missing_docs)]
11719        InvalidArgs(InvalidArgs),
11720        #[allow(missing_docs)]
11721        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
11722        #[allow(missing_docs)]
11723        InvalidInitialization(InvalidInitialization),
11724        #[allow(missing_docs)]
11725        InvalidMaxStateHistory(InvalidMaxStateHistory),
11726        #[allow(missing_docs)]
11727        InvalidProof(InvalidProof),
11728        #[allow(missing_docs)]
11729        InvalidScalar(InvalidScalar),
11730        #[allow(missing_docs)]
11731        NoChangeRequired(NoChangeRequired),
11732        #[allow(missing_docs)]
11733        NotInitializing(NotInitializing),
11734        #[allow(missing_docs)]
11735        OutdatedState(OutdatedState),
11736        #[allow(missing_docs)]
11737        OwnableInvalidOwner(OwnableInvalidOwner),
11738        #[allow(missing_docs)]
11739        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
11740        #[allow(missing_docs)]
11741        ProverNotPermissioned(ProverNotPermissioned),
11742        #[allow(missing_docs)]
11743        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
11744        #[allow(missing_docs)]
11745        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
11746        #[allow(missing_docs)]
11747        WrongStakeTableUsed(WrongStakeTableUsed),
11748    }
11749    #[automatically_derived]
11750    impl LightClientErrors {
11751        /// All the selectors of this enum.
11752        ///
11753        /// Note that the selectors might not be in the same order as the variants.
11754        /// No guarantees are made about the order of the selectors.
11755        ///
11756        /// Prefer using `SolInterface` methods instead.
11757        pub const SELECTORS: &'static [[u8; 4usize]] = &[
11758            [5u8, 28u8, 70u8, 239u8],
11759            [5u8, 176u8, 92u8, 204u8],
11760            [9u8, 189u8, 227u8, 57u8],
11761            [17u8, 140u8, 218u8, 167u8],
11762            [20u8, 37u8, 234u8, 66u8],
11763            [30u8, 79u8, 189u8, 247u8],
11764            [76u8, 156u8, 140u8, 227u8],
11765            [81u8, 97u8, 128u8, 137u8],
11766            [97u8, 90u8, 146u8, 100u8],
11767            [153u8, 150u8, 179u8, 21u8],
11768            [161u8, 186u8, 7u8, 238u8],
11769            [163u8, 166u8, 71u8, 128u8],
11770            [168u8, 99u8, 174u8, 201u8],
11771            [170u8, 29u8, 73u8, 164u8],
11772            [176u8, 180u8, 56u8, 119u8],
11773            [179u8, 152u8, 151u8, 159u8],
11774            [215u8, 230u8, 188u8, 248u8],
11775            [224u8, 124u8, 141u8, 186u8],
11776            [230u8, 196u8, 36u8, 123u8],
11777            [244u8, 160u8, 238u8, 224u8],
11778            [249u8, 46u8, 232u8, 169u8],
11779        ];
11780    }
11781    #[automatically_derived]
11782    impl alloy_sol_types::SolInterface for LightClientErrors {
11783        const NAME: &'static str = "LightClientErrors";
11784        const MIN_DATA_LENGTH: usize = 0usize;
11785        const COUNT: usize = 21usize;
11786        #[inline]
11787        fn selector(&self) -> [u8; 4] {
11788            match self {
11789                Self::AddressEmptyCode(_) => {
11790                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
11791                }
11792                Self::ERC1967InvalidImplementation(_) => {
11793                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
11794                }
11795                Self::ERC1967NonPayable(_) => {
11796                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
11797                }
11798                Self::FailedInnerCall(_) => {
11799                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
11800                }
11801                Self::InsufficientSnapshotHistory(_) => {
11802                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
11803                }
11804                Self::InvalidAddress(_) => {
11805                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
11806                }
11807                Self::InvalidArgs(_) => {
11808                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
11809                }
11810                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
11811                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
11812                }
11813                Self::InvalidInitialization(_) => {
11814                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
11815                }
11816                Self::InvalidMaxStateHistory(_) => {
11817                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
11818                }
11819                Self::InvalidProof(_) => {
11820                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
11821                }
11822                Self::InvalidScalar(_) => {
11823                    <InvalidScalar as alloy_sol_types::SolError>::SELECTOR
11824                }
11825                Self::NoChangeRequired(_) => {
11826                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
11827                }
11828                Self::NotInitializing(_) => {
11829                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
11830                }
11831                Self::OutdatedState(_) => {
11832                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
11833                }
11834                Self::OwnableInvalidOwner(_) => {
11835                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
11836                }
11837                Self::OwnableUnauthorizedAccount(_) => {
11838                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
11839                }
11840                Self::ProverNotPermissioned(_) => {
11841                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
11842                }
11843                Self::UUPSUnauthorizedCallContext(_) => {
11844                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
11845                }
11846                Self::UUPSUnsupportedProxiableUUID(_) => {
11847                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
11848                }
11849                Self::WrongStakeTableUsed(_) => {
11850                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
11851                }
11852            }
11853        }
11854        #[inline]
11855        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
11856            Self::SELECTORS.get(i).copied()
11857        }
11858        #[inline]
11859        fn valid_selector(selector: [u8; 4]) -> bool {
11860            Self::SELECTORS.binary_search(&selector).is_ok()
11861        }
11862        #[inline]
11863        #[allow(non_snake_case)]
11864        fn abi_decode_raw(
11865            selector: [u8; 4],
11866            data: &[u8],
11867        ) -> alloy_sol_types::Result<Self> {
11868            static DECODE_SHIMS: &[fn(
11869                &[u8],
11870            ) -> alloy_sol_types::Result<LightClientErrors>] = &[
11871                {
11872                    fn OutdatedState(
11873                        data: &[u8],
11874                    ) -> alloy_sol_types::Result<LightClientErrors> {
11875                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(
11876                                data,
11877                            )
11878                            .map(LightClientErrors::OutdatedState)
11879                    }
11880                    OutdatedState
11881                },
11882                {
11883                    fn InvalidScalar(
11884                        data: &[u8],
11885                    ) -> alloy_sol_types::Result<LightClientErrors> {
11886                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw(
11887                                data,
11888                            )
11889                            .map(LightClientErrors::InvalidScalar)
11890                    }
11891                    InvalidScalar
11892                },
11893                {
11894                    fn InvalidProof(
11895                        data: &[u8],
11896                    ) -> alloy_sol_types::Result<LightClientErrors> {
11897                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(data)
11898                            .map(LightClientErrors::InvalidProof)
11899                    }
11900                    InvalidProof
11901                },
11902                {
11903                    fn OwnableUnauthorizedAccount(
11904                        data: &[u8],
11905                    ) -> alloy_sol_types::Result<LightClientErrors> {
11906                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
11907                                data,
11908                            )
11909                            .map(LightClientErrors::OwnableUnauthorizedAccount)
11910                    }
11911                    OwnableUnauthorizedAccount
11912                },
11913                {
11914                    fn FailedInnerCall(
11915                        data: &[u8],
11916                    ) -> alloy_sol_types::Result<LightClientErrors> {
11917                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
11918                                data,
11919                            )
11920                            .map(LightClientErrors::FailedInnerCall)
11921                    }
11922                    FailedInnerCall
11923                },
11924                {
11925                    fn OwnableInvalidOwner(
11926                        data: &[u8],
11927                    ) -> alloy_sol_types::Result<LightClientErrors> {
11928                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
11929                                data,
11930                            )
11931                            .map(LightClientErrors::OwnableInvalidOwner)
11932                    }
11933                    OwnableInvalidOwner
11934                },
11935                {
11936                    fn ERC1967InvalidImplementation(
11937                        data: &[u8],
11938                    ) -> alloy_sol_types::Result<LightClientErrors> {
11939                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
11940                                data,
11941                            )
11942                            .map(LightClientErrors::ERC1967InvalidImplementation)
11943                    }
11944                    ERC1967InvalidImplementation
11945                },
11946                {
11947                    fn WrongStakeTableUsed(
11948                        data: &[u8],
11949                    ) -> alloy_sol_types::Result<LightClientErrors> {
11950                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
11951                                data,
11952                            )
11953                            .map(LightClientErrors::WrongStakeTableUsed)
11954                    }
11955                    WrongStakeTableUsed
11956                },
11957                {
11958                    fn InvalidHotShotBlockForCommitmentCheck(
11959                        data: &[u8],
11960                    ) -> alloy_sol_types::Result<LightClientErrors> {
11961                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
11962                                data,
11963                            )
11964                            .map(
11965                                LightClientErrors::InvalidHotShotBlockForCommitmentCheck,
11966                            )
11967                    }
11968                    InvalidHotShotBlockForCommitmentCheck
11969                },
11970                {
11971                    fn AddressEmptyCode(
11972                        data: &[u8],
11973                    ) -> alloy_sol_types::Result<LightClientErrors> {
11974                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
11975                                data,
11976                            )
11977                            .map(LightClientErrors::AddressEmptyCode)
11978                    }
11979                    AddressEmptyCode
11980                },
11981                {
11982                    fn InvalidArgs(
11983                        data: &[u8],
11984                    ) -> alloy_sol_types::Result<LightClientErrors> {
11985                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(data)
11986                            .map(LightClientErrors::InvalidArgs)
11987                    }
11988                    InvalidArgs
11989                },
11990                {
11991                    fn ProverNotPermissioned(
11992                        data: &[u8],
11993                    ) -> alloy_sol_types::Result<LightClientErrors> {
11994                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
11995                                data,
11996                            )
11997                            .map(LightClientErrors::ProverNotPermissioned)
11998                    }
11999                    ProverNotPermissioned
12000                },
12001                {
12002                    fn NoChangeRequired(
12003                        data: &[u8],
12004                    ) -> alloy_sol_types::Result<LightClientErrors> {
12005                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
12006                                data,
12007                            )
12008                            .map(LightClientErrors::NoChangeRequired)
12009                    }
12010                    NoChangeRequired
12011                },
12012                {
12013                    fn UUPSUnsupportedProxiableUUID(
12014                        data: &[u8],
12015                    ) -> alloy_sol_types::Result<LightClientErrors> {
12016                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
12017                                data,
12018                            )
12019                            .map(LightClientErrors::UUPSUnsupportedProxiableUUID)
12020                    }
12021                    UUPSUnsupportedProxiableUUID
12022                },
12023                {
12024                    fn InsufficientSnapshotHistory(
12025                        data: &[u8],
12026                    ) -> alloy_sol_types::Result<LightClientErrors> {
12027                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
12028                                data,
12029                            )
12030                            .map(LightClientErrors::InsufficientSnapshotHistory)
12031                    }
12032                    InsufficientSnapshotHistory
12033                },
12034                {
12035                    fn ERC1967NonPayable(
12036                        data: &[u8],
12037                    ) -> alloy_sol_types::Result<LightClientErrors> {
12038                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
12039                                data,
12040                            )
12041                            .map(LightClientErrors::ERC1967NonPayable)
12042                    }
12043                    ERC1967NonPayable
12044                },
12045                {
12046                    fn NotInitializing(
12047                        data: &[u8],
12048                    ) -> alloy_sol_types::Result<LightClientErrors> {
12049                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
12050                                data,
12051                            )
12052                            .map(LightClientErrors::NotInitializing)
12053                    }
12054                    NotInitializing
12055                },
12056                {
12057                    fn UUPSUnauthorizedCallContext(
12058                        data: &[u8],
12059                    ) -> alloy_sol_types::Result<LightClientErrors> {
12060                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
12061                                data,
12062                            )
12063                            .map(LightClientErrors::UUPSUnauthorizedCallContext)
12064                    }
12065                    UUPSUnauthorizedCallContext
12066                },
12067                {
12068                    fn InvalidAddress(
12069                        data: &[u8],
12070                    ) -> alloy_sol_types::Result<LightClientErrors> {
12071                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
12072                                data,
12073                            )
12074                            .map(LightClientErrors::InvalidAddress)
12075                    }
12076                    InvalidAddress
12077                },
12078                {
12079                    fn InvalidMaxStateHistory(
12080                        data: &[u8],
12081                    ) -> alloy_sol_types::Result<LightClientErrors> {
12082                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
12083                                data,
12084                            )
12085                            .map(LightClientErrors::InvalidMaxStateHistory)
12086                    }
12087                    InvalidMaxStateHistory
12088                },
12089                {
12090                    fn InvalidInitialization(
12091                        data: &[u8],
12092                    ) -> alloy_sol_types::Result<LightClientErrors> {
12093                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
12094                                data,
12095                            )
12096                            .map(LightClientErrors::InvalidInitialization)
12097                    }
12098                    InvalidInitialization
12099                },
12100            ];
12101            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
12102                return Err(
12103                    alloy_sol_types::Error::unknown_selector(
12104                        <Self as alloy_sol_types::SolInterface>::NAME,
12105                        selector,
12106                    ),
12107                );
12108            };
12109            DECODE_SHIMS[idx](data)
12110        }
12111        #[inline]
12112        #[allow(non_snake_case)]
12113        fn abi_decode_raw_validate(
12114            selector: [u8; 4],
12115            data: &[u8],
12116        ) -> alloy_sol_types::Result<Self> {
12117            static DECODE_VALIDATE_SHIMS: &[fn(
12118                &[u8],
12119            ) -> alloy_sol_types::Result<LightClientErrors>] = &[
12120                {
12121                    fn OutdatedState(
12122                        data: &[u8],
12123                    ) -> alloy_sol_types::Result<LightClientErrors> {
12124                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw_validate(
12125                                data,
12126                            )
12127                            .map(LightClientErrors::OutdatedState)
12128                    }
12129                    OutdatedState
12130                },
12131                {
12132                    fn InvalidScalar(
12133                        data: &[u8],
12134                    ) -> alloy_sol_types::Result<LightClientErrors> {
12135                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw_validate(
12136                                data,
12137                            )
12138                            .map(LightClientErrors::InvalidScalar)
12139                    }
12140                    InvalidScalar
12141                },
12142                {
12143                    fn InvalidProof(
12144                        data: &[u8],
12145                    ) -> alloy_sol_types::Result<LightClientErrors> {
12146                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw_validate(
12147                                data,
12148                            )
12149                            .map(LightClientErrors::InvalidProof)
12150                    }
12151                    InvalidProof
12152                },
12153                {
12154                    fn OwnableUnauthorizedAccount(
12155                        data: &[u8],
12156                    ) -> alloy_sol_types::Result<LightClientErrors> {
12157                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
12158                                data,
12159                            )
12160                            .map(LightClientErrors::OwnableUnauthorizedAccount)
12161                    }
12162                    OwnableUnauthorizedAccount
12163                },
12164                {
12165                    fn FailedInnerCall(
12166                        data: &[u8],
12167                    ) -> alloy_sol_types::Result<LightClientErrors> {
12168                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
12169                                data,
12170                            )
12171                            .map(LightClientErrors::FailedInnerCall)
12172                    }
12173                    FailedInnerCall
12174                },
12175                {
12176                    fn OwnableInvalidOwner(
12177                        data: &[u8],
12178                    ) -> alloy_sol_types::Result<LightClientErrors> {
12179                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
12180                                data,
12181                            )
12182                            .map(LightClientErrors::OwnableInvalidOwner)
12183                    }
12184                    OwnableInvalidOwner
12185                },
12186                {
12187                    fn ERC1967InvalidImplementation(
12188                        data: &[u8],
12189                    ) -> alloy_sol_types::Result<LightClientErrors> {
12190                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_validate(
12191                                data,
12192                            )
12193                            .map(LightClientErrors::ERC1967InvalidImplementation)
12194                    }
12195                    ERC1967InvalidImplementation
12196                },
12197                {
12198                    fn WrongStakeTableUsed(
12199                        data: &[u8],
12200                    ) -> alloy_sol_types::Result<LightClientErrors> {
12201                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
12202                                data,
12203                            )
12204                            .map(LightClientErrors::WrongStakeTableUsed)
12205                    }
12206                    WrongStakeTableUsed
12207                },
12208                {
12209                    fn InvalidHotShotBlockForCommitmentCheck(
12210                        data: &[u8],
12211                    ) -> alloy_sol_types::Result<LightClientErrors> {
12212                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw_validate(
12213                                data,
12214                            )
12215                            .map(
12216                                LightClientErrors::InvalidHotShotBlockForCommitmentCheck,
12217                            )
12218                    }
12219                    InvalidHotShotBlockForCommitmentCheck
12220                },
12221                {
12222                    fn AddressEmptyCode(
12223                        data: &[u8],
12224                    ) -> alloy_sol_types::Result<LightClientErrors> {
12225                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_validate(
12226                                data,
12227                            )
12228                            .map(LightClientErrors::AddressEmptyCode)
12229                    }
12230                    AddressEmptyCode
12231                },
12232                {
12233                    fn InvalidArgs(
12234                        data: &[u8],
12235                    ) -> alloy_sol_types::Result<LightClientErrors> {
12236                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw_validate(
12237                                data,
12238                            )
12239                            .map(LightClientErrors::InvalidArgs)
12240                    }
12241                    InvalidArgs
12242                },
12243                {
12244                    fn ProverNotPermissioned(
12245                        data: &[u8],
12246                    ) -> alloy_sol_types::Result<LightClientErrors> {
12247                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw_validate(
12248                                data,
12249                            )
12250                            .map(LightClientErrors::ProverNotPermissioned)
12251                    }
12252                    ProverNotPermissioned
12253                },
12254                {
12255                    fn NoChangeRequired(
12256                        data: &[u8],
12257                    ) -> alloy_sol_types::Result<LightClientErrors> {
12258                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw_validate(
12259                                data,
12260                            )
12261                            .map(LightClientErrors::NoChangeRequired)
12262                    }
12263                    NoChangeRequired
12264                },
12265                {
12266                    fn UUPSUnsupportedProxiableUUID(
12267                        data: &[u8],
12268                    ) -> alloy_sol_types::Result<LightClientErrors> {
12269                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_validate(
12270                                data,
12271                            )
12272                            .map(LightClientErrors::UUPSUnsupportedProxiableUUID)
12273                    }
12274                    UUPSUnsupportedProxiableUUID
12275                },
12276                {
12277                    fn InsufficientSnapshotHistory(
12278                        data: &[u8],
12279                    ) -> alloy_sol_types::Result<LightClientErrors> {
12280                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
12281                                data,
12282                            )
12283                            .map(LightClientErrors::InsufficientSnapshotHistory)
12284                    }
12285                    InsufficientSnapshotHistory
12286                },
12287                {
12288                    fn ERC1967NonPayable(
12289                        data: &[u8],
12290                    ) -> alloy_sol_types::Result<LightClientErrors> {
12291                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_validate(
12292                                data,
12293                            )
12294                            .map(LightClientErrors::ERC1967NonPayable)
12295                    }
12296                    ERC1967NonPayable
12297                },
12298                {
12299                    fn NotInitializing(
12300                        data: &[u8],
12301                    ) -> alloy_sol_types::Result<LightClientErrors> {
12302                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_validate(
12303                                data,
12304                            )
12305                            .map(LightClientErrors::NotInitializing)
12306                    }
12307                    NotInitializing
12308                },
12309                {
12310                    fn UUPSUnauthorizedCallContext(
12311                        data: &[u8],
12312                    ) -> alloy_sol_types::Result<LightClientErrors> {
12313                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_validate(
12314                                data,
12315                            )
12316                            .map(LightClientErrors::UUPSUnauthorizedCallContext)
12317                    }
12318                    UUPSUnauthorizedCallContext
12319                },
12320                {
12321                    fn InvalidAddress(
12322                        data: &[u8],
12323                    ) -> alloy_sol_types::Result<LightClientErrors> {
12324                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
12325                                data,
12326                            )
12327                            .map(LightClientErrors::InvalidAddress)
12328                    }
12329                    InvalidAddress
12330                },
12331                {
12332                    fn InvalidMaxStateHistory(
12333                        data: &[u8],
12334                    ) -> alloy_sol_types::Result<LightClientErrors> {
12335                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
12336                                data,
12337                            )
12338                            .map(LightClientErrors::InvalidMaxStateHistory)
12339                    }
12340                    InvalidMaxStateHistory
12341                },
12342                {
12343                    fn InvalidInitialization(
12344                        data: &[u8],
12345                    ) -> alloy_sol_types::Result<LightClientErrors> {
12346                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_validate(
12347                                data,
12348                            )
12349                            .map(LightClientErrors::InvalidInitialization)
12350                    }
12351                    InvalidInitialization
12352                },
12353            ];
12354            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
12355                return Err(
12356                    alloy_sol_types::Error::unknown_selector(
12357                        <Self as alloy_sol_types::SolInterface>::NAME,
12358                        selector,
12359                    ),
12360                );
12361            };
12362            DECODE_VALIDATE_SHIMS[idx](data)
12363        }
12364        #[inline]
12365        fn abi_encoded_size(&self) -> usize {
12366            match self {
12367                Self::AddressEmptyCode(inner) => {
12368                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
12369                        inner,
12370                    )
12371                }
12372                Self::ERC1967InvalidImplementation(inner) => {
12373                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
12374                        inner,
12375                    )
12376                }
12377                Self::ERC1967NonPayable(inner) => {
12378                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
12379                        inner,
12380                    )
12381                }
12382                Self::FailedInnerCall(inner) => {
12383                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
12384                        inner,
12385                    )
12386                }
12387                Self::InsufficientSnapshotHistory(inner) => {
12388                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
12389                        inner,
12390                    )
12391                }
12392                Self::InvalidAddress(inner) => {
12393                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
12394                        inner,
12395                    )
12396                }
12397                Self::InvalidArgs(inner) => {
12398                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
12399                }
12400                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
12401                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
12402                        inner,
12403                    )
12404                }
12405                Self::InvalidInitialization(inner) => {
12406                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
12407                        inner,
12408                    )
12409                }
12410                Self::InvalidMaxStateHistory(inner) => {
12411                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
12412                        inner,
12413                    )
12414                }
12415                Self::InvalidProof(inner) => {
12416                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
12417                }
12418                Self::InvalidScalar(inner) => {
12419                    <InvalidScalar as alloy_sol_types::SolError>::abi_encoded_size(inner)
12420                }
12421                Self::NoChangeRequired(inner) => {
12422                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
12423                        inner,
12424                    )
12425                }
12426                Self::NotInitializing(inner) => {
12427                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
12428                        inner,
12429                    )
12430                }
12431                Self::OutdatedState(inner) => {
12432                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
12433                }
12434                Self::OwnableInvalidOwner(inner) => {
12435                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
12436                        inner,
12437                    )
12438                }
12439                Self::OwnableUnauthorizedAccount(inner) => {
12440                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
12441                        inner,
12442                    )
12443                }
12444                Self::ProverNotPermissioned(inner) => {
12445                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
12446                        inner,
12447                    )
12448                }
12449                Self::UUPSUnauthorizedCallContext(inner) => {
12450                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
12451                        inner,
12452                    )
12453                }
12454                Self::UUPSUnsupportedProxiableUUID(inner) => {
12455                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
12456                        inner,
12457                    )
12458                }
12459                Self::WrongStakeTableUsed(inner) => {
12460                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
12461                        inner,
12462                    )
12463                }
12464            }
12465        }
12466        #[inline]
12467        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
12468            match self {
12469                Self::AddressEmptyCode(inner) => {
12470                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
12471                        inner,
12472                        out,
12473                    )
12474                }
12475                Self::ERC1967InvalidImplementation(inner) => {
12476                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
12477                        inner,
12478                        out,
12479                    )
12480                }
12481                Self::ERC1967NonPayable(inner) => {
12482                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
12483                        inner,
12484                        out,
12485                    )
12486                }
12487                Self::FailedInnerCall(inner) => {
12488                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
12489                        inner,
12490                        out,
12491                    )
12492                }
12493                Self::InsufficientSnapshotHistory(inner) => {
12494                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
12495                        inner,
12496                        out,
12497                    )
12498                }
12499                Self::InvalidAddress(inner) => {
12500                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
12501                        inner,
12502                        out,
12503                    )
12504                }
12505                Self::InvalidArgs(inner) => {
12506                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
12507                        inner,
12508                        out,
12509                    )
12510                }
12511                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
12512                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
12513                        inner,
12514                        out,
12515                    )
12516                }
12517                Self::InvalidInitialization(inner) => {
12518                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
12519                        inner,
12520                        out,
12521                    )
12522                }
12523                Self::InvalidMaxStateHistory(inner) => {
12524                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
12525                        inner,
12526                        out,
12527                    )
12528                }
12529                Self::InvalidProof(inner) => {
12530                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
12531                        inner,
12532                        out,
12533                    )
12534                }
12535                Self::InvalidScalar(inner) => {
12536                    <InvalidScalar as alloy_sol_types::SolError>::abi_encode_raw(
12537                        inner,
12538                        out,
12539                    )
12540                }
12541                Self::NoChangeRequired(inner) => {
12542                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
12543                        inner,
12544                        out,
12545                    )
12546                }
12547                Self::NotInitializing(inner) => {
12548                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
12549                        inner,
12550                        out,
12551                    )
12552                }
12553                Self::OutdatedState(inner) => {
12554                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
12555                        inner,
12556                        out,
12557                    )
12558                }
12559                Self::OwnableInvalidOwner(inner) => {
12560                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
12561                        inner,
12562                        out,
12563                    )
12564                }
12565                Self::OwnableUnauthorizedAccount(inner) => {
12566                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
12567                        inner,
12568                        out,
12569                    )
12570                }
12571                Self::ProverNotPermissioned(inner) => {
12572                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
12573                        inner,
12574                        out,
12575                    )
12576                }
12577                Self::UUPSUnauthorizedCallContext(inner) => {
12578                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
12579                        inner,
12580                        out,
12581                    )
12582                }
12583                Self::UUPSUnsupportedProxiableUUID(inner) => {
12584                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
12585                        inner,
12586                        out,
12587                    )
12588                }
12589                Self::WrongStakeTableUsed(inner) => {
12590                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
12591                        inner,
12592                        out,
12593                    )
12594                }
12595            }
12596        }
12597    }
12598    ///Container for all the [`LightClient`](self) events.
12599    #[derive(serde::Serialize, serde::Deserialize)]
12600    #[derive(Debug, PartialEq, Eq, Hash)]
12601    pub enum LightClientEvents {
12602        #[allow(missing_docs)]
12603        Initialized(Initialized),
12604        #[allow(missing_docs)]
12605        NewState(NewState),
12606        #[allow(missing_docs)]
12607        OwnershipTransferred(OwnershipTransferred),
12608        #[allow(missing_docs)]
12609        PermissionedProverNotRequired(PermissionedProverNotRequired),
12610        #[allow(missing_docs)]
12611        PermissionedProverRequired(PermissionedProverRequired),
12612        #[allow(missing_docs)]
12613        Upgrade(Upgrade),
12614        #[allow(missing_docs)]
12615        Upgraded(Upgraded),
12616    }
12617    #[automatically_derived]
12618    impl LightClientEvents {
12619        /// All the selectors of this enum.
12620        ///
12621        /// Note that the selectors might not be in the same order as the variants.
12622        /// No guarantees are made about the order of the selectors.
12623        ///
12624        /// Prefer using `SolInterface` methods instead.
12625        pub const SELECTORS: &'static [[u8; 32usize]] = &[
12626            [
12627                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
12628                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
12629                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
12630            ],
12631            [
12632                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
12633                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
12634                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
12635            ],
12636            [
12637                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
12638                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
12639                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
12640            ],
12641            [
12642                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
12643                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
12644                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
12645            ],
12646            [
12647                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
12648                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
12649                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
12650            ],
12651            [
12652                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
12653                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
12654                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
12655            ],
12656            [
12657                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
12658                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
12659                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
12660            ],
12661        ];
12662    }
12663    #[automatically_derived]
12664    impl alloy_sol_types::SolEventInterface for LightClientEvents {
12665        const NAME: &'static str = "LightClientEvents";
12666        const COUNT: usize = 7usize;
12667        fn decode_raw_log(
12668            topics: &[alloy_sol_types::Word],
12669            data: &[u8],
12670        ) -> alloy_sol_types::Result<Self> {
12671            match topics.first().copied() {
12672                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12673                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
12674                            topics,
12675                            data,
12676                        )
12677                        .map(Self::Initialized)
12678                }
12679                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12680                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
12681                        .map(Self::NewState)
12682                }
12683                Some(
12684                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12685                ) => {
12686                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
12687                            topics,
12688                            data,
12689                        )
12690                        .map(Self::OwnershipTransferred)
12691                }
12692                Some(
12693                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12694                ) => {
12695                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
12696                            topics,
12697                            data,
12698                        )
12699                        .map(Self::PermissionedProverNotRequired)
12700                }
12701                Some(
12702                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12703                ) => {
12704                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
12705                            topics,
12706                            data,
12707                        )
12708                        .map(Self::PermissionedProverRequired)
12709                }
12710                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12711                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
12712                        .map(Self::Upgrade)
12713                }
12714                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12715                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
12716                        .map(Self::Upgraded)
12717                }
12718                _ => {
12719                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
12720                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
12721                        log: alloy_sol_types::private::Box::new(
12722                            alloy_sol_types::private::LogData::new_unchecked(
12723                                topics.to_vec(),
12724                                data.to_vec().into(),
12725                            ),
12726                        ),
12727                    })
12728                }
12729            }
12730        }
12731    }
12732    #[automatically_derived]
12733    impl alloy_sol_types::private::IntoLogData for LightClientEvents {
12734        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
12735            match self {
12736                Self::Initialized(inner) => {
12737                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12738                }
12739                Self::NewState(inner) => {
12740                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12741                }
12742                Self::OwnershipTransferred(inner) => {
12743                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12744                }
12745                Self::PermissionedProverNotRequired(inner) => {
12746                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12747                }
12748                Self::PermissionedProverRequired(inner) => {
12749                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12750                }
12751                Self::Upgrade(inner) => {
12752                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12753                }
12754                Self::Upgraded(inner) => {
12755                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12756                }
12757            }
12758        }
12759        fn into_log_data(self) -> alloy_sol_types::private::LogData {
12760            match self {
12761                Self::Initialized(inner) => {
12762                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12763                }
12764                Self::NewState(inner) => {
12765                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12766                }
12767                Self::OwnershipTransferred(inner) => {
12768                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12769                }
12770                Self::PermissionedProverNotRequired(inner) => {
12771                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12772                }
12773                Self::PermissionedProverRequired(inner) => {
12774                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12775                }
12776                Self::Upgrade(inner) => {
12777                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12778                }
12779                Self::Upgraded(inner) => {
12780                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12781                }
12782            }
12783        }
12784    }
12785    use alloy::contract as alloy_contract;
12786    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
12787
12788See the [wrapper's documentation](`LightClientInstance`) for more details.*/
12789    #[inline]
12790    pub const fn new<
12791        P: alloy_contract::private::Provider<N>,
12792        N: alloy_contract::private::Network,
12793    >(
12794        address: alloy_sol_types::private::Address,
12795        __provider: P,
12796    ) -> LightClientInstance<P, N> {
12797        LightClientInstance::<P, N>::new(address, __provider)
12798    }
12799    /**Deploys this contract using the given `provider` and constructor arguments, if any.
12800
12801Returns a new instance of the contract, if the deployment was successful.
12802
12803For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
12804    #[inline]
12805    pub fn deploy<
12806        P: alloy_contract::private::Provider<N>,
12807        N: alloy_contract::private::Network,
12808    >(
12809        __provider: P,
12810    ) -> impl ::core::future::Future<
12811        Output = alloy_contract::Result<LightClientInstance<P, N>>,
12812    > {
12813        LightClientInstance::<P, N>::deploy(__provider)
12814    }
12815    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
12816and constructor arguments, if any.
12817
12818This is a simple wrapper around creating a `RawCallBuilder` with the data set to
12819the bytecode concatenated with the constructor's ABI-encoded arguments.*/
12820    #[inline]
12821    pub fn deploy_builder<
12822        P: alloy_contract::private::Provider<N>,
12823        N: alloy_contract::private::Network,
12824    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
12825        LightClientInstance::<P, N>::deploy_builder(__provider)
12826    }
12827    /**A [`LightClient`](self) instance.
12828
12829Contains type-safe methods for interacting with an on-chain instance of the
12830[`LightClient`](self) contract located at a given `address`, using a given
12831provider `P`.
12832
12833If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
12834documentation on how to provide it), the `deploy` and `deploy_builder` methods can
12835be used to deploy a new instance of the contract.
12836
12837See the [module-level documentation](self) for all the available methods.*/
12838    #[derive(Clone)]
12839    pub struct LightClientInstance<P, N = alloy_contract::private::Ethereum> {
12840        address: alloy_sol_types::private::Address,
12841        provider: P,
12842        _network: ::core::marker::PhantomData<N>,
12843    }
12844    #[automatically_derived]
12845    impl<P, N> ::core::fmt::Debug for LightClientInstance<P, N> {
12846        #[inline]
12847        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
12848            f.debug_tuple("LightClientInstance").field(&self.address).finish()
12849        }
12850    }
12851    /// Instantiation and getters/setters.
12852    #[automatically_derived]
12853    impl<
12854        P: alloy_contract::private::Provider<N>,
12855        N: alloy_contract::private::Network,
12856    > LightClientInstance<P, N> {
12857        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
12858
12859See the [wrapper's documentation](`LightClientInstance`) for more details.*/
12860        #[inline]
12861        pub const fn new(
12862            address: alloy_sol_types::private::Address,
12863            __provider: P,
12864        ) -> Self {
12865            Self {
12866                address,
12867                provider: __provider,
12868                _network: ::core::marker::PhantomData,
12869            }
12870        }
12871        /**Deploys this contract using the given `provider` and constructor arguments, if any.
12872
12873Returns a new instance of the contract, if the deployment was successful.
12874
12875For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
12876        #[inline]
12877        pub async fn deploy(
12878            __provider: P,
12879        ) -> alloy_contract::Result<LightClientInstance<P, N>> {
12880            let call_builder = Self::deploy_builder(__provider);
12881            let contract_address = call_builder.deploy().await?;
12882            Ok(Self::new(contract_address, call_builder.provider))
12883        }
12884        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
12885and constructor arguments, if any.
12886
12887This is a simple wrapper around creating a `RawCallBuilder` with the data set to
12888the bytecode concatenated with the constructor's ABI-encoded arguments.*/
12889        #[inline]
12890        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
12891            alloy_contract::RawCallBuilder::new_raw_deploy(
12892                __provider,
12893                ::core::clone::Clone::clone(&BYTECODE),
12894            )
12895        }
12896        /// Returns a reference to the address.
12897        #[inline]
12898        pub const fn address(&self) -> &alloy_sol_types::private::Address {
12899            &self.address
12900        }
12901        /// Sets the address.
12902        #[inline]
12903        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
12904            self.address = address;
12905        }
12906        /// Sets the address and returns `self`.
12907        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
12908            self.set_address(address);
12909            self
12910        }
12911        /// Returns a reference to the provider.
12912        #[inline]
12913        pub const fn provider(&self) -> &P {
12914            &self.provider
12915        }
12916    }
12917    impl<P: ::core::clone::Clone, N> LightClientInstance<&P, N> {
12918        /// Clones the provider and returns a new instance with the cloned provider.
12919        #[inline]
12920        pub fn with_cloned_provider(self) -> LightClientInstance<P, N> {
12921            LightClientInstance {
12922                address: self.address,
12923                provider: ::core::clone::Clone::clone(&self.provider),
12924                _network: ::core::marker::PhantomData,
12925            }
12926        }
12927    }
12928    /// Function calls.
12929    #[automatically_derived]
12930    impl<
12931        P: alloy_contract::private::Provider<N>,
12932        N: alloy_contract::private::Network,
12933    > LightClientInstance<P, N> {
12934        /// Creates a new call builder using this contract instance's provider and address.
12935        ///
12936        /// Note that the call can be any function call, not just those defined in this
12937        /// contract. Prefer using the other methods for building type-safe contract calls.
12938        pub fn call_builder<C: alloy_sol_types::SolCall>(
12939            &self,
12940            call: &C,
12941        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
12942            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
12943        }
12944        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
12945        pub fn UPGRADE_INTERFACE_VERSION(
12946            &self,
12947        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
12948            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
12949        }
12950        ///Creates a new call builder for the [`_getVk`] function.
12951        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<&P, _getVkCall, N> {
12952            self.call_builder(&_getVkCall)
12953        }
12954        ///Creates a new call builder for the [`currentBlockNumber`] function.
12955        pub fn currentBlockNumber(
12956            &self,
12957        ) -> alloy_contract::SolCallBuilder<&P, currentBlockNumberCall, N> {
12958            self.call_builder(&currentBlockNumberCall)
12959        }
12960        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
12961        pub fn disablePermissionedProverMode(
12962            &self,
12963        ) -> alloy_contract::SolCallBuilder<&P, disablePermissionedProverModeCall, N> {
12964            self.call_builder(&disablePermissionedProverModeCall)
12965        }
12966        ///Creates a new call builder for the [`finalizedState`] function.
12967        pub fn finalizedState(
12968            &self,
12969        ) -> alloy_contract::SolCallBuilder<&P, finalizedStateCall, N> {
12970            self.call_builder(&finalizedStateCall)
12971        }
12972        ///Creates a new call builder for the [`genesisStakeTableState`] function.
12973        pub fn genesisStakeTableState(
12974            &self,
12975        ) -> alloy_contract::SolCallBuilder<&P, genesisStakeTableStateCall, N> {
12976            self.call_builder(&genesisStakeTableStateCall)
12977        }
12978        ///Creates a new call builder for the [`genesisState`] function.
12979        pub fn genesisState(
12980            &self,
12981        ) -> alloy_contract::SolCallBuilder<&P, genesisStateCall, N> {
12982            self.call_builder(&genesisStateCall)
12983        }
12984        ///Creates a new call builder for the [`getHotShotCommitment`] function.
12985        pub fn getHotShotCommitment(
12986            &self,
12987            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
12988        ) -> alloy_contract::SolCallBuilder<&P, getHotShotCommitmentCall, N> {
12989            self.call_builder(
12990                &getHotShotCommitmentCall {
12991                    hotShotBlockHeight,
12992                },
12993            )
12994        }
12995        ///Creates a new call builder for the [`getStateHistoryCount`] function.
12996        pub fn getStateHistoryCount(
12997            &self,
12998        ) -> alloy_contract::SolCallBuilder<&P, getStateHistoryCountCall, N> {
12999            self.call_builder(&getStateHistoryCountCall)
13000        }
13001        ///Creates a new call builder for the [`getVersion`] function.
13002        pub fn getVersion(
13003            &self,
13004        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
13005            self.call_builder(&getVersionCall)
13006        }
13007        ///Creates a new call builder for the [`initialize`] function.
13008        pub fn initialize(
13009            &self,
13010            _genesis: <LightClientState as alloy::sol_types::SolType>::RustType,
13011            _genesisStakeTableState: <StakeTableState as alloy::sol_types::SolType>::RustType,
13012            _stateHistoryRetentionPeriod: u32,
13013            owner: alloy::sol_types::private::Address,
13014        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
13015            self.call_builder(
13016                &initializeCall {
13017                    _genesis,
13018                    _genesisStakeTableState,
13019                    _stateHistoryRetentionPeriod,
13020                    owner,
13021                },
13022            )
13023        }
13024        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
13025        pub fn isPermissionedProverEnabled(
13026            &self,
13027        ) -> alloy_contract::SolCallBuilder<&P, isPermissionedProverEnabledCall, N> {
13028            self.call_builder(&isPermissionedProverEnabledCall)
13029        }
13030        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
13031        pub fn lagOverEscapeHatchThreshold(
13032            &self,
13033            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
13034            blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
13035        ) -> alloy_contract::SolCallBuilder<&P, lagOverEscapeHatchThresholdCall, N> {
13036            self.call_builder(
13037                &lagOverEscapeHatchThresholdCall {
13038                    blockNumber,
13039                    blockThreshold,
13040                },
13041            )
13042        }
13043        ///Creates a new call builder for the [`newFinalizedState`] function.
13044        pub fn newFinalizedState(
13045            &self,
13046            newState: <LightClientState as alloy::sol_types::SolType>::RustType,
13047            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
13048        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedStateCall, N> {
13049            self.call_builder(
13050                &newFinalizedStateCall {
13051                    newState,
13052                    proof,
13053                },
13054            )
13055        }
13056        ///Creates a new call builder for the [`owner`] function.
13057        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
13058            self.call_builder(&ownerCall)
13059        }
13060        ///Creates a new call builder for the [`permissionedProver`] function.
13061        pub fn permissionedProver(
13062            &self,
13063        ) -> alloy_contract::SolCallBuilder<&P, permissionedProverCall, N> {
13064            self.call_builder(&permissionedProverCall)
13065        }
13066        ///Creates a new call builder for the [`proxiableUUID`] function.
13067        pub fn proxiableUUID(
13068            &self,
13069        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
13070            self.call_builder(&proxiableUUIDCall)
13071        }
13072        ///Creates a new call builder for the [`renounceOwnership`] function.
13073        pub fn renounceOwnership(
13074            &self,
13075        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
13076            self.call_builder(&renounceOwnershipCall)
13077        }
13078        ///Creates a new call builder for the [`setPermissionedProver`] function.
13079        pub fn setPermissionedProver(
13080            &self,
13081            prover: alloy::sol_types::private::Address,
13082        ) -> alloy_contract::SolCallBuilder<&P, setPermissionedProverCall, N> {
13083            self.call_builder(
13084                &setPermissionedProverCall {
13085                    prover,
13086                },
13087            )
13088        }
13089        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
13090        pub fn setstateHistoryRetentionPeriod(
13091            &self,
13092            historySeconds: u32,
13093        ) -> alloy_contract::SolCallBuilder<&P, setstateHistoryRetentionPeriodCall, N> {
13094            self.call_builder(
13095                &setstateHistoryRetentionPeriodCall {
13096                    historySeconds,
13097                },
13098            )
13099        }
13100        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
13101        pub fn stateHistoryCommitments(
13102            &self,
13103            _0: alloy::sol_types::private::primitives::aliases::U256,
13104        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryCommitmentsCall, N> {
13105            self.call_builder(&stateHistoryCommitmentsCall(_0))
13106        }
13107        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
13108        pub fn stateHistoryFirstIndex(
13109            &self,
13110        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryFirstIndexCall, N> {
13111            self.call_builder(&stateHistoryFirstIndexCall)
13112        }
13113        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
13114        pub fn stateHistoryRetentionPeriod(
13115            &self,
13116        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryRetentionPeriodCall, N> {
13117            self.call_builder(&stateHistoryRetentionPeriodCall)
13118        }
13119        ///Creates a new call builder for the [`transferOwnership`] function.
13120        pub fn transferOwnership(
13121            &self,
13122            newOwner: alloy::sol_types::private::Address,
13123        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
13124            self.call_builder(&transferOwnershipCall { newOwner })
13125        }
13126        ///Creates a new call builder for the [`upgradeToAndCall`] function.
13127        pub fn upgradeToAndCall(
13128            &self,
13129            newImplementation: alloy::sol_types::private::Address,
13130            data: alloy::sol_types::private::Bytes,
13131        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
13132            self.call_builder(
13133                &upgradeToAndCallCall {
13134                    newImplementation,
13135                    data,
13136                },
13137            )
13138        }
13139    }
13140    /// Event filters.
13141    #[automatically_derived]
13142    impl<
13143        P: alloy_contract::private::Provider<N>,
13144        N: alloy_contract::private::Network,
13145    > LightClientInstance<P, N> {
13146        /// Creates a new event filter using this contract instance's provider and address.
13147        ///
13148        /// Note that the type can be any event, not just those defined in this contract.
13149        /// Prefer using the other methods for building type-safe event filters.
13150        pub fn event_filter<E: alloy_sol_types::SolEvent>(
13151            &self,
13152        ) -> alloy_contract::Event<&P, E, N> {
13153            alloy_contract::Event::new_sol(&self.provider, &self.address)
13154        }
13155        ///Creates a new event filter for the [`Initialized`] event.
13156        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
13157            self.event_filter::<Initialized>()
13158        }
13159        ///Creates a new event filter for the [`NewState`] event.
13160        pub fn NewState_filter(&self) -> alloy_contract::Event<&P, NewState, N> {
13161            self.event_filter::<NewState>()
13162        }
13163        ///Creates a new event filter for the [`OwnershipTransferred`] event.
13164        pub fn OwnershipTransferred_filter(
13165            &self,
13166        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
13167            self.event_filter::<OwnershipTransferred>()
13168        }
13169        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
13170        pub fn PermissionedProverNotRequired_filter(
13171            &self,
13172        ) -> alloy_contract::Event<&P, PermissionedProverNotRequired, N> {
13173            self.event_filter::<PermissionedProverNotRequired>()
13174        }
13175        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
13176        pub fn PermissionedProverRequired_filter(
13177            &self,
13178        ) -> alloy_contract::Event<&P, PermissionedProverRequired, N> {
13179            self.event_filter::<PermissionedProverRequired>()
13180        }
13181        ///Creates a new event filter for the [`Upgrade`] event.
13182        pub fn Upgrade_filter(&self) -> alloy_contract::Event<&P, Upgrade, N> {
13183            self.event_filter::<Upgrade>()
13184        }
13185        ///Creates a new event filter for the [`Upgraded`] event.
13186        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
13187            self.event_filter::<Upgraded>()
13188        }
13189    }
13190}