hotshot_contract_adapter/bindings/
light_client_mock.rs

1///Module containing a contract's types and functions.
2/**
3
4```solidity
5library BN254 {
6    type BaseField is uint256;
7    type ScalarField is uint256;
8    struct G1Point { BaseField x; BaseField y; }
9}
10```*/
11#[allow(
12    non_camel_case_types,
13    non_snake_case,
14    clippy::pub_underscore_fields,
15    clippy::style,
16    clippy::empty_structs_with_brackets
17)]
18pub mod BN254 {
19    use super::*;
20    use alloy::sol_types as alloy_sol_types;
21    #[derive(serde::Serialize, serde::Deserialize)]
22    #[derive(Default, Debug, PartialEq, Eq, Hash)]
23    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
24    #[derive(Clone)]
25    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
26    const _: () = {
27        use alloy::sol_types as alloy_sol_types;
28        #[automatically_derived]
29        impl alloy_sol_types::private::SolTypeValue<BaseField>
30        for alloy::sol_types::private::primitives::aliases::U256 {
31            #[inline]
32            fn stv_to_tokens(
33                &self,
34            ) -> <alloy::sol_types::sol_data::Uint<
35                256,
36            > as alloy_sol_types::SolType>::Token<'_> {
37                alloy_sol_types::private::SolTypeValue::<
38                    alloy::sol_types::sol_data::Uint<256>,
39                >::stv_to_tokens(self)
40            }
41            #[inline]
42            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
43                <alloy::sol_types::sol_data::Uint<
44                    256,
45                > as alloy_sol_types::SolType>::tokenize(self)
46                    .0
47            }
48            #[inline]
49            fn stv_abi_encode_packed_to(
50                &self,
51                out: &mut alloy_sol_types::private::Vec<u8>,
52            ) {
53                <alloy::sol_types::sol_data::Uint<
54                    256,
55                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
56            }
57            #[inline]
58            fn stv_abi_packed_encoded_size(&self) -> usize {
59                <alloy::sol_types::sol_data::Uint<
60                    256,
61                > as alloy_sol_types::SolType>::abi_encoded_size(self)
62            }
63        }
64        #[automatically_derived]
65        impl BaseField {
66            /// The Solidity type name.
67            pub const NAME: &'static str = stringify!(@ name);
68            /// Convert from the underlying value type.
69            #[inline]
70            pub const fn from_underlying(
71                value: alloy::sol_types::private::primitives::aliases::U256,
72            ) -> Self {
73                Self(value)
74            }
75            /// Return the underlying value.
76            #[inline]
77            pub const fn into_underlying(
78                self,
79            ) -> alloy::sol_types::private::primitives::aliases::U256 {
80                self.0
81            }
82            /// Return the single encoding of this value, delegating to the
83            /// underlying type.
84            #[inline]
85            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
86                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
87            }
88            /// Return the packed encoding of this value, delegating to the
89            /// underlying type.
90            #[inline]
91            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
92                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
93            }
94        }
95        #[automatically_derived]
96        impl From<alloy::sol_types::private::primitives::aliases::U256> for BaseField {
97            fn from(
98                value: alloy::sol_types::private::primitives::aliases::U256,
99            ) -> Self {
100                Self::from_underlying(value)
101            }
102        }
103        #[automatically_derived]
104        impl From<BaseField> for alloy::sol_types::private::primitives::aliases::U256 {
105            fn from(value: BaseField) -> Self {
106                value.into_underlying()
107            }
108        }
109        #[automatically_derived]
110        impl alloy_sol_types::SolType for BaseField {
111            type RustType = alloy::sol_types::private::primitives::aliases::U256;
112            type Token<'a> = <alloy::sol_types::sol_data::Uint<
113                256,
114            > as alloy_sol_types::SolType>::Token<'a>;
115            const SOL_NAME: &'static str = Self::NAME;
116            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
117                256,
118            > as alloy_sol_types::SolType>::ENCODED_SIZE;
119            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
120                256,
121            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
122            #[inline]
123            fn valid_token(token: &Self::Token<'_>) -> bool {
124                Self::type_check(token).is_ok()
125            }
126            #[inline]
127            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
128                <alloy::sol_types::sol_data::Uint<
129                    256,
130                > as alloy_sol_types::SolType>::type_check(token)
131            }
132            #[inline]
133            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
134                <alloy::sol_types::sol_data::Uint<
135                    256,
136                > as alloy_sol_types::SolType>::detokenize(token)
137            }
138        }
139        #[automatically_derived]
140        impl alloy_sol_types::EventTopic for BaseField {
141            #[inline]
142            fn topic_preimage_length(rust: &Self::RustType) -> usize {
143                <alloy::sol_types::sol_data::Uint<
144                    256,
145                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
146            }
147            #[inline]
148            fn encode_topic_preimage(
149                rust: &Self::RustType,
150                out: &mut alloy_sol_types::private::Vec<u8>,
151            ) {
152                <alloy::sol_types::sol_data::Uint<
153                    256,
154                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
155            }
156            #[inline]
157            fn encode_topic(
158                rust: &Self::RustType,
159            ) -> alloy_sol_types::abi::token::WordToken {
160                <alloy::sol_types::sol_data::Uint<
161                    256,
162                > as alloy_sol_types::EventTopic>::encode_topic(rust)
163            }
164        }
165    };
166    #[derive(serde::Serialize, serde::Deserialize)]
167    #[derive(Default, Debug, PartialEq, Eq, Hash)]
168    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
169    #[derive(Clone)]
170    pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
171    const _: () = {
172        use alloy::sol_types as alloy_sol_types;
173        #[automatically_derived]
174        impl alloy_sol_types::private::SolTypeValue<ScalarField>
175        for alloy::sol_types::private::primitives::aliases::U256 {
176            #[inline]
177            fn stv_to_tokens(
178                &self,
179            ) -> <alloy::sol_types::sol_data::Uint<
180                256,
181            > as alloy_sol_types::SolType>::Token<'_> {
182                alloy_sol_types::private::SolTypeValue::<
183                    alloy::sol_types::sol_data::Uint<256>,
184                >::stv_to_tokens(self)
185            }
186            #[inline]
187            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
188                <alloy::sol_types::sol_data::Uint<
189                    256,
190                > as alloy_sol_types::SolType>::tokenize(self)
191                    .0
192            }
193            #[inline]
194            fn stv_abi_encode_packed_to(
195                &self,
196                out: &mut alloy_sol_types::private::Vec<u8>,
197            ) {
198                <alloy::sol_types::sol_data::Uint<
199                    256,
200                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
201            }
202            #[inline]
203            fn stv_abi_packed_encoded_size(&self) -> usize {
204                <alloy::sol_types::sol_data::Uint<
205                    256,
206                > as alloy_sol_types::SolType>::abi_encoded_size(self)
207            }
208        }
209        #[automatically_derived]
210        impl ScalarField {
211            /// The Solidity type name.
212            pub const NAME: &'static str = stringify!(@ name);
213            /// Convert from the underlying value type.
214            #[inline]
215            pub const fn from_underlying(
216                value: alloy::sol_types::private::primitives::aliases::U256,
217            ) -> Self {
218                Self(value)
219            }
220            /// Return the underlying value.
221            #[inline]
222            pub const fn into_underlying(
223                self,
224            ) -> alloy::sol_types::private::primitives::aliases::U256 {
225                self.0
226            }
227            /// Return the single encoding of this value, delegating to the
228            /// underlying type.
229            #[inline]
230            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
231                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
232            }
233            /// Return the packed encoding of this value, delegating to the
234            /// underlying type.
235            #[inline]
236            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
237                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
238            }
239        }
240        #[automatically_derived]
241        impl From<alloy::sol_types::private::primitives::aliases::U256> for ScalarField {
242            fn from(
243                value: alloy::sol_types::private::primitives::aliases::U256,
244            ) -> Self {
245                Self::from_underlying(value)
246            }
247        }
248        #[automatically_derived]
249        impl From<ScalarField> for alloy::sol_types::private::primitives::aliases::U256 {
250            fn from(value: ScalarField) -> Self {
251                value.into_underlying()
252            }
253        }
254        #[automatically_derived]
255        impl alloy_sol_types::SolType for ScalarField {
256            type RustType = alloy::sol_types::private::primitives::aliases::U256;
257            type Token<'a> = <alloy::sol_types::sol_data::Uint<
258                256,
259            > as alloy_sol_types::SolType>::Token<'a>;
260            const SOL_NAME: &'static str = Self::NAME;
261            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
262                256,
263            > as alloy_sol_types::SolType>::ENCODED_SIZE;
264            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
265                256,
266            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
267            #[inline]
268            fn valid_token(token: &Self::Token<'_>) -> bool {
269                Self::type_check(token).is_ok()
270            }
271            #[inline]
272            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
273                <alloy::sol_types::sol_data::Uint<
274                    256,
275                > as alloy_sol_types::SolType>::type_check(token)
276            }
277            #[inline]
278            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
279                <alloy::sol_types::sol_data::Uint<
280                    256,
281                > as alloy_sol_types::SolType>::detokenize(token)
282            }
283        }
284        #[automatically_derived]
285        impl alloy_sol_types::EventTopic for ScalarField {
286            #[inline]
287            fn topic_preimage_length(rust: &Self::RustType) -> usize {
288                <alloy::sol_types::sol_data::Uint<
289                    256,
290                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
291            }
292            #[inline]
293            fn encode_topic_preimage(
294                rust: &Self::RustType,
295                out: &mut alloy_sol_types::private::Vec<u8>,
296            ) {
297                <alloy::sol_types::sol_data::Uint<
298                    256,
299                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
300            }
301            #[inline]
302            fn encode_topic(
303                rust: &Self::RustType,
304            ) -> alloy_sol_types::abi::token::WordToken {
305                <alloy::sol_types::sol_data::Uint<
306                    256,
307                > as alloy_sol_types::EventTopic>::encode_topic(rust)
308            }
309        }
310    };
311    #[derive(serde::Serialize, serde::Deserialize)]
312    #[derive(Default, Debug, PartialEq, Eq, Hash)]
313    /**```solidity
314struct G1Point { BaseField x; BaseField y; }
315```*/
316    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
317    #[derive(Clone)]
318    pub struct G1Point {
319        #[allow(missing_docs)]
320        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
321        #[allow(missing_docs)]
322        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
323    }
324    #[allow(
325        non_camel_case_types,
326        non_snake_case,
327        clippy::pub_underscore_fields,
328        clippy::style
329    )]
330    const _: () = {
331        use alloy::sol_types as alloy_sol_types;
332        #[doc(hidden)]
333        #[allow(dead_code)]
334        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
335        #[doc(hidden)]
336        type UnderlyingRustTuple<'a> = (
337            <BaseField as alloy::sol_types::SolType>::RustType,
338            <BaseField as alloy::sol_types::SolType>::RustType,
339        );
340        #[cfg(test)]
341        #[allow(dead_code, unreachable_patterns)]
342        fn _type_assertion(
343            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
344        ) {
345            match _t {
346                alloy_sol_types::private::AssertTypeEq::<
347                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
348                >(_) => {}
349            }
350        }
351        #[automatically_derived]
352        #[doc(hidden)]
353        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
354            fn from(value: G1Point) -> Self {
355                (value.x, value.y)
356            }
357        }
358        #[automatically_derived]
359        #[doc(hidden)]
360        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
361            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
362                Self { x: tuple.0, y: tuple.1 }
363            }
364        }
365        #[automatically_derived]
366        impl alloy_sol_types::SolValue for G1Point {
367            type SolType = Self;
368        }
369        #[automatically_derived]
370        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
371            #[inline]
372            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
373                (
374                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
375                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
376                )
377            }
378            #[inline]
379            fn stv_abi_encoded_size(&self) -> usize {
380                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
381                    return size;
382                }
383                let tuple = <UnderlyingRustTuple<
384                    '_,
385                > as ::core::convert::From<Self>>::from(self.clone());
386                <UnderlyingSolTuple<
387                    '_,
388                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
389            }
390            #[inline]
391            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
392                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
393            }
394            #[inline]
395            fn stv_abi_encode_packed_to(
396                &self,
397                out: &mut alloy_sol_types::private::Vec<u8>,
398            ) {
399                let tuple = <UnderlyingRustTuple<
400                    '_,
401                > as ::core::convert::From<Self>>::from(self.clone());
402                <UnderlyingSolTuple<
403                    '_,
404                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
405            }
406            #[inline]
407            fn stv_abi_packed_encoded_size(&self) -> usize {
408                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
409                    return size;
410                }
411                let tuple = <UnderlyingRustTuple<
412                    '_,
413                > as ::core::convert::From<Self>>::from(self.clone());
414                <UnderlyingSolTuple<
415                    '_,
416                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
417            }
418        }
419        #[automatically_derived]
420        impl alloy_sol_types::SolType for G1Point {
421            type RustType = Self;
422            type Token<'a> = <UnderlyingSolTuple<
423                'a,
424            > as alloy_sol_types::SolType>::Token<'a>;
425            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
426            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
427                '_,
428            > as alloy_sol_types::SolType>::ENCODED_SIZE;
429            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
430                '_,
431            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
432            #[inline]
433            fn valid_token(token: &Self::Token<'_>) -> bool {
434                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
435            }
436            #[inline]
437            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
438                let tuple = <UnderlyingSolTuple<
439                    '_,
440                > as alloy_sol_types::SolType>::detokenize(token);
441                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
442            }
443        }
444        #[automatically_derived]
445        impl alloy_sol_types::SolStruct for G1Point {
446            const NAME: &'static str = "G1Point";
447            #[inline]
448            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
449                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
450            }
451            #[inline]
452            fn eip712_components() -> alloy_sol_types::private::Vec<
453                alloy_sol_types::private::Cow<'static, str>,
454            > {
455                alloy_sol_types::private::Vec::new()
456            }
457            #[inline]
458            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
459                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
460            }
461            #[inline]
462            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
463                [
464                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
465                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
466                ]
467                    .concat()
468            }
469        }
470        #[automatically_derived]
471        impl alloy_sol_types::EventTopic for G1Point {
472            #[inline]
473            fn topic_preimage_length(rust: &Self::RustType) -> usize {
474                0usize
475                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
476                        &rust.x,
477                    )
478                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
479                        &rust.y,
480                    )
481            }
482            #[inline]
483            fn encode_topic_preimage(
484                rust: &Self::RustType,
485                out: &mut alloy_sol_types::private::Vec<u8>,
486            ) {
487                out.reserve(
488                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
489                );
490                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
491                    &rust.x,
492                    out,
493                );
494                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
495                    &rust.y,
496                    out,
497                );
498            }
499            #[inline]
500            fn encode_topic(
501                rust: &Self::RustType,
502            ) -> alloy_sol_types::abi::token::WordToken {
503                let mut out = alloy_sol_types::private::Vec::new();
504                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
505                    rust,
506                    &mut out,
507                );
508                alloy_sol_types::abi::token::WordToken(
509                    alloy_sol_types::private::keccak256(out),
510                )
511            }
512        }
513    };
514    use alloy::contract as alloy_contract;
515    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
516
517See the [wrapper's documentation](`BN254Instance`) for more details.*/
518    #[inline]
519    pub const fn new<
520        P: alloy_contract::private::Provider<N>,
521        N: alloy_contract::private::Network,
522    >(address: alloy_sol_types::private::Address, __provider: P) -> BN254Instance<P, N> {
523        BN254Instance::<P, N>::new(address, __provider)
524    }
525    /**A [`BN254`](self) instance.
526
527Contains type-safe methods for interacting with an on-chain instance of the
528[`BN254`](self) contract located at a given `address`, using a given
529provider `P`.
530
531If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
532documentation on how to provide it), the `deploy` and `deploy_builder` methods can
533be used to deploy a new instance of the contract.
534
535See the [module-level documentation](self) for all the available methods.*/
536    #[derive(Clone)]
537    pub struct BN254Instance<P, N = alloy_contract::private::Ethereum> {
538        address: alloy_sol_types::private::Address,
539        provider: P,
540        _network: ::core::marker::PhantomData<N>,
541    }
542    #[automatically_derived]
543    impl<P, N> ::core::fmt::Debug for BN254Instance<P, N> {
544        #[inline]
545        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
546            f.debug_tuple("BN254Instance").field(&self.address).finish()
547        }
548    }
549    /// Instantiation and getters/setters.
550    #[automatically_derived]
551    impl<
552        P: alloy_contract::private::Provider<N>,
553        N: alloy_contract::private::Network,
554    > BN254Instance<P, N> {
555        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
556
557See the [wrapper's documentation](`BN254Instance`) for more details.*/
558        #[inline]
559        pub const fn new(
560            address: alloy_sol_types::private::Address,
561            __provider: P,
562        ) -> Self {
563            Self {
564                address,
565                provider: __provider,
566                _network: ::core::marker::PhantomData,
567            }
568        }
569        /// Returns a reference to the address.
570        #[inline]
571        pub const fn address(&self) -> &alloy_sol_types::private::Address {
572            &self.address
573        }
574        /// Sets the address.
575        #[inline]
576        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
577            self.address = address;
578        }
579        /// Sets the address and returns `self`.
580        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
581            self.set_address(address);
582            self
583        }
584        /// Returns a reference to the provider.
585        #[inline]
586        pub const fn provider(&self) -> &P {
587            &self.provider
588        }
589    }
590    impl<P: ::core::clone::Clone, N> BN254Instance<&P, N> {
591        /// Clones the provider and returns a new instance with the cloned provider.
592        #[inline]
593        pub fn with_cloned_provider(self) -> BN254Instance<P, N> {
594            BN254Instance {
595                address: self.address,
596                provider: ::core::clone::Clone::clone(&self.provider),
597                _network: ::core::marker::PhantomData,
598            }
599        }
600    }
601    /// Function calls.
602    #[automatically_derived]
603    impl<
604        P: alloy_contract::private::Provider<N>,
605        N: alloy_contract::private::Network,
606    > BN254Instance<P, N> {
607        /// Creates a new call builder using this contract instance's provider and address.
608        ///
609        /// Note that the call can be any function call, not just those defined in this
610        /// contract. Prefer using the other methods for building type-safe contract calls.
611        pub fn call_builder<C: alloy_sol_types::SolCall>(
612            &self,
613            call: &C,
614        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
615            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
616        }
617    }
618    /// Event filters.
619    #[automatically_derived]
620    impl<
621        P: alloy_contract::private::Provider<N>,
622        N: alloy_contract::private::Network,
623    > BN254Instance<P, N> {
624        /// Creates a new event filter using this contract instance's provider and address.
625        ///
626        /// Note that the type can be any event, not just those defined in this contract.
627        /// Prefer using the other methods for building type-safe event filters.
628        pub fn event_filter<E: alloy_sol_types::SolEvent>(
629            &self,
630        ) -> alloy_contract::Event<&P, E, N> {
631            alloy_contract::Event::new_sol(&self.provider, &self.address)
632        }
633    }
634}
635///Module containing a contract's types and functions.
636/**
637
638```solidity
639library IPlonkVerifier {
640    struct PlonkProof { BN254.G1Point wire0; BN254.G1Point wire1; BN254.G1Point wire2; BN254.G1Point wire3; BN254.G1Point wire4; BN254.G1Point prodPerm; BN254.G1Point split0; BN254.G1Point split1; BN254.G1Point split2; BN254.G1Point split3; BN254.G1Point split4; BN254.G1Point zeta; BN254.G1Point zetaOmega; BN254.ScalarField wireEval0; BN254.ScalarField wireEval1; BN254.ScalarField wireEval2; BN254.ScalarField wireEval3; BN254.ScalarField wireEval4; BN254.ScalarField sigmaEval0; BN254.ScalarField sigmaEval1; BN254.ScalarField sigmaEval2; BN254.ScalarField sigmaEval3; BN254.ScalarField prodPermZetaOmegaEval; }
641    struct VerifyingKey { uint256 domainSize; uint256 numInputs; BN254.G1Point sigma0; BN254.G1Point sigma1; BN254.G1Point sigma2; BN254.G1Point sigma3; BN254.G1Point sigma4; BN254.G1Point q1; BN254.G1Point q2; BN254.G1Point q3; BN254.G1Point q4; BN254.G1Point qM12; BN254.G1Point qM34; BN254.G1Point qO; BN254.G1Point qC; BN254.G1Point qH1; BN254.G1Point qH2; BN254.G1Point qH3; BN254.G1Point qH4; BN254.G1Point qEcc; bytes32 g2LSB; bytes32 g2MSB; }
642}
643```*/
644#[allow(
645    non_camel_case_types,
646    non_snake_case,
647    clippy::pub_underscore_fields,
648    clippy::style,
649    clippy::empty_structs_with_brackets
650)]
651pub mod IPlonkVerifier {
652    use super::*;
653    use alloy::sol_types as alloy_sol_types;
654    #[derive(serde::Serialize, serde::Deserialize)]
655    #[derive()]
656    /**```solidity
657struct PlonkProof { BN254.G1Point wire0; BN254.G1Point wire1; BN254.G1Point wire2; BN254.G1Point wire3; BN254.G1Point wire4; BN254.G1Point prodPerm; BN254.G1Point split0; BN254.G1Point split1; BN254.G1Point split2; BN254.G1Point split3; BN254.G1Point split4; BN254.G1Point zeta; BN254.G1Point zetaOmega; BN254.ScalarField wireEval0; BN254.ScalarField wireEval1; BN254.ScalarField wireEval2; BN254.ScalarField wireEval3; BN254.ScalarField wireEval4; BN254.ScalarField sigmaEval0; BN254.ScalarField sigmaEval1; BN254.ScalarField sigmaEval2; BN254.ScalarField sigmaEval3; BN254.ScalarField prodPermZetaOmegaEval; }
658```*/
659    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
660    #[derive(Clone)]
661    pub struct PlonkProof {
662        #[allow(missing_docs)]
663        pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
664        #[allow(missing_docs)]
665        pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
666        #[allow(missing_docs)]
667        pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
668        #[allow(missing_docs)]
669        pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
670        #[allow(missing_docs)]
671        pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
672        #[allow(missing_docs)]
673        pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
674        #[allow(missing_docs)]
675        pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
676        #[allow(missing_docs)]
677        pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
678        #[allow(missing_docs)]
679        pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
680        #[allow(missing_docs)]
681        pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
682        #[allow(missing_docs)]
683        pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
684        #[allow(missing_docs)]
685        pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
686        #[allow(missing_docs)]
687        pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
688        #[allow(missing_docs)]
689        pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
690        #[allow(missing_docs)]
691        pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
692        #[allow(missing_docs)]
693        pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
694        #[allow(missing_docs)]
695        pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
696        #[allow(missing_docs)]
697        pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
698        #[allow(missing_docs)]
699        pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
700        #[allow(missing_docs)]
701        pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
702        #[allow(missing_docs)]
703        pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
704        #[allow(missing_docs)]
705        pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
706        #[allow(missing_docs)]
707        pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
708    }
709    #[allow(
710        non_camel_case_types,
711        non_snake_case,
712        clippy::pub_underscore_fields,
713        clippy::style
714    )]
715    const _: () = {
716        use alloy::sol_types as alloy_sol_types;
717        #[doc(hidden)]
718        #[allow(dead_code)]
719        type UnderlyingSolTuple<'a> = (
720            BN254::G1Point,
721            BN254::G1Point,
722            BN254::G1Point,
723            BN254::G1Point,
724            BN254::G1Point,
725            BN254::G1Point,
726            BN254::G1Point,
727            BN254::G1Point,
728            BN254::G1Point,
729            BN254::G1Point,
730            BN254::G1Point,
731            BN254::G1Point,
732            BN254::G1Point,
733            BN254::ScalarField,
734            BN254::ScalarField,
735            BN254::ScalarField,
736            BN254::ScalarField,
737            BN254::ScalarField,
738            BN254::ScalarField,
739            BN254::ScalarField,
740            BN254::ScalarField,
741            BN254::ScalarField,
742            BN254::ScalarField,
743        );
744        #[doc(hidden)]
745        type UnderlyingRustTuple<'a> = (
746            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
747            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
748            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
749            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
750            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
751            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
752            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
753            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
754            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
755            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
756            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
757            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
758            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
759            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
760            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
761            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
762            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
763            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
764            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
765            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
766            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
767            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
768            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
769        );
770        #[cfg(test)]
771        #[allow(dead_code, unreachable_patterns)]
772        fn _type_assertion(
773            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
774        ) {
775            match _t {
776                alloy_sol_types::private::AssertTypeEq::<
777                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
778                >(_) => {}
779            }
780        }
781        #[automatically_derived]
782        #[doc(hidden)]
783        impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
784            fn from(value: PlonkProof) -> Self {
785                (
786                    value.wire0,
787                    value.wire1,
788                    value.wire2,
789                    value.wire3,
790                    value.wire4,
791                    value.prodPerm,
792                    value.split0,
793                    value.split1,
794                    value.split2,
795                    value.split3,
796                    value.split4,
797                    value.zeta,
798                    value.zetaOmega,
799                    value.wireEval0,
800                    value.wireEval1,
801                    value.wireEval2,
802                    value.wireEval3,
803                    value.wireEval4,
804                    value.sigmaEval0,
805                    value.sigmaEval1,
806                    value.sigmaEval2,
807                    value.sigmaEval3,
808                    value.prodPermZetaOmegaEval,
809                )
810            }
811        }
812        #[automatically_derived]
813        #[doc(hidden)]
814        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
815            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
816                Self {
817                    wire0: tuple.0,
818                    wire1: tuple.1,
819                    wire2: tuple.2,
820                    wire3: tuple.3,
821                    wire4: tuple.4,
822                    prodPerm: tuple.5,
823                    split0: tuple.6,
824                    split1: tuple.7,
825                    split2: tuple.8,
826                    split3: tuple.9,
827                    split4: tuple.10,
828                    zeta: tuple.11,
829                    zetaOmega: tuple.12,
830                    wireEval0: tuple.13,
831                    wireEval1: tuple.14,
832                    wireEval2: tuple.15,
833                    wireEval3: tuple.16,
834                    wireEval4: tuple.17,
835                    sigmaEval0: tuple.18,
836                    sigmaEval1: tuple.19,
837                    sigmaEval2: tuple.20,
838                    sigmaEval3: tuple.21,
839                    prodPermZetaOmegaEval: tuple.22,
840                }
841            }
842        }
843        #[automatically_derived]
844        impl alloy_sol_types::SolValue for PlonkProof {
845            type SolType = Self;
846        }
847        #[automatically_derived]
848        impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
849            #[inline]
850            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
851                (
852                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
853                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
854                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
855                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
856                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
857                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
858                        &self.prodPerm,
859                    ),
860                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
861                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
862                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
863                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
864                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
865                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
866                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
867                        &self.zetaOmega,
868                    ),
869                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
870                        &self.wireEval0,
871                    ),
872                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
873                        &self.wireEval1,
874                    ),
875                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
876                        &self.wireEval2,
877                    ),
878                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
879                        &self.wireEval3,
880                    ),
881                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
882                        &self.wireEval4,
883                    ),
884                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
885                        &self.sigmaEval0,
886                    ),
887                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
888                        &self.sigmaEval1,
889                    ),
890                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
891                        &self.sigmaEval2,
892                    ),
893                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
894                        &self.sigmaEval3,
895                    ),
896                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
897                        &self.prodPermZetaOmegaEval,
898                    ),
899                )
900            }
901            #[inline]
902            fn stv_abi_encoded_size(&self) -> usize {
903                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
904                    return size;
905                }
906                let tuple = <UnderlyingRustTuple<
907                    '_,
908                > as ::core::convert::From<Self>>::from(self.clone());
909                <UnderlyingSolTuple<
910                    '_,
911                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
912            }
913            #[inline]
914            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
915                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
916            }
917            #[inline]
918            fn stv_abi_encode_packed_to(
919                &self,
920                out: &mut alloy_sol_types::private::Vec<u8>,
921            ) {
922                let tuple = <UnderlyingRustTuple<
923                    '_,
924                > as ::core::convert::From<Self>>::from(self.clone());
925                <UnderlyingSolTuple<
926                    '_,
927                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
928            }
929            #[inline]
930            fn stv_abi_packed_encoded_size(&self) -> usize {
931                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
932                    return size;
933                }
934                let tuple = <UnderlyingRustTuple<
935                    '_,
936                > as ::core::convert::From<Self>>::from(self.clone());
937                <UnderlyingSolTuple<
938                    '_,
939                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
940            }
941        }
942        #[automatically_derived]
943        impl alloy_sol_types::SolType for PlonkProof {
944            type RustType = Self;
945            type Token<'a> = <UnderlyingSolTuple<
946                'a,
947            > as alloy_sol_types::SolType>::Token<'a>;
948            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
949            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
950                '_,
951            > as alloy_sol_types::SolType>::ENCODED_SIZE;
952            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
953                '_,
954            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
955            #[inline]
956            fn valid_token(token: &Self::Token<'_>) -> bool {
957                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
958            }
959            #[inline]
960            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
961                let tuple = <UnderlyingSolTuple<
962                    '_,
963                > as alloy_sol_types::SolType>::detokenize(token);
964                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
965            }
966        }
967        #[automatically_derived]
968        impl alloy_sol_types::SolStruct for PlonkProof {
969            const NAME: &'static str = "PlonkProof";
970            #[inline]
971            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
972                alloy_sol_types::private::Cow::Borrowed(
973                    "PlonkProof(G1Point wire0,G1Point wire1,G1Point wire2,G1Point wire3,G1Point wire4,G1Point prodPerm,G1Point split0,G1Point split1,G1Point split2,G1Point split3,G1Point split4,G1Point zeta,G1Point zetaOmega,uint256 wireEval0,uint256 wireEval1,uint256 wireEval2,uint256 wireEval3,uint256 wireEval4,uint256 sigmaEval0,uint256 sigmaEval1,uint256 sigmaEval2,uint256 sigmaEval3,uint256 prodPermZetaOmegaEval)",
974                )
975            }
976            #[inline]
977            fn eip712_components() -> alloy_sol_types::private::Vec<
978                alloy_sol_types::private::Cow<'static, str>,
979            > {
980                let mut components = alloy_sol_types::private::Vec::with_capacity(13);
981                components
982                    .push(
983                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
984                    );
985                components
986                    .extend(
987                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
988                    );
989                components
990                    .push(
991                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
992                    );
993                components
994                    .extend(
995                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
996                    );
997                components
998                    .push(
999                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1000                    );
1001                components
1002                    .extend(
1003                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1004                    );
1005                components
1006                    .push(
1007                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1008                    );
1009                components
1010                    .extend(
1011                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1012                    );
1013                components
1014                    .push(
1015                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1016                    );
1017                components
1018                    .extend(
1019                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1020                    );
1021                components
1022                    .push(
1023                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1024                    );
1025                components
1026                    .extend(
1027                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1028                    );
1029                components
1030                    .push(
1031                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1032                    );
1033                components
1034                    .extend(
1035                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1036                    );
1037                components
1038                    .push(
1039                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1040                    );
1041                components
1042                    .extend(
1043                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1044                    );
1045                components
1046                    .push(
1047                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1048                    );
1049                components
1050                    .extend(
1051                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1052                    );
1053                components
1054                    .push(
1055                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1056                    );
1057                components
1058                    .extend(
1059                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1060                    );
1061                components
1062                    .push(
1063                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1064                    );
1065                components
1066                    .extend(
1067                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1068                    );
1069                components
1070                    .push(
1071                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1072                    );
1073                components
1074                    .extend(
1075                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1076                    );
1077                components
1078                    .push(
1079                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1080                    );
1081                components
1082                    .extend(
1083                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1084                    );
1085                components
1086            }
1087            #[inline]
1088            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1089                [
1090                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1091                            &self.wire0,
1092                        )
1093                        .0,
1094                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1095                            &self.wire1,
1096                        )
1097                        .0,
1098                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1099                            &self.wire2,
1100                        )
1101                        .0,
1102                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1103                            &self.wire3,
1104                        )
1105                        .0,
1106                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1107                            &self.wire4,
1108                        )
1109                        .0,
1110                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1111                            &self.prodPerm,
1112                        )
1113                        .0,
1114                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1115                            &self.split0,
1116                        )
1117                        .0,
1118                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1119                            &self.split1,
1120                        )
1121                        .0,
1122                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1123                            &self.split2,
1124                        )
1125                        .0,
1126                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1127                            &self.split3,
1128                        )
1129                        .0,
1130                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1131                            &self.split4,
1132                        )
1133                        .0,
1134                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1135                            &self.zeta,
1136                        )
1137                        .0,
1138                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1139                            &self.zetaOmega,
1140                        )
1141                        .0,
1142                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1143                            &self.wireEval0,
1144                        )
1145                        .0,
1146                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1147                            &self.wireEval1,
1148                        )
1149                        .0,
1150                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1151                            &self.wireEval2,
1152                        )
1153                        .0,
1154                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1155                            &self.wireEval3,
1156                        )
1157                        .0,
1158                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1159                            &self.wireEval4,
1160                        )
1161                        .0,
1162                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1163                            &self.sigmaEval0,
1164                        )
1165                        .0,
1166                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1167                            &self.sigmaEval1,
1168                        )
1169                        .0,
1170                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1171                            &self.sigmaEval2,
1172                        )
1173                        .0,
1174                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1175                            &self.sigmaEval3,
1176                        )
1177                        .0,
1178                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1179                            &self.prodPermZetaOmegaEval,
1180                        )
1181                        .0,
1182                ]
1183                    .concat()
1184            }
1185        }
1186        #[automatically_derived]
1187        impl alloy_sol_types::EventTopic for PlonkProof {
1188            #[inline]
1189            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1190                0usize
1191                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1192                        &rust.wire0,
1193                    )
1194                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1195                        &rust.wire1,
1196                    )
1197                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1198                        &rust.wire2,
1199                    )
1200                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1201                        &rust.wire3,
1202                    )
1203                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1204                        &rust.wire4,
1205                    )
1206                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1207                        &rust.prodPerm,
1208                    )
1209                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1210                        &rust.split0,
1211                    )
1212                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1213                        &rust.split1,
1214                    )
1215                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1216                        &rust.split2,
1217                    )
1218                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1219                        &rust.split3,
1220                    )
1221                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1222                        &rust.split4,
1223                    )
1224                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1225                        &rust.zeta,
1226                    )
1227                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1228                        &rust.zetaOmega,
1229                    )
1230                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1231                        &rust.wireEval0,
1232                    )
1233                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1234                        &rust.wireEval1,
1235                    )
1236                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1237                        &rust.wireEval2,
1238                    )
1239                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1240                        &rust.wireEval3,
1241                    )
1242                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1243                        &rust.wireEval4,
1244                    )
1245                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1246                        &rust.sigmaEval0,
1247                    )
1248                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1249                        &rust.sigmaEval1,
1250                    )
1251                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1252                        &rust.sigmaEval2,
1253                    )
1254                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1255                        &rust.sigmaEval3,
1256                    )
1257                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1258                        &rust.prodPermZetaOmegaEval,
1259                    )
1260            }
1261            #[inline]
1262            fn encode_topic_preimage(
1263                rust: &Self::RustType,
1264                out: &mut alloy_sol_types::private::Vec<u8>,
1265            ) {
1266                out.reserve(
1267                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1268                );
1269                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1270                    &rust.wire0,
1271                    out,
1272                );
1273                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1274                    &rust.wire1,
1275                    out,
1276                );
1277                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1278                    &rust.wire2,
1279                    out,
1280                );
1281                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1282                    &rust.wire3,
1283                    out,
1284                );
1285                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1286                    &rust.wire4,
1287                    out,
1288                );
1289                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1290                    &rust.prodPerm,
1291                    out,
1292                );
1293                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1294                    &rust.split0,
1295                    out,
1296                );
1297                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1298                    &rust.split1,
1299                    out,
1300                );
1301                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1302                    &rust.split2,
1303                    out,
1304                );
1305                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1306                    &rust.split3,
1307                    out,
1308                );
1309                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1310                    &rust.split4,
1311                    out,
1312                );
1313                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1314                    &rust.zeta,
1315                    out,
1316                );
1317                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1318                    &rust.zetaOmega,
1319                    out,
1320                );
1321                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1322                    &rust.wireEval0,
1323                    out,
1324                );
1325                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1326                    &rust.wireEval1,
1327                    out,
1328                );
1329                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1330                    &rust.wireEval2,
1331                    out,
1332                );
1333                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1334                    &rust.wireEval3,
1335                    out,
1336                );
1337                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1338                    &rust.wireEval4,
1339                    out,
1340                );
1341                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1342                    &rust.sigmaEval0,
1343                    out,
1344                );
1345                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1346                    &rust.sigmaEval1,
1347                    out,
1348                );
1349                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1350                    &rust.sigmaEval2,
1351                    out,
1352                );
1353                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1354                    &rust.sigmaEval3,
1355                    out,
1356                );
1357                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1358                    &rust.prodPermZetaOmegaEval,
1359                    out,
1360                );
1361            }
1362            #[inline]
1363            fn encode_topic(
1364                rust: &Self::RustType,
1365            ) -> alloy_sol_types::abi::token::WordToken {
1366                let mut out = alloy_sol_types::private::Vec::new();
1367                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1368                    rust,
1369                    &mut out,
1370                );
1371                alloy_sol_types::abi::token::WordToken(
1372                    alloy_sol_types::private::keccak256(out),
1373                )
1374            }
1375        }
1376    };
1377    #[derive(serde::Serialize, serde::Deserialize)]
1378    #[derive()]
1379    /**```solidity
1380struct VerifyingKey { uint256 domainSize; uint256 numInputs; BN254.G1Point sigma0; BN254.G1Point sigma1; BN254.G1Point sigma2; BN254.G1Point sigma3; BN254.G1Point sigma4; BN254.G1Point q1; BN254.G1Point q2; BN254.G1Point q3; BN254.G1Point q4; BN254.G1Point qM12; BN254.G1Point qM34; BN254.G1Point qO; BN254.G1Point qC; BN254.G1Point qH1; BN254.G1Point qH2; BN254.G1Point qH3; BN254.G1Point qH4; BN254.G1Point qEcc; bytes32 g2LSB; bytes32 g2MSB; }
1381```*/
1382    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1383    #[derive(Clone)]
1384    pub struct VerifyingKey {
1385        #[allow(missing_docs)]
1386        pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1387        #[allow(missing_docs)]
1388        pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1389        #[allow(missing_docs)]
1390        pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1391        #[allow(missing_docs)]
1392        pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1393        #[allow(missing_docs)]
1394        pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1395        #[allow(missing_docs)]
1396        pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1397        #[allow(missing_docs)]
1398        pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1399        #[allow(missing_docs)]
1400        pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1401        #[allow(missing_docs)]
1402        pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1403        #[allow(missing_docs)]
1404        pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1405        #[allow(missing_docs)]
1406        pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1407        #[allow(missing_docs)]
1408        pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1409        #[allow(missing_docs)]
1410        pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1411        #[allow(missing_docs)]
1412        pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1413        #[allow(missing_docs)]
1414        pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1415        #[allow(missing_docs)]
1416        pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1417        #[allow(missing_docs)]
1418        pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1419        #[allow(missing_docs)]
1420        pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1421        #[allow(missing_docs)]
1422        pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1423        #[allow(missing_docs)]
1424        pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1425        #[allow(missing_docs)]
1426        pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1427        #[allow(missing_docs)]
1428        pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1429    }
1430    #[allow(
1431        non_camel_case_types,
1432        non_snake_case,
1433        clippy::pub_underscore_fields,
1434        clippy::style
1435    )]
1436    const _: () = {
1437        use alloy::sol_types as alloy_sol_types;
1438        #[doc(hidden)]
1439        #[allow(dead_code)]
1440        type UnderlyingSolTuple<'a> = (
1441            alloy::sol_types::sol_data::Uint<256>,
1442            alloy::sol_types::sol_data::Uint<256>,
1443            BN254::G1Point,
1444            BN254::G1Point,
1445            BN254::G1Point,
1446            BN254::G1Point,
1447            BN254::G1Point,
1448            BN254::G1Point,
1449            BN254::G1Point,
1450            BN254::G1Point,
1451            BN254::G1Point,
1452            BN254::G1Point,
1453            BN254::G1Point,
1454            BN254::G1Point,
1455            BN254::G1Point,
1456            BN254::G1Point,
1457            BN254::G1Point,
1458            BN254::G1Point,
1459            BN254::G1Point,
1460            BN254::G1Point,
1461            alloy::sol_types::sol_data::FixedBytes<32>,
1462            alloy::sol_types::sol_data::FixedBytes<32>,
1463        );
1464        #[doc(hidden)]
1465        type UnderlyingRustTuple<'a> = (
1466            alloy::sol_types::private::primitives::aliases::U256,
1467            alloy::sol_types::private::primitives::aliases::U256,
1468            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1469            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1470            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1471            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1472            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1473            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1474            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1475            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1476            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1477            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1478            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1479            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1480            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1481            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1482            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1483            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1484            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1485            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1486            alloy::sol_types::private::FixedBytes<32>,
1487            alloy::sol_types::private::FixedBytes<32>,
1488        );
1489        #[cfg(test)]
1490        #[allow(dead_code, unreachable_patterns)]
1491        fn _type_assertion(
1492            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1493        ) {
1494            match _t {
1495                alloy_sol_types::private::AssertTypeEq::<
1496                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1497                >(_) => {}
1498            }
1499        }
1500        #[automatically_derived]
1501        #[doc(hidden)]
1502        impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1503            fn from(value: VerifyingKey) -> Self {
1504                (
1505                    value.domainSize,
1506                    value.numInputs,
1507                    value.sigma0,
1508                    value.sigma1,
1509                    value.sigma2,
1510                    value.sigma3,
1511                    value.sigma4,
1512                    value.q1,
1513                    value.q2,
1514                    value.q3,
1515                    value.q4,
1516                    value.qM12,
1517                    value.qM34,
1518                    value.qO,
1519                    value.qC,
1520                    value.qH1,
1521                    value.qH2,
1522                    value.qH3,
1523                    value.qH4,
1524                    value.qEcc,
1525                    value.g2LSB,
1526                    value.g2MSB,
1527                )
1528            }
1529        }
1530        #[automatically_derived]
1531        #[doc(hidden)]
1532        impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1533            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1534                Self {
1535                    domainSize: tuple.0,
1536                    numInputs: tuple.1,
1537                    sigma0: tuple.2,
1538                    sigma1: tuple.3,
1539                    sigma2: tuple.4,
1540                    sigma3: tuple.5,
1541                    sigma4: tuple.6,
1542                    q1: tuple.7,
1543                    q2: tuple.8,
1544                    q3: tuple.9,
1545                    q4: tuple.10,
1546                    qM12: tuple.11,
1547                    qM34: tuple.12,
1548                    qO: tuple.13,
1549                    qC: tuple.14,
1550                    qH1: tuple.15,
1551                    qH2: tuple.16,
1552                    qH3: tuple.17,
1553                    qH4: tuple.18,
1554                    qEcc: tuple.19,
1555                    g2LSB: tuple.20,
1556                    g2MSB: tuple.21,
1557                }
1558            }
1559        }
1560        #[automatically_derived]
1561        impl alloy_sol_types::SolValue for VerifyingKey {
1562            type SolType = Self;
1563        }
1564        #[automatically_derived]
1565        impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1566            #[inline]
1567            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1568                (
1569                    <alloy::sol_types::sol_data::Uint<
1570                        256,
1571                    > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1572                    <alloy::sol_types::sol_data::Uint<
1573                        256,
1574                    > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1575                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1576                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1577                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1578                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1579                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1580                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1581                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1582                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1583                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1584                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1585                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1586                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1587                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1588                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1589                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1590                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1591                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1592                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1593                    <alloy::sol_types::sol_data::FixedBytes<
1594                        32,
1595                    > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1596                    <alloy::sol_types::sol_data::FixedBytes<
1597                        32,
1598                    > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1599                )
1600            }
1601            #[inline]
1602            fn stv_abi_encoded_size(&self) -> usize {
1603                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1604                    return size;
1605                }
1606                let tuple = <UnderlyingRustTuple<
1607                    '_,
1608                > as ::core::convert::From<Self>>::from(self.clone());
1609                <UnderlyingSolTuple<
1610                    '_,
1611                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1612            }
1613            #[inline]
1614            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1615                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1616            }
1617            #[inline]
1618            fn stv_abi_encode_packed_to(
1619                &self,
1620                out: &mut alloy_sol_types::private::Vec<u8>,
1621            ) {
1622                let tuple = <UnderlyingRustTuple<
1623                    '_,
1624                > as ::core::convert::From<Self>>::from(self.clone());
1625                <UnderlyingSolTuple<
1626                    '_,
1627                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1628            }
1629            #[inline]
1630            fn stv_abi_packed_encoded_size(&self) -> usize {
1631                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1632                    return size;
1633                }
1634                let tuple = <UnderlyingRustTuple<
1635                    '_,
1636                > as ::core::convert::From<Self>>::from(self.clone());
1637                <UnderlyingSolTuple<
1638                    '_,
1639                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1640            }
1641        }
1642        #[automatically_derived]
1643        impl alloy_sol_types::SolType for VerifyingKey {
1644            type RustType = Self;
1645            type Token<'a> = <UnderlyingSolTuple<
1646                'a,
1647            > as alloy_sol_types::SolType>::Token<'a>;
1648            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1649            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1650                '_,
1651            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1652            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1653                '_,
1654            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1655            #[inline]
1656            fn valid_token(token: &Self::Token<'_>) -> bool {
1657                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1658            }
1659            #[inline]
1660            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1661                let tuple = <UnderlyingSolTuple<
1662                    '_,
1663                > as alloy_sol_types::SolType>::detokenize(token);
1664                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1665            }
1666        }
1667        #[automatically_derived]
1668        impl alloy_sol_types::SolStruct for VerifyingKey {
1669            const NAME: &'static str = "VerifyingKey";
1670            #[inline]
1671            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1672                alloy_sol_types::private::Cow::Borrowed(
1673                    "VerifyingKey(uint256 domainSize,uint256 numInputs,G1Point sigma0,G1Point sigma1,G1Point sigma2,G1Point sigma3,G1Point sigma4,G1Point q1,G1Point q2,G1Point q3,G1Point q4,G1Point qM12,G1Point qM34,G1Point qO,G1Point qC,G1Point qH1,G1Point qH2,G1Point qH3,G1Point qH4,G1Point qEcc,bytes32 g2LSB,bytes32 g2MSB)",
1674                )
1675            }
1676            #[inline]
1677            fn eip712_components() -> alloy_sol_types::private::Vec<
1678                alloy_sol_types::private::Cow<'static, str>,
1679            > {
1680                let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1681                components
1682                    .push(
1683                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1684                    );
1685                components
1686                    .extend(
1687                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1688                    );
1689                components
1690                    .push(
1691                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1692                    );
1693                components
1694                    .extend(
1695                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1696                    );
1697                components
1698                    .push(
1699                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1700                    );
1701                components
1702                    .extend(
1703                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1704                    );
1705                components
1706                    .push(
1707                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1708                    );
1709                components
1710                    .extend(
1711                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1712                    );
1713                components
1714                    .push(
1715                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1716                    );
1717                components
1718                    .extend(
1719                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1720                    );
1721                components
1722                    .push(
1723                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1724                    );
1725                components
1726                    .extend(
1727                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1728                    );
1729                components
1730                    .push(
1731                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1732                    );
1733                components
1734                    .extend(
1735                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1736                    );
1737                components
1738                    .push(
1739                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1740                    );
1741                components
1742                    .extend(
1743                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1744                    );
1745                components
1746                    .push(
1747                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1748                    );
1749                components
1750                    .extend(
1751                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1752                    );
1753                components
1754                    .push(
1755                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1756                    );
1757                components
1758                    .extend(
1759                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1760                    );
1761                components
1762                    .push(
1763                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1764                    );
1765                components
1766                    .extend(
1767                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1768                    );
1769                components
1770                    .push(
1771                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1772                    );
1773                components
1774                    .extend(
1775                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1776                    );
1777                components
1778                    .push(
1779                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1780                    );
1781                components
1782                    .extend(
1783                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1784                    );
1785                components
1786                    .push(
1787                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1788                    );
1789                components
1790                    .extend(
1791                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1792                    );
1793                components
1794                    .push(
1795                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1796                    );
1797                components
1798                    .extend(
1799                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1800                    );
1801                components
1802                    .push(
1803                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1804                    );
1805                components
1806                    .extend(
1807                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1808                    );
1809                components
1810                    .push(
1811                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1812                    );
1813                components
1814                    .extend(
1815                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1816                    );
1817                components
1818                    .push(
1819                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1820                    );
1821                components
1822                    .extend(
1823                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1824                    );
1825                components
1826            }
1827            #[inline]
1828            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1829                [
1830                    <alloy::sol_types::sol_data::Uint<
1831                        256,
1832                    > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1833                        .0,
1834                    <alloy::sol_types::sol_data::Uint<
1835                        256,
1836                    > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1837                        .0,
1838                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1839                            &self.sigma0,
1840                        )
1841                        .0,
1842                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1843                            &self.sigma1,
1844                        )
1845                        .0,
1846                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1847                            &self.sigma2,
1848                        )
1849                        .0,
1850                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1851                            &self.sigma3,
1852                        )
1853                        .0,
1854                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1855                            &self.sigma4,
1856                        )
1857                        .0,
1858                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1859                            &self.q1,
1860                        )
1861                        .0,
1862                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1863                            &self.q2,
1864                        )
1865                        .0,
1866                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1867                            &self.q3,
1868                        )
1869                        .0,
1870                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1871                            &self.q4,
1872                        )
1873                        .0,
1874                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1875                            &self.qM12,
1876                        )
1877                        .0,
1878                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1879                            &self.qM34,
1880                        )
1881                        .0,
1882                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1883                            &self.qO,
1884                        )
1885                        .0,
1886                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1887                            &self.qC,
1888                        )
1889                        .0,
1890                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1891                            &self.qH1,
1892                        )
1893                        .0,
1894                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1895                            &self.qH2,
1896                        )
1897                        .0,
1898                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1899                            &self.qH3,
1900                        )
1901                        .0,
1902                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1903                            &self.qH4,
1904                        )
1905                        .0,
1906                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1907                            &self.qEcc,
1908                        )
1909                        .0,
1910                    <alloy::sol_types::sol_data::FixedBytes<
1911                        32,
1912                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1913                        .0,
1914                    <alloy::sol_types::sol_data::FixedBytes<
1915                        32,
1916                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1917                        .0,
1918                ]
1919                    .concat()
1920            }
1921        }
1922        #[automatically_derived]
1923        impl alloy_sol_types::EventTopic for VerifyingKey {
1924            #[inline]
1925            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1926                0usize
1927                    + <alloy::sol_types::sol_data::Uint<
1928                        256,
1929                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1930                        &rust.domainSize,
1931                    )
1932                    + <alloy::sol_types::sol_data::Uint<
1933                        256,
1934                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1935                        &rust.numInputs,
1936                    )
1937                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1938                        &rust.sigma0,
1939                    )
1940                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1941                        &rust.sigma1,
1942                    )
1943                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1944                        &rust.sigma2,
1945                    )
1946                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1947                        &rust.sigma3,
1948                    )
1949                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1950                        &rust.sigma4,
1951                    )
1952                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1953                        &rust.q1,
1954                    )
1955                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1956                        &rust.q2,
1957                    )
1958                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1959                        &rust.q3,
1960                    )
1961                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1962                        &rust.q4,
1963                    )
1964                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1965                        &rust.qM12,
1966                    )
1967                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1968                        &rust.qM34,
1969                    )
1970                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1971                        &rust.qO,
1972                    )
1973                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1974                        &rust.qC,
1975                    )
1976                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1977                        &rust.qH1,
1978                    )
1979                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1980                        &rust.qH2,
1981                    )
1982                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1983                        &rust.qH3,
1984                    )
1985                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1986                        &rust.qH4,
1987                    )
1988                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1989                        &rust.qEcc,
1990                    )
1991                    + <alloy::sol_types::sol_data::FixedBytes<
1992                        32,
1993                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1994                    + <alloy::sol_types::sol_data::FixedBytes<
1995                        32,
1996                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1997            }
1998            #[inline]
1999            fn encode_topic_preimage(
2000                rust: &Self::RustType,
2001                out: &mut alloy_sol_types::private::Vec<u8>,
2002            ) {
2003                out.reserve(
2004                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2005                );
2006                <alloy::sol_types::sol_data::Uint<
2007                    256,
2008                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2009                    &rust.domainSize,
2010                    out,
2011                );
2012                <alloy::sol_types::sol_data::Uint<
2013                    256,
2014                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2015                    &rust.numInputs,
2016                    out,
2017                );
2018                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2019                    &rust.sigma0,
2020                    out,
2021                );
2022                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2023                    &rust.sigma1,
2024                    out,
2025                );
2026                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2027                    &rust.sigma2,
2028                    out,
2029                );
2030                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2031                    &rust.sigma3,
2032                    out,
2033                );
2034                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2035                    &rust.sigma4,
2036                    out,
2037                );
2038                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2039                    &rust.q1,
2040                    out,
2041                );
2042                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2043                    &rust.q2,
2044                    out,
2045                );
2046                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2047                    &rust.q3,
2048                    out,
2049                );
2050                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2051                    &rust.q4,
2052                    out,
2053                );
2054                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2055                    &rust.qM12,
2056                    out,
2057                );
2058                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2059                    &rust.qM34,
2060                    out,
2061                );
2062                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2063                    &rust.qO,
2064                    out,
2065                );
2066                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2067                    &rust.qC,
2068                    out,
2069                );
2070                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2071                    &rust.qH1,
2072                    out,
2073                );
2074                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2075                    &rust.qH2,
2076                    out,
2077                );
2078                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2079                    &rust.qH3,
2080                    out,
2081                );
2082                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2083                    &rust.qH4,
2084                    out,
2085                );
2086                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2087                    &rust.qEcc,
2088                    out,
2089                );
2090                <alloy::sol_types::sol_data::FixedBytes<
2091                    32,
2092                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2093                    &rust.g2LSB,
2094                    out,
2095                );
2096                <alloy::sol_types::sol_data::FixedBytes<
2097                    32,
2098                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2099                    &rust.g2MSB,
2100                    out,
2101                );
2102            }
2103            #[inline]
2104            fn encode_topic(
2105                rust: &Self::RustType,
2106            ) -> alloy_sol_types::abi::token::WordToken {
2107                let mut out = alloy_sol_types::private::Vec::new();
2108                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2109                    rust,
2110                    &mut out,
2111                );
2112                alloy_sol_types::abi::token::WordToken(
2113                    alloy_sol_types::private::keccak256(out),
2114                )
2115            }
2116        }
2117    };
2118    use alloy::contract as alloy_contract;
2119    /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2120
2121See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2122    #[inline]
2123    pub const fn new<
2124        P: alloy_contract::private::Provider<N>,
2125        N: alloy_contract::private::Network,
2126    >(
2127        address: alloy_sol_types::private::Address,
2128        __provider: P,
2129    ) -> IPlonkVerifierInstance<P, N> {
2130        IPlonkVerifierInstance::<P, N>::new(address, __provider)
2131    }
2132    /**A [`IPlonkVerifier`](self) instance.
2133
2134Contains type-safe methods for interacting with an on-chain instance of the
2135[`IPlonkVerifier`](self) contract located at a given `address`, using a given
2136provider `P`.
2137
2138If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2139documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2140be used to deploy a new instance of the contract.
2141
2142See the [module-level documentation](self) for all the available methods.*/
2143    #[derive(Clone)]
2144    pub struct IPlonkVerifierInstance<P, N = alloy_contract::private::Ethereum> {
2145        address: alloy_sol_types::private::Address,
2146        provider: P,
2147        _network: ::core::marker::PhantomData<N>,
2148    }
2149    #[automatically_derived]
2150    impl<P, N> ::core::fmt::Debug for IPlonkVerifierInstance<P, N> {
2151        #[inline]
2152        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2153            f.debug_tuple("IPlonkVerifierInstance").field(&self.address).finish()
2154        }
2155    }
2156    /// Instantiation and getters/setters.
2157    #[automatically_derived]
2158    impl<
2159        P: alloy_contract::private::Provider<N>,
2160        N: alloy_contract::private::Network,
2161    > IPlonkVerifierInstance<P, N> {
2162        /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2163
2164See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2165        #[inline]
2166        pub const fn new(
2167            address: alloy_sol_types::private::Address,
2168            __provider: P,
2169        ) -> Self {
2170            Self {
2171                address,
2172                provider: __provider,
2173                _network: ::core::marker::PhantomData,
2174            }
2175        }
2176        /// Returns a reference to the address.
2177        #[inline]
2178        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2179            &self.address
2180        }
2181        /// Sets the address.
2182        #[inline]
2183        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2184            self.address = address;
2185        }
2186        /// Sets the address and returns `self`.
2187        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2188            self.set_address(address);
2189            self
2190        }
2191        /// Returns a reference to the provider.
2192        #[inline]
2193        pub const fn provider(&self) -> &P {
2194            &self.provider
2195        }
2196    }
2197    impl<P: ::core::clone::Clone, N> IPlonkVerifierInstance<&P, N> {
2198        /// Clones the provider and returns a new instance with the cloned provider.
2199        #[inline]
2200        pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<P, N> {
2201            IPlonkVerifierInstance {
2202                address: self.address,
2203                provider: ::core::clone::Clone::clone(&self.provider),
2204                _network: ::core::marker::PhantomData,
2205            }
2206        }
2207    }
2208    /// Function calls.
2209    #[automatically_derived]
2210    impl<
2211        P: alloy_contract::private::Provider<N>,
2212        N: alloy_contract::private::Network,
2213    > IPlonkVerifierInstance<P, N> {
2214        /// Creates a new call builder using this contract instance's provider and address.
2215        ///
2216        /// Note that the call can be any function call, not just those defined in this
2217        /// contract. Prefer using the other methods for building type-safe contract calls.
2218        pub fn call_builder<C: alloy_sol_types::SolCall>(
2219            &self,
2220            call: &C,
2221        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2222            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2223        }
2224    }
2225    /// Event filters.
2226    #[automatically_derived]
2227    impl<
2228        P: alloy_contract::private::Provider<N>,
2229        N: alloy_contract::private::Network,
2230    > IPlonkVerifierInstance<P, N> {
2231        /// Creates a new event filter using this contract instance's provider and address.
2232        ///
2233        /// Note that the type can be any event, not just those defined in this contract.
2234        /// Prefer using the other methods for building type-safe event filters.
2235        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2236            &self,
2237        ) -> alloy_contract::Event<&P, E, N> {
2238            alloy_contract::Event::new_sol(&self.provider, &self.address)
2239        }
2240    }
2241}
2242///Module containing a contract's types and functions.
2243/**
2244
2245```solidity
2246library LightClient {
2247    struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2248    struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2249    struct StateHistoryCommitment { uint64 l1BlockHeight; uint64 l1BlockTimestamp; uint64 hotShotBlockHeight; BN254.ScalarField hotShotBlockCommRoot; }
2250}
2251```*/
2252#[allow(
2253    non_camel_case_types,
2254    non_snake_case,
2255    clippy::pub_underscore_fields,
2256    clippy::style,
2257    clippy::empty_structs_with_brackets
2258)]
2259pub mod LightClient {
2260    use super::*;
2261    use alloy::sol_types as alloy_sol_types;
2262    #[derive(serde::Serialize, serde::Deserialize)]
2263    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2264    /**```solidity
2265struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2266```*/
2267    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2268    #[derive(Clone)]
2269    pub struct LightClientState {
2270        #[allow(missing_docs)]
2271        pub viewNum: u64,
2272        #[allow(missing_docs)]
2273        pub blockHeight: u64,
2274        #[allow(missing_docs)]
2275        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2276    }
2277    #[allow(
2278        non_camel_case_types,
2279        non_snake_case,
2280        clippy::pub_underscore_fields,
2281        clippy::style
2282    )]
2283    const _: () = {
2284        use alloy::sol_types as alloy_sol_types;
2285        #[doc(hidden)]
2286        #[allow(dead_code)]
2287        type UnderlyingSolTuple<'a> = (
2288            alloy::sol_types::sol_data::Uint<64>,
2289            alloy::sol_types::sol_data::Uint<64>,
2290            BN254::ScalarField,
2291        );
2292        #[doc(hidden)]
2293        type UnderlyingRustTuple<'a> = (
2294            u64,
2295            u64,
2296            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2297        );
2298        #[cfg(test)]
2299        #[allow(dead_code, unreachable_patterns)]
2300        fn _type_assertion(
2301            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2302        ) {
2303            match _t {
2304                alloy_sol_types::private::AssertTypeEq::<
2305                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2306                >(_) => {}
2307            }
2308        }
2309        #[automatically_derived]
2310        #[doc(hidden)]
2311        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
2312            fn from(value: LightClientState) -> Self {
2313                (value.viewNum, value.blockHeight, value.blockCommRoot)
2314            }
2315        }
2316        #[automatically_derived]
2317        #[doc(hidden)]
2318        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
2319            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2320                Self {
2321                    viewNum: tuple.0,
2322                    blockHeight: tuple.1,
2323                    blockCommRoot: tuple.2,
2324                }
2325            }
2326        }
2327        #[automatically_derived]
2328        impl alloy_sol_types::SolValue for LightClientState {
2329            type SolType = Self;
2330        }
2331        #[automatically_derived]
2332        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
2333            #[inline]
2334            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2335                (
2336                    <alloy::sol_types::sol_data::Uint<
2337                        64,
2338                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
2339                    <alloy::sol_types::sol_data::Uint<
2340                        64,
2341                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
2342                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2343                        &self.blockCommRoot,
2344                    ),
2345                )
2346            }
2347            #[inline]
2348            fn stv_abi_encoded_size(&self) -> usize {
2349                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2350                    return size;
2351                }
2352                let tuple = <UnderlyingRustTuple<
2353                    '_,
2354                > as ::core::convert::From<Self>>::from(self.clone());
2355                <UnderlyingSolTuple<
2356                    '_,
2357                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2358            }
2359            #[inline]
2360            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2361                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2362            }
2363            #[inline]
2364            fn stv_abi_encode_packed_to(
2365                &self,
2366                out: &mut alloy_sol_types::private::Vec<u8>,
2367            ) {
2368                let tuple = <UnderlyingRustTuple<
2369                    '_,
2370                > as ::core::convert::From<Self>>::from(self.clone());
2371                <UnderlyingSolTuple<
2372                    '_,
2373                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2374            }
2375            #[inline]
2376            fn stv_abi_packed_encoded_size(&self) -> usize {
2377                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2378                    return size;
2379                }
2380                let tuple = <UnderlyingRustTuple<
2381                    '_,
2382                > as ::core::convert::From<Self>>::from(self.clone());
2383                <UnderlyingSolTuple<
2384                    '_,
2385                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2386            }
2387        }
2388        #[automatically_derived]
2389        impl alloy_sol_types::SolType for LightClientState {
2390            type RustType = Self;
2391            type Token<'a> = <UnderlyingSolTuple<
2392                'a,
2393            > as alloy_sol_types::SolType>::Token<'a>;
2394            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2395            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2396                '_,
2397            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2398            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2399                '_,
2400            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2401            #[inline]
2402            fn valid_token(token: &Self::Token<'_>) -> bool {
2403                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2404            }
2405            #[inline]
2406            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2407                let tuple = <UnderlyingSolTuple<
2408                    '_,
2409                > as alloy_sol_types::SolType>::detokenize(token);
2410                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2411            }
2412        }
2413        #[automatically_derived]
2414        impl alloy_sol_types::SolStruct for LightClientState {
2415            const NAME: &'static str = "LightClientState";
2416            #[inline]
2417            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2418                alloy_sol_types::private::Cow::Borrowed(
2419                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
2420                )
2421            }
2422            #[inline]
2423            fn eip712_components() -> alloy_sol_types::private::Vec<
2424                alloy_sol_types::private::Cow<'static, str>,
2425            > {
2426                alloy_sol_types::private::Vec::new()
2427            }
2428            #[inline]
2429            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2430                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2431            }
2432            #[inline]
2433            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2434                [
2435                    <alloy::sol_types::sol_data::Uint<
2436                        64,
2437                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
2438                        .0,
2439                    <alloy::sol_types::sol_data::Uint<
2440                        64,
2441                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
2442                        .0,
2443                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2444                            &self.blockCommRoot,
2445                        )
2446                        .0,
2447                ]
2448                    .concat()
2449            }
2450        }
2451        #[automatically_derived]
2452        impl alloy_sol_types::EventTopic for LightClientState {
2453            #[inline]
2454            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2455                0usize
2456                    + <alloy::sol_types::sol_data::Uint<
2457                        64,
2458                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2459                        &rust.viewNum,
2460                    )
2461                    + <alloy::sol_types::sol_data::Uint<
2462                        64,
2463                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2464                        &rust.blockHeight,
2465                    )
2466                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2467                        &rust.blockCommRoot,
2468                    )
2469            }
2470            #[inline]
2471            fn encode_topic_preimage(
2472                rust: &Self::RustType,
2473                out: &mut alloy_sol_types::private::Vec<u8>,
2474            ) {
2475                out.reserve(
2476                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2477                );
2478                <alloy::sol_types::sol_data::Uint<
2479                    64,
2480                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2481                    &rust.viewNum,
2482                    out,
2483                );
2484                <alloy::sol_types::sol_data::Uint<
2485                    64,
2486                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2487                    &rust.blockHeight,
2488                    out,
2489                );
2490                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2491                    &rust.blockCommRoot,
2492                    out,
2493                );
2494            }
2495            #[inline]
2496            fn encode_topic(
2497                rust: &Self::RustType,
2498            ) -> alloy_sol_types::abi::token::WordToken {
2499                let mut out = alloy_sol_types::private::Vec::new();
2500                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2501                    rust,
2502                    &mut out,
2503                );
2504                alloy_sol_types::abi::token::WordToken(
2505                    alloy_sol_types::private::keccak256(out),
2506                )
2507            }
2508        }
2509    };
2510    #[derive(serde::Serialize, serde::Deserialize)]
2511    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2512    /**```solidity
2513struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2514```*/
2515    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2516    #[derive(Clone)]
2517    pub struct StakeTableState {
2518        #[allow(missing_docs)]
2519        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
2520        #[allow(missing_docs)]
2521        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2522        #[allow(missing_docs)]
2523        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2524        #[allow(missing_docs)]
2525        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2526    }
2527    #[allow(
2528        non_camel_case_types,
2529        non_snake_case,
2530        clippy::pub_underscore_fields,
2531        clippy::style
2532    )]
2533    const _: () = {
2534        use alloy::sol_types as alloy_sol_types;
2535        #[doc(hidden)]
2536        #[allow(dead_code)]
2537        type UnderlyingSolTuple<'a> = (
2538            alloy::sol_types::sol_data::Uint<256>,
2539            BN254::ScalarField,
2540            BN254::ScalarField,
2541            BN254::ScalarField,
2542        );
2543        #[doc(hidden)]
2544        type UnderlyingRustTuple<'a> = (
2545            alloy::sol_types::private::primitives::aliases::U256,
2546            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2547            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2548            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2549        );
2550        #[cfg(test)]
2551        #[allow(dead_code, unreachable_patterns)]
2552        fn _type_assertion(
2553            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2554        ) {
2555            match _t {
2556                alloy_sol_types::private::AssertTypeEq::<
2557                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2558                >(_) => {}
2559            }
2560        }
2561        #[automatically_derived]
2562        #[doc(hidden)]
2563        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
2564            fn from(value: StakeTableState) -> Self {
2565                (
2566                    value.threshold,
2567                    value.blsKeyComm,
2568                    value.schnorrKeyComm,
2569                    value.amountComm,
2570                )
2571            }
2572        }
2573        #[automatically_derived]
2574        #[doc(hidden)]
2575        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
2576            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2577                Self {
2578                    threshold: tuple.0,
2579                    blsKeyComm: tuple.1,
2580                    schnorrKeyComm: tuple.2,
2581                    amountComm: tuple.3,
2582                }
2583            }
2584        }
2585        #[automatically_derived]
2586        impl alloy_sol_types::SolValue for StakeTableState {
2587            type SolType = Self;
2588        }
2589        #[automatically_derived]
2590        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
2591            #[inline]
2592            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2593                (
2594                    <alloy::sol_types::sol_data::Uint<
2595                        256,
2596                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
2597                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2598                        &self.blsKeyComm,
2599                    ),
2600                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2601                        &self.schnorrKeyComm,
2602                    ),
2603                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2604                        &self.amountComm,
2605                    ),
2606                )
2607            }
2608            #[inline]
2609            fn stv_abi_encoded_size(&self) -> usize {
2610                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2611                    return size;
2612                }
2613                let tuple = <UnderlyingRustTuple<
2614                    '_,
2615                > as ::core::convert::From<Self>>::from(self.clone());
2616                <UnderlyingSolTuple<
2617                    '_,
2618                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2619            }
2620            #[inline]
2621            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2622                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2623            }
2624            #[inline]
2625            fn stv_abi_encode_packed_to(
2626                &self,
2627                out: &mut alloy_sol_types::private::Vec<u8>,
2628            ) {
2629                let tuple = <UnderlyingRustTuple<
2630                    '_,
2631                > as ::core::convert::From<Self>>::from(self.clone());
2632                <UnderlyingSolTuple<
2633                    '_,
2634                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2635            }
2636            #[inline]
2637            fn stv_abi_packed_encoded_size(&self) -> usize {
2638                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2639                    return size;
2640                }
2641                let tuple = <UnderlyingRustTuple<
2642                    '_,
2643                > as ::core::convert::From<Self>>::from(self.clone());
2644                <UnderlyingSolTuple<
2645                    '_,
2646                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2647            }
2648        }
2649        #[automatically_derived]
2650        impl alloy_sol_types::SolType for StakeTableState {
2651            type RustType = Self;
2652            type Token<'a> = <UnderlyingSolTuple<
2653                'a,
2654            > as alloy_sol_types::SolType>::Token<'a>;
2655            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2656            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2657                '_,
2658            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2659            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2660                '_,
2661            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2662            #[inline]
2663            fn valid_token(token: &Self::Token<'_>) -> bool {
2664                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2665            }
2666            #[inline]
2667            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2668                let tuple = <UnderlyingSolTuple<
2669                    '_,
2670                > as alloy_sol_types::SolType>::detokenize(token);
2671                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2672            }
2673        }
2674        #[automatically_derived]
2675        impl alloy_sol_types::SolStruct for StakeTableState {
2676            const NAME: &'static str = "StakeTableState";
2677            #[inline]
2678            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2679                alloy_sol_types::private::Cow::Borrowed(
2680                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
2681                )
2682            }
2683            #[inline]
2684            fn eip712_components() -> alloy_sol_types::private::Vec<
2685                alloy_sol_types::private::Cow<'static, str>,
2686            > {
2687                alloy_sol_types::private::Vec::new()
2688            }
2689            #[inline]
2690            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2691                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2692            }
2693            #[inline]
2694            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2695                [
2696                    <alloy::sol_types::sol_data::Uint<
2697                        256,
2698                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
2699                        .0,
2700                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2701                            &self.blsKeyComm,
2702                        )
2703                        .0,
2704                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2705                            &self.schnorrKeyComm,
2706                        )
2707                        .0,
2708                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2709                            &self.amountComm,
2710                        )
2711                        .0,
2712                ]
2713                    .concat()
2714            }
2715        }
2716        #[automatically_derived]
2717        impl alloy_sol_types::EventTopic for StakeTableState {
2718            #[inline]
2719            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2720                0usize
2721                    + <alloy::sol_types::sol_data::Uint<
2722                        256,
2723                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2724                        &rust.threshold,
2725                    )
2726                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2727                        &rust.blsKeyComm,
2728                    )
2729                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2730                        &rust.schnorrKeyComm,
2731                    )
2732                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2733                        &rust.amountComm,
2734                    )
2735            }
2736            #[inline]
2737            fn encode_topic_preimage(
2738                rust: &Self::RustType,
2739                out: &mut alloy_sol_types::private::Vec<u8>,
2740            ) {
2741                out.reserve(
2742                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2743                );
2744                <alloy::sol_types::sol_data::Uint<
2745                    256,
2746                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2747                    &rust.threshold,
2748                    out,
2749                );
2750                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2751                    &rust.blsKeyComm,
2752                    out,
2753                );
2754                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2755                    &rust.schnorrKeyComm,
2756                    out,
2757                );
2758                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2759                    &rust.amountComm,
2760                    out,
2761                );
2762            }
2763            #[inline]
2764            fn encode_topic(
2765                rust: &Self::RustType,
2766            ) -> alloy_sol_types::abi::token::WordToken {
2767                let mut out = alloy_sol_types::private::Vec::new();
2768                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2769                    rust,
2770                    &mut out,
2771                );
2772                alloy_sol_types::abi::token::WordToken(
2773                    alloy_sol_types::private::keccak256(out),
2774                )
2775            }
2776        }
2777    };
2778    #[derive(serde::Serialize, serde::Deserialize)]
2779    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2780    /**```solidity
2781struct StateHistoryCommitment { uint64 l1BlockHeight; uint64 l1BlockTimestamp; uint64 hotShotBlockHeight; BN254.ScalarField hotShotBlockCommRoot; }
2782```*/
2783    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2784    #[derive(Clone)]
2785    pub struct StateHistoryCommitment {
2786        #[allow(missing_docs)]
2787        pub l1BlockHeight: u64,
2788        #[allow(missing_docs)]
2789        pub l1BlockTimestamp: u64,
2790        #[allow(missing_docs)]
2791        pub hotShotBlockHeight: u64,
2792        #[allow(missing_docs)]
2793        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2794    }
2795    #[allow(
2796        non_camel_case_types,
2797        non_snake_case,
2798        clippy::pub_underscore_fields,
2799        clippy::style
2800    )]
2801    const _: () = {
2802        use alloy::sol_types as alloy_sol_types;
2803        #[doc(hidden)]
2804        #[allow(dead_code)]
2805        type UnderlyingSolTuple<'a> = (
2806            alloy::sol_types::sol_data::Uint<64>,
2807            alloy::sol_types::sol_data::Uint<64>,
2808            alloy::sol_types::sol_data::Uint<64>,
2809            BN254::ScalarField,
2810        );
2811        #[doc(hidden)]
2812        type UnderlyingRustTuple<'a> = (
2813            u64,
2814            u64,
2815            u64,
2816            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2817        );
2818        #[cfg(test)]
2819        #[allow(dead_code, unreachable_patterns)]
2820        fn _type_assertion(
2821            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2822        ) {
2823            match _t {
2824                alloy_sol_types::private::AssertTypeEq::<
2825                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2826                >(_) => {}
2827            }
2828        }
2829        #[automatically_derived]
2830        #[doc(hidden)]
2831        impl ::core::convert::From<StateHistoryCommitment> for UnderlyingRustTuple<'_> {
2832            fn from(value: StateHistoryCommitment) -> Self {
2833                (
2834                    value.l1BlockHeight,
2835                    value.l1BlockTimestamp,
2836                    value.hotShotBlockHeight,
2837                    value.hotShotBlockCommRoot,
2838                )
2839            }
2840        }
2841        #[automatically_derived]
2842        #[doc(hidden)]
2843        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StateHistoryCommitment {
2844            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2845                Self {
2846                    l1BlockHeight: tuple.0,
2847                    l1BlockTimestamp: tuple.1,
2848                    hotShotBlockHeight: tuple.2,
2849                    hotShotBlockCommRoot: tuple.3,
2850                }
2851            }
2852        }
2853        #[automatically_derived]
2854        impl alloy_sol_types::SolValue for StateHistoryCommitment {
2855            type SolType = Self;
2856        }
2857        #[automatically_derived]
2858        impl alloy_sol_types::private::SolTypeValue<Self> for StateHistoryCommitment {
2859            #[inline]
2860            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2861                (
2862                    <alloy::sol_types::sol_data::Uint<
2863                        64,
2864                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
2865                    <alloy::sol_types::sol_data::Uint<
2866                        64,
2867                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
2868                    <alloy::sol_types::sol_data::Uint<
2869                        64,
2870                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
2871                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2872                        &self.hotShotBlockCommRoot,
2873                    ),
2874                )
2875            }
2876            #[inline]
2877            fn stv_abi_encoded_size(&self) -> usize {
2878                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2879                    return size;
2880                }
2881                let tuple = <UnderlyingRustTuple<
2882                    '_,
2883                > as ::core::convert::From<Self>>::from(self.clone());
2884                <UnderlyingSolTuple<
2885                    '_,
2886                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2887            }
2888            #[inline]
2889            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2890                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2891            }
2892            #[inline]
2893            fn stv_abi_encode_packed_to(
2894                &self,
2895                out: &mut alloy_sol_types::private::Vec<u8>,
2896            ) {
2897                let tuple = <UnderlyingRustTuple<
2898                    '_,
2899                > as ::core::convert::From<Self>>::from(self.clone());
2900                <UnderlyingSolTuple<
2901                    '_,
2902                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2903            }
2904            #[inline]
2905            fn stv_abi_packed_encoded_size(&self) -> usize {
2906                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2907                    return size;
2908                }
2909                let tuple = <UnderlyingRustTuple<
2910                    '_,
2911                > as ::core::convert::From<Self>>::from(self.clone());
2912                <UnderlyingSolTuple<
2913                    '_,
2914                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2915            }
2916        }
2917        #[automatically_derived]
2918        impl alloy_sol_types::SolType for StateHistoryCommitment {
2919            type RustType = Self;
2920            type Token<'a> = <UnderlyingSolTuple<
2921                'a,
2922            > as alloy_sol_types::SolType>::Token<'a>;
2923            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2924            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2925                '_,
2926            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2927            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2928                '_,
2929            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2930            #[inline]
2931            fn valid_token(token: &Self::Token<'_>) -> bool {
2932                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2933            }
2934            #[inline]
2935            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2936                let tuple = <UnderlyingSolTuple<
2937                    '_,
2938                > as alloy_sol_types::SolType>::detokenize(token);
2939                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2940            }
2941        }
2942        #[automatically_derived]
2943        impl alloy_sol_types::SolStruct for StateHistoryCommitment {
2944            const NAME: &'static str = "StateHistoryCommitment";
2945            #[inline]
2946            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2947                alloy_sol_types::private::Cow::Borrowed(
2948                    "StateHistoryCommitment(uint64 l1BlockHeight,uint64 l1BlockTimestamp,uint64 hotShotBlockHeight,uint256 hotShotBlockCommRoot)",
2949                )
2950            }
2951            #[inline]
2952            fn eip712_components() -> alloy_sol_types::private::Vec<
2953                alloy_sol_types::private::Cow<'static, str>,
2954            > {
2955                alloy_sol_types::private::Vec::new()
2956            }
2957            #[inline]
2958            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2959                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2960            }
2961            #[inline]
2962            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2963                [
2964                    <alloy::sol_types::sol_data::Uint<
2965                        64,
2966                    > as alloy_sol_types::SolType>::eip712_data_word(&self.l1BlockHeight)
2967                        .0,
2968                    <alloy::sol_types::sol_data::Uint<
2969                        64,
2970                    > as alloy_sol_types::SolType>::eip712_data_word(
2971                            &self.l1BlockTimestamp,
2972                        )
2973                        .0,
2974                    <alloy::sol_types::sol_data::Uint<
2975                        64,
2976                    > as alloy_sol_types::SolType>::eip712_data_word(
2977                            &self.hotShotBlockHeight,
2978                        )
2979                        .0,
2980                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2981                            &self.hotShotBlockCommRoot,
2982                        )
2983                        .0,
2984                ]
2985                    .concat()
2986            }
2987        }
2988        #[automatically_derived]
2989        impl alloy_sol_types::EventTopic for StateHistoryCommitment {
2990            #[inline]
2991            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2992                0usize
2993                    + <alloy::sol_types::sol_data::Uint<
2994                        64,
2995                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2996                        &rust.l1BlockHeight,
2997                    )
2998                    + <alloy::sol_types::sol_data::Uint<
2999                        64,
3000                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
3001                        &rust.l1BlockTimestamp,
3002                    )
3003                    + <alloy::sol_types::sol_data::Uint<
3004                        64,
3005                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
3006                        &rust.hotShotBlockHeight,
3007                    )
3008                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
3009                        &rust.hotShotBlockCommRoot,
3010                    )
3011            }
3012            #[inline]
3013            fn encode_topic_preimage(
3014                rust: &Self::RustType,
3015                out: &mut alloy_sol_types::private::Vec<u8>,
3016            ) {
3017                out.reserve(
3018                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
3019                );
3020                <alloy::sol_types::sol_data::Uint<
3021                    64,
3022                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3023                    &rust.l1BlockHeight,
3024                    out,
3025                );
3026                <alloy::sol_types::sol_data::Uint<
3027                    64,
3028                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3029                    &rust.l1BlockTimestamp,
3030                    out,
3031                );
3032                <alloy::sol_types::sol_data::Uint<
3033                    64,
3034                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3035                    &rust.hotShotBlockHeight,
3036                    out,
3037                );
3038                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
3039                    &rust.hotShotBlockCommRoot,
3040                    out,
3041                );
3042            }
3043            #[inline]
3044            fn encode_topic(
3045                rust: &Self::RustType,
3046            ) -> alloy_sol_types::abi::token::WordToken {
3047                let mut out = alloy_sol_types::private::Vec::new();
3048                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
3049                    rust,
3050                    &mut out,
3051                );
3052                alloy_sol_types::abi::token::WordToken(
3053                    alloy_sol_types::private::keccak256(out),
3054                )
3055            }
3056        }
3057    };
3058    use alloy::contract as alloy_contract;
3059    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
3060
3061See the [wrapper's documentation](`LightClientInstance`) for more details.*/
3062    #[inline]
3063    pub const fn new<
3064        P: alloy_contract::private::Provider<N>,
3065        N: alloy_contract::private::Network,
3066    >(
3067        address: alloy_sol_types::private::Address,
3068        __provider: P,
3069    ) -> LightClientInstance<P, N> {
3070        LightClientInstance::<P, N>::new(address, __provider)
3071    }
3072    /**A [`LightClient`](self) instance.
3073
3074Contains type-safe methods for interacting with an on-chain instance of the
3075[`LightClient`](self) contract located at a given `address`, using a given
3076provider `P`.
3077
3078If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
3079documentation on how to provide it), the `deploy` and `deploy_builder` methods can
3080be used to deploy a new instance of the contract.
3081
3082See the [module-level documentation](self) for all the available methods.*/
3083    #[derive(Clone)]
3084    pub struct LightClientInstance<P, N = alloy_contract::private::Ethereum> {
3085        address: alloy_sol_types::private::Address,
3086        provider: P,
3087        _network: ::core::marker::PhantomData<N>,
3088    }
3089    #[automatically_derived]
3090    impl<P, N> ::core::fmt::Debug for LightClientInstance<P, N> {
3091        #[inline]
3092        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
3093            f.debug_tuple("LightClientInstance").field(&self.address).finish()
3094        }
3095    }
3096    /// Instantiation and getters/setters.
3097    #[automatically_derived]
3098    impl<
3099        P: alloy_contract::private::Provider<N>,
3100        N: alloy_contract::private::Network,
3101    > LightClientInstance<P, N> {
3102        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
3103
3104See the [wrapper's documentation](`LightClientInstance`) for more details.*/
3105        #[inline]
3106        pub const fn new(
3107            address: alloy_sol_types::private::Address,
3108            __provider: P,
3109        ) -> Self {
3110            Self {
3111                address,
3112                provider: __provider,
3113                _network: ::core::marker::PhantomData,
3114            }
3115        }
3116        /// Returns a reference to the address.
3117        #[inline]
3118        pub const fn address(&self) -> &alloy_sol_types::private::Address {
3119            &self.address
3120        }
3121        /// Sets the address.
3122        #[inline]
3123        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
3124            self.address = address;
3125        }
3126        /// Sets the address and returns `self`.
3127        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
3128            self.set_address(address);
3129            self
3130        }
3131        /// Returns a reference to the provider.
3132        #[inline]
3133        pub const fn provider(&self) -> &P {
3134            &self.provider
3135        }
3136    }
3137    impl<P: ::core::clone::Clone, N> LightClientInstance<&P, N> {
3138        /// Clones the provider and returns a new instance with the cloned provider.
3139        #[inline]
3140        pub fn with_cloned_provider(self) -> LightClientInstance<P, N> {
3141            LightClientInstance {
3142                address: self.address,
3143                provider: ::core::clone::Clone::clone(&self.provider),
3144                _network: ::core::marker::PhantomData,
3145            }
3146        }
3147    }
3148    /// Function calls.
3149    #[automatically_derived]
3150    impl<
3151        P: alloy_contract::private::Provider<N>,
3152        N: alloy_contract::private::Network,
3153    > LightClientInstance<P, N> {
3154        /// Creates a new call builder using this contract instance's provider and address.
3155        ///
3156        /// Note that the call can be any function call, not just those defined in this
3157        /// contract. Prefer using the other methods for building type-safe contract calls.
3158        pub fn call_builder<C: alloy_sol_types::SolCall>(
3159            &self,
3160            call: &C,
3161        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
3162            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
3163        }
3164    }
3165    /// Event filters.
3166    #[automatically_derived]
3167    impl<
3168        P: alloy_contract::private::Provider<N>,
3169        N: alloy_contract::private::Network,
3170    > LightClientInstance<P, N> {
3171        /// Creates a new event filter using this contract instance's provider and address.
3172        ///
3173        /// Note that the type can be any event, not just those defined in this contract.
3174        /// Prefer using the other methods for building type-safe event filters.
3175        pub fn event_filter<E: alloy_sol_types::SolEvent>(
3176            &self,
3177        ) -> alloy_contract::Event<&P, E, N> {
3178            alloy_contract::Event::new_sol(&self.provider, &self.address)
3179        }
3180    }
3181}
3182/**
3183
3184Generated by the following Solidity interface...
3185```solidity
3186library BN254 {
3187    type BaseField is uint256;
3188    type ScalarField is uint256;
3189    struct G1Point {
3190        BaseField x;
3191        BaseField y;
3192    }
3193}
3194
3195library IPlonkVerifier {
3196    struct PlonkProof {
3197        BN254.G1Point wire0;
3198        BN254.G1Point wire1;
3199        BN254.G1Point wire2;
3200        BN254.G1Point wire3;
3201        BN254.G1Point wire4;
3202        BN254.G1Point prodPerm;
3203        BN254.G1Point split0;
3204        BN254.G1Point split1;
3205        BN254.G1Point split2;
3206        BN254.G1Point split3;
3207        BN254.G1Point split4;
3208        BN254.G1Point zeta;
3209        BN254.G1Point zetaOmega;
3210        BN254.ScalarField wireEval0;
3211        BN254.ScalarField wireEval1;
3212        BN254.ScalarField wireEval2;
3213        BN254.ScalarField wireEval3;
3214        BN254.ScalarField wireEval4;
3215        BN254.ScalarField sigmaEval0;
3216        BN254.ScalarField sigmaEval1;
3217        BN254.ScalarField sigmaEval2;
3218        BN254.ScalarField sigmaEval3;
3219        BN254.ScalarField prodPermZetaOmegaEval;
3220    }
3221    struct VerifyingKey {
3222        uint256 domainSize;
3223        uint256 numInputs;
3224        BN254.G1Point sigma0;
3225        BN254.G1Point sigma1;
3226        BN254.G1Point sigma2;
3227        BN254.G1Point sigma3;
3228        BN254.G1Point sigma4;
3229        BN254.G1Point q1;
3230        BN254.G1Point q2;
3231        BN254.G1Point q3;
3232        BN254.G1Point q4;
3233        BN254.G1Point qM12;
3234        BN254.G1Point qM34;
3235        BN254.G1Point qO;
3236        BN254.G1Point qC;
3237        BN254.G1Point qH1;
3238        BN254.G1Point qH2;
3239        BN254.G1Point qH3;
3240        BN254.G1Point qH4;
3241        BN254.G1Point qEcc;
3242        bytes32 g2LSB;
3243        bytes32 g2MSB;
3244    }
3245}
3246
3247library LightClient {
3248    struct LightClientState {
3249        uint64 viewNum;
3250        uint64 blockHeight;
3251        BN254.ScalarField blockCommRoot;
3252    }
3253    struct StakeTableState {
3254        uint256 threshold;
3255        BN254.ScalarField blsKeyComm;
3256        BN254.ScalarField schnorrKeyComm;
3257        BN254.ScalarField amountComm;
3258    }
3259    struct StateHistoryCommitment {
3260        uint64 l1BlockHeight;
3261        uint64 l1BlockTimestamp;
3262        uint64 hotShotBlockHeight;
3263        BN254.ScalarField hotShotBlockCommRoot;
3264    }
3265}
3266
3267interface LightClientMock {
3268    error AddressEmptyCode(address target);
3269    error ERC1967InvalidImplementation(address implementation);
3270    error ERC1967NonPayable();
3271    error FailedInnerCall();
3272    error InsufficientSnapshotHistory();
3273    error InvalidAddress();
3274    error InvalidArgs();
3275    error InvalidHotShotBlockForCommitmentCheck();
3276    error InvalidInitialization();
3277    error InvalidMaxStateHistory();
3278    error InvalidProof();
3279    error InvalidScalar();
3280    error NoChangeRequired();
3281    error NotInitializing();
3282    error OutdatedState();
3283    error OwnableInvalidOwner(address owner);
3284    error OwnableUnauthorizedAccount(address account);
3285    error ProverNotPermissioned();
3286    error UUPSUnauthorizedCallContext();
3287    error UUPSUnsupportedProxiableUUID(bytes32 slot);
3288    error WrongStakeTableUsed();
3289
3290    event Initialized(uint64 version);
3291    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
3292    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
3293    event PermissionedProverNotRequired();
3294    event PermissionedProverRequired(address permissionedProver);
3295    event Upgrade(address implementation);
3296    event Upgraded(address indexed implementation);
3297
3298    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
3299    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
3300    function currentBlockNumber() external view returns (uint256);
3301    function disablePermissionedProverMode() external;
3302    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3303    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3304    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3305    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
3306    function getStateHistoryCount() external view returns (uint256);
3307    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
3308    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
3309    function isPermissionedProverEnabled() external view returns (bool);
3310    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 threshold) external view returns (bool);
3311    function newFinalizedState(LightClient.LightClientState memory newState, IPlonkVerifier.PlonkProof memory proof) external;
3312    function owner() external view returns (address);
3313    function permissionedProver() external view returns (address);
3314    function proxiableUUID() external view returns (bytes32);
3315    function renounceOwnership() external;
3316    function setFinalizedState(LightClient.LightClientState memory state) external;
3317    function setHotShotDownSince(uint256 l1Height) external;
3318    function setHotShotUp() external;
3319    function setPermissionedProver(address prover) external;
3320    function setStateHistory(LightClient.StateHistoryCommitment[] memory _stateHistoryCommitments) external;
3321    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
3322    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
3323    function stateHistoryFirstIndex() external view returns (uint64);
3324    function stateHistoryRetentionPeriod() external view returns (uint32);
3325    function transferOwnership(address newOwner) external;
3326    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
3327}
3328```
3329
3330...which was generated by the following JSON ABI:
3331```json
3332[
3333  {
3334    "type": "function",
3335    "name": "UPGRADE_INTERFACE_VERSION",
3336    "inputs": [],
3337    "outputs": [
3338      {
3339        "name": "",
3340        "type": "string",
3341        "internalType": "string"
3342      }
3343    ],
3344    "stateMutability": "view"
3345  },
3346  {
3347    "type": "function",
3348    "name": "_getVk",
3349    "inputs": [],
3350    "outputs": [
3351      {
3352        "name": "vk",
3353        "type": "tuple",
3354        "internalType": "struct IPlonkVerifier.VerifyingKey",
3355        "components": [
3356          {
3357            "name": "domainSize",
3358            "type": "uint256",
3359            "internalType": "uint256"
3360          },
3361          {
3362            "name": "numInputs",
3363            "type": "uint256",
3364            "internalType": "uint256"
3365          },
3366          {
3367            "name": "sigma0",
3368            "type": "tuple",
3369            "internalType": "struct BN254.G1Point",
3370            "components": [
3371              {
3372                "name": "x",
3373                "type": "uint256",
3374                "internalType": "BN254.BaseField"
3375              },
3376              {
3377                "name": "y",
3378                "type": "uint256",
3379                "internalType": "BN254.BaseField"
3380              }
3381            ]
3382          },
3383          {
3384            "name": "sigma1",
3385            "type": "tuple",
3386            "internalType": "struct BN254.G1Point",
3387            "components": [
3388              {
3389                "name": "x",
3390                "type": "uint256",
3391                "internalType": "BN254.BaseField"
3392              },
3393              {
3394                "name": "y",
3395                "type": "uint256",
3396                "internalType": "BN254.BaseField"
3397              }
3398            ]
3399          },
3400          {
3401            "name": "sigma2",
3402            "type": "tuple",
3403            "internalType": "struct BN254.G1Point",
3404            "components": [
3405              {
3406                "name": "x",
3407                "type": "uint256",
3408                "internalType": "BN254.BaseField"
3409              },
3410              {
3411                "name": "y",
3412                "type": "uint256",
3413                "internalType": "BN254.BaseField"
3414              }
3415            ]
3416          },
3417          {
3418            "name": "sigma3",
3419            "type": "tuple",
3420            "internalType": "struct BN254.G1Point",
3421            "components": [
3422              {
3423                "name": "x",
3424                "type": "uint256",
3425                "internalType": "BN254.BaseField"
3426              },
3427              {
3428                "name": "y",
3429                "type": "uint256",
3430                "internalType": "BN254.BaseField"
3431              }
3432            ]
3433          },
3434          {
3435            "name": "sigma4",
3436            "type": "tuple",
3437            "internalType": "struct BN254.G1Point",
3438            "components": [
3439              {
3440                "name": "x",
3441                "type": "uint256",
3442                "internalType": "BN254.BaseField"
3443              },
3444              {
3445                "name": "y",
3446                "type": "uint256",
3447                "internalType": "BN254.BaseField"
3448              }
3449            ]
3450          },
3451          {
3452            "name": "q1",
3453            "type": "tuple",
3454            "internalType": "struct BN254.G1Point",
3455            "components": [
3456              {
3457                "name": "x",
3458                "type": "uint256",
3459                "internalType": "BN254.BaseField"
3460              },
3461              {
3462                "name": "y",
3463                "type": "uint256",
3464                "internalType": "BN254.BaseField"
3465              }
3466            ]
3467          },
3468          {
3469            "name": "q2",
3470            "type": "tuple",
3471            "internalType": "struct BN254.G1Point",
3472            "components": [
3473              {
3474                "name": "x",
3475                "type": "uint256",
3476                "internalType": "BN254.BaseField"
3477              },
3478              {
3479                "name": "y",
3480                "type": "uint256",
3481                "internalType": "BN254.BaseField"
3482              }
3483            ]
3484          },
3485          {
3486            "name": "q3",
3487            "type": "tuple",
3488            "internalType": "struct BN254.G1Point",
3489            "components": [
3490              {
3491                "name": "x",
3492                "type": "uint256",
3493                "internalType": "BN254.BaseField"
3494              },
3495              {
3496                "name": "y",
3497                "type": "uint256",
3498                "internalType": "BN254.BaseField"
3499              }
3500            ]
3501          },
3502          {
3503            "name": "q4",
3504            "type": "tuple",
3505            "internalType": "struct BN254.G1Point",
3506            "components": [
3507              {
3508                "name": "x",
3509                "type": "uint256",
3510                "internalType": "BN254.BaseField"
3511              },
3512              {
3513                "name": "y",
3514                "type": "uint256",
3515                "internalType": "BN254.BaseField"
3516              }
3517            ]
3518          },
3519          {
3520            "name": "qM12",
3521            "type": "tuple",
3522            "internalType": "struct BN254.G1Point",
3523            "components": [
3524              {
3525                "name": "x",
3526                "type": "uint256",
3527                "internalType": "BN254.BaseField"
3528              },
3529              {
3530                "name": "y",
3531                "type": "uint256",
3532                "internalType": "BN254.BaseField"
3533              }
3534            ]
3535          },
3536          {
3537            "name": "qM34",
3538            "type": "tuple",
3539            "internalType": "struct BN254.G1Point",
3540            "components": [
3541              {
3542                "name": "x",
3543                "type": "uint256",
3544                "internalType": "BN254.BaseField"
3545              },
3546              {
3547                "name": "y",
3548                "type": "uint256",
3549                "internalType": "BN254.BaseField"
3550              }
3551            ]
3552          },
3553          {
3554            "name": "qO",
3555            "type": "tuple",
3556            "internalType": "struct BN254.G1Point",
3557            "components": [
3558              {
3559                "name": "x",
3560                "type": "uint256",
3561                "internalType": "BN254.BaseField"
3562              },
3563              {
3564                "name": "y",
3565                "type": "uint256",
3566                "internalType": "BN254.BaseField"
3567              }
3568            ]
3569          },
3570          {
3571            "name": "qC",
3572            "type": "tuple",
3573            "internalType": "struct BN254.G1Point",
3574            "components": [
3575              {
3576                "name": "x",
3577                "type": "uint256",
3578                "internalType": "BN254.BaseField"
3579              },
3580              {
3581                "name": "y",
3582                "type": "uint256",
3583                "internalType": "BN254.BaseField"
3584              }
3585            ]
3586          },
3587          {
3588            "name": "qH1",
3589            "type": "tuple",
3590            "internalType": "struct BN254.G1Point",
3591            "components": [
3592              {
3593                "name": "x",
3594                "type": "uint256",
3595                "internalType": "BN254.BaseField"
3596              },
3597              {
3598                "name": "y",
3599                "type": "uint256",
3600                "internalType": "BN254.BaseField"
3601              }
3602            ]
3603          },
3604          {
3605            "name": "qH2",
3606            "type": "tuple",
3607            "internalType": "struct BN254.G1Point",
3608            "components": [
3609              {
3610                "name": "x",
3611                "type": "uint256",
3612                "internalType": "BN254.BaseField"
3613              },
3614              {
3615                "name": "y",
3616                "type": "uint256",
3617                "internalType": "BN254.BaseField"
3618              }
3619            ]
3620          },
3621          {
3622            "name": "qH3",
3623            "type": "tuple",
3624            "internalType": "struct BN254.G1Point",
3625            "components": [
3626              {
3627                "name": "x",
3628                "type": "uint256",
3629                "internalType": "BN254.BaseField"
3630              },
3631              {
3632                "name": "y",
3633                "type": "uint256",
3634                "internalType": "BN254.BaseField"
3635              }
3636            ]
3637          },
3638          {
3639            "name": "qH4",
3640            "type": "tuple",
3641            "internalType": "struct BN254.G1Point",
3642            "components": [
3643              {
3644                "name": "x",
3645                "type": "uint256",
3646                "internalType": "BN254.BaseField"
3647              },
3648              {
3649                "name": "y",
3650                "type": "uint256",
3651                "internalType": "BN254.BaseField"
3652              }
3653            ]
3654          },
3655          {
3656            "name": "qEcc",
3657            "type": "tuple",
3658            "internalType": "struct BN254.G1Point",
3659            "components": [
3660              {
3661                "name": "x",
3662                "type": "uint256",
3663                "internalType": "BN254.BaseField"
3664              },
3665              {
3666                "name": "y",
3667                "type": "uint256",
3668                "internalType": "BN254.BaseField"
3669              }
3670            ]
3671          },
3672          {
3673            "name": "g2LSB",
3674            "type": "bytes32",
3675            "internalType": "bytes32"
3676          },
3677          {
3678            "name": "g2MSB",
3679            "type": "bytes32",
3680            "internalType": "bytes32"
3681          }
3682        ]
3683      }
3684    ],
3685    "stateMutability": "pure"
3686  },
3687  {
3688    "type": "function",
3689    "name": "currentBlockNumber",
3690    "inputs": [],
3691    "outputs": [
3692      {
3693        "name": "",
3694        "type": "uint256",
3695        "internalType": "uint256"
3696      }
3697    ],
3698    "stateMutability": "view"
3699  },
3700  {
3701    "type": "function",
3702    "name": "disablePermissionedProverMode",
3703    "inputs": [],
3704    "outputs": [],
3705    "stateMutability": "nonpayable"
3706  },
3707  {
3708    "type": "function",
3709    "name": "finalizedState",
3710    "inputs": [],
3711    "outputs": [
3712      {
3713        "name": "viewNum",
3714        "type": "uint64",
3715        "internalType": "uint64"
3716      },
3717      {
3718        "name": "blockHeight",
3719        "type": "uint64",
3720        "internalType": "uint64"
3721      },
3722      {
3723        "name": "blockCommRoot",
3724        "type": "uint256",
3725        "internalType": "BN254.ScalarField"
3726      }
3727    ],
3728    "stateMutability": "view"
3729  },
3730  {
3731    "type": "function",
3732    "name": "genesisStakeTableState",
3733    "inputs": [],
3734    "outputs": [
3735      {
3736        "name": "threshold",
3737        "type": "uint256",
3738        "internalType": "uint256"
3739      },
3740      {
3741        "name": "blsKeyComm",
3742        "type": "uint256",
3743        "internalType": "BN254.ScalarField"
3744      },
3745      {
3746        "name": "schnorrKeyComm",
3747        "type": "uint256",
3748        "internalType": "BN254.ScalarField"
3749      },
3750      {
3751        "name": "amountComm",
3752        "type": "uint256",
3753        "internalType": "BN254.ScalarField"
3754      }
3755    ],
3756    "stateMutability": "view"
3757  },
3758  {
3759    "type": "function",
3760    "name": "genesisState",
3761    "inputs": [],
3762    "outputs": [
3763      {
3764        "name": "viewNum",
3765        "type": "uint64",
3766        "internalType": "uint64"
3767      },
3768      {
3769        "name": "blockHeight",
3770        "type": "uint64",
3771        "internalType": "uint64"
3772      },
3773      {
3774        "name": "blockCommRoot",
3775        "type": "uint256",
3776        "internalType": "BN254.ScalarField"
3777      }
3778    ],
3779    "stateMutability": "view"
3780  },
3781  {
3782    "type": "function",
3783    "name": "getHotShotCommitment",
3784    "inputs": [
3785      {
3786        "name": "hotShotBlockHeight",
3787        "type": "uint256",
3788        "internalType": "uint256"
3789      }
3790    ],
3791    "outputs": [
3792      {
3793        "name": "hotShotBlockCommRoot",
3794        "type": "uint256",
3795        "internalType": "BN254.ScalarField"
3796      },
3797      {
3798        "name": "hotshotBlockHeight",
3799        "type": "uint64",
3800        "internalType": "uint64"
3801      }
3802    ],
3803    "stateMutability": "view"
3804  },
3805  {
3806    "type": "function",
3807    "name": "getStateHistoryCount",
3808    "inputs": [],
3809    "outputs": [
3810      {
3811        "name": "",
3812        "type": "uint256",
3813        "internalType": "uint256"
3814      }
3815    ],
3816    "stateMutability": "view"
3817  },
3818  {
3819    "type": "function",
3820    "name": "getVersion",
3821    "inputs": [],
3822    "outputs": [
3823      {
3824        "name": "majorVersion",
3825        "type": "uint8",
3826        "internalType": "uint8"
3827      },
3828      {
3829        "name": "minorVersion",
3830        "type": "uint8",
3831        "internalType": "uint8"
3832      },
3833      {
3834        "name": "patchVersion",
3835        "type": "uint8",
3836        "internalType": "uint8"
3837      }
3838    ],
3839    "stateMutability": "pure"
3840  },
3841  {
3842    "type": "function",
3843    "name": "initialize",
3844    "inputs": [
3845      {
3846        "name": "_genesis",
3847        "type": "tuple",
3848        "internalType": "struct LightClient.LightClientState",
3849        "components": [
3850          {
3851            "name": "viewNum",
3852            "type": "uint64",
3853            "internalType": "uint64"
3854          },
3855          {
3856            "name": "blockHeight",
3857            "type": "uint64",
3858            "internalType": "uint64"
3859          },
3860          {
3861            "name": "blockCommRoot",
3862            "type": "uint256",
3863            "internalType": "BN254.ScalarField"
3864          }
3865        ]
3866      },
3867      {
3868        "name": "_genesisStakeTableState",
3869        "type": "tuple",
3870        "internalType": "struct LightClient.StakeTableState",
3871        "components": [
3872          {
3873            "name": "threshold",
3874            "type": "uint256",
3875            "internalType": "uint256"
3876          },
3877          {
3878            "name": "blsKeyComm",
3879            "type": "uint256",
3880            "internalType": "BN254.ScalarField"
3881          },
3882          {
3883            "name": "schnorrKeyComm",
3884            "type": "uint256",
3885            "internalType": "BN254.ScalarField"
3886          },
3887          {
3888            "name": "amountComm",
3889            "type": "uint256",
3890            "internalType": "BN254.ScalarField"
3891          }
3892        ]
3893      },
3894      {
3895        "name": "_stateHistoryRetentionPeriod",
3896        "type": "uint32",
3897        "internalType": "uint32"
3898      },
3899      {
3900        "name": "owner",
3901        "type": "address",
3902        "internalType": "address"
3903      }
3904    ],
3905    "outputs": [],
3906    "stateMutability": "nonpayable"
3907  },
3908  {
3909    "type": "function",
3910    "name": "isPermissionedProverEnabled",
3911    "inputs": [],
3912    "outputs": [
3913      {
3914        "name": "",
3915        "type": "bool",
3916        "internalType": "bool"
3917      }
3918    ],
3919    "stateMutability": "view"
3920  },
3921  {
3922    "type": "function",
3923    "name": "lagOverEscapeHatchThreshold",
3924    "inputs": [
3925      {
3926        "name": "blockNumber",
3927        "type": "uint256",
3928        "internalType": "uint256"
3929      },
3930      {
3931        "name": "threshold",
3932        "type": "uint256",
3933        "internalType": "uint256"
3934      }
3935    ],
3936    "outputs": [
3937      {
3938        "name": "",
3939        "type": "bool",
3940        "internalType": "bool"
3941      }
3942    ],
3943    "stateMutability": "view"
3944  },
3945  {
3946    "type": "function",
3947    "name": "newFinalizedState",
3948    "inputs": [
3949      {
3950        "name": "newState",
3951        "type": "tuple",
3952        "internalType": "struct LightClient.LightClientState",
3953        "components": [
3954          {
3955            "name": "viewNum",
3956            "type": "uint64",
3957            "internalType": "uint64"
3958          },
3959          {
3960            "name": "blockHeight",
3961            "type": "uint64",
3962            "internalType": "uint64"
3963          },
3964          {
3965            "name": "blockCommRoot",
3966            "type": "uint256",
3967            "internalType": "BN254.ScalarField"
3968          }
3969        ]
3970      },
3971      {
3972        "name": "proof",
3973        "type": "tuple",
3974        "internalType": "struct IPlonkVerifier.PlonkProof",
3975        "components": [
3976          {
3977            "name": "wire0",
3978            "type": "tuple",
3979            "internalType": "struct BN254.G1Point",
3980            "components": [
3981              {
3982                "name": "x",
3983                "type": "uint256",
3984                "internalType": "BN254.BaseField"
3985              },
3986              {
3987                "name": "y",
3988                "type": "uint256",
3989                "internalType": "BN254.BaseField"
3990              }
3991            ]
3992          },
3993          {
3994            "name": "wire1",
3995            "type": "tuple",
3996            "internalType": "struct BN254.G1Point",
3997            "components": [
3998              {
3999                "name": "x",
4000                "type": "uint256",
4001                "internalType": "BN254.BaseField"
4002              },
4003              {
4004                "name": "y",
4005                "type": "uint256",
4006                "internalType": "BN254.BaseField"
4007              }
4008            ]
4009          },
4010          {
4011            "name": "wire2",
4012            "type": "tuple",
4013            "internalType": "struct BN254.G1Point",
4014            "components": [
4015              {
4016                "name": "x",
4017                "type": "uint256",
4018                "internalType": "BN254.BaseField"
4019              },
4020              {
4021                "name": "y",
4022                "type": "uint256",
4023                "internalType": "BN254.BaseField"
4024              }
4025            ]
4026          },
4027          {
4028            "name": "wire3",
4029            "type": "tuple",
4030            "internalType": "struct BN254.G1Point",
4031            "components": [
4032              {
4033                "name": "x",
4034                "type": "uint256",
4035                "internalType": "BN254.BaseField"
4036              },
4037              {
4038                "name": "y",
4039                "type": "uint256",
4040                "internalType": "BN254.BaseField"
4041              }
4042            ]
4043          },
4044          {
4045            "name": "wire4",
4046            "type": "tuple",
4047            "internalType": "struct BN254.G1Point",
4048            "components": [
4049              {
4050                "name": "x",
4051                "type": "uint256",
4052                "internalType": "BN254.BaseField"
4053              },
4054              {
4055                "name": "y",
4056                "type": "uint256",
4057                "internalType": "BN254.BaseField"
4058              }
4059            ]
4060          },
4061          {
4062            "name": "prodPerm",
4063            "type": "tuple",
4064            "internalType": "struct BN254.G1Point",
4065            "components": [
4066              {
4067                "name": "x",
4068                "type": "uint256",
4069                "internalType": "BN254.BaseField"
4070              },
4071              {
4072                "name": "y",
4073                "type": "uint256",
4074                "internalType": "BN254.BaseField"
4075              }
4076            ]
4077          },
4078          {
4079            "name": "split0",
4080            "type": "tuple",
4081            "internalType": "struct BN254.G1Point",
4082            "components": [
4083              {
4084                "name": "x",
4085                "type": "uint256",
4086                "internalType": "BN254.BaseField"
4087              },
4088              {
4089                "name": "y",
4090                "type": "uint256",
4091                "internalType": "BN254.BaseField"
4092              }
4093            ]
4094          },
4095          {
4096            "name": "split1",
4097            "type": "tuple",
4098            "internalType": "struct BN254.G1Point",
4099            "components": [
4100              {
4101                "name": "x",
4102                "type": "uint256",
4103                "internalType": "BN254.BaseField"
4104              },
4105              {
4106                "name": "y",
4107                "type": "uint256",
4108                "internalType": "BN254.BaseField"
4109              }
4110            ]
4111          },
4112          {
4113            "name": "split2",
4114            "type": "tuple",
4115            "internalType": "struct BN254.G1Point",
4116            "components": [
4117              {
4118                "name": "x",
4119                "type": "uint256",
4120                "internalType": "BN254.BaseField"
4121              },
4122              {
4123                "name": "y",
4124                "type": "uint256",
4125                "internalType": "BN254.BaseField"
4126              }
4127            ]
4128          },
4129          {
4130            "name": "split3",
4131            "type": "tuple",
4132            "internalType": "struct BN254.G1Point",
4133            "components": [
4134              {
4135                "name": "x",
4136                "type": "uint256",
4137                "internalType": "BN254.BaseField"
4138              },
4139              {
4140                "name": "y",
4141                "type": "uint256",
4142                "internalType": "BN254.BaseField"
4143              }
4144            ]
4145          },
4146          {
4147            "name": "split4",
4148            "type": "tuple",
4149            "internalType": "struct BN254.G1Point",
4150            "components": [
4151              {
4152                "name": "x",
4153                "type": "uint256",
4154                "internalType": "BN254.BaseField"
4155              },
4156              {
4157                "name": "y",
4158                "type": "uint256",
4159                "internalType": "BN254.BaseField"
4160              }
4161            ]
4162          },
4163          {
4164            "name": "zeta",
4165            "type": "tuple",
4166            "internalType": "struct BN254.G1Point",
4167            "components": [
4168              {
4169                "name": "x",
4170                "type": "uint256",
4171                "internalType": "BN254.BaseField"
4172              },
4173              {
4174                "name": "y",
4175                "type": "uint256",
4176                "internalType": "BN254.BaseField"
4177              }
4178            ]
4179          },
4180          {
4181            "name": "zetaOmega",
4182            "type": "tuple",
4183            "internalType": "struct BN254.G1Point",
4184            "components": [
4185              {
4186                "name": "x",
4187                "type": "uint256",
4188                "internalType": "BN254.BaseField"
4189              },
4190              {
4191                "name": "y",
4192                "type": "uint256",
4193                "internalType": "BN254.BaseField"
4194              }
4195            ]
4196          },
4197          {
4198            "name": "wireEval0",
4199            "type": "uint256",
4200            "internalType": "BN254.ScalarField"
4201          },
4202          {
4203            "name": "wireEval1",
4204            "type": "uint256",
4205            "internalType": "BN254.ScalarField"
4206          },
4207          {
4208            "name": "wireEval2",
4209            "type": "uint256",
4210            "internalType": "BN254.ScalarField"
4211          },
4212          {
4213            "name": "wireEval3",
4214            "type": "uint256",
4215            "internalType": "BN254.ScalarField"
4216          },
4217          {
4218            "name": "wireEval4",
4219            "type": "uint256",
4220            "internalType": "BN254.ScalarField"
4221          },
4222          {
4223            "name": "sigmaEval0",
4224            "type": "uint256",
4225            "internalType": "BN254.ScalarField"
4226          },
4227          {
4228            "name": "sigmaEval1",
4229            "type": "uint256",
4230            "internalType": "BN254.ScalarField"
4231          },
4232          {
4233            "name": "sigmaEval2",
4234            "type": "uint256",
4235            "internalType": "BN254.ScalarField"
4236          },
4237          {
4238            "name": "sigmaEval3",
4239            "type": "uint256",
4240            "internalType": "BN254.ScalarField"
4241          },
4242          {
4243            "name": "prodPermZetaOmegaEval",
4244            "type": "uint256",
4245            "internalType": "BN254.ScalarField"
4246          }
4247        ]
4248      }
4249    ],
4250    "outputs": [],
4251    "stateMutability": "nonpayable"
4252  },
4253  {
4254    "type": "function",
4255    "name": "owner",
4256    "inputs": [],
4257    "outputs": [
4258      {
4259        "name": "",
4260        "type": "address",
4261        "internalType": "address"
4262      }
4263    ],
4264    "stateMutability": "view"
4265  },
4266  {
4267    "type": "function",
4268    "name": "permissionedProver",
4269    "inputs": [],
4270    "outputs": [
4271      {
4272        "name": "",
4273        "type": "address",
4274        "internalType": "address"
4275      }
4276    ],
4277    "stateMutability": "view"
4278  },
4279  {
4280    "type": "function",
4281    "name": "proxiableUUID",
4282    "inputs": [],
4283    "outputs": [
4284      {
4285        "name": "",
4286        "type": "bytes32",
4287        "internalType": "bytes32"
4288      }
4289    ],
4290    "stateMutability": "view"
4291  },
4292  {
4293    "type": "function",
4294    "name": "renounceOwnership",
4295    "inputs": [],
4296    "outputs": [],
4297    "stateMutability": "nonpayable"
4298  },
4299  {
4300    "type": "function",
4301    "name": "setFinalizedState",
4302    "inputs": [
4303      {
4304        "name": "state",
4305        "type": "tuple",
4306        "internalType": "struct LightClient.LightClientState",
4307        "components": [
4308          {
4309            "name": "viewNum",
4310            "type": "uint64",
4311            "internalType": "uint64"
4312          },
4313          {
4314            "name": "blockHeight",
4315            "type": "uint64",
4316            "internalType": "uint64"
4317          },
4318          {
4319            "name": "blockCommRoot",
4320            "type": "uint256",
4321            "internalType": "BN254.ScalarField"
4322          }
4323        ]
4324      }
4325    ],
4326    "outputs": [],
4327    "stateMutability": "nonpayable"
4328  },
4329  {
4330    "type": "function",
4331    "name": "setHotShotDownSince",
4332    "inputs": [
4333      {
4334        "name": "l1Height",
4335        "type": "uint256",
4336        "internalType": "uint256"
4337      }
4338    ],
4339    "outputs": [],
4340    "stateMutability": "nonpayable"
4341  },
4342  {
4343    "type": "function",
4344    "name": "setHotShotUp",
4345    "inputs": [],
4346    "outputs": [],
4347    "stateMutability": "nonpayable"
4348  },
4349  {
4350    "type": "function",
4351    "name": "setPermissionedProver",
4352    "inputs": [
4353      {
4354        "name": "prover",
4355        "type": "address",
4356        "internalType": "address"
4357      }
4358    ],
4359    "outputs": [],
4360    "stateMutability": "nonpayable"
4361  },
4362  {
4363    "type": "function",
4364    "name": "setStateHistory",
4365    "inputs": [
4366      {
4367        "name": "_stateHistoryCommitments",
4368        "type": "tuple[]",
4369        "internalType": "struct LightClient.StateHistoryCommitment[]",
4370        "components": [
4371          {
4372            "name": "l1BlockHeight",
4373            "type": "uint64",
4374            "internalType": "uint64"
4375          },
4376          {
4377            "name": "l1BlockTimestamp",
4378            "type": "uint64",
4379            "internalType": "uint64"
4380          },
4381          {
4382            "name": "hotShotBlockHeight",
4383            "type": "uint64",
4384            "internalType": "uint64"
4385          },
4386          {
4387            "name": "hotShotBlockCommRoot",
4388            "type": "uint256",
4389            "internalType": "BN254.ScalarField"
4390          }
4391        ]
4392      }
4393    ],
4394    "outputs": [],
4395    "stateMutability": "nonpayable"
4396  },
4397  {
4398    "type": "function",
4399    "name": "setstateHistoryRetentionPeriod",
4400    "inputs": [
4401      {
4402        "name": "historySeconds",
4403        "type": "uint32",
4404        "internalType": "uint32"
4405      }
4406    ],
4407    "outputs": [],
4408    "stateMutability": "nonpayable"
4409  },
4410  {
4411    "type": "function",
4412    "name": "stateHistoryCommitments",
4413    "inputs": [
4414      {
4415        "name": "",
4416        "type": "uint256",
4417        "internalType": "uint256"
4418      }
4419    ],
4420    "outputs": [
4421      {
4422        "name": "l1BlockHeight",
4423        "type": "uint64",
4424        "internalType": "uint64"
4425      },
4426      {
4427        "name": "l1BlockTimestamp",
4428        "type": "uint64",
4429        "internalType": "uint64"
4430      },
4431      {
4432        "name": "hotShotBlockHeight",
4433        "type": "uint64",
4434        "internalType": "uint64"
4435      },
4436      {
4437        "name": "hotShotBlockCommRoot",
4438        "type": "uint256",
4439        "internalType": "BN254.ScalarField"
4440      }
4441    ],
4442    "stateMutability": "view"
4443  },
4444  {
4445    "type": "function",
4446    "name": "stateHistoryFirstIndex",
4447    "inputs": [],
4448    "outputs": [
4449      {
4450        "name": "",
4451        "type": "uint64",
4452        "internalType": "uint64"
4453      }
4454    ],
4455    "stateMutability": "view"
4456  },
4457  {
4458    "type": "function",
4459    "name": "stateHistoryRetentionPeriod",
4460    "inputs": [],
4461    "outputs": [
4462      {
4463        "name": "",
4464        "type": "uint32",
4465        "internalType": "uint32"
4466      }
4467    ],
4468    "stateMutability": "view"
4469  },
4470  {
4471    "type": "function",
4472    "name": "transferOwnership",
4473    "inputs": [
4474      {
4475        "name": "newOwner",
4476        "type": "address",
4477        "internalType": "address"
4478      }
4479    ],
4480    "outputs": [],
4481    "stateMutability": "nonpayable"
4482  },
4483  {
4484    "type": "function",
4485    "name": "upgradeToAndCall",
4486    "inputs": [
4487      {
4488        "name": "newImplementation",
4489        "type": "address",
4490        "internalType": "address"
4491      },
4492      {
4493        "name": "data",
4494        "type": "bytes",
4495        "internalType": "bytes"
4496      }
4497    ],
4498    "outputs": [],
4499    "stateMutability": "payable"
4500  },
4501  {
4502    "type": "event",
4503    "name": "Initialized",
4504    "inputs": [
4505      {
4506        "name": "version",
4507        "type": "uint64",
4508        "indexed": false,
4509        "internalType": "uint64"
4510      }
4511    ],
4512    "anonymous": false
4513  },
4514  {
4515    "type": "event",
4516    "name": "NewState",
4517    "inputs": [
4518      {
4519        "name": "viewNum",
4520        "type": "uint64",
4521        "indexed": true,
4522        "internalType": "uint64"
4523      },
4524      {
4525        "name": "blockHeight",
4526        "type": "uint64",
4527        "indexed": true,
4528        "internalType": "uint64"
4529      },
4530      {
4531        "name": "blockCommRoot",
4532        "type": "uint256",
4533        "indexed": false,
4534        "internalType": "BN254.ScalarField"
4535      }
4536    ],
4537    "anonymous": false
4538  },
4539  {
4540    "type": "event",
4541    "name": "OwnershipTransferred",
4542    "inputs": [
4543      {
4544        "name": "previousOwner",
4545        "type": "address",
4546        "indexed": true,
4547        "internalType": "address"
4548      },
4549      {
4550        "name": "newOwner",
4551        "type": "address",
4552        "indexed": true,
4553        "internalType": "address"
4554      }
4555    ],
4556    "anonymous": false
4557  },
4558  {
4559    "type": "event",
4560    "name": "PermissionedProverNotRequired",
4561    "inputs": [],
4562    "anonymous": false
4563  },
4564  {
4565    "type": "event",
4566    "name": "PermissionedProverRequired",
4567    "inputs": [
4568      {
4569        "name": "permissionedProver",
4570        "type": "address",
4571        "indexed": false,
4572        "internalType": "address"
4573      }
4574    ],
4575    "anonymous": false
4576  },
4577  {
4578    "type": "event",
4579    "name": "Upgrade",
4580    "inputs": [
4581      {
4582        "name": "implementation",
4583        "type": "address",
4584        "indexed": false,
4585        "internalType": "address"
4586      }
4587    ],
4588    "anonymous": false
4589  },
4590  {
4591    "type": "event",
4592    "name": "Upgraded",
4593    "inputs": [
4594      {
4595        "name": "implementation",
4596        "type": "address",
4597        "indexed": true,
4598        "internalType": "address"
4599      }
4600    ],
4601    "anonymous": false
4602  },
4603  {
4604    "type": "error",
4605    "name": "AddressEmptyCode",
4606    "inputs": [
4607      {
4608        "name": "target",
4609        "type": "address",
4610        "internalType": "address"
4611      }
4612    ]
4613  },
4614  {
4615    "type": "error",
4616    "name": "ERC1967InvalidImplementation",
4617    "inputs": [
4618      {
4619        "name": "implementation",
4620        "type": "address",
4621        "internalType": "address"
4622      }
4623    ]
4624  },
4625  {
4626    "type": "error",
4627    "name": "ERC1967NonPayable",
4628    "inputs": []
4629  },
4630  {
4631    "type": "error",
4632    "name": "FailedInnerCall",
4633    "inputs": []
4634  },
4635  {
4636    "type": "error",
4637    "name": "InsufficientSnapshotHistory",
4638    "inputs": []
4639  },
4640  {
4641    "type": "error",
4642    "name": "InvalidAddress",
4643    "inputs": []
4644  },
4645  {
4646    "type": "error",
4647    "name": "InvalidArgs",
4648    "inputs": []
4649  },
4650  {
4651    "type": "error",
4652    "name": "InvalidHotShotBlockForCommitmentCheck",
4653    "inputs": []
4654  },
4655  {
4656    "type": "error",
4657    "name": "InvalidInitialization",
4658    "inputs": []
4659  },
4660  {
4661    "type": "error",
4662    "name": "InvalidMaxStateHistory",
4663    "inputs": []
4664  },
4665  {
4666    "type": "error",
4667    "name": "InvalidProof",
4668    "inputs": []
4669  },
4670  {
4671    "type": "error",
4672    "name": "InvalidScalar",
4673    "inputs": []
4674  },
4675  {
4676    "type": "error",
4677    "name": "NoChangeRequired",
4678    "inputs": []
4679  },
4680  {
4681    "type": "error",
4682    "name": "NotInitializing",
4683    "inputs": []
4684  },
4685  {
4686    "type": "error",
4687    "name": "OutdatedState",
4688    "inputs": []
4689  },
4690  {
4691    "type": "error",
4692    "name": "OwnableInvalidOwner",
4693    "inputs": [
4694      {
4695        "name": "owner",
4696        "type": "address",
4697        "internalType": "address"
4698      }
4699    ]
4700  },
4701  {
4702    "type": "error",
4703    "name": "OwnableUnauthorizedAccount",
4704    "inputs": [
4705      {
4706        "name": "account",
4707        "type": "address",
4708        "internalType": "address"
4709      }
4710    ]
4711  },
4712  {
4713    "type": "error",
4714    "name": "ProverNotPermissioned",
4715    "inputs": []
4716  },
4717  {
4718    "type": "error",
4719    "name": "UUPSUnauthorizedCallContext",
4720    "inputs": []
4721  },
4722  {
4723    "type": "error",
4724    "name": "UUPSUnsupportedProxiableUUID",
4725    "inputs": [
4726      {
4727        "name": "slot",
4728        "type": "bytes32",
4729        "internalType": "bytes32"
4730      }
4731    ]
4732  },
4733  {
4734    "type": "error",
4735    "name": "WrongStakeTableUsed",
4736    "inputs": []
4737  }
4738]
4739```*/
4740#[allow(
4741    non_camel_case_types,
4742    non_snake_case,
4743    clippy::pub_underscore_fields,
4744    clippy::style,
4745    clippy::empty_structs_with_brackets
4746)]
4747pub mod LightClientMock {
4748    use super::*;
4749    use alloy::sol_types as alloy_sol_types;
4750    /// The creation / init bytecode of the contract.
4751    ///
4752    /// ```text
4753    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612e7c6100f95f395f8181611781015281816117aa01526119270152612e7c5ff3fe6080604052600436106101ba575f3560e01c8063826e41fc116100f2578063b5adea3c11610092578063e030330111610062578063e030330114610640578063f2fde38b1461065f578063f56761601461067e578063f9e50d191461069d575f5ffd5b8063b5adea3c14610567578063c23b9e9e146105be578063c8e5e498146105f6578063d24d933d14610611575f5ffd5b806396c1ca61116100cd57806396c1ca61146104975780639baa3cc9146104b65780639fdb54a7146104d5578063ad3cb1cc1461052a575f5ffd5b8063826e41fc146103f45780638584d23f1461041f5780638da5cb5b1461045b575f5ffd5b8063313df7b11161015d5780634f1ef286116101385780634f1ef286146103a557806352d1902d146103b857806369cc6a04146103cc578063715018a6146103e0575f5ffd5b8063313df7b114610311578063378ec23b14610348578063426d319414610364575f5ffd5b806312173c2c1161019857806312173c2c146102675780632063d4f7146102885780632d52aad6146102a75780632f79889d146102d3575f5ffd5b8063013fa5fc146101be57806302b592f3146101df5780630d8e6e2c1461023c575b5f5ffd5b3480156101c9575f5ffd5b506101dd6101d8366004612179565b6106b1565b005b3480156101ea575f5ffd5b506101fe6101f9366004612192565b610764565b60405161023394939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b348015610247575f5ffd5b5060408051600181525f6020820181905291810191909152606001610233565b348015610272575f5ffd5b5061027b6107ad565b60405161023391906121a9565b348015610293575f5ffd5b506101dd6102a2366004612500565b6107c2565b3480156102b2575f5ffd5b506101dd6102c1366004612192565b600a805460ff19166001179055600b55565b3480156102de575f5ffd5b506008546102f990600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610233565b34801561031c575f5ffd5b50600854610330906001600160a01b031681565b6040516001600160a01b039091168152602001610233565b348015610353575f5ffd5b50435b604051908152602001610233565b34801561036f575f5ffd5b505f546001546002546003546103859392919084565b604080519485526020850193909352918301526060820152608001610233565b6101dd6103b33660046126b0565b61091c565b3480156103c3575f5ffd5b5061035661093b565b3480156103d7575f5ffd5b506101dd610956565b3480156103eb575f5ffd5b506101dd6109c4565b3480156103ff575f5ffd5b506008546001600160a01b031615155b6040519015158152602001610233565b34801561042a575f5ffd5b5061043e610439366004612192565b6109d5565b604080519283526001600160401b03909116602083015201610233565b348015610466575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610330565b3480156104a2575f5ffd5b506101dd6104b1366004612766565b610b00565b3480156104c1575f5ffd5b506101dd6104d036600461277f565b610b89565b3480156104e0575f5ffd5b50600654600754610504916001600160401b0380821692600160401b909204169083565b604080516001600160401b03948516815293909216602084015290820152606001610233565b348015610535575f5ffd5b5061055a604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102339190612807565b348015610572575f5ffd5b506101dd61058136600461283c565b80516006805460208401516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560400151600755565b3480156105c9575f5ffd5b506008546105e190600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610233565b348015610601575f5ffd5b506101dd600a805460ff19169055565b34801561061c575f5ffd5b50600454600554610504916001600160401b0380821692600160401b909204169083565b34801561064b575f5ffd5b5061040f61065a366004612856565b610cab565b34801561066a575f5ffd5b506101dd610679366004612179565b610ce0565b348015610689575f5ffd5b506101dd610698366004612876565b610d22565b3480156106a8575f5ffd5b50600954610356565b6106b9610dcd565b6001600160a01b0381166106e05760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b039081169082160361070f5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610773575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6107b5611e94565b6107bd610e28565b905090565b6008546001600160a01b0316151580156107e757506008546001600160a01b03163314155b15610805576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b03918216911611158061083e575060065460208301516001600160401b03600160401b9092048216911611155b1561085c5760405163051c46ef60e01b815260040160405180910390fd5b6108698260400151611458565b6108738282611499565b81516006805460208501516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408201516007556108c06108b94390565b428461158d565b81602001516001600160401b0316825f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6846040015160405161091091815260200190565b60405180910390a35050565b610924611776565b61092d8261181a565b610937828261185b565b5050565b5f61094461191c565b505f516020612e505f395f51905f5290565b61095e610dcd565b6008546001600160a01b0316156109a957600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b6109cc610dcd565b6109c25f611965565b600980545f918291906109e9600183612982565b815481106109f9576109f9612995565b5f918252602090912060029091020154600160801b90046001600160401b03168410610a3857604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610af9578460098281548110610a6857610a68612995565b5f918252602090912060029091020154600160801b90046001600160401b03161115610af15760098181548110610aa157610aa1612995565b905f5260205f2090600202016001015460098281548110610ac457610ac4612995565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610a4c565b5050915091565b610b08610dcd565b610e108163ffffffff161080610b2757506301e133808163ffffffff16115b80610b45575060085463ffffffff600160a01b909104811690821611155b15610b63576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610bcd5750825b90505f826001600160401b03166001148015610be85750303b155b905081158015610bf6575080155b15610c145760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c3e57845460ff60401b1916600160401b1785555b610c47866119d5565b610c4f6119e6565b610c5a8989896119ee565b8315610ca057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b600a545f9060ff16610cc657610cc18383611b1a565b610cd7565b81600b5484610cd59190612982565b115b90505b92915050565b610ce8610dcd565b6001600160a01b038116610d1657604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610d1f81611965565b50565b610d2d60095f6120f9565b5f5b8151811015610937576009828281518110610d4c57610d4c612995565b6020908102919091018101518254600181810185555f94855293839020825160029092020180549383015160408401516001600160401b03908116600160801b0267ffffffffffffffff60801b19928216600160401b026001600160801b031990971691909416179490941793909316178255606001519082015501610d2f565b33610dff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146109c25760405163118cdaa760e01b8152336004820152602401610d0d565b610e30611e94565b620100008152600760208201527f1369aa78dc50135ad756d62c97a64a0edcd30066584168200d9d1facf82ca4f56040820151527f2cf23456d712b06f8e3aa5bf0acc3e46a3d094602a3a2b99d873bba05a4391476020604083015101527f08a35f379d2d2c490a51006697275e4db79b67b4a175c1477e262d29e25e42316060820151527f218828131bb7940ccc88c561b299755af4bf0b71ed930b129e8be0a1218139ea6020606083015101527f23a2172436c1145b36d5bc6d3b31fa1610c73a543ea443918aaa3ee175f9921b6080820151527f2502adf404d62877c310214ae9942e93c40b154d34c024bab48a3ca057e60a116020608083015101527f1bb88ada91ab7734882f7826b81275320081ac485f9cf8bfbc3ba54b6eb4dff360a0820151527f25c74a27e9a3b20114a3a91f31c20f01777e7ed913e0ef949f0285e2e7c2069b602060a083015101527f12b0ce76ac8b0dbd405ebc5dd0bae0f91aed50033c7ea36fc62aaba2b98333dc60c0820151527f185b42af49dd1cbe337a84f74b704172428e754a0bea024ab3eb2f996afb2c47602060c083015101527f21f53ad4538b45438bbf0521446070223920e3df6f9022a64cc16d7f94e85c0860e0820151527f2278ac3dedfdac7feb9725a022497175518eada52c8932fc40e6e75bea889fb8602060e083015101527f0876136f81c16298487bfb1be74d4a3487ec45645ab1d09dc2e5b865d62230df610100820151527f098c641c947ecd798dfd5e1b2fe428024cdf03061a53ff774ea8a9e3de9d3f2b602061010083015101527f15eaac2c6232d2268bf79dc47ed9666f992fb3d96ad23fb21690c21586c5472e610120820151527f0f10f1ffc54881287fda6f200bc85d8245b508d844a974098a41119867b325d0602061012083015101527f0895ceea40b085534e9739ca5442ba48b3a3592affde2b509df74521b47d8ab0610140820151527f2e12ec5800ac92fe2a8e7040bc5b435b9eb71e31380173fa7688bf81fcbba455602061014083015101527f2f5384eb5653e47576efe248e7903f463243414bfed5237dda750df3996bd918610160820151527f1c3cd6b11da8704cdc871ab4fa323d7ee57bd40ce165b49a56d5ef6489cd251a602061016083015101527f13579994957ce1554cc1e5b194fb63c9513707f627414f8442681ae736e36450610180820151527f26c9bdcd96d8e420b12974ade93ad9c312c4185213d2f6831a7c625a18890e95602061018083015101527f0cc70a1d542a9a1535ae5d9201696adc5c99c1bcebd9951dfa8afec79fa0b6446101a0820151527f10b043d9f1869181b96579d6616efc17a5df7b84c4d431d966c9094bf1e8815360206101a083015101527f198a65309d131a43b0ab1c47659d0336cfbf62b27f4727106b4fd971c73dd4036101c0820151527f23df99eac3c1947903b211b800efeb76f47d5e87b7414866543492e8c7798d1a60206101c083015101527f221cc5e47b81ce8dcfa72ef981916a8eddef12fcde59c56c62830c126ebef0de6101e0820151527f231f99340c35c9e09652a6df73c9cec5d88738cb71ff45716fdc9e9e45a4926e60206101e083015101527f2c9f1489fce0f263e03f3e97bf0a72273aafcca9325ff47786adb04a52a6d22c610200820151527f21f66e28f17e01e9fd593e16d022c4eca25bd5db96daec606d97b604cc414838602061020083015101527f2015745604a9571e226bd99043cfaf1f96267cc5de67f497563ff81100531d26610220820151527f206889ff4c58dd08ee1107191a2a5bc5dbae55c49d7d8397801799868d10f805602061022083015101527f21062ab8f8ecd8932b429a1eb8614b1e03db61bff6a5cd2d5d7ea193e90e9927610240820151527f217f9b27b934b88ffe555d682dfe6e8b6d503f86b14bbd96342bc48487a60b27602061024083015101527f1c9eda2d195cb731f903235ead6a4f7c66db49da713ecb27afee076f0eea7154610260820151527f2647c161c00b90258e1cefebb17481f8a5d91b5f9dca626e3e89a9215bcca16a602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806109375760405163016c173360e21b815260040160405180910390fd5b5f6114a26107ad565b90506114ac612117565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a08301525f5460c08301525163ce537a7760e01b815273ffffffffffffffffffffffffffffffffffffffff9063ce537a779061152b90859085908890600401612b85565b602060405180830381865af4158015611546573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061156a9190612da5565b611587576040516309bde33960e01b815260040160405180910390fd5b50505050565b60095415801590611602575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b03169081106115cd576115cd612995565b5f9182526020909120600290910201546115f790600160401b90046001600160401b031684612dc4565b6001600160401b0316115b1561169557600854600980549091600160c01b90046001600160401b031690811061162f5761162f612995565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861166f83612de3565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806117fc57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166117f05f516020612e505f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156109c25760405163703e46dd60e11b815260040160405180910390fd5b611822610dcd565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610759565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118b5575060408051601f3d908101601f191682019092526118b291810190612e0d565b60015b6118dd57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d0d565b5f516020612e505f395f51905f52811461190d57604051632a87526960e21b815260048101829052602401610d0d565b6119178383611c72565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109c25760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6119dd611cc7565b610d1f81611d10565b6109c2611cc7565b82516001600160401b0316151580611a12575060208301516001600160401b031615155b80611a1f57506020820151155b80611a2c57506040820151155b80611a3957506060820151155b80611a4357508151155b80611a555750610e108163ffffffff16105b80611a6957506301e133808163ffffffff16115b15611a87576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6009545f9043841180611b2b575080155b80611b755750600854600980549091600160c01b90046001600160401b0316908110611b5957611b59612995565b5f9182526020909120600290910201546001600160401b031684105b15611b935760405163b0b4387760e01b815260040160405180910390fd5b5f8080611ba1600185612982565b90505b81611c3d57600854600160c01b90046001600160401b03168110611c3d578660098281548110611bd657611bd6612995565b5f9182526020909120600290910201546001600160401b031611611c2b576001915060098181548110611c0b57611c0b612995565b5f9182526020909120600290910201546001600160401b03169250611c3d565b80611c3581612e24565b915050611ba4565b81611c5b5760405163b0b4387760e01b815260040160405180910390fd5b85611c668489612982565b11979650505050505050565b611c7b82611d18565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611cbf576119178282611d7b565b610937611ded565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166109c257604051631afcd79f60e31b815260040160405180910390fd5b610ce8611cc7565b806001600160a01b03163b5f03611d4d57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d0d565b5f516020612e505f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611d979190612e39565b5f60405180830381855af49150503d805f8114611dcf576040519150601f19603f3d011682016040523d82523d5f602084013e611dd4565b606091505b5091509150611de4858383611e0c565b95945050505050565b34156109c25760405163b398979f60e01b815260040160405180910390fd5b606082611e2157611e1c82611e6b565b611e64565b8151158015611e3857506001600160a01b0384163b155b15611e6157604051639996b31560e01b81526001600160a01b0385166004820152602401610d0d565b50805b9392505050565b805115611e7b5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f8152602001611ec760405180604001604052805f81526020015f81525090565b8152602001611ee760405180604001604052805f81526020015f81525090565b8152602001611f0760405180604001604052805f81526020015f81525090565b8152602001611f2760405180604001604052805f81526020015f81525090565b8152602001611f4760405180604001604052805f81526020015f81525090565b8152602001611f6760405180604001604052805f81526020015f81525090565b8152602001611f8760405180604001604052805f81526020015f81525090565b8152602001611fa760405180604001604052805f81526020015f81525090565b8152602001611fc760405180604001604052805f81526020015f81525090565b8152602001611fe760405180604001604052805f81526020015f81525090565b815260200161200760405180604001604052805f81526020015f81525090565b815260200161202760405180604001604052805f81526020015f81525090565b815260200161204760405180604001604052805f81526020015f81525090565b815260200161206760405180604001604052805f81526020015f81525090565b815260200161208760405180604001604052805f81526020015f81525090565b81526020016120a760405180604001604052805f81526020015f81525090565b81526020016120c760405180604001604052805f81526020015f81525090565b81526020016120e760405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b5080545f8255600202905f5260205f2090810190610d1f9190612135565b6040518060e001604052806007906020820280368337509192915050565b5b8082111561215a5780546001600160c01b03191681555f6001820155600201612136565b5090565b80356001600160a01b0381168114612174575f5ffd5b919050565b5f60208284031215612189575f5ffd5b610cd78261215e565b5f602082840312156121a2575f5ffd5b5035919050565b5f61050082019050825182526020830151602083015260408301516121db604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b03811182821017156123e1576123e16123aa565b60405290565b604051608081016001600160401b03811182821017156123e1576123e16123aa565b604051601f8201601f191681016001600160401b0381118282101715612431576124316123aa565b604052919050565b80356001600160401b0381168114612174575f5ffd5b5f6060828403121561245f575f5ffd5b604051606081016001600160401b0381118282101715612481576124816123aa565b60405290508061249083612439565b815261249e60208401612439565b6020820152604092830135920191909152919050565b5f604082840312156124c4575f5ffd5b604080519081016001600160401b03811182821017156124e6576124e66123aa565b604052823581526020928301359281019290925250919050565b5f5f8284036104e0811215612513575f5ffd5b61251d858561244f565b9250610480605f1982011215612531575f5ffd5b5061253a6123be565b61254785606086016124b4565b81526125568560a086016124b4565b60208201526125688560e086016124b4565b604082015261257b8561012086016124b4565b606082015261258e8561016086016124b4565b60808201526125a1856101a086016124b4565b60a08201526125b4856101e086016124b4565b60c08201526125c78561022086016124b4565b60e08201526125da8561026086016124b4565b6101008201526125ee856102a086016124b4565b610120820152612602856102e086016124b4565b6101408201526126168561032086016124b4565b61016082015261262a8561036086016124b4565b6101808201526103a08401356101a08201526103c08401356101c08201526103e08401356101e08201526104008401356102008201526104208401356102208201526104408401356102408201526104608401356102608201526104808401356102808201526104a08401356102a08201526104c0909301356102c08401525092909150565b5f5f604083850312156126c1575f5ffd5b6126ca8361215e565b915060208301356001600160401b038111156126e4575f5ffd5b8301601f810185136126f4575f5ffd5b80356001600160401b0381111561270d5761270d6123aa565b612720601f8201601f1916602001612409565b818152866020838501011115612734575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff81168114612174575f5ffd5b5f60208284031215612776575f5ffd5b610cd782612753565b5f5f5f5f848603610120811215612794575f5ffd5b61279e878761244f565b94506080605f19820112156127b1575f5ffd5b506127ba6123e7565b60608681013582526080870135602083015260a0870135604083015260c08701359082015292506127ed60e08601612753565b91506127fc610100860161215e565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6060828403121561284c575f5ffd5b610cd7838361244f565b5f5f60408385031215612867575f5ffd5b50508035926020909101359150565b5f60208284031215612886575f5ffd5b81356001600160401b0381111561289b575f5ffd5b8201601f810184136128ab575f5ffd5b80356001600160401b038111156128c4576128c46123aa565b6128d360208260051b01612409565b8082825260208201915060208360071b8501019250868311156128f4575f5ffd5b6020840193505b828410156129645760808488031215612912575f5ffd5b61291a6123e7565b61292385612439565b815261293160208601612439565b602082015261294260408601612439565b60408201526060858101359082015282526080909301926020909101906128fb565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610cda57610cda61296e565b634e487b7160e01b5f52603260045260245ffd5b805f5b60078110156115875781518452602093840193909101906001016129ac565b6129e082825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a608201905084518252602085015160208301526040850151612bb7604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152612d8f6105008301856129a9565b612d9d6105e08301846129cb565b949350505050565b5f60208284031215612db5575f5ffd5b81518015158114611e64575f5ffd5b6001600160401b038281168282160390811115610cda57610cda61296e565b5f6001600160401b0382166001600160401b038103612e0457612e0461296e565b60010192915050565b5f60208284031215612e1d575f5ffd5b5051919050565b5f81612e3257612e3261296e565b505f190190565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
4754    /// ```
4755    #[rustfmt::skip]
4756    #[allow(clippy::all)]
4757    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4758        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\x17\x81\x01R\x81\x81a\x17\xAA\x01Ra\x19'\x01Ra.|_\xF3\xFE`\x80`@R`\x046\x10a\x01\xBAW_5`\xE0\x1C\x80c\x82nA\xFC\x11a\0\xF2W\x80c\xB5\xAD\xEA<\x11a\0\x92W\x80c\xE003\x01\x11a\0bW\x80c\xE003\x01\x14a\x06@W\x80c\xF2\xFD\xE3\x8B\x14a\x06_W\x80c\xF5ga`\x14a\x06~W\x80c\xF9\xE5\r\x19\x14a\x06\x9DW__\xFD[\x80c\xB5\xAD\xEA<\x14a\x05gW\x80c\xC2;\x9E\x9E\x14a\x05\xBEW\x80c\xC8\xE5\xE4\x98\x14a\x05\xF6W\x80c\xD2M\x93=\x14a\x06\x11W__\xFD[\x80c\x96\xC1\xCAa\x11a\0\xCDW\x80c\x96\xC1\xCAa\x14a\x04\x97W\x80c\x9B\xAA<\xC9\x14a\x04\xB6W\x80c\x9F\xDBT\xA7\x14a\x04\xD5W\x80c\xAD<\xB1\xCC\x14a\x05*W__\xFD[\x80c\x82nA\xFC\x14a\x03\xF4W\x80c\x85\x84\xD2?\x14a\x04\x1FW\x80c\x8D\xA5\xCB[\x14a\x04[W__\xFD[\x80c1=\xF7\xB1\x11a\x01]W\x80cO\x1E\xF2\x86\x11a\x018W\x80cO\x1E\xF2\x86\x14a\x03\xA5W\x80cR\xD1\x90-\x14a\x03\xB8W\x80ci\xCCj\x04\x14a\x03\xCCW\x80cqP\x18\xA6\x14a\x03\xE0W__\xFD[\x80c1=\xF7\xB1\x14a\x03\x11W\x80c7\x8E\xC2;\x14a\x03HW\x80cBm1\x94\x14a\x03dW__\xFD[\x80c\x12\x17<,\x11a\x01\x98W\x80c\x12\x17<,\x14a\x02gW\x80c c\xD4\xF7\x14a\x02\x88W\x80c-R\xAA\xD6\x14a\x02\xA7W\x80c/y\x88\x9D\x14a\x02\xD3W__\xFD[\x80c\x01?\xA5\xFC\x14a\x01\xBEW\x80c\x02\xB5\x92\xF3\x14a\x01\xDFW\x80c\r\x8En,\x14a\x02<W[__\xFD[4\x80\x15a\x01\xC9W__\xFD[Pa\x01\xDDa\x01\xD86`\x04a!yV[a\x06\xB1V[\0[4\x80\x15a\x01\xEAW__\xFD[Pa\x01\xFEa\x01\xF96`\x04a!\x92V[a\x07dV[`@Qa\x023\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\x02GW__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x023V[4\x80\x15a\x02rW__\xFD[Pa\x02{a\x07\xADV[`@Qa\x023\x91\x90a!\xA9V[4\x80\x15a\x02\x93W__\xFD[Pa\x01\xDDa\x02\xA26`\x04a%\0V[a\x07\xC2V[4\x80\x15a\x02\xB2W__\xFD[Pa\x01\xDDa\x02\xC16`\x04a!\x92V[`\n\x80T`\xFF\x19\x16`\x01\x17\x90U`\x0BUV[4\x80\x15a\x02\xDEW__\xFD[P`\x08Ta\x02\xF9\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x023V[4\x80\x15a\x03\x1CW__\xFD[P`\x08Ta\x030\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x023V[4\x80\x15a\x03SW__\xFD[PC[`@Q\x90\x81R` \x01a\x023V[4\x80\x15a\x03oW__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\x85\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x023V[a\x01\xDDa\x03\xB36`\x04a&\xB0V[a\t\x1CV[4\x80\x15a\x03\xC3W__\xFD[Pa\x03Va\t;V[4\x80\x15a\x03\xD7W__\xFD[Pa\x01\xDDa\tVV[4\x80\x15a\x03\xEBW__\xFD[Pa\x01\xDDa\t\xC4V[4\x80\x15a\x03\xFFW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15[`@Q\x90\x15\x15\x81R` \x01a\x023V[4\x80\x15a\x04*W__\xFD[Pa\x04>a\x0496`\x04a!\x92V[a\t\xD5V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x023V[4\x80\x15a\x04fW__\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\x030V[4\x80\x15a\x04\xA2W__\xFD[Pa\x01\xDDa\x04\xB16`\x04a'fV[a\x0B\0V[4\x80\x15a\x04\xC1W__\xFD[Pa\x01\xDDa\x04\xD06`\x04a'\x7FV[a\x0B\x89V[4\x80\x15a\x04\xE0W__\xFD[P`\x06T`\x07Ta\x05\x04\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\x023V[4\x80\x15a\x055W__\xFD[Pa\x05Z`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x023\x91\x90a(\x07V[4\x80\x15a\x05rW__\xFD[Pa\x01\xDDa\x05\x816`\x04a(<V[\x80Q`\x06\x80T` \x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x01Q`\x07UV[4\x80\x15a\x05\xC9W__\xFD[P`\x08Ta\x05\xE1\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x023V[4\x80\x15a\x06\x01W__\xFD[Pa\x01\xDD`\n\x80T`\xFF\x19\x16\x90UV[4\x80\x15a\x06\x1CW__\xFD[P`\x04T`\x05Ta\x05\x04\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x06KW__\xFD[Pa\x04\x0Fa\x06Z6`\x04a(VV[a\x0C\xABV[4\x80\x15a\x06jW__\xFD[Pa\x01\xDDa\x06y6`\x04a!yV[a\x0C\xE0V[4\x80\x15a\x06\x89W__\xFD[Pa\x01\xDDa\x06\x986`\x04a(vV[a\r\"V[4\x80\x15a\x06\xA8W__\xFD[P`\tTa\x03VV[a\x06\xB9a\r\xCDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x06\xE0W`@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\x07\x0FW`@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\x07sW_\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\x07\xB5a\x1E\x94V[a\x07\xBDa\x0E(V[\x90P\x90V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x07\xE7WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x08\x05W`@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\x08>WP`\x06T` \x83\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x08\\W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x08i\x82`@\x01Qa\x14XV[a\x08s\x82\x82a\x14\x99V[\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\x08\xC0a\x08\xB9C\x90V[B\x84a\x15\x8DV[\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\t\x10\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPV[a\t$a\x17vV[a\t-\x82a\x18\x1AV[a\t7\x82\x82a\x18[V[PPV[_a\tDa\x19\x1CV[P_Q` a.P_9_Q\x90_R\x90V[a\t^a\r\xCDV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\t\xA9W`\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\t\xCCa\r\xCDV[a\t\xC2_a\x19eV[`\t\x80T_\x91\x82\x91\x90a\t\xE9`\x01\x83a)\x82V[\x81T\x81\x10a\t\xF9Wa\t\xF9a)\x95V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\n8W`@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\n\xF9W\x84`\t\x82\x81T\x81\x10a\nhWa\nha)\x95V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\n\xF1W`\t\x81\x81T\x81\x10a\n\xA1Wa\n\xA1a)\x95V[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\n\xC4Wa\n\xC4a)\x95V[\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\nLV[PP\x91P\x91V[a\x0B\x08a\r\xCDV[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x0B'WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x0BEWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x0BcW`@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\x0B\xCDWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0B\xE8WP0;\x15[\x90P\x81\x15\x80\x15a\x0B\xF6WP\x80\x15[\x15a\x0C\x14W`@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\x0C>W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0CG\x86a\x19\xD5V[a\x0COa\x19\xE6V[a\x0CZ\x89\x89\x89a\x19\xEEV[\x83\x15a\x0C\xA0W\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[`\nT_\x90`\xFF\x16a\x0C\xC6Wa\x0C\xC1\x83\x83a\x1B\x1AV[a\x0C\xD7V[\x81`\x0BT\x84a\x0C\xD5\x91\x90a)\x82V[\x11[\x90P[\x92\x91PPV[a\x0C\xE8a\r\xCDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r\x16W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\r\x1F\x81a\x19eV[PV[a\r-`\t_a \xF9V[_[\x81Q\x81\x10\x15a\t7W`\t\x82\x82\x81Q\x81\x10a\rLWa\rLa)\x95V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q\x82T`\x01\x81\x81\x01\x85U_\x94\x85R\x93\x83\x90 \x82Q`\x02\x90\x92\x02\x01\x80T\x93\x83\x01Q`@\x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x92\x82\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x97\x16\x91\x90\x94\x16\x17\x94\x90\x94\x17\x93\x90\x93\x16\x17\x82U``\x01Q\x90\x82\x01U\x01a\r/V[3a\r\xFF\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\t\xC2W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r\rV[a\x0E0a\x1E\x94V[b\x01\0\0\x81R`\x07` \x82\x01R\x7F\x13i\xAAx\xDCP\x13Z\xD7V\xD6,\x97\xA6J\x0E\xDC\xD3\0fXAh \r\x9D\x1F\xAC\xF8,\xA4\xF5`@\x82\x01QR\x7F,\xF24V\xD7\x12\xB0o\x8E:\xA5\xBF\n\xCC>F\xA3\xD0\x94`*:+\x99\xD8s\xBB\xA0ZC\x91G` `@\x83\x01Q\x01R\x7F\x08\xA3_7\x9D-,I\nQ\0f\x97'^M\xB7\x9Bg\xB4\xA1u\xC1G~&-)\xE2^B1``\x82\x01QR\x7F!\x88(\x13\x1B\xB7\x94\x0C\xCC\x88\xC5a\xB2\x99uZ\xF4\xBF\x0Bq\xED\x93\x0B\x12\x9E\x8B\xE0\xA1!\x819\xEA` ``\x83\x01Q\x01R\x7F#\xA2\x17$6\xC1\x14[6\xD5\xBCm;1\xFA\x16\x10\xC7:T>\xA4C\x91\x8A\xAA>\xE1u\xF9\x92\x1B`\x80\x82\x01QR\x7F%\x02\xAD\xF4\x04\xD6(w\xC3\x10!J\xE9\x94.\x93\xC4\x0B\x15M4\xC0$\xBA\xB4\x8A<\xA0W\xE6\n\x11` `\x80\x83\x01Q\x01R\x7F\x1B\xB8\x8A\xDA\x91\xABw4\x88/x&\xB8\x12u2\0\x81\xACH_\x9C\xF8\xBF\xBC;\xA5Kn\xB4\xDF\xF3`\xA0\x82\x01QR\x7F%\xC7J'\xE9\xA3\xB2\x01\x14\xA3\xA9\x1F1\xC2\x0F\x01w~~\xD9\x13\xE0\xEF\x94\x9F\x02\x85\xE2\xE7\xC2\x06\x9B` `\xA0\x83\x01Q\x01R\x7F\x12\xB0\xCEv\xAC\x8B\r\xBD@^\xBC]\xD0\xBA\xE0\xF9\x1A\xEDP\x03<~\xA3o\xC6*\xAB\xA2\xB9\x833\xDC`\xC0\x82\x01QR\x7F\x18[B\xAFI\xDD\x1C\xBE3z\x84\xF7KpArB\x8EuJ\x0B\xEA\x02J\xB3\xEB/\x99j\xFB,G` `\xC0\x83\x01Q\x01R\x7F!\xF5:\xD4S\x8BEC\x8B\xBF\x05!D`p\"9 \xE3\xDFo\x90\"\xA6L\xC1m\x7F\x94\xE8\\\x08`\xE0\x82\x01QR\x7F\"x\xAC=\xED\xFD\xAC\x7F\xEB\x97%\xA0\"IquQ\x8E\xAD\xA5,\x892\xFC@\xE6\xE7[\xEA\x88\x9F\xB8` `\xE0\x83\x01Q\x01R\x7F\x08v\x13o\x81\xC1b\x98H{\xFB\x1B\xE7MJ4\x87\xECEdZ\xB1\xD0\x9D\xC2\xE5\xB8e\xD6\"0\xDFa\x01\0\x82\x01QR\x7F\t\x8Cd\x1C\x94~\xCDy\x8D\xFD^\x1B/\xE4(\x02L\xDF\x03\x06\x1AS\xFFwN\xA8\xA9\xE3\xDE\x9D?+` a\x01\0\x83\x01Q\x01R\x7F\x15\xEA\xAC,b2\xD2&\x8B\xF7\x9D\xC4~\xD9fo\x99/\xB3\xD9j\xD2?\xB2\x16\x90\xC2\x15\x86\xC5G.a\x01 \x82\x01QR\x7F\x0F\x10\xF1\xFF\xC5H\x81(\x7F\xDAo \x0B\xC8]\x82E\xB5\x08\xD8D\xA9t\t\x8AA\x11\x98g\xB3%\xD0` a\x01 \x83\x01Q\x01R\x7F\x08\x95\xCE\xEA@\xB0\x85SN\x979\xCATB\xBAH\xB3\xA3Y*\xFF\xDE+P\x9D\xF7E!\xB4}\x8A\xB0a\x01@\x82\x01QR\x7F.\x12\xECX\0\xAC\x92\xFE*\x8Ep@\xBC[C[\x9E\xB7\x1E18\x01s\xFAv\x88\xBF\x81\xFC\xBB\xA4U` a\x01@\x83\x01Q\x01R\x7F/S\x84\xEBVS\xE4uv\xEF\xE2H\xE7\x90?F2CAK\xFE\xD5#}\xDAu\r\xF3\x99k\xD9\x18a\x01`\x82\x01QR\x7F\x1C<\xD6\xB1\x1D\xA8pL\xDC\x87\x1A\xB4\xFA2=~\xE5{\xD4\x0C\xE1e\xB4\x9AV\xD5\xEFd\x89\xCD%\x1A` a\x01`\x83\x01Q\x01R\x7F\x13W\x99\x94\x95|\xE1UL\xC1\xE5\xB1\x94\xFBc\xC9Q7\x07\xF6'AO\x84Bh\x1A\xE76\xE3dPa\x01\x80\x82\x01QR\x7F&\xC9\xBD\xCD\x96\xD8\xE4 \xB1)t\xAD\xE9:\xD9\xC3\x12\xC4\x18R\x13\xD2\xF6\x83\x1A|bZ\x18\x89\x0E\x95` a\x01\x80\x83\x01Q\x01R\x7F\x0C\xC7\n\x1DT*\x9A\x155\xAE]\x92\x01ij\xDC\\\x99\xC1\xBC\xEB\xD9\x95\x1D\xFA\x8A\xFE\xC7\x9F\xA0\xB6Da\x01\xA0\x82\x01QR\x7F\x10\xB0C\xD9\xF1\x86\x91\x81\xB9ey\xD6an\xFC\x17\xA5\xDF{\x84\xC4\xD41\xD9f\xC9\tK\xF1\xE8\x81S` a\x01\xA0\x83\x01Q\x01R\x7F\x19\x8Ae0\x9D\x13\x1AC\xB0\xAB\x1CGe\x9D\x036\xCF\xBFb\xB2\x7FG'\x10kO\xD9q\xC7=\xD4\x03a\x01\xC0\x82\x01QR\x7F#\xDF\x99\xEA\xC3\xC1\x94y\x03\xB2\x11\xB8\0\xEF\xEBv\xF4}^\x87\xB7AHfT4\x92\xE8\xC7y\x8D\x1A` a\x01\xC0\x83\x01Q\x01R\x7F\"\x1C\xC5\xE4{\x81\xCE\x8D\xCF\xA7.\xF9\x81\x91j\x8E\xDD\xEF\x12\xFC\xDEY\xC5lb\x83\x0C\x12n\xBE\xF0\xDEa\x01\xE0\x82\x01QR\x7F#\x1F\x994\x0C5\xC9\xE0\x96R\xA6\xDFs\xC9\xCE\xC5\xD8\x878\xCBq\xFFEqo\xDC\x9E\x9EE\xA4\x92n` a\x01\xE0\x83\x01Q\x01R\x7F,\x9F\x14\x89\xFC\xE0\xF2c\xE0?>\x97\xBF\nr':\xAF\xCC\xA92_\xF4w\x86\xAD\xB0JR\xA6\xD2,a\x02\0\x82\x01QR\x7F!\xF6n(\xF1~\x01\xE9\xFDY>\x16\xD0\"\xC4\xEC\xA2[\xD5\xDB\x96\xDA\xEC`m\x97\xB6\x04\xCCAH8` a\x02\0\x83\x01Q\x01R\x7F \x15tV\x04\xA9W\x1E\"k\xD9\x90C\xCF\xAF\x1F\x96&|\xC5\xDEg\xF4\x97V?\xF8\x11\0S\x1D&a\x02 \x82\x01QR\x7F h\x89\xFFLX\xDD\x08\xEE\x11\x07\x19\x1A*[\xC5\xDB\xAEU\xC4\x9D}\x83\x97\x80\x17\x99\x86\x8D\x10\xF8\x05` a\x02 \x83\x01Q\x01R\x7F!\x06*\xB8\xF8\xEC\xD8\x93+B\x9A\x1E\xB8aK\x1E\x03\xDBa\xBF\xF6\xA5\xCD-]~\xA1\x93\xE9\x0E\x99'a\x02@\x82\x01QR\x7F!\x7F\x9B'\xB94\xB8\x8F\xFEU]h-\xFEn\x8BmP?\x86\xB1K\xBD\x964+\xC4\x84\x87\xA6\x0B'` a\x02@\x83\x01Q\x01R\x7F\x1C\x9E\xDA-\x19\\\xB71\xF9\x03#^\xADjO|f\xDBI\xDAq>\xCB'\xAF\xEE\x07o\x0E\xEAqTa\x02`\x82\x01QR\x7F&G\xC1a\xC0\x0B\x90%\x8E\x1C\xEF\xEB\xB1t\x81\xF8\xA5\xD9\x1B_\x9D\xCAbn>\x89\xA9![\xCC\xA1j` 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\t7W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x14\xA2a\x07\xADV[\x90Pa\x14\xACa!\x17V[\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\x15+\x90\x85\x90\x85\x90\x88\x90`\x04\x01a+\x85V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x15FW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15j\x91\x90a-\xA5V[a\x15\x87W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[`\tT\x15\x80\x15\x90a\x16\x02WP`\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\x15\xCDWa\x15\xCDa)\x95V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x15\xF7\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a-\xC4V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x16\x95W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x16/Wa\x16/a)\x95V[_\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\x16o\x83a-\xE3V[\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\xFCWP\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\x17\xF0_Q` a.P_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\t\xC2W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x18\"a\r\xCDV[`@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\x07YV[\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\xB5WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18\xB2\x91\x81\x01\x90a.\rV[`\x01[a\x18\xDDW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r\rV[_Q` a.P_9_Q\x90_R\x81\x14a\x19\rW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\rV[a\x19\x17\x83\x83a\x1CrV[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\t\xC2W`@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\xDDa\x1C\xC7V[a\r\x1F\x81a\x1D\x10V[a\t\xC2a\x1C\xC7V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x1A\x12WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x1A\x1FWP` \x82\x01Q\x15[\x80a\x1A,WP`@\x82\x01Q\x15[\x80a\x1A9WP``\x82\x01Q\x15[\x80a\x1ACWP\x81Q\x15[\x80a\x1AUWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x1AiWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x1A\x87W`@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[`\tT_\x90C\x84\x11\x80a\x1B+WP\x80\x15[\x80a\x1BuWP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x1BYWa\x1BYa)\x95V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x1B\x93W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x1B\xA1`\x01\x85a)\x82V[\x90P[\x81a\x1C=W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x1C=W\x86`\t\x82\x81T\x81\x10a\x1B\xD6Wa\x1B\xD6a)\x95V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x1C+W`\x01\x91P`\t\x81\x81T\x81\x10a\x1C\x0BWa\x1C\x0Ba)\x95V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x1C=V[\x80a\x1C5\x81a.$V[\x91PPa\x1B\xA4V[\x81a\x1C[W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x1Cf\x84\x89a)\x82V[\x11\x97\x96PPPPPPPV[a\x1C{\x82a\x1D\x18V[`@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\x1C\xBFWa\x19\x17\x82\x82a\x1D{V[a\t7a\x1D\xEDV[\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\t\xC2W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\xE8a\x1C\xC7V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1DMW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r\rV[_Q` a.P_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa\x1D\x97\x91\x90a.9V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1D\xCFW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1D\xD4V[``\x91P[P\x91P\x91Pa\x1D\xE4\x85\x83\x83a\x1E\x0CV[\x95\x94PPPPPV[4\x15a\t\xC2W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a\x1E!Wa\x1E\x1C\x82a\x1EkV[a\x1EdV[\x81Q\x15\x80\x15a\x1E8WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x1EaW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r\rV[P\x80[\x93\x92PPPV[\x80Q\x15a\x1E{W\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\x1E\xC7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xE7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x07`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F'`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1FG`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Fg`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x87`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\xA7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\xC7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\xE7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \x07`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a '`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a G`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a g`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \x87`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \xA7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \xC7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \xE7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[P\x80T_\x82U`\x02\x02\x90_R` _ \x90\x81\x01\x90a\r\x1F\x91\x90a!5V[`@Q\x80`\xE0\x01`@R\x80`\x07\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15a!ZW\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U_`\x01\x82\x01U`\x02\x01a!6V[P\x90V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a!tW__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a!\x89W__\xFD[a\x0C\xD7\x82a!^V[_` \x82\x84\x03\x12\x15a!\xA2W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa!\xDB`@\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#\xE1Wa#\xE1a#\xAAV[`@R\x90V[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a#\xE1Wa#\xE1a#\xAAV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$1Wa$1a#\xAAV[`@R\x91\x90PV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a!tW__\xFD[_``\x82\x84\x03\x12\x15a$_W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$\x81Wa$\x81a#\xAAV[`@R\x90P\x80a$\x90\x83a$9V[\x81Ra$\x9E` \x84\x01a$9V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a$\xC4W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$\xE6Wa$\xE6a#\xAAV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[__\x82\x84\x03a\x04\xE0\x81\x12\x15a%\x13W__\xFD[a%\x1D\x85\x85a$OV[\x92Pa\x04\x80`_\x19\x82\x01\x12\x15a%1W__\xFD[Pa%:a#\xBEV[a%G\x85``\x86\x01a$\xB4V[\x81Ra%V\x85`\xA0\x86\x01a$\xB4V[` \x82\x01Ra%h\x85`\xE0\x86\x01a$\xB4V[`@\x82\x01Ra%{\x85a\x01 \x86\x01a$\xB4V[``\x82\x01Ra%\x8E\x85a\x01`\x86\x01a$\xB4V[`\x80\x82\x01Ra%\xA1\x85a\x01\xA0\x86\x01a$\xB4V[`\xA0\x82\x01Ra%\xB4\x85a\x01\xE0\x86\x01a$\xB4V[`\xC0\x82\x01Ra%\xC7\x85a\x02 \x86\x01a$\xB4V[`\xE0\x82\x01Ra%\xDA\x85a\x02`\x86\x01a$\xB4V[a\x01\0\x82\x01Ra%\xEE\x85a\x02\xA0\x86\x01a$\xB4V[a\x01 \x82\x01Ra&\x02\x85a\x02\xE0\x86\x01a$\xB4V[a\x01@\x82\x01Ra&\x16\x85a\x03 \x86\x01a$\xB4V[a\x01`\x82\x01Ra&*\x85a\x03`\x86\x01a$\xB4V[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&\xC1W__\xFD[a&\xCA\x83a!^V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a&\xE4W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a&\xF4W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a'\rWa'\ra#\xAAV[a' `\x1F\x82\x01`\x1F\x19\x16` \x01a$\tV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a'4W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a!tW__\xFD[_` \x82\x84\x03\x12\x15a'vW__\xFD[a\x0C\xD7\x82a'SV[____\x84\x86\x03a\x01 \x81\x12\x15a'\x94W__\xFD[a'\x9E\x87\x87a$OV[\x94P`\x80`_\x19\x82\x01\x12\x15a'\xB1W__\xFD[Pa'\xBAa#\xE7V[``\x86\x81\x015\x82R`\x80\x87\x015` \x83\x01R`\xA0\x87\x015`@\x83\x01R`\xC0\x87\x015\x90\x82\x01R\x92Pa'\xED`\xE0\x86\x01a'SV[\x91Pa'\xFCa\x01\0\x86\x01a!^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[_``\x82\x84\x03\x12\x15a(LW__\xFD[a\x0C\xD7\x83\x83a$OV[__`@\x83\x85\x03\x12\x15a(gW__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a(\x86W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a(\x9BW__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a(\xABW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xC4Wa(\xC4a#\xAAV[a(\xD3` \x82`\x05\x1B\x01a$\tV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x07\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a(\xF4W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a)dW`\x80\x84\x88\x03\x12\x15a)\x12W__\xFD[a)\x1Aa#\xE7V[a)#\x85a$9V[\x81Ra)1` \x86\x01a$9V[` \x82\x01Ra)B`@\x86\x01a$9V[`@\x82\x01R``\x85\x81\x015\x90\x82\x01R\x82R`\x80\x90\x93\x01\x92` \x90\x91\x01\x90a(\xFBV[\x96\x95PPPPPPV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x0C\xDAWa\x0C\xDAa)nV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[\x80_[`\x07\x81\x10\x15a\x15\x87W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a)\xACV[a)\xE0\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+\xB7`@\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-\x8Fa\x05\0\x83\x01\x85a)\xA9V[a-\x9Da\x05\xE0\x83\x01\x84a)\xCBV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a-\xB5W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1EdW__\xFD[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x0C\xDAWa\x0C\xDAa)nV[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a.\x04Wa.\x04a)nV[`\x01\x01\x92\x91PPV[_` \x82\x84\x03\x12\x15a.\x1DW__\xFD[PQ\x91\x90PV[_\x81a.2Wa.2a)nV[P_\x19\x01\x90V[_\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",
4759    );
4760    /// The runtime bytecode of the contract, as deployed on the network.
4761    ///
4762    /// ```text
4763    ///0x6080604052600436106101ba575f3560e01c8063826e41fc116100f2578063b5adea3c11610092578063e030330111610062578063e030330114610640578063f2fde38b1461065f578063f56761601461067e578063f9e50d191461069d575f5ffd5b8063b5adea3c14610567578063c23b9e9e146105be578063c8e5e498146105f6578063d24d933d14610611575f5ffd5b806396c1ca61116100cd57806396c1ca61146104975780639baa3cc9146104b65780639fdb54a7146104d5578063ad3cb1cc1461052a575f5ffd5b8063826e41fc146103f45780638584d23f1461041f5780638da5cb5b1461045b575f5ffd5b8063313df7b11161015d5780634f1ef286116101385780634f1ef286146103a557806352d1902d146103b857806369cc6a04146103cc578063715018a6146103e0575f5ffd5b8063313df7b114610311578063378ec23b14610348578063426d319414610364575f5ffd5b806312173c2c1161019857806312173c2c146102675780632063d4f7146102885780632d52aad6146102a75780632f79889d146102d3575f5ffd5b8063013fa5fc146101be57806302b592f3146101df5780630d8e6e2c1461023c575b5f5ffd5b3480156101c9575f5ffd5b506101dd6101d8366004612179565b6106b1565b005b3480156101ea575f5ffd5b506101fe6101f9366004612192565b610764565b60405161023394939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b348015610247575f5ffd5b5060408051600181525f6020820181905291810191909152606001610233565b348015610272575f5ffd5b5061027b6107ad565b60405161023391906121a9565b348015610293575f5ffd5b506101dd6102a2366004612500565b6107c2565b3480156102b2575f5ffd5b506101dd6102c1366004612192565b600a805460ff19166001179055600b55565b3480156102de575f5ffd5b506008546102f990600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610233565b34801561031c575f5ffd5b50600854610330906001600160a01b031681565b6040516001600160a01b039091168152602001610233565b348015610353575f5ffd5b50435b604051908152602001610233565b34801561036f575f5ffd5b505f546001546002546003546103859392919084565b604080519485526020850193909352918301526060820152608001610233565b6101dd6103b33660046126b0565b61091c565b3480156103c3575f5ffd5b5061035661093b565b3480156103d7575f5ffd5b506101dd610956565b3480156103eb575f5ffd5b506101dd6109c4565b3480156103ff575f5ffd5b506008546001600160a01b031615155b6040519015158152602001610233565b34801561042a575f5ffd5b5061043e610439366004612192565b6109d5565b604080519283526001600160401b03909116602083015201610233565b348015610466575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610330565b3480156104a2575f5ffd5b506101dd6104b1366004612766565b610b00565b3480156104c1575f5ffd5b506101dd6104d036600461277f565b610b89565b3480156104e0575f5ffd5b50600654600754610504916001600160401b0380821692600160401b909204169083565b604080516001600160401b03948516815293909216602084015290820152606001610233565b348015610535575f5ffd5b5061055a604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102339190612807565b348015610572575f5ffd5b506101dd61058136600461283c565b80516006805460208401516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560400151600755565b3480156105c9575f5ffd5b506008546105e190600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610233565b348015610601575f5ffd5b506101dd600a805460ff19169055565b34801561061c575f5ffd5b50600454600554610504916001600160401b0380821692600160401b909204169083565b34801561064b575f5ffd5b5061040f61065a366004612856565b610cab565b34801561066a575f5ffd5b506101dd610679366004612179565b610ce0565b348015610689575f5ffd5b506101dd610698366004612876565b610d22565b3480156106a8575f5ffd5b50600954610356565b6106b9610dcd565b6001600160a01b0381166106e05760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b039081169082160361070f5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610773575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6107b5611e94565b6107bd610e28565b905090565b6008546001600160a01b0316151580156107e757506008546001600160a01b03163314155b15610805576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b03918216911611158061083e575060065460208301516001600160401b03600160401b9092048216911611155b1561085c5760405163051c46ef60e01b815260040160405180910390fd5b6108698260400151611458565b6108738282611499565b81516006805460208501516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408201516007556108c06108b94390565b428461158d565b81602001516001600160401b0316825f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6846040015160405161091091815260200190565b60405180910390a35050565b610924611776565b61092d8261181a565b610937828261185b565b5050565b5f61094461191c565b505f516020612e505f395f51905f5290565b61095e610dcd565b6008546001600160a01b0316156109a957600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b6109cc610dcd565b6109c25f611965565b600980545f918291906109e9600183612982565b815481106109f9576109f9612995565b5f918252602090912060029091020154600160801b90046001600160401b03168410610a3857604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610af9578460098281548110610a6857610a68612995565b5f918252602090912060029091020154600160801b90046001600160401b03161115610af15760098181548110610aa157610aa1612995565b905f5260205f2090600202016001015460098281548110610ac457610ac4612995565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610a4c565b5050915091565b610b08610dcd565b610e108163ffffffff161080610b2757506301e133808163ffffffff16115b80610b45575060085463ffffffff600160a01b909104811690821611155b15610b63576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610bcd5750825b90505f826001600160401b03166001148015610be85750303b155b905081158015610bf6575080155b15610c145760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c3e57845460ff60401b1916600160401b1785555b610c47866119d5565b610c4f6119e6565b610c5a8989896119ee565b8315610ca057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b600a545f9060ff16610cc657610cc18383611b1a565b610cd7565b81600b5484610cd59190612982565b115b90505b92915050565b610ce8610dcd565b6001600160a01b038116610d1657604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610d1f81611965565b50565b610d2d60095f6120f9565b5f5b8151811015610937576009828281518110610d4c57610d4c612995565b6020908102919091018101518254600181810185555f94855293839020825160029092020180549383015160408401516001600160401b03908116600160801b0267ffffffffffffffff60801b19928216600160401b026001600160801b031990971691909416179490941793909316178255606001519082015501610d2f565b33610dff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146109c25760405163118cdaa760e01b8152336004820152602401610d0d565b610e30611e94565b620100008152600760208201527f1369aa78dc50135ad756d62c97a64a0edcd30066584168200d9d1facf82ca4f56040820151527f2cf23456d712b06f8e3aa5bf0acc3e46a3d094602a3a2b99d873bba05a4391476020604083015101527f08a35f379d2d2c490a51006697275e4db79b67b4a175c1477e262d29e25e42316060820151527f218828131bb7940ccc88c561b299755af4bf0b71ed930b129e8be0a1218139ea6020606083015101527f23a2172436c1145b36d5bc6d3b31fa1610c73a543ea443918aaa3ee175f9921b6080820151527f2502adf404d62877c310214ae9942e93c40b154d34c024bab48a3ca057e60a116020608083015101527f1bb88ada91ab7734882f7826b81275320081ac485f9cf8bfbc3ba54b6eb4dff360a0820151527f25c74a27e9a3b20114a3a91f31c20f01777e7ed913e0ef949f0285e2e7c2069b602060a083015101527f12b0ce76ac8b0dbd405ebc5dd0bae0f91aed50033c7ea36fc62aaba2b98333dc60c0820151527f185b42af49dd1cbe337a84f74b704172428e754a0bea024ab3eb2f996afb2c47602060c083015101527f21f53ad4538b45438bbf0521446070223920e3df6f9022a64cc16d7f94e85c0860e0820151527f2278ac3dedfdac7feb9725a022497175518eada52c8932fc40e6e75bea889fb8602060e083015101527f0876136f81c16298487bfb1be74d4a3487ec45645ab1d09dc2e5b865d62230df610100820151527f098c641c947ecd798dfd5e1b2fe428024cdf03061a53ff774ea8a9e3de9d3f2b602061010083015101527f15eaac2c6232d2268bf79dc47ed9666f992fb3d96ad23fb21690c21586c5472e610120820151527f0f10f1ffc54881287fda6f200bc85d8245b508d844a974098a41119867b325d0602061012083015101527f0895ceea40b085534e9739ca5442ba48b3a3592affde2b509df74521b47d8ab0610140820151527f2e12ec5800ac92fe2a8e7040bc5b435b9eb71e31380173fa7688bf81fcbba455602061014083015101527f2f5384eb5653e47576efe248e7903f463243414bfed5237dda750df3996bd918610160820151527f1c3cd6b11da8704cdc871ab4fa323d7ee57bd40ce165b49a56d5ef6489cd251a602061016083015101527f13579994957ce1554cc1e5b194fb63c9513707f627414f8442681ae736e36450610180820151527f26c9bdcd96d8e420b12974ade93ad9c312c4185213d2f6831a7c625a18890e95602061018083015101527f0cc70a1d542a9a1535ae5d9201696adc5c99c1bcebd9951dfa8afec79fa0b6446101a0820151527f10b043d9f1869181b96579d6616efc17a5df7b84c4d431d966c9094bf1e8815360206101a083015101527f198a65309d131a43b0ab1c47659d0336cfbf62b27f4727106b4fd971c73dd4036101c0820151527f23df99eac3c1947903b211b800efeb76f47d5e87b7414866543492e8c7798d1a60206101c083015101527f221cc5e47b81ce8dcfa72ef981916a8eddef12fcde59c56c62830c126ebef0de6101e0820151527f231f99340c35c9e09652a6df73c9cec5d88738cb71ff45716fdc9e9e45a4926e60206101e083015101527f2c9f1489fce0f263e03f3e97bf0a72273aafcca9325ff47786adb04a52a6d22c610200820151527f21f66e28f17e01e9fd593e16d022c4eca25bd5db96daec606d97b604cc414838602061020083015101527f2015745604a9571e226bd99043cfaf1f96267cc5de67f497563ff81100531d26610220820151527f206889ff4c58dd08ee1107191a2a5bc5dbae55c49d7d8397801799868d10f805602061022083015101527f21062ab8f8ecd8932b429a1eb8614b1e03db61bff6a5cd2d5d7ea193e90e9927610240820151527f217f9b27b934b88ffe555d682dfe6e8b6d503f86b14bbd96342bc48487a60b27602061024083015101527f1c9eda2d195cb731f903235ead6a4f7c66db49da713ecb27afee076f0eea7154610260820151527f2647c161c00b90258e1cefebb17481f8a5d91b5f9dca626e3e89a9215bcca16a602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806109375760405163016c173360e21b815260040160405180910390fd5b5f6114a26107ad565b90506114ac612117565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a08301525f5460c08301525163ce537a7760e01b815273ffffffffffffffffffffffffffffffffffffffff9063ce537a779061152b90859085908890600401612b85565b602060405180830381865af4158015611546573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061156a9190612da5565b611587576040516309bde33960e01b815260040160405180910390fd5b50505050565b60095415801590611602575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b03169081106115cd576115cd612995565b5f9182526020909120600290910201546115f790600160401b90046001600160401b031684612dc4565b6001600160401b0316115b1561169557600854600980549091600160c01b90046001600160401b031690811061162f5761162f612995565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861166f83612de3565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806117fc57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166117f05f516020612e505f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156109c25760405163703e46dd60e11b815260040160405180910390fd5b611822610dcd565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610759565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118b5575060408051601f3d908101601f191682019092526118b291810190612e0d565b60015b6118dd57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d0d565b5f516020612e505f395f51905f52811461190d57604051632a87526960e21b815260048101829052602401610d0d565b6119178383611c72565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109c25760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6119dd611cc7565b610d1f81611d10565b6109c2611cc7565b82516001600160401b0316151580611a12575060208301516001600160401b031615155b80611a1f57506020820151155b80611a2c57506040820151155b80611a3957506060820151155b80611a4357508151155b80611a555750610e108163ffffffff16105b80611a6957506301e133808163ffffffff16115b15611a87576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6009545f9043841180611b2b575080155b80611b755750600854600980549091600160c01b90046001600160401b0316908110611b5957611b59612995565b5f9182526020909120600290910201546001600160401b031684105b15611b935760405163b0b4387760e01b815260040160405180910390fd5b5f8080611ba1600185612982565b90505b81611c3d57600854600160c01b90046001600160401b03168110611c3d578660098281548110611bd657611bd6612995565b5f9182526020909120600290910201546001600160401b031611611c2b576001915060098181548110611c0b57611c0b612995565b5f9182526020909120600290910201546001600160401b03169250611c3d565b80611c3581612e24565b915050611ba4565b81611c5b5760405163b0b4387760e01b815260040160405180910390fd5b85611c668489612982565b11979650505050505050565b611c7b82611d18565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611cbf576119178282611d7b565b610937611ded565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166109c257604051631afcd79f60e31b815260040160405180910390fd5b610ce8611cc7565b806001600160a01b03163b5f03611d4d57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d0d565b5f516020612e505f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611d979190612e39565b5f60405180830381855af49150503d805f8114611dcf576040519150601f19603f3d011682016040523d82523d5f602084013e611dd4565b606091505b5091509150611de4858383611e0c565b95945050505050565b34156109c25760405163b398979f60e01b815260040160405180910390fd5b606082611e2157611e1c82611e6b565b611e64565b8151158015611e3857506001600160a01b0384163b155b15611e6157604051639996b31560e01b81526001600160a01b0385166004820152602401610d0d565b50805b9392505050565b805115611e7b5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f8152602001611ec760405180604001604052805f81526020015f81525090565b8152602001611ee760405180604001604052805f81526020015f81525090565b8152602001611f0760405180604001604052805f81526020015f81525090565b8152602001611f2760405180604001604052805f81526020015f81525090565b8152602001611f4760405180604001604052805f81526020015f81525090565b8152602001611f6760405180604001604052805f81526020015f81525090565b8152602001611f8760405180604001604052805f81526020015f81525090565b8152602001611fa760405180604001604052805f81526020015f81525090565b8152602001611fc760405180604001604052805f81526020015f81525090565b8152602001611fe760405180604001604052805f81526020015f81525090565b815260200161200760405180604001604052805f81526020015f81525090565b815260200161202760405180604001604052805f81526020015f81525090565b815260200161204760405180604001604052805f81526020015f81525090565b815260200161206760405180604001604052805f81526020015f81525090565b815260200161208760405180604001604052805f81526020015f81525090565b81526020016120a760405180604001604052805f81526020015f81525090565b81526020016120c760405180604001604052805f81526020015f81525090565b81526020016120e760405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b5080545f8255600202905f5260205f2090810190610d1f9190612135565b6040518060e001604052806007906020820280368337509192915050565b5b8082111561215a5780546001600160c01b03191681555f6001820155600201612136565b5090565b80356001600160a01b0381168114612174575f5ffd5b919050565b5f60208284031215612189575f5ffd5b610cd78261215e565b5f602082840312156121a2575f5ffd5b5035919050565b5f61050082019050825182526020830151602083015260408301516121db604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b03811182821017156123e1576123e16123aa565b60405290565b604051608081016001600160401b03811182821017156123e1576123e16123aa565b604051601f8201601f191681016001600160401b0381118282101715612431576124316123aa565b604052919050565b80356001600160401b0381168114612174575f5ffd5b5f6060828403121561245f575f5ffd5b604051606081016001600160401b0381118282101715612481576124816123aa565b60405290508061249083612439565b815261249e60208401612439565b6020820152604092830135920191909152919050565b5f604082840312156124c4575f5ffd5b604080519081016001600160401b03811182821017156124e6576124e66123aa565b604052823581526020928301359281019290925250919050565b5f5f8284036104e0811215612513575f5ffd5b61251d858561244f565b9250610480605f1982011215612531575f5ffd5b5061253a6123be565b61254785606086016124b4565b81526125568560a086016124b4565b60208201526125688560e086016124b4565b604082015261257b8561012086016124b4565b606082015261258e8561016086016124b4565b60808201526125a1856101a086016124b4565b60a08201526125b4856101e086016124b4565b60c08201526125c78561022086016124b4565b60e08201526125da8561026086016124b4565b6101008201526125ee856102a086016124b4565b610120820152612602856102e086016124b4565b6101408201526126168561032086016124b4565b61016082015261262a8561036086016124b4565b6101808201526103a08401356101a08201526103c08401356101c08201526103e08401356101e08201526104008401356102008201526104208401356102208201526104408401356102408201526104608401356102608201526104808401356102808201526104a08401356102a08201526104c0909301356102c08401525092909150565b5f5f604083850312156126c1575f5ffd5b6126ca8361215e565b915060208301356001600160401b038111156126e4575f5ffd5b8301601f810185136126f4575f5ffd5b80356001600160401b0381111561270d5761270d6123aa565b612720601f8201601f1916602001612409565b818152866020838501011115612734575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff81168114612174575f5ffd5b5f60208284031215612776575f5ffd5b610cd782612753565b5f5f5f5f848603610120811215612794575f5ffd5b61279e878761244f565b94506080605f19820112156127b1575f5ffd5b506127ba6123e7565b60608681013582526080870135602083015260a0870135604083015260c08701359082015292506127ed60e08601612753565b91506127fc610100860161215e565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6060828403121561284c575f5ffd5b610cd7838361244f565b5f5f60408385031215612867575f5ffd5b50508035926020909101359150565b5f60208284031215612886575f5ffd5b81356001600160401b0381111561289b575f5ffd5b8201601f810184136128ab575f5ffd5b80356001600160401b038111156128c4576128c46123aa565b6128d360208260051b01612409565b8082825260208201915060208360071b8501019250868311156128f4575f5ffd5b6020840193505b828410156129645760808488031215612912575f5ffd5b61291a6123e7565b61292385612439565b815261293160208601612439565b602082015261294260408601612439565b60408201526060858101359082015282526080909301926020909101906128fb565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610cda57610cda61296e565b634e487b7160e01b5f52603260045260245ffd5b805f5b60078110156115875781518452602093840193909101906001016129ac565b6129e082825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a608201905084518252602085015160208301526040850151612bb7604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152612d8f6105008301856129a9565b612d9d6105e08301846129cb565b949350505050565b5f60208284031215612db5575f5ffd5b81518015158114611e64575f5ffd5b6001600160401b038281168282160390811115610cda57610cda61296e565b5f6001600160401b0382166001600160401b038103612e0457612e0461296e565b60010192915050565b5f60208284031215612e1d575f5ffd5b5051919050565b5f81612e3257612e3261296e565b505f190190565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
4764    /// ```
4765    #[rustfmt::skip]
4766    #[allow(clippy::all)]
4767    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4768        b"`\x80`@R`\x046\x10a\x01\xBAW_5`\xE0\x1C\x80c\x82nA\xFC\x11a\0\xF2W\x80c\xB5\xAD\xEA<\x11a\0\x92W\x80c\xE003\x01\x11a\0bW\x80c\xE003\x01\x14a\x06@W\x80c\xF2\xFD\xE3\x8B\x14a\x06_W\x80c\xF5ga`\x14a\x06~W\x80c\xF9\xE5\r\x19\x14a\x06\x9DW__\xFD[\x80c\xB5\xAD\xEA<\x14a\x05gW\x80c\xC2;\x9E\x9E\x14a\x05\xBEW\x80c\xC8\xE5\xE4\x98\x14a\x05\xF6W\x80c\xD2M\x93=\x14a\x06\x11W__\xFD[\x80c\x96\xC1\xCAa\x11a\0\xCDW\x80c\x96\xC1\xCAa\x14a\x04\x97W\x80c\x9B\xAA<\xC9\x14a\x04\xB6W\x80c\x9F\xDBT\xA7\x14a\x04\xD5W\x80c\xAD<\xB1\xCC\x14a\x05*W__\xFD[\x80c\x82nA\xFC\x14a\x03\xF4W\x80c\x85\x84\xD2?\x14a\x04\x1FW\x80c\x8D\xA5\xCB[\x14a\x04[W__\xFD[\x80c1=\xF7\xB1\x11a\x01]W\x80cO\x1E\xF2\x86\x11a\x018W\x80cO\x1E\xF2\x86\x14a\x03\xA5W\x80cR\xD1\x90-\x14a\x03\xB8W\x80ci\xCCj\x04\x14a\x03\xCCW\x80cqP\x18\xA6\x14a\x03\xE0W__\xFD[\x80c1=\xF7\xB1\x14a\x03\x11W\x80c7\x8E\xC2;\x14a\x03HW\x80cBm1\x94\x14a\x03dW__\xFD[\x80c\x12\x17<,\x11a\x01\x98W\x80c\x12\x17<,\x14a\x02gW\x80c c\xD4\xF7\x14a\x02\x88W\x80c-R\xAA\xD6\x14a\x02\xA7W\x80c/y\x88\x9D\x14a\x02\xD3W__\xFD[\x80c\x01?\xA5\xFC\x14a\x01\xBEW\x80c\x02\xB5\x92\xF3\x14a\x01\xDFW\x80c\r\x8En,\x14a\x02<W[__\xFD[4\x80\x15a\x01\xC9W__\xFD[Pa\x01\xDDa\x01\xD86`\x04a!yV[a\x06\xB1V[\0[4\x80\x15a\x01\xEAW__\xFD[Pa\x01\xFEa\x01\xF96`\x04a!\x92V[a\x07dV[`@Qa\x023\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\x02GW__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x023V[4\x80\x15a\x02rW__\xFD[Pa\x02{a\x07\xADV[`@Qa\x023\x91\x90a!\xA9V[4\x80\x15a\x02\x93W__\xFD[Pa\x01\xDDa\x02\xA26`\x04a%\0V[a\x07\xC2V[4\x80\x15a\x02\xB2W__\xFD[Pa\x01\xDDa\x02\xC16`\x04a!\x92V[`\n\x80T`\xFF\x19\x16`\x01\x17\x90U`\x0BUV[4\x80\x15a\x02\xDEW__\xFD[P`\x08Ta\x02\xF9\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x023V[4\x80\x15a\x03\x1CW__\xFD[P`\x08Ta\x030\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x023V[4\x80\x15a\x03SW__\xFD[PC[`@Q\x90\x81R` \x01a\x023V[4\x80\x15a\x03oW__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\x85\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x023V[a\x01\xDDa\x03\xB36`\x04a&\xB0V[a\t\x1CV[4\x80\x15a\x03\xC3W__\xFD[Pa\x03Va\t;V[4\x80\x15a\x03\xD7W__\xFD[Pa\x01\xDDa\tVV[4\x80\x15a\x03\xEBW__\xFD[Pa\x01\xDDa\t\xC4V[4\x80\x15a\x03\xFFW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15[`@Q\x90\x15\x15\x81R` \x01a\x023V[4\x80\x15a\x04*W__\xFD[Pa\x04>a\x0496`\x04a!\x92V[a\t\xD5V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x023V[4\x80\x15a\x04fW__\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\x030V[4\x80\x15a\x04\xA2W__\xFD[Pa\x01\xDDa\x04\xB16`\x04a'fV[a\x0B\0V[4\x80\x15a\x04\xC1W__\xFD[Pa\x01\xDDa\x04\xD06`\x04a'\x7FV[a\x0B\x89V[4\x80\x15a\x04\xE0W__\xFD[P`\x06T`\x07Ta\x05\x04\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\x023V[4\x80\x15a\x055W__\xFD[Pa\x05Z`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x023\x91\x90a(\x07V[4\x80\x15a\x05rW__\xFD[Pa\x01\xDDa\x05\x816`\x04a(<V[\x80Q`\x06\x80T` \x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x01Q`\x07UV[4\x80\x15a\x05\xC9W__\xFD[P`\x08Ta\x05\xE1\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x023V[4\x80\x15a\x06\x01W__\xFD[Pa\x01\xDD`\n\x80T`\xFF\x19\x16\x90UV[4\x80\x15a\x06\x1CW__\xFD[P`\x04T`\x05Ta\x05\x04\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x06KW__\xFD[Pa\x04\x0Fa\x06Z6`\x04a(VV[a\x0C\xABV[4\x80\x15a\x06jW__\xFD[Pa\x01\xDDa\x06y6`\x04a!yV[a\x0C\xE0V[4\x80\x15a\x06\x89W__\xFD[Pa\x01\xDDa\x06\x986`\x04a(vV[a\r\"V[4\x80\x15a\x06\xA8W__\xFD[P`\tTa\x03VV[a\x06\xB9a\r\xCDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x06\xE0W`@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\x07\x0FW`@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\x07sW_\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\x07\xB5a\x1E\x94V[a\x07\xBDa\x0E(V[\x90P\x90V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x07\xE7WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x08\x05W`@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\x08>WP`\x06T` \x83\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x08\\W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x08i\x82`@\x01Qa\x14XV[a\x08s\x82\x82a\x14\x99V[\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\x08\xC0a\x08\xB9C\x90V[B\x84a\x15\x8DV[\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\t\x10\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPV[a\t$a\x17vV[a\t-\x82a\x18\x1AV[a\t7\x82\x82a\x18[V[PPV[_a\tDa\x19\x1CV[P_Q` a.P_9_Q\x90_R\x90V[a\t^a\r\xCDV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\t\xA9W`\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\t\xCCa\r\xCDV[a\t\xC2_a\x19eV[`\t\x80T_\x91\x82\x91\x90a\t\xE9`\x01\x83a)\x82V[\x81T\x81\x10a\t\xF9Wa\t\xF9a)\x95V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\n8W`@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\n\xF9W\x84`\t\x82\x81T\x81\x10a\nhWa\nha)\x95V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\n\xF1W`\t\x81\x81T\x81\x10a\n\xA1Wa\n\xA1a)\x95V[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\n\xC4Wa\n\xC4a)\x95V[\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\nLV[PP\x91P\x91V[a\x0B\x08a\r\xCDV[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x0B'WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x0BEWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x0BcW`@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\x0B\xCDWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0B\xE8WP0;\x15[\x90P\x81\x15\x80\x15a\x0B\xF6WP\x80\x15[\x15a\x0C\x14W`@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\x0C>W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0CG\x86a\x19\xD5V[a\x0COa\x19\xE6V[a\x0CZ\x89\x89\x89a\x19\xEEV[\x83\x15a\x0C\xA0W\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[`\nT_\x90`\xFF\x16a\x0C\xC6Wa\x0C\xC1\x83\x83a\x1B\x1AV[a\x0C\xD7V[\x81`\x0BT\x84a\x0C\xD5\x91\x90a)\x82V[\x11[\x90P[\x92\x91PPV[a\x0C\xE8a\r\xCDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r\x16W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\r\x1F\x81a\x19eV[PV[a\r-`\t_a \xF9V[_[\x81Q\x81\x10\x15a\t7W`\t\x82\x82\x81Q\x81\x10a\rLWa\rLa)\x95V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q\x82T`\x01\x81\x81\x01\x85U_\x94\x85R\x93\x83\x90 \x82Q`\x02\x90\x92\x02\x01\x80T\x93\x83\x01Q`@\x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x92\x82\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x97\x16\x91\x90\x94\x16\x17\x94\x90\x94\x17\x93\x90\x93\x16\x17\x82U``\x01Q\x90\x82\x01U\x01a\r/V[3a\r\xFF\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\t\xC2W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r\rV[a\x0E0a\x1E\x94V[b\x01\0\0\x81R`\x07` \x82\x01R\x7F\x13i\xAAx\xDCP\x13Z\xD7V\xD6,\x97\xA6J\x0E\xDC\xD3\0fXAh \r\x9D\x1F\xAC\xF8,\xA4\xF5`@\x82\x01QR\x7F,\xF24V\xD7\x12\xB0o\x8E:\xA5\xBF\n\xCC>F\xA3\xD0\x94`*:+\x99\xD8s\xBB\xA0ZC\x91G` `@\x83\x01Q\x01R\x7F\x08\xA3_7\x9D-,I\nQ\0f\x97'^M\xB7\x9Bg\xB4\xA1u\xC1G~&-)\xE2^B1``\x82\x01QR\x7F!\x88(\x13\x1B\xB7\x94\x0C\xCC\x88\xC5a\xB2\x99uZ\xF4\xBF\x0Bq\xED\x93\x0B\x12\x9E\x8B\xE0\xA1!\x819\xEA` ``\x83\x01Q\x01R\x7F#\xA2\x17$6\xC1\x14[6\xD5\xBCm;1\xFA\x16\x10\xC7:T>\xA4C\x91\x8A\xAA>\xE1u\xF9\x92\x1B`\x80\x82\x01QR\x7F%\x02\xAD\xF4\x04\xD6(w\xC3\x10!J\xE9\x94.\x93\xC4\x0B\x15M4\xC0$\xBA\xB4\x8A<\xA0W\xE6\n\x11` `\x80\x83\x01Q\x01R\x7F\x1B\xB8\x8A\xDA\x91\xABw4\x88/x&\xB8\x12u2\0\x81\xACH_\x9C\xF8\xBF\xBC;\xA5Kn\xB4\xDF\xF3`\xA0\x82\x01QR\x7F%\xC7J'\xE9\xA3\xB2\x01\x14\xA3\xA9\x1F1\xC2\x0F\x01w~~\xD9\x13\xE0\xEF\x94\x9F\x02\x85\xE2\xE7\xC2\x06\x9B` `\xA0\x83\x01Q\x01R\x7F\x12\xB0\xCEv\xAC\x8B\r\xBD@^\xBC]\xD0\xBA\xE0\xF9\x1A\xEDP\x03<~\xA3o\xC6*\xAB\xA2\xB9\x833\xDC`\xC0\x82\x01QR\x7F\x18[B\xAFI\xDD\x1C\xBE3z\x84\xF7KpArB\x8EuJ\x0B\xEA\x02J\xB3\xEB/\x99j\xFB,G` `\xC0\x83\x01Q\x01R\x7F!\xF5:\xD4S\x8BEC\x8B\xBF\x05!D`p\"9 \xE3\xDFo\x90\"\xA6L\xC1m\x7F\x94\xE8\\\x08`\xE0\x82\x01QR\x7F\"x\xAC=\xED\xFD\xAC\x7F\xEB\x97%\xA0\"IquQ\x8E\xAD\xA5,\x892\xFC@\xE6\xE7[\xEA\x88\x9F\xB8` `\xE0\x83\x01Q\x01R\x7F\x08v\x13o\x81\xC1b\x98H{\xFB\x1B\xE7MJ4\x87\xECEdZ\xB1\xD0\x9D\xC2\xE5\xB8e\xD6\"0\xDFa\x01\0\x82\x01QR\x7F\t\x8Cd\x1C\x94~\xCDy\x8D\xFD^\x1B/\xE4(\x02L\xDF\x03\x06\x1AS\xFFwN\xA8\xA9\xE3\xDE\x9D?+` a\x01\0\x83\x01Q\x01R\x7F\x15\xEA\xAC,b2\xD2&\x8B\xF7\x9D\xC4~\xD9fo\x99/\xB3\xD9j\xD2?\xB2\x16\x90\xC2\x15\x86\xC5G.a\x01 \x82\x01QR\x7F\x0F\x10\xF1\xFF\xC5H\x81(\x7F\xDAo \x0B\xC8]\x82E\xB5\x08\xD8D\xA9t\t\x8AA\x11\x98g\xB3%\xD0` a\x01 \x83\x01Q\x01R\x7F\x08\x95\xCE\xEA@\xB0\x85SN\x979\xCATB\xBAH\xB3\xA3Y*\xFF\xDE+P\x9D\xF7E!\xB4}\x8A\xB0a\x01@\x82\x01QR\x7F.\x12\xECX\0\xAC\x92\xFE*\x8Ep@\xBC[C[\x9E\xB7\x1E18\x01s\xFAv\x88\xBF\x81\xFC\xBB\xA4U` a\x01@\x83\x01Q\x01R\x7F/S\x84\xEBVS\xE4uv\xEF\xE2H\xE7\x90?F2CAK\xFE\xD5#}\xDAu\r\xF3\x99k\xD9\x18a\x01`\x82\x01QR\x7F\x1C<\xD6\xB1\x1D\xA8pL\xDC\x87\x1A\xB4\xFA2=~\xE5{\xD4\x0C\xE1e\xB4\x9AV\xD5\xEFd\x89\xCD%\x1A` a\x01`\x83\x01Q\x01R\x7F\x13W\x99\x94\x95|\xE1UL\xC1\xE5\xB1\x94\xFBc\xC9Q7\x07\xF6'AO\x84Bh\x1A\xE76\xE3dPa\x01\x80\x82\x01QR\x7F&\xC9\xBD\xCD\x96\xD8\xE4 \xB1)t\xAD\xE9:\xD9\xC3\x12\xC4\x18R\x13\xD2\xF6\x83\x1A|bZ\x18\x89\x0E\x95` a\x01\x80\x83\x01Q\x01R\x7F\x0C\xC7\n\x1DT*\x9A\x155\xAE]\x92\x01ij\xDC\\\x99\xC1\xBC\xEB\xD9\x95\x1D\xFA\x8A\xFE\xC7\x9F\xA0\xB6Da\x01\xA0\x82\x01QR\x7F\x10\xB0C\xD9\xF1\x86\x91\x81\xB9ey\xD6an\xFC\x17\xA5\xDF{\x84\xC4\xD41\xD9f\xC9\tK\xF1\xE8\x81S` a\x01\xA0\x83\x01Q\x01R\x7F\x19\x8Ae0\x9D\x13\x1AC\xB0\xAB\x1CGe\x9D\x036\xCF\xBFb\xB2\x7FG'\x10kO\xD9q\xC7=\xD4\x03a\x01\xC0\x82\x01QR\x7F#\xDF\x99\xEA\xC3\xC1\x94y\x03\xB2\x11\xB8\0\xEF\xEBv\xF4}^\x87\xB7AHfT4\x92\xE8\xC7y\x8D\x1A` a\x01\xC0\x83\x01Q\x01R\x7F\"\x1C\xC5\xE4{\x81\xCE\x8D\xCF\xA7.\xF9\x81\x91j\x8E\xDD\xEF\x12\xFC\xDEY\xC5lb\x83\x0C\x12n\xBE\xF0\xDEa\x01\xE0\x82\x01QR\x7F#\x1F\x994\x0C5\xC9\xE0\x96R\xA6\xDFs\xC9\xCE\xC5\xD8\x878\xCBq\xFFEqo\xDC\x9E\x9EE\xA4\x92n` a\x01\xE0\x83\x01Q\x01R\x7F,\x9F\x14\x89\xFC\xE0\xF2c\xE0?>\x97\xBF\nr':\xAF\xCC\xA92_\xF4w\x86\xAD\xB0JR\xA6\xD2,a\x02\0\x82\x01QR\x7F!\xF6n(\xF1~\x01\xE9\xFDY>\x16\xD0\"\xC4\xEC\xA2[\xD5\xDB\x96\xDA\xEC`m\x97\xB6\x04\xCCAH8` a\x02\0\x83\x01Q\x01R\x7F \x15tV\x04\xA9W\x1E\"k\xD9\x90C\xCF\xAF\x1F\x96&|\xC5\xDEg\xF4\x97V?\xF8\x11\0S\x1D&a\x02 \x82\x01QR\x7F h\x89\xFFLX\xDD\x08\xEE\x11\x07\x19\x1A*[\xC5\xDB\xAEU\xC4\x9D}\x83\x97\x80\x17\x99\x86\x8D\x10\xF8\x05` a\x02 \x83\x01Q\x01R\x7F!\x06*\xB8\xF8\xEC\xD8\x93+B\x9A\x1E\xB8aK\x1E\x03\xDBa\xBF\xF6\xA5\xCD-]~\xA1\x93\xE9\x0E\x99'a\x02@\x82\x01QR\x7F!\x7F\x9B'\xB94\xB8\x8F\xFEU]h-\xFEn\x8BmP?\x86\xB1K\xBD\x964+\xC4\x84\x87\xA6\x0B'` a\x02@\x83\x01Q\x01R\x7F\x1C\x9E\xDA-\x19\\\xB71\xF9\x03#^\xADjO|f\xDBI\xDAq>\xCB'\xAF\xEE\x07o\x0E\xEAqTa\x02`\x82\x01QR\x7F&G\xC1a\xC0\x0B\x90%\x8E\x1C\xEF\xEB\xB1t\x81\xF8\xA5\xD9\x1B_\x9D\xCAbn>\x89\xA9![\xCC\xA1j` 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\t7W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x14\xA2a\x07\xADV[\x90Pa\x14\xACa!\x17V[\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\x15+\x90\x85\x90\x85\x90\x88\x90`\x04\x01a+\x85V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x15FW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15j\x91\x90a-\xA5V[a\x15\x87W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[`\tT\x15\x80\x15\x90a\x16\x02WP`\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\x15\xCDWa\x15\xCDa)\x95V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x15\xF7\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a-\xC4V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x16\x95W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x16/Wa\x16/a)\x95V[_\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\x16o\x83a-\xE3V[\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\xFCWP\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\x17\xF0_Q` a.P_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\t\xC2W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x18\"a\r\xCDV[`@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\x07YV[\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\xB5WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18\xB2\x91\x81\x01\x90a.\rV[`\x01[a\x18\xDDW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r\rV[_Q` a.P_9_Q\x90_R\x81\x14a\x19\rW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\rV[a\x19\x17\x83\x83a\x1CrV[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\t\xC2W`@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\xDDa\x1C\xC7V[a\r\x1F\x81a\x1D\x10V[a\t\xC2a\x1C\xC7V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x1A\x12WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x1A\x1FWP` \x82\x01Q\x15[\x80a\x1A,WP`@\x82\x01Q\x15[\x80a\x1A9WP``\x82\x01Q\x15[\x80a\x1ACWP\x81Q\x15[\x80a\x1AUWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x1AiWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x1A\x87W`@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[`\tT_\x90C\x84\x11\x80a\x1B+WP\x80\x15[\x80a\x1BuWP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x1BYWa\x1BYa)\x95V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x1B\x93W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x1B\xA1`\x01\x85a)\x82V[\x90P[\x81a\x1C=W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x1C=W\x86`\t\x82\x81T\x81\x10a\x1B\xD6Wa\x1B\xD6a)\x95V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x1C+W`\x01\x91P`\t\x81\x81T\x81\x10a\x1C\x0BWa\x1C\x0Ba)\x95V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x1C=V[\x80a\x1C5\x81a.$V[\x91PPa\x1B\xA4V[\x81a\x1C[W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x1Cf\x84\x89a)\x82V[\x11\x97\x96PPPPPPPV[a\x1C{\x82a\x1D\x18V[`@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\x1C\xBFWa\x19\x17\x82\x82a\x1D{V[a\t7a\x1D\xEDV[\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\t\xC2W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\xE8a\x1C\xC7V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1DMW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r\rV[_Q` a.P_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa\x1D\x97\x91\x90a.9V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1D\xCFW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1D\xD4V[``\x91P[P\x91P\x91Pa\x1D\xE4\x85\x83\x83a\x1E\x0CV[\x95\x94PPPPPV[4\x15a\t\xC2W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a\x1E!Wa\x1E\x1C\x82a\x1EkV[a\x1EdV[\x81Q\x15\x80\x15a\x1E8WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x1EaW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r\rV[P\x80[\x93\x92PPPV[\x80Q\x15a\x1E{W\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\x1E\xC7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xE7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x07`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F'`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1FG`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Fg`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x87`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\xA7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\xC7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\xE7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \x07`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a '`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a G`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a g`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \x87`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \xA7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \xC7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \xE7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[P\x80T_\x82U`\x02\x02\x90_R` _ \x90\x81\x01\x90a\r\x1F\x91\x90a!5V[`@Q\x80`\xE0\x01`@R\x80`\x07\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15a!ZW\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U_`\x01\x82\x01U`\x02\x01a!6V[P\x90V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a!tW__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a!\x89W__\xFD[a\x0C\xD7\x82a!^V[_` \x82\x84\x03\x12\x15a!\xA2W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa!\xDB`@\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#\xE1Wa#\xE1a#\xAAV[`@R\x90V[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a#\xE1Wa#\xE1a#\xAAV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$1Wa$1a#\xAAV[`@R\x91\x90PV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a!tW__\xFD[_``\x82\x84\x03\x12\x15a$_W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$\x81Wa$\x81a#\xAAV[`@R\x90P\x80a$\x90\x83a$9V[\x81Ra$\x9E` \x84\x01a$9V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a$\xC4W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$\xE6Wa$\xE6a#\xAAV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[__\x82\x84\x03a\x04\xE0\x81\x12\x15a%\x13W__\xFD[a%\x1D\x85\x85a$OV[\x92Pa\x04\x80`_\x19\x82\x01\x12\x15a%1W__\xFD[Pa%:a#\xBEV[a%G\x85``\x86\x01a$\xB4V[\x81Ra%V\x85`\xA0\x86\x01a$\xB4V[` \x82\x01Ra%h\x85`\xE0\x86\x01a$\xB4V[`@\x82\x01Ra%{\x85a\x01 \x86\x01a$\xB4V[``\x82\x01Ra%\x8E\x85a\x01`\x86\x01a$\xB4V[`\x80\x82\x01Ra%\xA1\x85a\x01\xA0\x86\x01a$\xB4V[`\xA0\x82\x01Ra%\xB4\x85a\x01\xE0\x86\x01a$\xB4V[`\xC0\x82\x01Ra%\xC7\x85a\x02 \x86\x01a$\xB4V[`\xE0\x82\x01Ra%\xDA\x85a\x02`\x86\x01a$\xB4V[a\x01\0\x82\x01Ra%\xEE\x85a\x02\xA0\x86\x01a$\xB4V[a\x01 \x82\x01Ra&\x02\x85a\x02\xE0\x86\x01a$\xB4V[a\x01@\x82\x01Ra&\x16\x85a\x03 \x86\x01a$\xB4V[a\x01`\x82\x01Ra&*\x85a\x03`\x86\x01a$\xB4V[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&\xC1W__\xFD[a&\xCA\x83a!^V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a&\xE4W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a&\xF4W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a'\rWa'\ra#\xAAV[a' `\x1F\x82\x01`\x1F\x19\x16` \x01a$\tV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a'4W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a!tW__\xFD[_` \x82\x84\x03\x12\x15a'vW__\xFD[a\x0C\xD7\x82a'SV[____\x84\x86\x03a\x01 \x81\x12\x15a'\x94W__\xFD[a'\x9E\x87\x87a$OV[\x94P`\x80`_\x19\x82\x01\x12\x15a'\xB1W__\xFD[Pa'\xBAa#\xE7V[``\x86\x81\x015\x82R`\x80\x87\x015` \x83\x01R`\xA0\x87\x015`@\x83\x01R`\xC0\x87\x015\x90\x82\x01R\x92Pa'\xED`\xE0\x86\x01a'SV[\x91Pa'\xFCa\x01\0\x86\x01a!^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[_``\x82\x84\x03\x12\x15a(LW__\xFD[a\x0C\xD7\x83\x83a$OV[__`@\x83\x85\x03\x12\x15a(gW__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a(\x86W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a(\x9BW__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a(\xABW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xC4Wa(\xC4a#\xAAV[a(\xD3` \x82`\x05\x1B\x01a$\tV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x07\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a(\xF4W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a)dW`\x80\x84\x88\x03\x12\x15a)\x12W__\xFD[a)\x1Aa#\xE7V[a)#\x85a$9V[\x81Ra)1` \x86\x01a$9V[` \x82\x01Ra)B`@\x86\x01a$9V[`@\x82\x01R``\x85\x81\x015\x90\x82\x01R\x82R`\x80\x90\x93\x01\x92` \x90\x91\x01\x90a(\xFBV[\x96\x95PPPPPPV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x0C\xDAWa\x0C\xDAa)nV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[\x80_[`\x07\x81\x10\x15a\x15\x87W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a)\xACV[a)\xE0\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+\xB7`@\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-\x8Fa\x05\0\x83\x01\x85a)\xA9V[a-\x9Da\x05\xE0\x83\x01\x84a)\xCBV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a-\xB5W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1EdW__\xFD[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x0C\xDAWa\x0C\xDAa)nV[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a.\x04Wa.\x04a)nV[`\x01\x01\x92\x91PPV[_` \x82\x84\x03\x12\x15a.\x1DW__\xFD[PQ\x91\x90PV[_\x81a.2Wa.2a)nV[P_\x19\x01\x90V[_\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",
4769    );
4770    #[derive(serde::Serialize, serde::Deserialize)]
4771    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4772    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
4773```solidity
4774error AddressEmptyCode(address target);
4775```*/
4776    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4777    #[derive(Clone)]
4778    pub struct AddressEmptyCode {
4779        #[allow(missing_docs)]
4780        pub target: alloy::sol_types::private::Address,
4781    }
4782    #[allow(
4783        non_camel_case_types,
4784        non_snake_case,
4785        clippy::pub_underscore_fields,
4786        clippy::style
4787    )]
4788    const _: () = {
4789        use alloy::sol_types as alloy_sol_types;
4790        #[doc(hidden)]
4791        #[allow(dead_code)]
4792        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4793        #[doc(hidden)]
4794        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4795        #[cfg(test)]
4796        #[allow(dead_code, unreachable_patterns)]
4797        fn _type_assertion(
4798            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4799        ) {
4800            match _t {
4801                alloy_sol_types::private::AssertTypeEq::<
4802                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4803                >(_) => {}
4804            }
4805        }
4806        #[automatically_derived]
4807        #[doc(hidden)]
4808        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
4809            fn from(value: AddressEmptyCode) -> Self {
4810                (value.target,)
4811            }
4812        }
4813        #[automatically_derived]
4814        #[doc(hidden)]
4815        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
4816            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4817                Self { target: tuple.0 }
4818            }
4819        }
4820        #[automatically_derived]
4821        impl alloy_sol_types::SolError for AddressEmptyCode {
4822            type Parameters<'a> = UnderlyingSolTuple<'a>;
4823            type Token<'a> = <Self::Parameters<
4824                'a,
4825            > as alloy_sol_types::SolType>::Token<'a>;
4826            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
4827            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
4828            #[inline]
4829            fn new<'a>(
4830                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4831            ) -> Self {
4832                tuple.into()
4833            }
4834            #[inline]
4835            fn tokenize(&self) -> Self::Token<'_> {
4836                (
4837                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4838                        &self.target,
4839                    ),
4840                )
4841            }
4842            #[inline]
4843            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4844                <Self::Parameters<
4845                    '_,
4846                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4847                    .map(Self::new)
4848            }
4849        }
4850    };
4851    #[derive(serde::Serialize, serde::Deserialize)]
4852    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4853    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
4854```solidity
4855error ERC1967InvalidImplementation(address implementation);
4856```*/
4857    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4858    #[derive(Clone)]
4859    pub struct ERC1967InvalidImplementation {
4860        #[allow(missing_docs)]
4861        pub implementation: alloy::sol_types::private::Address,
4862    }
4863    #[allow(
4864        non_camel_case_types,
4865        non_snake_case,
4866        clippy::pub_underscore_fields,
4867        clippy::style
4868    )]
4869    const _: () = {
4870        use alloy::sol_types as alloy_sol_types;
4871        #[doc(hidden)]
4872        #[allow(dead_code)]
4873        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4874        #[doc(hidden)]
4875        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4876        #[cfg(test)]
4877        #[allow(dead_code, unreachable_patterns)]
4878        fn _type_assertion(
4879            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4880        ) {
4881            match _t {
4882                alloy_sol_types::private::AssertTypeEq::<
4883                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4884                >(_) => {}
4885            }
4886        }
4887        #[automatically_derived]
4888        #[doc(hidden)]
4889        impl ::core::convert::From<ERC1967InvalidImplementation>
4890        for UnderlyingRustTuple<'_> {
4891            fn from(value: ERC1967InvalidImplementation) -> Self {
4892                (value.implementation,)
4893            }
4894        }
4895        #[automatically_derived]
4896        #[doc(hidden)]
4897        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4898        for ERC1967InvalidImplementation {
4899            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4900                Self { implementation: tuple.0 }
4901            }
4902        }
4903        #[automatically_derived]
4904        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
4905            type Parameters<'a> = UnderlyingSolTuple<'a>;
4906            type Token<'a> = <Self::Parameters<
4907                'a,
4908            > as alloy_sol_types::SolType>::Token<'a>;
4909            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
4910            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
4911            #[inline]
4912            fn new<'a>(
4913                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4914            ) -> Self {
4915                tuple.into()
4916            }
4917            #[inline]
4918            fn tokenize(&self) -> Self::Token<'_> {
4919                (
4920                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4921                        &self.implementation,
4922                    ),
4923                )
4924            }
4925            #[inline]
4926            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4927                <Self::Parameters<
4928                    '_,
4929                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4930                    .map(Self::new)
4931            }
4932        }
4933    };
4934    #[derive(serde::Serialize, serde::Deserialize)]
4935    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4936    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
4937```solidity
4938error ERC1967NonPayable();
4939```*/
4940    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4941    #[derive(Clone)]
4942    pub struct ERC1967NonPayable;
4943    #[allow(
4944        non_camel_case_types,
4945        non_snake_case,
4946        clippy::pub_underscore_fields,
4947        clippy::style
4948    )]
4949    const _: () = {
4950        use alloy::sol_types as alloy_sol_types;
4951        #[doc(hidden)]
4952        #[allow(dead_code)]
4953        type UnderlyingSolTuple<'a> = ();
4954        #[doc(hidden)]
4955        type UnderlyingRustTuple<'a> = ();
4956        #[cfg(test)]
4957        #[allow(dead_code, unreachable_patterns)]
4958        fn _type_assertion(
4959            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4960        ) {
4961            match _t {
4962                alloy_sol_types::private::AssertTypeEq::<
4963                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4964                >(_) => {}
4965            }
4966        }
4967        #[automatically_derived]
4968        #[doc(hidden)]
4969        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
4970            fn from(value: ERC1967NonPayable) -> Self {
4971                ()
4972            }
4973        }
4974        #[automatically_derived]
4975        #[doc(hidden)]
4976        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
4977            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4978                Self
4979            }
4980        }
4981        #[automatically_derived]
4982        impl alloy_sol_types::SolError for ERC1967NonPayable {
4983            type Parameters<'a> = UnderlyingSolTuple<'a>;
4984            type Token<'a> = <Self::Parameters<
4985                'a,
4986            > as alloy_sol_types::SolType>::Token<'a>;
4987            const SIGNATURE: &'static str = "ERC1967NonPayable()";
4988            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
4989            #[inline]
4990            fn new<'a>(
4991                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4992            ) -> Self {
4993                tuple.into()
4994            }
4995            #[inline]
4996            fn tokenize(&self) -> Self::Token<'_> {
4997                ()
4998            }
4999            #[inline]
5000            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5001                <Self::Parameters<
5002                    '_,
5003                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5004                    .map(Self::new)
5005            }
5006        }
5007    };
5008    #[derive(serde::Serialize, serde::Deserialize)]
5009    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5010    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
5011```solidity
5012error FailedInnerCall();
5013```*/
5014    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5015    #[derive(Clone)]
5016    pub struct FailedInnerCall;
5017    #[allow(
5018        non_camel_case_types,
5019        non_snake_case,
5020        clippy::pub_underscore_fields,
5021        clippy::style
5022    )]
5023    const _: () = {
5024        use alloy::sol_types as alloy_sol_types;
5025        #[doc(hidden)]
5026        #[allow(dead_code)]
5027        type UnderlyingSolTuple<'a> = ();
5028        #[doc(hidden)]
5029        type UnderlyingRustTuple<'a> = ();
5030        #[cfg(test)]
5031        #[allow(dead_code, unreachable_patterns)]
5032        fn _type_assertion(
5033            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5034        ) {
5035            match _t {
5036                alloy_sol_types::private::AssertTypeEq::<
5037                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5038                >(_) => {}
5039            }
5040        }
5041        #[automatically_derived]
5042        #[doc(hidden)]
5043        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
5044            fn from(value: FailedInnerCall) -> Self {
5045                ()
5046            }
5047        }
5048        #[automatically_derived]
5049        #[doc(hidden)]
5050        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
5051            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5052                Self
5053            }
5054        }
5055        #[automatically_derived]
5056        impl alloy_sol_types::SolError for FailedInnerCall {
5057            type Parameters<'a> = UnderlyingSolTuple<'a>;
5058            type Token<'a> = <Self::Parameters<
5059                'a,
5060            > as alloy_sol_types::SolType>::Token<'a>;
5061            const SIGNATURE: &'static str = "FailedInnerCall()";
5062            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
5063            #[inline]
5064            fn new<'a>(
5065                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5066            ) -> Self {
5067                tuple.into()
5068            }
5069            #[inline]
5070            fn tokenize(&self) -> Self::Token<'_> {
5071                ()
5072            }
5073            #[inline]
5074            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5075                <Self::Parameters<
5076                    '_,
5077                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5078                    .map(Self::new)
5079            }
5080        }
5081    };
5082    #[derive(serde::Serialize, serde::Deserialize)]
5083    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5084    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
5085```solidity
5086error InsufficientSnapshotHistory();
5087```*/
5088    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5089    #[derive(Clone)]
5090    pub struct InsufficientSnapshotHistory;
5091    #[allow(
5092        non_camel_case_types,
5093        non_snake_case,
5094        clippy::pub_underscore_fields,
5095        clippy::style
5096    )]
5097    const _: () = {
5098        use alloy::sol_types as alloy_sol_types;
5099        #[doc(hidden)]
5100        #[allow(dead_code)]
5101        type UnderlyingSolTuple<'a> = ();
5102        #[doc(hidden)]
5103        type UnderlyingRustTuple<'a> = ();
5104        #[cfg(test)]
5105        #[allow(dead_code, unreachable_patterns)]
5106        fn _type_assertion(
5107            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5108        ) {
5109            match _t {
5110                alloy_sol_types::private::AssertTypeEq::<
5111                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5112                >(_) => {}
5113            }
5114        }
5115        #[automatically_derived]
5116        #[doc(hidden)]
5117        impl ::core::convert::From<InsufficientSnapshotHistory>
5118        for UnderlyingRustTuple<'_> {
5119            fn from(value: InsufficientSnapshotHistory) -> Self {
5120                ()
5121            }
5122        }
5123        #[automatically_derived]
5124        #[doc(hidden)]
5125        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5126        for InsufficientSnapshotHistory {
5127            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5128                Self
5129            }
5130        }
5131        #[automatically_derived]
5132        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
5133            type Parameters<'a> = UnderlyingSolTuple<'a>;
5134            type Token<'a> = <Self::Parameters<
5135                'a,
5136            > as alloy_sol_types::SolType>::Token<'a>;
5137            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
5138            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
5139            #[inline]
5140            fn new<'a>(
5141                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5142            ) -> Self {
5143                tuple.into()
5144            }
5145            #[inline]
5146            fn tokenize(&self) -> Self::Token<'_> {
5147                ()
5148            }
5149            #[inline]
5150            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5151                <Self::Parameters<
5152                    '_,
5153                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5154                    .map(Self::new)
5155            }
5156        }
5157    };
5158    #[derive(serde::Serialize, serde::Deserialize)]
5159    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5160    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
5161```solidity
5162error InvalidAddress();
5163```*/
5164    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5165    #[derive(Clone)]
5166    pub struct InvalidAddress;
5167    #[allow(
5168        non_camel_case_types,
5169        non_snake_case,
5170        clippy::pub_underscore_fields,
5171        clippy::style
5172    )]
5173    const _: () = {
5174        use alloy::sol_types as alloy_sol_types;
5175        #[doc(hidden)]
5176        #[allow(dead_code)]
5177        type UnderlyingSolTuple<'a> = ();
5178        #[doc(hidden)]
5179        type UnderlyingRustTuple<'a> = ();
5180        #[cfg(test)]
5181        #[allow(dead_code, unreachable_patterns)]
5182        fn _type_assertion(
5183            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5184        ) {
5185            match _t {
5186                alloy_sol_types::private::AssertTypeEq::<
5187                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5188                >(_) => {}
5189            }
5190        }
5191        #[automatically_derived]
5192        #[doc(hidden)]
5193        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
5194            fn from(value: InvalidAddress) -> Self {
5195                ()
5196            }
5197        }
5198        #[automatically_derived]
5199        #[doc(hidden)]
5200        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
5201            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5202                Self
5203            }
5204        }
5205        #[automatically_derived]
5206        impl alloy_sol_types::SolError for InvalidAddress {
5207            type Parameters<'a> = UnderlyingSolTuple<'a>;
5208            type Token<'a> = <Self::Parameters<
5209                'a,
5210            > as alloy_sol_types::SolType>::Token<'a>;
5211            const SIGNATURE: &'static str = "InvalidAddress()";
5212            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
5213            #[inline]
5214            fn new<'a>(
5215                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5216            ) -> Self {
5217                tuple.into()
5218            }
5219            #[inline]
5220            fn tokenize(&self) -> Self::Token<'_> {
5221                ()
5222            }
5223            #[inline]
5224            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5225                <Self::Parameters<
5226                    '_,
5227                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5228                    .map(Self::new)
5229            }
5230        }
5231    };
5232    #[derive(serde::Serialize, serde::Deserialize)]
5233    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5234    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
5235```solidity
5236error InvalidArgs();
5237```*/
5238    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5239    #[derive(Clone)]
5240    pub struct InvalidArgs;
5241    #[allow(
5242        non_camel_case_types,
5243        non_snake_case,
5244        clippy::pub_underscore_fields,
5245        clippy::style
5246    )]
5247    const _: () = {
5248        use alloy::sol_types as alloy_sol_types;
5249        #[doc(hidden)]
5250        #[allow(dead_code)]
5251        type UnderlyingSolTuple<'a> = ();
5252        #[doc(hidden)]
5253        type UnderlyingRustTuple<'a> = ();
5254        #[cfg(test)]
5255        #[allow(dead_code, unreachable_patterns)]
5256        fn _type_assertion(
5257            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5258        ) {
5259            match _t {
5260                alloy_sol_types::private::AssertTypeEq::<
5261                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5262                >(_) => {}
5263            }
5264        }
5265        #[automatically_derived]
5266        #[doc(hidden)]
5267        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
5268            fn from(value: InvalidArgs) -> Self {
5269                ()
5270            }
5271        }
5272        #[automatically_derived]
5273        #[doc(hidden)]
5274        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
5275            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5276                Self
5277            }
5278        }
5279        #[automatically_derived]
5280        impl alloy_sol_types::SolError for InvalidArgs {
5281            type Parameters<'a> = UnderlyingSolTuple<'a>;
5282            type Token<'a> = <Self::Parameters<
5283                'a,
5284            > as alloy_sol_types::SolType>::Token<'a>;
5285            const SIGNATURE: &'static str = "InvalidArgs()";
5286            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
5287            #[inline]
5288            fn new<'a>(
5289                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5290            ) -> Self {
5291                tuple.into()
5292            }
5293            #[inline]
5294            fn tokenize(&self) -> Self::Token<'_> {
5295                ()
5296            }
5297            #[inline]
5298            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5299                <Self::Parameters<
5300                    '_,
5301                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5302                    .map(Self::new)
5303            }
5304        }
5305    };
5306    #[derive(serde::Serialize, serde::Deserialize)]
5307    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5308    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
5309```solidity
5310error InvalidHotShotBlockForCommitmentCheck();
5311```*/
5312    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5313    #[derive(Clone)]
5314    pub struct InvalidHotShotBlockForCommitmentCheck;
5315    #[allow(
5316        non_camel_case_types,
5317        non_snake_case,
5318        clippy::pub_underscore_fields,
5319        clippy::style
5320    )]
5321    const _: () = {
5322        use alloy::sol_types as alloy_sol_types;
5323        #[doc(hidden)]
5324        #[allow(dead_code)]
5325        type UnderlyingSolTuple<'a> = ();
5326        #[doc(hidden)]
5327        type UnderlyingRustTuple<'a> = ();
5328        #[cfg(test)]
5329        #[allow(dead_code, unreachable_patterns)]
5330        fn _type_assertion(
5331            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5332        ) {
5333            match _t {
5334                alloy_sol_types::private::AssertTypeEq::<
5335                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5336                >(_) => {}
5337            }
5338        }
5339        #[automatically_derived]
5340        #[doc(hidden)]
5341        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck>
5342        for UnderlyingRustTuple<'_> {
5343            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
5344                ()
5345            }
5346        }
5347        #[automatically_derived]
5348        #[doc(hidden)]
5349        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5350        for InvalidHotShotBlockForCommitmentCheck {
5351            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5352                Self
5353            }
5354        }
5355        #[automatically_derived]
5356        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
5357            type Parameters<'a> = UnderlyingSolTuple<'a>;
5358            type Token<'a> = <Self::Parameters<
5359                'a,
5360            > as alloy_sol_types::SolType>::Token<'a>;
5361            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
5362            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
5363            #[inline]
5364            fn new<'a>(
5365                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5366            ) -> Self {
5367                tuple.into()
5368            }
5369            #[inline]
5370            fn tokenize(&self) -> Self::Token<'_> {
5371                ()
5372            }
5373            #[inline]
5374            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5375                <Self::Parameters<
5376                    '_,
5377                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5378                    .map(Self::new)
5379            }
5380        }
5381    };
5382    #[derive(serde::Serialize, serde::Deserialize)]
5383    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5384    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
5385```solidity
5386error InvalidInitialization();
5387```*/
5388    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5389    #[derive(Clone)]
5390    pub struct InvalidInitialization;
5391    #[allow(
5392        non_camel_case_types,
5393        non_snake_case,
5394        clippy::pub_underscore_fields,
5395        clippy::style
5396    )]
5397    const _: () = {
5398        use alloy::sol_types as alloy_sol_types;
5399        #[doc(hidden)]
5400        #[allow(dead_code)]
5401        type UnderlyingSolTuple<'a> = ();
5402        #[doc(hidden)]
5403        type UnderlyingRustTuple<'a> = ();
5404        #[cfg(test)]
5405        #[allow(dead_code, unreachable_patterns)]
5406        fn _type_assertion(
5407            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5408        ) {
5409            match _t {
5410                alloy_sol_types::private::AssertTypeEq::<
5411                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5412                >(_) => {}
5413            }
5414        }
5415        #[automatically_derived]
5416        #[doc(hidden)]
5417        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
5418            fn from(value: InvalidInitialization) -> Self {
5419                ()
5420            }
5421        }
5422        #[automatically_derived]
5423        #[doc(hidden)]
5424        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
5425            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5426                Self
5427            }
5428        }
5429        #[automatically_derived]
5430        impl alloy_sol_types::SolError for InvalidInitialization {
5431            type Parameters<'a> = UnderlyingSolTuple<'a>;
5432            type Token<'a> = <Self::Parameters<
5433                'a,
5434            > as alloy_sol_types::SolType>::Token<'a>;
5435            const SIGNATURE: &'static str = "InvalidInitialization()";
5436            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
5437            #[inline]
5438            fn new<'a>(
5439                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5440            ) -> Self {
5441                tuple.into()
5442            }
5443            #[inline]
5444            fn tokenize(&self) -> Self::Token<'_> {
5445                ()
5446            }
5447            #[inline]
5448            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5449                <Self::Parameters<
5450                    '_,
5451                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5452                    .map(Self::new)
5453            }
5454        }
5455    };
5456    #[derive(serde::Serialize, serde::Deserialize)]
5457    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5458    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
5459```solidity
5460error InvalidMaxStateHistory();
5461```*/
5462    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5463    #[derive(Clone)]
5464    pub struct InvalidMaxStateHistory;
5465    #[allow(
5466        non_camel_case_types,
5467        non_snake_case,
5468        clippy::pub_underscore_fields,
5469        clippy::style
5470    )]
5471    const _: () = {
5472        use alloy::sol_types as alloy_sol_types;
5473        #[doc(hidden)]
5474        #[allow(dead_code)]
5475        type UnderlyingSolTuple<'a> = ();
5476        #[doc(hidden)]
5477        type UnderlyingRustTuple<'a> = ();
5478        #[cfg(test)]
5479        #[allow(dead_code, unreachable_patterns)]
5480        fn _type_assertion(
5481            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5482        ) {
5483            match _t {
5484                alloy_sol_types::private::AssertTypeEq::<
5485                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5486                >(_) => {}
5487            }
5488        }
5489        #[automatically_derived]
5490        #[doc(hidden)]
5491        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
5492            fn from(value: InvalidMaxStateHistory) -> Self {
5493                ()
5494            }
5495        }
5496        #[automatically_derived]
5497        #[doc(hidden)]
5498        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
5499            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5500                Self
5501            }
5502        }
5503        #[automatically_derived]
5504        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
5505            type Parameters<'a> = UnderlyingSolTuple<'a>;
5506            type Token<'a> = <Self::Parameters<
5507                'a,
5508            > as alloy_sol_types::SolType>::Token<'a>;
5509            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
5510            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
5511            #[inline]
5512            fn new<'a>(
5513                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5514            ) -> Self {
5515                tuple.into()
5516            }
5517            #[inline]
5518            fn tokenize(&self) -> Self::Token<'_> {
5519                ()
5520            }
5521            #[inline]
5522            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5523                <Self::Parameters<
5524                    '_,
5525                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5526                    .map(Self::new)
5527            }
5528        }
5529    };
5530    #[derive(serde::Serialize, serde::Deserialize)]
5531    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5532    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
5533```solidity
5534error InvalidProof();
5535```*/
5536    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5537    #[derive(Clone)]
5538    pub struct InvalidProof;
5539    #[allow(
5540        non_camel_case_types,
5541        non_snake_case,
5542        clippy::pub_underscore_fields,
5543        clippy::style
5544    )]
5545    const _: () = {
5546        use alloy::sol_types as alloy_sol_types;
5547        #[doc(hidden)]
5548        #[allow(dead_code)]
5549        type UnderlyingSolTuple<'a> = ();
5550        #[doc(hidden)]
5551        type UnderlyingRustTuple<'a> = ();
5552        #[cfg(test)]
5553        #[allow(dead_code, unreachable_patterns)]
5554        fn _type_assertion(
5555            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5556        ) {
5557            match _t {
5558                alloy_sol_types::private::AssertTypeEq::<
5559                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5560                >(_) => {}
5561            }
5562        }
5563        #[automatically_derived]
5564        #[doc(hidden)]
5565        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
5566            fn from(value: InvalidProof) -> Self {
5567                ()
5568            }
5569        }
5570        #[automatically_derived]
5571        #[doc(hidden)]
5572        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
5573            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5574                Self
5575            }
5576        }
5577        #[automatically_derived]
5578        impl alloy_sol_types::SolError for InvalidProof {
5579            type Parameters<'a> = UnderlyingSolTuple<'a>;
5580            type Token<'a> = <Self::Parameters<
5581                'a,
5582            > as alloy_sol_types::SolType>::Token<'a>;
5583            const SIGNATURE: &'static str = "InvalidProof()";
5584            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
5585            #[inline]
5586            fn new<'a>(
5587                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5588            ) -> Self {
5589                tuple.into()
5590            }
5591            #[inline]
5592            fn tokenize(&self) -> Self::Token<'_> {
5593                ()
5594            }
5595            #[inline]
5596            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5597                <Self::Parameters<
5598                    '_,
5599                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5600                    .map(Self::new)
5601            }
5602        }
5603    };
5604    #[derive(serde::Serialize, serde::Deserialize)]
5605    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5606    /**Custom error with signature `InvalidScalar()` and selector `0x05b05ccc`.
5607```solidity
5608error InvalidScalar();
5609```*/
5610    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5611    #[derive(Clone)]
5612    pub struct InvalidScalar;
5613    #[allow(
5614        non_camel_case_types,
5615        non_snake_case,
5616        clippy::pub_underscore_fields,
5617        clippy::style
5618    )]
5619    const _: () = {
5620        use alloy::sol_types as alloy_sol_types;
5621        #[doc(hidden)]
5622        #[allow(dead_code)]
5623        type UnderlyingSolTuple<'a> = ();
5624        #[doc(hidden)]
5625        type UnderlyingRustTuple<'a> = ();
5626        #[cfg(test)]
5627        #[allow(dead_code, unreachable_patterns)]
5628        fn _type_assertion(
5629            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5630        ) {
5631            match _t {
5632                alloy_sol_types::private::AssertTypeEq::<
5633                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5634                >(_) => {}
5635            }
5636        }
5637        #[automatically_derived]
5638        #[doc(hidden)]
5639        impl ::core::convert::From<InvalidScalar> for UnderlyingRustTuple<'_> {
5640            fn from(value: InvalidScalar) -> Self {
5641                ()
5642            }
5643        }
5644        #[automatically_derived]
5645        #[doc(hidden)]
5646        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidScalar {
5647            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5648                Self
5649            }
5650        }
5651        #[automatically_derived]
5652        impl alloy_sol_types::SolError for InvalidScalar {
5653            type Parameters<'a> = UnderlyingSolTuple<'a>;
5654            type Token<'a> = <Self::Parameters<
5655                'a,
5656            > as alloy_sol_types::SolType>::Token<'a>;
5657            const SIGNATURE: &'static str = "InvalidScalar()";
5658            const SELECTOR: [u8; 4] = [5u8, 176u8, 92u8, 204u8];
5659            #[inline]
5660            fn new<'a>(
5661                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5662            ) -> Self {
5663                tuple.into()
5664            }
5665            #[inline]
5666            fn tokenize(&self) -> Self::Token<'_> {
5667                ()
5668            }
5669            #[inline]
5670            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5671                <Self::Parameters<
5672                    '_,
5673                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5674                    .map(Self::new)
5675            }
5676        }
5677    };
5678    #[derive(serde::Serialize, serde::Deserialize)]
5679    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5680    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
5681```solidity
5682error NoChangeRequired();
5683```*/
5684    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5685    #[derive(Clone)]
5686    pub struct NoChangeRequired;
5687    #[allow(
5688        non_camel_case_types,
5689        non_snake_case,
5690        clippy::pub_underscore_fields,
5691        clippy::style
5692    )]
5693    const _: () = {
5694        use alloy::sol_types as alloy_sol_types;
5695        #[doc(hidden)]
5696        #[allow(dead_code)]
5697        type UnderlyingSolTuple<'a> = ();
5698        #[doc(hidden)]
5699        type UnderlyingRustTuple<'a> = ();
5700        #[cfg(test)]
5701        #[allow(dead_code, unreachable_patterns)]
5702        fn _type_assertion(
5703            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5704        ) {
5705            match _t {
5706                alloy_sol_types::private::AssertTypeEq::<
5707                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5708                >(_) => {}
5709            }
5710        }
5711        #[automatically_derived]
5712        #[doc(hidden)]
5713        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
5714            fn from(value: NoChangeRequired) -> Self {
5715                ()
5716            }
5717        }
5718        #[automatically_derived]
5719        #[doc(hidden)]
5720        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
5721            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5722                Self
5723            }
5724        }
5725        #[automatically_derived]
5726        impl alloy_sol_types::SolError for NoChangeRequired {
5727            type Parameters<'a> = UnderlyingSolTuple<'a>;
5728            type Token<'a> = <Self::Parameters<
5729                'a,
5730            > as alloy_sol_types::SolType>::Token<'a>;
5731            const SIGNATURE: &'static str = "NoChangeRequired()";
5732            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
5733            #[inline]
5734            fn new<'a>(
5735                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5736            ) -> Self {
5737                tuple.into()
5738            }
5739            #[inline]
5740            fn tokenize(&self) -> Self::Token<'_> {
5741                ()
5742            }
5743            #[inline]
5744            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5745                <Self::Parameters<
5746                    '_,
5747                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5748                    .map(Self::new)
5749            }
5750        }
5751    };
5752    #[derive(serde::Serialize, serde::Deserialize)]
5753    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5754    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
5755```solidity
5756error NotInitializing();
5757```*/
5758    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5759    #[derive(Clone)]
5760    pub struct NotInitializing;
5761    #[allow(
5762        non_camel_case_types,
5763        non_snake_case,
5764        clippy::pub_underscore_fields,
5765        clippy::style
5766    )]
5767    const _: () = {
5768        use alloy::sol_types as alloy_sol_types;
5769        #[doc(hidden)]
5770        #[allow(dead_code)]
5771        type UnderlyingSolTuple<'a> = ();
5772        #[doc(hidden)]
5773        type UnderlyingRustTuple<'a> = ();
5774        #[cfg(test)]
5775        #[allow(dead_code, unreachable_patterns)]
5776        fn _type_assertion(
5777            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5778        ) {
5779            match _t {
5780                alloy_sol_types::private::AssertTypeEq::<
5781                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5782                >(_) => {}
5783            }
5784        }
5785        #[automatically_derived]
5786        #[doc(hidden)]
5787        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
5788            fn from(value: NotInitializing) -> Self {
5789                ()
5790            }
5791        }
5792        #[automatically_derived]
5793        #[doc(hidden)]
5794        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
5795            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5796                Self
5797            }
5798        }
5799        #[automatically_derived]
5800        impl alloy_sol_types::SolError for NotInitializing {
5801            type Parameters<'a> = UnderlyingSolTuple<'a>;
5802            type Token<'a> = <Self::Parameters<
5803                'a,
5804            > as alloy_sol_types::SolType>::Token<'a>;
5805            const SIGNATURE: &'static str = "NotInitializing()";
5806            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
5807            #[inline]
5808            fn new<'a>(
5809                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5810            ) -> Self {
5811                tuple.into()
5812            }
5813            #[inline]
5814            fn tokenize(&self) -> Self::Token<'_> {
5815                ()
5816            }
5817            #[inline]
5818            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5819                <Self::Parameters<
5820                    '_,
5821                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5822                    .map(Self::new)
5823            }
5824        }
5825    };
5826    #[derive(serde::Serialize, serde::Deserialize)]
5827    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5828    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
5829```solidity
5830error OutdatedState();
5831```*/
5832    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5833    #[derive(Clone)]
5834    pub struct OutdatedState;
5835    #[allow(
5836        non_camel_case_types,
5837        non_snake_case,
5838        clippy::pub_underscore_fields,
5839        clippy::style
5840    )]
5841    const _: () = {
5842        use alloy::sol_types as alloy_sol_types;
5843        #[doc(hidden)]
5844        #[allow(dead_code)]
5845        type UnderlyingSolTuple<'a> = ();
5846        #[doc(hidden)]
5847        type UnderlyingRustTuple<'a> = ();
5848        #[cfg(test)]
5849        #[allow(dead_code, unreachable_patterns)]
5850        fn _type_assertion(
5851            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5852        ) {
5853            match _t {
5854                alloy_sol_types::private::AssertTypeEq::<
5855                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5856                >(_) => {}
5857            }
5858        }
5859        #[automatically_derived]
5860        #[doc(hidden)]
5861        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
5862            fn from(value: OutdatedState) -> Self {
5863                ()
5864            }
5865        }
5866        #[automatically_derived]
5867        #[doc(hidden)]
5868        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
5869            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5870                Self
5871            }
5872        }
5873        #[automatically_derived]
5874        impl alloy_sol_types::SolError for OutdatedState {
5875            type Parameters<'a> = UnderlyingSolTuple<'a>;
5876            type Token<'a> = <Self::Parameters<
5877                'a,
5878            > as alloy_sol_types::SolType>::Token<'a>;
5879            const SIGNATURE: &'static str = "OutdatedState()";
5880            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
5881            #[inline]
5882            fn new<'a>(
5883                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5884            ) -> Self {
5885                tuple.into()
5886            }
5887            #[inline]
5888            fn tokenize(&self) -> Self::Token<'_> {
5889                ()
5890            }
5891            #[inline]
5892            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5893                <Self::Parameters<
5894                    '_,
5895                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5896                    .map(Self::new)
5897            }
5898        }
5899    };
5900    #[derive(serde::Serialize, serde::Deserialize)]
5901    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5902    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
5903```solidity
5904error OwnableInvalidOwner(address owner);
5905```*/
5906    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5907    #[derive(Clone)]
5908    pub struct OwnableInvalidOwner {
5909        #[allow(missing_docs)]
5910        pub owner: alloy::sol_types::private::Address,
5911    }
5912    #[allow(
5913        non_camel_case_types,
5914        non_snake_case,
5915        clippy::pub_underscore_fields,
5916        clippy::style
5917    )]
5918    const _: () = {
5919        use alloy::sol_types as alloy_sol_types;
5920        #[doc(hidden)]
5921        #[allow(dead_code)]
5922        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5923        #[doc(hidden)]
5924        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5925        #[cfg(test)]
5926        #[allow(dead_code, unreachable_patterns)]
5927        fn _type_assertion(
5928            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5929        ) {
5930            match _t {
5931                alloy_sol_types::private::AssertTypeEq::<
5932                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5933                >(_) => {}
5934            }
5935        }
5936        #[automatically_derived]
5937        #[doc(hidden)]
5938        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
5939            fn from(value: OwnableInvalidOwner) -> Self {
5940                (value.owner,)
5941            }
5942        }
5943        #[automatically_derived]
5944        #[doc(hidden)]
5945        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
5946            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5947                Self { owner: tuple.0 }
5948            }
5949        }
5950        #[automatically_derived]
5951        impl alloy_sol_types::SolError for OwnableInvalidOwner {
5952            type Parameters<'a> = UnderlyingSolTuple<'a>;
5953            type Token<'a> = <Self::Parameters<
5954                'a,
5955            > as alloy_sol_types::SolType>::Token<'a>;
5956            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
5957            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
5958            #[inline]
5959            fn new<'a>(
5960                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5961            ) -> Self {
5962                tuple.into()
5963            }
5964            #[inline]
5965            fn tokenize(&self) -> Self::Token<'_> {
5966                (
5967                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5968                        &self.owner,
5969                    ),
5970                )
5971            }
5972            #[inline]
5973            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5974                <Self::Parameters<
5975                    '_,
5976                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5977                    .map(Self::new)
5978            }
5979        }
5980    };
5981    #[derive(serde::Serialize, serde::Deserialize)]
5982    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5983    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
5984```solidity
5985error OwnableUnauthorizedAccount(address account);
5986```*/
5987    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5988    #[derive(Clone)]
5989    pub struct OwnableUnauthorizedAccount {
5990        #[allow(missing_docs)]
5991        pub account: alloy::sol_types::private::Address,
5992    }
5993    #[allow(
5994        non_camel_case_types,
5995        non_snake_case,
5996        clippy::pub_underscore_fields,
5997        clippy::style
5998    )]
5999    const _: () = {
6000        use alloy::sol_types as alloy_sol_types;
6001        #[doc(hidden)]
6002        #[allow(dead_code)]
6003        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6004        #[doc(hidden)]
6005        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6006        #[cfg(test)]
6007        #[allow(dead_code, unreachable_patterns)]
6008        fn _type_assertion(
6009            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6010        ) {
6011            match _t {
6012                alloy_sol_types::private::AssertTypeEq::<
6013                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6014                >(_) => {}
6015            }
6016        }
6017        #[automatically_derived]
6018        #[doc(hidden)]
6019        impl ::core::convert::From<OwnableUnauthorizedAccount>
6020        for UnderlyingRustTuple<'_> {
6021            fn from(value: OwnableUnauthorizedAccount) -> Self {
6022                (value.account,)
6023            }
6024        }
6025        #[automatically_derived]
6026        #[doc(hidden)]
6027        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6028        for OwnableUnauthorizedAccount {
6029            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6030                Self { account: tuple.0 }
6031            }
6032        }
6033        #[automatically_derived]
6034        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
6035            type Parameters<'a> = UnderlyingSolTuple<'a>;
6036            type Token<'a> = <Self::Parameters<
6037                'a,
6038            > as alloy_sol_types::SolType>::Token<'a>;
6039            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
6040            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
6041            #[inline]
6042            fn new<'a>(
6043                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6044            ) -> Self {
6045                tuple.into()
6046            }
6047            #[inline]
6048            fn tokenize(&self) -> Self::Token<'_> {
6049                (
6050                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6051                        &self.account,
6052                    ),
6053                )
6054            }
6055            #[inline]
6056            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6057                <Self::Parameters<
6058                    '_,
6059                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6060                    .map(Self::new)
6061            }
6062        }
6063    };
6064    #[derive(serde::Serialize, serde::Deserialize)]
6065    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6066    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
6067```solidity
6068error ProverNotPermissioned();
6069```*/
6070    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6071    #[derive(Clone)]
6072    pub struct ProverNotPermissioned;
6073    #[allow(
6074        non_camel_case_types,
6075        non_snake_case,
6076        clippy::pub_underscore_fields,
6077        clippy::style
6078    )]
6079    const _: () = {
6080        use alloy::sol_types as alloy_sol_types;
6081        #[doc(hidden)]
6082        #[allow(dead_code)]
6083        type UnderlyingSolTuple<'a> = ();
6084        #[doc(hidden)]
6085        type UnderlyingRustTuple<'a> = ();
6086        #[cfg(test)]
6087        #[allow(dead_code, unreachable_patterns)]
6088        fn _type_assertion(
6089            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6090        ) {
6091            match _t {
6092                alloy_sol_types::private::AssertTypeEq::<
6093                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6094                >(_) => {}
6095            }
6096        }
6097        #[automatically_derived]
6098        #[doc(hidden)]
6099        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
6100            fn from(value: ProverNotPermissioned) -> Self {
6101                ()
6102            }
6103        }
6104        #[automatically_derived]
6105        #[doc(hidden)]
6106        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
6107            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6108                Self
6109            }
6110        }
6111        #[automatically_derived]
6112        impl alloy_sol_types::SolError for ProverNotPermissioned {
6113            type Parameters<'a> = UnderlyingSolTuple<'a>;
6114            type Token<'a> = <Self::Parameters<
6115                'a,
6116            > as alloy_sol_types::SolType>::Token<'a>;
6117            const SIGNATURE: &'static str = "ProverNotPermissioned()";
6118            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
6119            #[inline]
6120            fn new<'a>(
6121                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6122            ) -> Self {
6123                tuple.into()
6124            }
6125            #[inline]
6126            fn tokenize(&self) -> Self::Token<'_> {
6127                ()
6128            }
6129            #[inline]
6130            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6131                <Self::Parameters<
6132                    '_,
6133                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6134                    .map(Self::new)
6135            }
6136        }
6137    };
6138    #[derive(serde::Serialize, serde::Deserialize)]
6139    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6140    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
6141```solidity
6142error UUPSUnauthorizedCallContext();
6143```*/
6144    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6145    #[derive(Clone)]
6146    pub struct UUPSUnauthorizedCallContext;
6147    #[allow(
6148        non_camel_case_types,
6149        non_snake_case,
6150        clippy::pub_underscore_fields,
6151        clippy::style
6152    )]
6153    const _: () = {
6154        use alloy::sol_types as alloy_sol_types;
6155        #[doc(hidden)]
6156        #[allow(dead_code)]
6157        type UnderlyingSolTuple<'a> = ();
6158        #[doc(hidden)]
6159        type UnderlyingRustTuple<'a> = ();
6160        #[cfg(test)]
6161        #[allow(dead_code, unreachable_patterns)]
6162        fn _type_assertion(
6163            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6164        ) {
6165            match _t {
6166                alloy_sol_types::private::AssertTypeEq::<
6167                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6168                >(_) => {}
6169            }
6170        }
6171        #[automatically_derived]
6172        #[doc(hidden)]
6173        impl ::core::convert::From<UUPSUnauthorizedCallContext>
6174        for UnderlyingRustTuple<'_> {
6175            fn from(value: UUPSUnauthorizedCallContext) -> Self {
6176                ()
6177            }
6178        }
6179        #[automatically_derived]
6180        #[doc(hidden)]
6181        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6182        for UUPSUnauthorizedCallContext {
6183            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6184                Self
6185            }
6186        }
6187        #[automatically_derived]
6188        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
6189            type Parameters<'a> = UnderlyingSolTuple<'a>;
6190            type Token<'a> = <Self::Parameters<
6191                'a,
6192            > as alloy_sol_types::SolType>::Token<'a>;
6193            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
6194            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
6195            #[inline]
6196            fn new<'a>(
6197                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6198            ) -> Self {
6199                tuple.into()
6200            }
6201            #[inline]
6202            fn tokenize(&self) -> Self::Token<'_> {
6203                ()
6204            }
6205            #[inline]
6206            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6207                <Self::Parameters<
6208                    '_,
6209                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6210                    .map(Self::new)
6211            }
6212        }
6213    };
6214    #[derive(serde::Serialize, serde::Deserialize)]
6215    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6216    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
6217```solidity
6218error UUPSUnsupportedProxiableUUID(bytes32 slot);
6219```*/
6220    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6221    #[derive(Clone)]
6222    pub struct UUPSUnsupportedProxiableUUID {
6223        #[allow(missing_docs)]
6224        pub slot: alloy::sol_types::private::FixedBytes<32>,
6225    }
6226    #[allow(
6227        non_camel_case_types,
6228        non_snake_case,
6229        clippy::pub_underscore_fields,
6230        clippy::style
6231    )]
6232    const _: () = {
6233        use alloy::sol_types as alloy_sol_types;
6234        #[doc(hidden)]
6235        #[allow(dead_code)]
6236        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6237        #[doc(hidden)]
6238        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6239        #[cfg(test)]
6240        #[allow(dead_code, unreachable_patterns)]
6241        fn _type_assertion(
6242            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6243        ) {
6244            match _t {
6245                alloy_sol_types::private::AssertTypeEq::<
6246                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6247                >(_) => {}
6248            }
6249        }
6250        #[automatically_derived]
6251        #[doc(hidden)]
6252        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
6253        for UnderlyingRustTuple<'_> {
6254            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
6255                (value.slot,)
6256            }
6257        }
6258        #[automatically_derived]
6259        #[doc(hidden)]
6260        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6261        for UUPSUnsupportedProxiableUUID {
6262            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6263                Self { slot: tuple.0 }
6264            }
6265        }
6266        #[automatically_derived]
6267        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
6268            type Parameters<'a> = UnderlyingSolTuple<'a>;
6269            type Token<'a> = <Self::Parameters<
6270                'a,
6271            > as alloy_sol_types::SolType>::Token<'a>;
6272            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
6273            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
6274            #[inline]
6275            fn new<'a>(
6276                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6277            ) -> Self {
6278                tuple.into()
6279            }
6280            #[inline]
6281            fn tokenize(&self) -> Self::Token<'_> {
6282                (
6283                    <alloy::sol_types::sol_data::FixedBytes<
6284                        32,
6285                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
6286                )
6287            }
6288            #[inline]
6289            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6290                <Self::Parameters<
6291                    '_,
6292                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6293                    .map(Self::new)
6294            }
6295        }
6296    };
6297    #[derive(serde::Serialize, serde::Deserialize)]
6298    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6299    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
6300```solidity
6301error WrongStakeTableUsed();
6302```*/
6303    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6304    #[derive(Clone)]
6305    pub struct WrongStakeTableUsed;
6306    #[allow(
6307        non_camel_case_types,
6308        non_snake_case,
6309        clippy::pub_underscore_fields,
6310        clippy::style
6311    )]
6312    const _: () = {
6313        use alloy::sol_types as alloy_sol_types;
6314        #[doc(hidden)]
6315        #[allow(dead_code)]
6316        type UnderlyingSolTuple<'a> = ();
6317        #[doc(hidden)]
6318        type UnderlyingRustTuple<'a> = ();
6319        #[cfg(test)]
6320        #[allow(dead_code, unreachable_patterns)]
6321        fn _type_assertion(
6322            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6323        ) {
6324            match _t {
6325                alloy_sol_types::private::AssertTypeEq::<
6326                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6327                >(_) => {}
6328            }
6329        }
6330        #[automatically_derived]
6331        #[doc(hidden)]
6332        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
6333            fn from(value: WrongStakeTableUsed) -> Self {
6334                ()
6335            }
6336        }
6337        #[automatically_derived]
6338        #[doc(hidden)]
6339        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
6340            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6341                Self
6342            }
6343        }
6344        #[automatically_derived]
6345        impl alloy_sol_types::SolError for WrongStakeTableUsed {
6346            type Parameters<'a> = UnderlyingSolTuple<'a>;
6347            type Token<'a> = <Self::Parameters<
6348                'a,
6349            > as alloy_sol_types::SolType>::Token<'a>;
6350            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
6351            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
6352            #[inline]
6353            fn new<'a>(
6354                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6355            ) -> Self {
6356                tuple.into()
6357            }
6358            #[inline]
6359            fn tokenize(&self) -> Self::Token<'_> {
6360                ()
6361            }
6362            #[inline]
6363            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6364                <Self::Parameters<
6365                    '_,
6366                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6367                    .map(Self::new)
6368            }
6369        }
6370    };
6371    #[derive(serde::Serialize, serde::Deserialize)]
6372    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6373    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
6374```solidity
6375event Initialized(uint64 version);
6376```*/
6377    #[allow(
6378        non_camel_case_types,
6379        non_snake_case,
6380        clippy::pub_underscore_fields,
6381        clippy::style
6382    )]
6383    #[derive(Clone)]
6384    pub struct Initialized {
6385        #[allow(missing_docs)]
6386        pub version: u64,
6387    }
6388    #[allow(
6389        non_camel_case_types,
6390        non_snake_case,
6391        clippy::pub_underscore_fields,
6392        clippy::style
6393    )]
6394    const _: () = {
6395        use alloy::sol_types as alloy_sol_types;
6396        #[automatically_derived]
6397        impl alloy_sol_types::SolEvent for Initialized {
6398            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6399            type DataToken<'a> = <Self::DataTuple<
6400                'a,
6401            > as alloy_sol_types::SolType>::Token<'a>;
6402            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6403            const SIGNATURE: &'static str = "Initialized(uint64)";
6404            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6405                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
6406                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
6407                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
6408            ]);
6409            const ANONYMOUS: bool = false;
6410            #[allow(unused_variables)]
6411            #[inline]
6412            fn new(
6413                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6414                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6415            ) -> Self {
6416                Self { version: data.0 }
6417            }
6418            #[inline]
6419            fn check_signature(
6420                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6421            ) -> alloy_sol_types::Result<()> {
6422                if topics.0 != Self::SIGNATURE_HASH {
6423                    return Err(
6424                        alloy_sol_types::Error::invalid_event_signature_hash(
6425                            Self::SIGNATURE,
6426                            topics.0,
6427                            Self::SIGNATURE_HASH,
6428                        ),
6429                    );
6430                }
6431                Ok(())
6432            }
6433            #[inline]
6434            fn tokenize_body(&self) -> Self::DataToken<'_> {
6435                (
6436                    <alloy::sol_types::sol_data::Uint<
6437                        64,
6438                    > as alloy_sol_types::SolType>::tokenize(&self.version),
6439                )
6440            }
6441            #[inline]
6442            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6443                (Self::SIGNATURE_HASH.into(),)
6444            }
6445            #[inline]
6446            fn encode_topics_raw(
6447                &self,
6448                out: &mut [alloy_sol_types::abi::token::WordToken],
6449            ) -> alloy_sol_types::Result<()> {
6450                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6451                    return Err(alloy_sol_types::Error::Overrun);
6452                }
6453                out[0usize] = alloy_sol_types::abi::token::WordToken(
6454                    Self::SIGNATURE_HASH,
6455                );
6456                Ok(())
6457            }
6458        }
6459        #[automatically_derived]
6460        impl alloy_sol_types::private::IntoLogData for Initialized {
6461            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6462                From::from(self)
6463            }
6464            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6465                From::from(&self)
6466            }
6467        }
6468        #[automatically_derived]
6469        impl From<&Initialized> for alloy_sol_types::private::LogData {
6470            #[inline]
6471            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
6472                alloy_sol_types::SolEvent::encode_log_data(this)
6473            }
6474        }
6475    };
6476    #[derive(serde::Serialize, serde::Deserialize)]
6477    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6478    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
6479```solidity
6480event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
6481```*/
6482    #[allow(
6483        non_camel_case_types,
6484        non_snake_case,
6485        clippy::pub_underscore_fields,
6486        clippy::style
6487    )]
6488    #[derive(Clone)]
6489    pub struct NewState {
6490        #[allow(missing_docs)]
6491        pub viewNum: u64,
6492        #[allow(missing_docs)]
6493        pub blockHeight: u64,
6494        #[allow(missing_docs)]
6495        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6496    }
6497    #[allow(
6498        non_camel_case_types,
6499        non_snake_case,
6500        clippy::pub_underscore_fields,
6501        clippy::style
6502    )]
6503    const _: () = {
6504        use alloy::sol_types as alloy_sol_types;
6505        #[automatically_derived]
6506        impl alloy_sol_types::SolEvent for NewState {
6507            type DataTuple<'a> = (BN254::ScalarField,);
6508            type DataToken<'a> = <Self::DataTuple<
6509                'a,
6510            > as alloy_sol_types::SolType>::Token<'a>;
6511            type TopicList = (
6512                alloy_sol_types::sol_data::FixedBytes<32>,
6513                alloy::sol_types::sol_data::Uint<64>,
6514                alloy::sol_types::sol_data::Uint<64>,
6515            );
6516            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
6517            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6518                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
6519                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
6520                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
6521            ]);
6522            const ANONYMOUS: bool = false;
6523            #[allow(unused_variables)]
6524            #[inline]
6525            fn new(
6526                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6527                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6528            ) -> Self {
6529                Self {
6530                    viewNum: topics.1,
6531                    blockHeight: topics.2,
6532                    blockCommRoot: data.0,
6533                }
6534            }
6535            #[inline]
6536            fn check_signature(
6537                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6538            ) -> alloy_sol_types::Result<()> {
6539                if topics.0 != Self::SIGNATURE_HASH {
6540                    return Err(
6541                        alloy_sol_types::Error::invalid_event_signature_hash(
6542                            Self::SIGNATURE,
6543                            topics.0,
6544                            Self::SIGNATURE_HASH,
6545                        ),
6546                    );
6547                }
6548                Ok(())
6549            }
6550            #[inline]
6551            fn tokenize_body(&self) -> Self::DataToken<'_> {
6552                (
6553                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
6554                        &self.blockCommRoot,
6555                    ),
6556                )
6557            }
6558            #[inline]
6559            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6560                (
6561                    Self::SIGNATURE_HASH.into(),
6562                    self.viewNum.clone(),
6563                    self.blockHeight.clone(),
6564                )
6565            }
6566            #[inline]
6567            fn encode_topics_raw(
6568                &self,
6569                out: &mut [alloy_sol_types::abi::token::WordToken],
6570            ) -> alloy_sol_types::Result<()> {
6571                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6572                    return Err(alloy_sol_types::Error::Overrun);
6573                }
6574                out[0usize] = alloy_sol_types::abi::token::WordToken(
6575                    Self::SIGNATURE_HASH,
6576                );
6577                out[1usize] = <alloy::sol_types::sol_data::Uint<
6578                    64,
6579                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
6580                out[2usize] = <alloy::sol_types::sol_data::Uint<
6581                    64,
6582                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
6583                Ok(())
6584            }
6585        }
6586        #[automatically_derived]
6587        impl alloy_sol_types::private::IntoLogData for NewState {
6588            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6589                From::from(self)
6590            }
6591            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6592                From::from(&self)
6593            }
6594        }
6595        #[automatically_derived]
6596        impl From<&NewState> for alloy_sol_types::private::LogData {
6597            #[inline]
6598            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
6599                alloy_sol_types::SolEvent::encode_log_data(this)
6600            }
6601        }
6602    };
6603    #[derive(serde::Serialize, serde::Deserialize)]
6604    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6605    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
6606```solidity
6607event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
6608```*/
6609    #[allow(
6610        non_camel_case_types,
6611        non_snake_case,
6612        clippy::pub_underscore_fields,
6613        clippy::style
6614    )]
6615    #[derive(Clone)]
6616    pub struct OwnershipTransferred {
6617        #[allow(missing_docs)]
6618        pub previousOwner: alloy::sol_types::private::Address,
6619        #[allow(missing_docs)]
6620        pub newOwner: alloy::sol_types::private::Address,
6621    }
6622    #[allow(
6623        non_camel_case_types,
6624        non_snake_case,
6625        clippy::pub_underscore_fields,
6626        clippy::style
6627    )]
6628    const _: () = {
6629        use alloy::sol_types as alloy_sol_types;
6630        #[automatically_derived]
6631        impl alloy_sol_types::SolEvent for OwnershipTransferred {
6632            type DataTuple<'a> = ();
6633            type DataToken<'a> = <Self::DataTuple<
6634                'a,
6635            > as alloy_sol_types::SolType>::Token<'a>;
6636            type TopicList = (
6637                alloy_sol_types::sol_data::FixedBytes<32>,
6638                alloy::sol_types::sol_data::Address,
6639                alloy::sol_types::sol_data::Address,
6640            );
6641            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
6642            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6643                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
6644                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
6645                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
6646            ]);
6647            const ANONYMOUS: bool = false;
6648            #[allow(unused_variables)]
6649            #[inline]
6650            fn new(
6651                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6652                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6653            ) -> Self {
6654                Self {
6655                    previousOwner: topics.1,
6656                    newOwner: topics.2,
6657                }
6658            }
6659            #[inline]
6660            fn check_signature(
6661                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6662            ) -> alloy_sol_types::Result<()> {
6663                if topics.0 != Self::SIGNATURE_HASH {
6664                    return Err(
6665                        alloy_sol_types::Error::invalid_event_signature_hash(
6666                            Self::SIGNATURE,
6667                            topics.0,
6668                            Self::SIGNATURE_HASH,
6669                        ),
6670                    );
6671                }
6672                Ok(())
6673            }
6674            #[inline]
6675            fn tokenize_body(&self) -> Self::DataToken<'_> {
6676                ()
6677            }
6678            #[inline]
6679            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6680                (
6681                    Self::SIGNATURE_HASH.into(),
6682                    self.previousOwner.clone(),
6683                    self.newOwner.clone(),
6684                )
6685            }
6686            #[inline]
6687            fn encode_topics_raw(
6688                &self,
6689                out: &mut [alloy_sol_types::abi::token::WordToken],
6690            ) -> alloy_sol_types::Result<()> {
6691                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6692                    return Err(alloy_sol_types::Error::Overrun);
6693                }
6694                out[0usize] = alloy_sol_types::abi::token::WordToken(
6695                    Self::SIGNATURE_HASH,
6696                );
6697                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6698                    &self.previousOwner,
6699                );
6700                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6701                    &self.newOwner,
6702                );
6703                Ok(())
6704            }
6705        }
6706        #[automatically_derived]
6707        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
6708            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6709                From::from(self)
6710            }
6711            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6712                From::from(&self)
6713            }
6714        }
6715        #[automatically_derived]
6716        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
6717            #[inline]
6718            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
6719                alloy_sol_types::SolEvent::encode_log_data(this)
6720            }
6721        }
6722    };
6723    #[derive(serde::Serialize, serde::Deserialize)]
6724    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6725    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
6726```solidity
6727event PermissionedProverNotRequired();
6728```*/
6729    #[allow(
6730        non_camel_case_types,
6731        non_snake_case,
6732        clippy::pub_underscore_fields,
6733        clippy::style
6734    )]
6735    #[derive(Clone)]
6736    pub struct PermissionedProverNotRequired;
6737    #[allow(
6738        non_camel_case_types,
6739        non_snake_case,
6740        clippy::pub_underscore_fields,
6741        clippy::style
6742    )]
6743    const _: () = {
6744        use alloy::sol_types as alloy_sol_types;
6745        #[automatically_derived]
6746        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
6747            type DataTuple<'a> = ();
6748            type DataToken<'a> = <Self::DataTuple<
6749                'a,
6750            > as alloy_sol_types::SolType>::Token<'a>;
6751            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6752            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
6753            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6754                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
6755                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
6756                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
6757            ]);
6758            const ANONYMOUS: bool = false;
6759            #[allow(unused_variables)]
6760            #[inline]
6761            fn new(
6762                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6763                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6764            ) -> Self {
6765                Self {}
6766            }
6767            #[inline]
6768            fn check_signature(
6769                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6770            ) -> alloy_sol_types::Result<()> {
6771                if topics.0 != Self::SIGNATURE_HASH {
6772                    return Err(
6773                        alloy_sol_types::Error::invalid_event_signature_hash(
6774                            Self::SIGNATURE,
6775                            topics.0,
6776                            Self::SIGNATURE_HASH,
6777                        ),
6778                    );
6779                }
6780                Ok(())
6781            }
6782            #[inline]
6783            fn tokenize_body(&self) -> Self::DataToken<'_> {
6784                ()
6785            }
6786            #[inline]
6787            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6788                (Self::SIGNATURE_HASH.into(),)
6789            }
6790            #[inline]
6791            fn encode_topics_raw(
6792                &self,
6793                out: &mut [alloy_sol_types::abi::token::WordToken],
6794            ) -> alloy_sol_types::Result<()> {
6795                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6796                    return Err(alloy_sol_types::Error::Overrun);
6797                }
6798                out[0usize] = alloy_sol_types::abi::token::WordToken(
6799                    Self::SIGNATURE_HASH,
6800                );
6801                Ok(())
6802            }
6803        }
6804        #[automatically_derived]
6805        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
6806            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6807                From::from(self)
6808            }
6809            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6810                From::from(&self)
6811            }
6812        }
6813        #[automatically_derived]
6814        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
6815            #[inline]
6816            fn from(
6817                this: &PermissionedProverNotRequired,
6818            ) -> alloy_sol_types::private::LogData {
6819                alloy_sol_types::SolEvent::encode_log_data(this)
6820            }
6821        }
6822    };
6823    #[derive(serde::Serialize, serde::Deserialize)]
6824    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6825    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
6826```solidity
6827event PermissionedProverRequired(address permissionedProver);
6828```*/
6829    #[allow(
6830        non_camel_case_types,
6831        non_snake_case,
6832        clippy::pub_underscore_fields,
6833        clippy::style
6834    )]
6835    #[derive(Clone)]
6836    pub struct PermissionedProverRequired {
6837        #[allow(missing_docs)]
6838        pub permissionedProver: alloy::sol_types::private::Address,
6839    }
6840    #[allow(
6841        non_camel_case_types,
6842        non_snake_case,
6843        clippy::pub_underscore_fields,
6844        clippy::style
6845    )]
6846    const _: () = {
6847        use alloy::sol_types as alloy_sol_types;
6848        #[automatically_derived]
6849        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
6850            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6851            type DataToken<'a> = <Self::DataTuple<
6852                'a,
6853            > as alloy_sol_types::SolType>::Token<'a>;
6854            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6855            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
6856            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6857                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
6858                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
6859                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
6860            ]);
6861            const ANONYMOUS: bool = false;
6862            #[allow(unused_variables)]
6863            #[inline]
6864            fn new(
6865                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6866                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6867            ) -> Self {
6868                Self { permissionedProver: data.0 }
6869            }
6870            #[inline]
6871            fn check_signature(
6872                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6873            ) -> alloy_sol_types::Result<()> {
6874                if topics.0 != Self::SIGNATURE_HASH {
6875                    return Err(
6876                        alloy_sol_types::Error::invalid_event_signature_hash(
6877                            Self::SIGNATURE,
6878                            topics.0,
6879                            Self::SIGNATURE_HASH,
6880                        ),
6881                    );
6882                }
6883                Ok(())
6884            }
6885            #[inline]
6886            fn tokenize_body(&self) -> Self::DataToken<'_> {
6887                (
6888                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6889                        &self.permissionedProver,
6890                    ),
6891                )
6892            }
6893            #[inline]
6894            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6895                (Self::SIGNATURE_HASH.into(),)
6896            }
6897            #[inline]
6898            fn encode_topics_raw(
6899                &self,
6900                out: &mut [alloy_sol_types::abi::token::WordToken],
6901            ) -> alloy_sol_types::Result<()> {
6902                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6903                    return Err(alloy_sol_types::Error::Overrun);
6904                }
6905                out[0usize] = alloy_sol_types::abi::token::WordToken(
6906                    Self::SIGNATURE_HASH,
6907                );
6908                Ok(())
6909            }
6910        }
6911        #[automatically_derived]
6912        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
6913            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6914                From::from(self)
6915            }
6916            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6917                From::from(&self)
6918            }
6919        }
6920        #[automatically_derived]
6921        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
6922            #[inline]
6923            fn from(
6924                this: &PermissionedProverRequired,
6925            ) -> alloy_sol_types::private::LogData {
6926                alloy_sol_types::SolEvent::encode_log_data(this)
6927            }
6928        }
6929    };
6930    #[derive(serde::Serialize, serde::Deserialize)]
6931    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6932    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
6933```solidity
6934event Upgrade(address implementation);
6935```*/
6936    #[allow(
6937        non_camel_case_types,
6938        non_snake_case,
6939        clippy::pub_underscore_fields,
6940        clippy::style
6941    )]
6942    #[derive(Clone)]
6943    pub struct Upgrade {
6944        #[allow(missing_docs)]
6945        pub implementation: alloy::sol_types::private::Address,
6946    }
6947    #[allow(
6948        non_camel_case_types,
6949        non_snake_case,
6950        clippy::pub_underscore_fields,
6951        clippy::style
6952    )]
6953    const _: () = {
6954        use alloy::sol_types as alloy_sol_types;
6955        #[automatically_derived]
6956        impl alloy_sol_types::SolEvent for Upgrade {
6957            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6958            type DataToken<'a> = <Self::DataTuple<
6959                'a,
6960            > as alloy_sol_types::SolType>::Token<'a>;
6961            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6962            const SIGNATURE: &'static str = "Upgrade(address)";
6963            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6964                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
6965                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
6966                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
6967            ]);
6968            const ANONYMOUS: bool = false;
6969            #[allow(unused_variables)]
6970            #[inline]
6971            fn new(
6972                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6973                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6974            ) -> Self {
6975                Self { implementation: data.0 }
6976            }
6977            #[inline]
6978            fn check_signature(
6979                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6980            ) -> alloy_sol_types::Result<()> {
6981                if topics.0 != Self::SIGNATURE_HASH {
6982                    return Err(
6983                        alloy_sol_types::Error::invalid_event_signature_hash(
6984                            Self::SIGNATURE,
6985                            topics.0,
6986                            Self::SIGNATURE_HASH,
6987                        ),
6988                    );
6989                }
6990                Ok(())
6991            }
6992            #[inline]
6993            fn tokenize_body(&self) -> Self::DataToken<'_> {
6994                (
6995                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6996                        &self.implementation,
6997                    ),
6998                )
6999            }
7000            #[inline]
7001            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7002                (Self::SIGNATURE_HASH.into(),)
7003            }
7004            #[inline]
7005            fn encode_topics_raw(
7006                &self,
7007                out: &mut [alloy_sol_types::abi::token::WordToken],
7008            ) -> alloy_sol_types::Result<()> {
7009                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7010                    return Err(alloy_sol_types::Error::Overrun);
7011                }
7012                out[0usize] = alloy_sol_types::abi::token::WordToken(
7013                    Self::SIGNATURE_HASH,
7014                );
7015                Ok(())
7016            }
7017        }
7018        #[automatically_derived]
7019        impl alloy_sol_types::private::IntoLogData for Upgrade {
7020            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7021                From::from(self)
7022            }
7023            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7024                From::from(&self)
7025            }
7026        }
7027        #[automatically_derived]
7028        impl From<&Upgrade> for alloy_sol_types::private::LogData {
7029            #[inline]
7030            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
7031                alloy_sol_types::SolEvent::encode_log_data(this)
7032            }
7033        }
7034    };
7035    #[derive(serde::Serialize, serde::Deserialize)]
7036    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7037    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
7038```solidity
7039event Upgraded(address indexed implementation);
7040```*/
7041    #[allow(
7042        non_camel_case_types,
7043        non_snake_case,
7044        clippy::pub_underscore_fields,
7045        clippy::style
7046    )]
7047    #[derive(Clone)]
7048    pub struct Upgraded {
7049        #[allow(missing_docs)]
7050        pub implementation: alloy::sol_types::private::Address,
7051    }
7052    #[allow(
7053        non_camel_case_types,
7054        non_snake_case,
7055        clippy::pub_underscore_fields,
7056        clippy::style
7057    )]
7058    const _: () = {
7059        use alloy::sol_types as alloy_sol_types;
7060        #[automatically_derived]
7061        impl alloy_sol_types::SolEvent for Upgraded {
7062            type DataTuple<'a> = ();
7063            type DataToken<'a> = <Self::DataTuple<
7064                'a,
7065            > as alloy_sol_types::SolType>::Token<'a>;
7066            type TopicList = (
7067                alloy_sol_types::sol_data::FixedBytes<32>,
7068                alloy::sol_types::sol_data::Address,
7069            );
7070            const SIGNATURE: &'static str = "Upgraded(address)";
7071            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7072                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
7073                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
7074                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
7075            ]);
7076            const ANONYMOUS: bool = false;
7077            #[allow(unused_variables)]
7078            #[inline]
7079            fn new(
7080                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7081                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7082            ) -> Self {
7083                Self { implementation: topics.1 }
7084            }
7085            #[inline]
7086            fn check_signature(
7087                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7088            ) -> alloy_sol_types::Result<()> {
7089                if topics.0 != Self::SIGNATURE_HASH {
7090                    return Err(
7091                        alloy_sol_types::Error::invalid_event_signature_hash(
7092                            Self::SIGNATURE,
7093                            topics.0,
7094                            Self::SIGNATURE_HASH,
7095                        ),
7096                    );
7097                }
7098                Ok(())
7099            }
7100            #[inline]
7101            fn tokenize_body(&self) -> Self::DataToken<'_> {
7102                ()
7103            }
7104            #[inline]
7105            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7106                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
7107            }
7108            #[inline]
7109            fn encode_topics_raw(
7110                &self,
7111                out: &mut [alloy_sol_types::abi::token::WordToken],
7112            ) -> alloy_sol_types::Result<()> {
7113                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7114                    return Err(alloy_sol_types::Error::Overrun);
7115                }
7116                out[0usize] = alloy_sol_types::abi::token::WordToken(
7117                    Self::SIGNATURE_HASH,
7118                );
7119                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7120                    &self.implementation,
7121                );
7122                Ok(())
7123            }
7124        }
7125        #[automatically_derived]
7126        impl alloy_sol_types::private::IntoLogData for Upgraded {
7127            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7128                From::from(self)
7129            }
7130            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7131                From::from(&self)
7132            }
7133        }
7134        #[automatically_derived]
7135        impl From<&Upgraded> for alloy_sol_types::private::LogData {
7136            #[inline]
7137            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
7138                alloy_sol_types::SolEvent::encode_log_data(this)
7139            }
7140        }
7141    };
7142    #[derive(serde::Serialize, serde::Deserialize)]
7143    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7144    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
7145```solidity
7146function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
7147```*/
7148    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7149    #[derive(Clone)]
7150    pub struct UPGRADE_INTERFACE_VERSIONCall;
7151    #[derive(serde::Serialize, serde::Deserialize)]
7152    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7153    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
7154    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7155    #[derive(Clone)]
7156    pub struct UPGRADE_INTERFACE_VERSIONReturn {
7157        #[allow(missing_docs)]
7158        pub _0: alloy::sol_types::private::String,
7159    }
7160    #[allow(
7161        non_camel_case_types,
7162        non_snake_case,
7163        clippy::pub_underscore_fields,
7164        clippy::style
7165    )]
7166    const _: () = {
7167        use alloy::sol_types as alloy_sol_types;
7168        {
7169            #[doc(hidden)]
7170            #[allow(dead_code)]
7171            type UnderlyingSolTuple<'a> = ();
7172            #[doc(hidden)]
7173            type UnderlyingRustTuple<'a> = ();
7174            #[cfg(test)]
7175            #[allow(dead_code, unreachable_patterns)]
7176            fn _type_assertion(
7177                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7178            ) {
7179                match _t {
7180                    alloy_sol_types::private::AssertTypeEq::<
7181                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7182                    >(_) => {}
7183                }
7184            }
7185            #[automatically_derived]
7186            #[doc(hidden)]
7187            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
7188            for UnderlyingRustTuple<'_> {
7189                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
7190                    ()
7191                }
7192            }
7193            #[automatically_derived]
7194            #[doc(hidden)]
7195            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7196            for UPGRADE_INTERFACE_VERSIONCall {
7197                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7198                    Self
7199                }
7200            }
7201        }
7202        {
7203            #[doc(hidden)]
7204            #[allow(dead_code)]
7205            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
7206            #[doc(hidden)]
7207            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
7208            #[cfg(test)]
7209            #[allow(dead_code, unreachable_patterns)]
7210            fn _type_assertion(
7211                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7212            ) {
7213                match _t {
7214                    alloy_sol_types::private::AssertTypeEq::<
7215                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7216                    >(_) => {}
7217                }
7218            }
7219            #[automatically_derived]
7220            #[doc(hidden)]
7221            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
7222            for UnderlyingRustTuple<'_> {
7223                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
7224                    (value._0,)
7225                }
7226            }
7227            #[automatically_derived]
7228            #[doc(hidden)]
7229            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7230            for UPGRADE_INTERFACE_VERSIONReturn {
7231                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7232                    Self { _0: tuple.0 }
7233                }
7234            }
7235        }
7236        #[automatically_derived]
7237        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
7238            type Parameters<'a> = ();
7239            type Token<'a> = <Self::Parameters<
7240                'a,
7241            > as alloy_sol_types::SolType>::Token<'a>;
7242            type Return = alloy::sol_types::private::String;
7243            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
7244            type ReturnToken<'a> = <Self::ReturnTuple<
7245                'a,
7246            > as alloy_sol_types::SolType>::Token<'a>;
7247            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
7248            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
7249            #[inline]
7250            fn new<'a>(
7251                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7252            ) -> Self {
7253                tuple.into()
7254            }
7255            #[inline]
7256            fn tokenize(&self) -> Self::Token<'_> {
7257                ()
7258            }
7259            #[inline]
7260            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7261                (
7262                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
7263                        ret,
7264                    ),
7265                )
7266            }
7267            #[inline]
7268            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7269                <Self::ReturnTuple<
7270                    '_,
7271                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7272                    .map(|r| {
7273                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
7274                        r._0
7275                    })
7276            }
7277            #[inline]
7278            fn abi_decode_returns_validate(
7279                data: &[u8],
7280            ) -> alloy_sol_types::Result<Self::Return> {
7281                <Self::ReturnTuple<
7282                    '_,
7283                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7284                    .map(|r| {
7285                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
7286                        r._0
7287                    })
7288            }
7289        }
7290    };
7291    #[derive(serde::Serialize, serde::Deserialize)]
7292    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7293    /**Function with signature `_getVk()` and selector `0x12173c2c`.
7294```solidity
7295function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
7296```*/
7297    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7298    #[derive(Clone)]
7299    pub struct _getVkCall;
7300    #[derive(serde::Serialize, serde::Deserialize)]
7301    #[derive()]
7302    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
7303    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7304    #[derive(Clone)]
7305    pub struct _getVkReturn {
7306        #[allow(missing_docs)]
7307        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
7308    }
7309    #[allow(
7310        non_camel_case_types,
7311        non_snake_case,
7312        clippy::pub_underscore_fields,
7313        clippy::style
7314    )]
7315    const _: () = {
7316        use alloy::sol_types as alloy_sol_types;
7317        {
7318            #[doc(hidden)]
7319            #[allow(dead_code)]
7320            type UnderlyingSolTuple<'a> = ();
7321            #[doc(hidden)]
7322            type UnderlyingRustTuple<'a> = ();
7323            #[cfg(test)]
7324            #[allow(dead_code, unreachable_patterns)]
7325            fn _type_assertion(
7326                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7327            ) {
7328                match _t {
7329                    alloy_sol_types::private::AssertTypeEq::<
7330                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7331                    >(_) => {}
7332                }
7333            }
7334            #[automatically_derived]
7335            #[doc(hidden)]
7336            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
7337                fn from(value: _getVkCall) -> Self {
7338                    ()
7339                }
7340            }
7341            #[automatically_derived]
7342            #[doc(hidden)]
7343            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
7344                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7345                    Self
7346                }
7347            }
7348        }
7349        {
7350            #[doc(hidden)]
7351            #[allow(dead_code)]
7352            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7353            #[doc(hidden)]
7354            type UnderlyingRustTuple<'a> = (
7355                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
7356            );
7357            #[cfg(test)]
7358            #[allow(dead_code, unreachable_patterns)]
7359            fn _type_assertion(
7360                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7361            ) {
7362                match _t {
7363                    alloy_sol_types::private::AssertTypeEq::<
7364                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7365                    >(_) => {}
7366                }
7367            }
7368            #[automatically_derived]
7369            #[doc(hidden)]
7370            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
7371                fn from(value: _getVkReturn) -> Self {
7372                    (value.vk,)
7373                }
7374            }
7375            #[automatically_derived]
7376            #[doc(hidden)]
7377            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
7378                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7379                    Self { vk: tuple.0 }
7380                }
7381            }
7382        }
7383        #[automatically_derived]
7384        impl alloy_sol_types::SolCall for _getVkCall {
7385            type Parameters<'a> = ();
7386            type Token<'a> = <Self::Parameters<
7387                'a,
7388            > as alloy_sol_types::SolType>::Token<'a>;
7389            type Return = <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType;
7390            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7391            type ReturnToken<'a> = <Self::ReturnTuple<
7392                'a,
7393            > as alloy_sol_types::SolType>::Token<'a>;
7394            const SIGNATURE: &'static str = "_getVk()";
7395            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
7396            #[inline]
7397            fn new<'a>(
7398                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7399            ) -> Self {
7400                tuple.into()
7401            }
7402            #[inline]
7403            fn tokenize(&self) -> Self::Token<'_> {
7404                ()
7405            }
7406            #[inline]
7407            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7408                (
7409                    <IPlonkVerifier::VerifyingKey as alloy_sol_types::SolType>::tokenize(
7410                        ret,
7411                    ),
7412                )
7413            }
7414            #[inline]
7415            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7416                <Self::ReturnTuple<
7417                    '_,
7418                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7419                    .map(|r| {
7420                        let r: _getVkReturn = r.into();
7421                        r.vk
7422                    })
7423            }
7424            #[inline]
7425            fn abi_decode_returns_validate(
7426                data: &[u8],
7427            ) -> alloy_sol_types::Result<Self::Return> {
7428                <Self::ReturnTuple<
7429                    '_,
7430                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7431                    .map(|r| {
7432                        let r: _getVkReturn = r.into();
7433                        r.vk
7434                    })
7435            }
7436        }
7437    };
7438    #[derive(serde::Serialize, serde::Deserialize)]
7439    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7440    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
7441```solidity
7442function currentBlockNumber() external view returns (uint256);
7443```*/
7444    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7445    #[derive(Clone)]
7446    pub struct currentBlockNumberCall;
7447    #[derive(serde::Serialize, serde::Deserialize)]
7448    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7449    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
7450    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7451    #[derive(Clone)]
7452    pub struct currentBlockNumberReturn {
7453        #[allow(missing_docs)]
7454        pub _0: alloy::sol_types::private::primitives::aliases::U256,
7455    }
7456    #[allow(
7457        non_camel_case_types,
7458        non_snake_case,
7459        clippy::pub_underscore_fields,
7460        clippy::style
7461    )]
7462    const _: () = {
7463        use alloy::sol_types as alloy_sol_types;
7464        {
7465            #[doc(hidden)]
7466            #[allow(dead_code)]
7467            type UnderlyingSolTuple<'a> = ();
7468            #[doc(hidden)]
7469            type UnderlyingRustTuple<'a> = ();
7470            #[cfg(test)]
7471            #[allow(dead_code, unreachable_patterns)]
7472            fn _type_assertion(
7473                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7474            ) {
7475                match _t {
7476                    alloy_sol_types::private::AssertTypeEq::<
7477                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7478                    >(_) => {}
7479                }
7480            }
7481            #[automatically_derived]
7482            #[doc(hidden)]
7483            impl ::core::convert::From<currentBlockNumberCall>
7484            for UnderlyingRustTuple<'_> {
7485                fn from(value: currentBlockNumberCall) -> Self {
7486                    ()
7487                }
7488            }
7489            #[automatically_derived]
7490            #[doc(hidden)]
7491            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7492            for currentBlockNumberCall {
7493                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7494                    Self
7495                }
7496            }
7497        }
7498        {
7499            #[doc(hidden)]
7500            #[allow(dead_code)]
7501            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7502            #[doc(hidden)]
7503            type UnderlyingRustTuple<'a> = (
7504                alloy::sol_types::private::primitives::aliases::U256,
7505            );
7506            #[cfg(test)]
7507            #[allow(dead_code, unreachable_patterns)]
7508            fn _type_assertion(
7509                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7510            ) {
7511                match _t {
7512                    alloy_sol_types::private::AssertTypeEq::<
7513                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7514                    >(_) => {}
7515                }
7516            }
7517            #[automatically_derived]
7518            #[doc(hidden)]
7519            impl ::core::convert::From<currentBlockNumberReturn>
7520            for UnderlyingRustTuple<'_> {
7521                fn from(value: currentBlockNumberReturn) -> Self {
7522                    (value._0,)
7523                }
7524            }
7525            #[automatically_derived]
7526            #[doc(hidden)]
7527            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7528            for currentBlockNumberReturn {
7529                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7530                    Self { _0: tuple.0 }
7531                }
7532            }
7533        }
7534        #[automatically_derived]
7535        impl alloy_sol_types::SolCall for currentBlockNumberCall {
7536            type Parameters<'a> = ();
7537            type Token<'a> = <Self::Parameters<
7538                'a,
7539            > as alloy_sol_types::SolType>::Token<'a>;
7540            type Return = alloy::sol_types::private::primitives::aliases::U256;
7541            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7542            type ReturnToken<'a> = <Self::ReturnTuple<
7543                'a,
7544            > as alloy_sol_types::SolType>::Token<'a>;
7545            const SIGNATURE: &'static str = "currentBlockNumber()";
7546            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
7547            #[inline]
7548            fn new<'a>(
7549                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7550            ) -> Self {
7551                tuple.into()
7552            }
7553            #[inline]
7554            fn tokenize(&self) -> Self::Token<'_> {
7555                ()
7556            }
7557            #[inline]
7558            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7559                (
7560                    <alloy::sol_types::sol_data::Uint<
7561                        256,
7562                    > as alloy_sol_types::SolType>::tokenize(ret),
7563                )
7564            }
7565            #[inline]
7566            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7567                <Self::ReturnTuple<
7568                    '_,
7569                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7570                    .map(|r| {
7571                        let r: currentBlockNumberReturn = r.into();
7572                        r._0
7573                    })
7574            }
7575            #[inline]
7576            fn abi_decode_returns_validate(
7577                data: &[u8],
7578            ) -> alloy_sol_types::Result<Self::Return> {
7579                <Self::ReturnTuple<
7580                    '_,
7581                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7582                    .map(|r| {
7583                        let r: currentBlockNumberReturn = r.into();
7584                        r._0
7585                    })
7586            }
7587        }
7588    };
7589    #[derive(serde::Serialize, serde::Deserialize)]
7590    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7591    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
7592```solidity
7593function disablePermissionedProverMode() external;
7594```*/
7595    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7596    #[derive(Clone)]
7597    pub struct disablePermissionedProverModeCall;
7598    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
7599    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7600    #[derive(Clone)]
7601    pub struct disablePermissionedProverModeReturn {}
7602    #[allow(
7603        non_camel_case_types,
7604        non_snake_case,
7605        clippy::pub_underscore_fields,
7606        clippy::style
7607    )]
7608    const _: () = {
7609        use alloy::sol_types as alloy_sol_types;
7610        {
7611            #[doc(hidden)]
7612            #[allow(dead_code)]
7613            type UnderlyingSolTuple<'a> = ();
7614            #[doc(hidden)]
7615            type UnderlyingRustTuple<'a> = ();
7616            #[cfg(test)]
7617            #[allow(dead_code, unreachable_patterns)]
7618            fn _type_assertion(
7619                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7620            ) {
7621                match _t {
7622                    alloy_sol_types::private::AssertTypeEq::<
7623                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7624                    >(_) => {}
7625                }
7626            }
7627            #[automatically_derived]
7628            #[doc(hidden)]
7629            impl ::core::convert::From<disablePermissionedProverModeCall>
7630            for UnderlyingRustTuple<'_> {
7631                fn from(value: disablePermissionedProverModeCall) -> Self {
7632                    ()
7633                }
7634            }
7635            #[automatically_derived]
7636            #[doc(hidden)]
7637            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7638            for disablePermissionedProverModeCall {
7639                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7640                    Self
7641                }
7642            }
7643        }
7644        {
7645            #[doc(hidden)]
7646            #[allow(dead_code)]
7647            type UnderlyingSolTuple<'a> = ();
7648            #[doc(hidden)]
7649            type UnderlyingRustTuple<'a> = ();
7650            #[cfg(test)]
7651            #[allow(dead_code, unreachable_patterns)]
7652            fn _type_assertion(
7653                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7654            ) {
7655                match _t {
7656                    alloy_sol_types::private::AssertTypeEq::<
7657                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7658                    >(_) => {}
7659                }
7660            }
7661            #[automatically_derived]
7662            #[doc(hidden)]
7663            impl ::core::convert::From<disablePermissionedProverModeReturn>
7664            for UnderlyingRustTuple<'_> {
7665                fn from(value: disablePermissionedProverModeReturn) -> Self {
7666                    ()
7667                }
7668            }
7669            #[automatically_derived]
7670            #[doc(hidden)]
7671            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7672            for disablePermissionedProverModeReturn {
7673                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7674                    Self {}
7675                }
7676            }
7677        }
7678        impl disablePermissionedProverModeReturn {
7679            fn _tokenize(
7680                &self,
7681            ) -> <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::ReturnToken<
7682                '_,
7683            > {
7684                ()
7685            }
7686        }
7687        #[automatically_derived]
7688        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
7689            type Parameters<'a> = ();
7690            type Token<'a> = <Self::Parameters<
7691                'a,
7692            > as alloy_sol_types::SolType>::Token<'a>;
7693            type Return = disablePermissionedProverModeReturn;
7694            type ReturnTuple<'a> = ();
7695            type ReturnToken<'a> = <Self::ReturnTuple<
7696                'a,
7697            > as alloy_sol_types::SolType>::Token<'a>;
7698            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
7699            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
7700            #[inline]
7701            fn new<'a>(
7702                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7703            ) -> Self {
7704                tuple.into()
7705            }
7706            #[inline]
7707            fn tokenize(&self) -> Self::Token<'_> {
7708                ()
7709            }
7710            #[inline]
7711            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7712                disablePermissionedProverModeReturn::_tokenize(ret)
7713            }
7714            #[inline]
7715            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7716                <Self::ReturnTuple<
7717                    '_,
7718                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7719                    .map(Into::into)
7720            }
7721            #[inline]
7722            fn abi_decode_returns_validate(
7723                data: &[u8],
7724            ) -> alloy_sol_types::Result<Self::Return> {
7725                <Self::ReturnTuple<
7726                    '_,
7727                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7728                    .map(Into::into)
7729            }
7730        }
7731    };
7732    #[derive(serde::Serialize, serde::Deserialize)]
7733    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7734    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
7735```solidity
7736function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
7737```*/
7738    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7739    #[derive(Clone)]
7740    pub struct finalizedStateCall;
7741    #[derive(serde::Serialize, serde::Deserialize)]
7742    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7743    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
7744    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7745    #[derive(Clone)]
7746    pub struct finalizedStateReturn {
7747        #[allow(missing_docs)]
7748        pub viewNum: u64,
7749        #[allow(missing_docs)]
7750        pub blockHeight: u64,
7751        #[allow(missing_docs)]
7752        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7753    }
7754    #[allow(
7755        non_camel_case_types,
7756        non_snake_case,
7757        clippy::pub_underscore_fields,
7758        clippy::style
7759    )]
7760    const _: () = {
7761        use alloy::sol_types as alloy_sol_types;
7762        {
7763            #[doc(hidden)]
7764            #[allow(dead_code)]
7765            type UnderlyingSolTuple<'a> = ();
7766            #[doc(hidden)]
7767            type UnderlyingRustTuple<'a> = ();
7768            #[cfg(test)]
7769            #[allow(dead_code, unreachable_patterns)]
7770            fn _type_assertion(
7771                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7772            ) {
7773                match _t {
7774                    alloy_sol_types::private::AssertTypeEq::<
7775                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7776                    >(_) => {}
7777                }
7778            }
7779            #[automatically_derived]
7780            #[doc(hidden)]
7781            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
7782                fn from(value: finalizedStateCall) -> Self {
7783                    ()
7784                }
7785            }
7786            #[automatically_derived]
7787            #[doc(hidden)]
7788            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
7789                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7790                    Self
7791                }
7792            }
7793        }
7794        {
7795            #[doc(hidden)]
7796            #[allow(dead_code)]
7797            type UnderlyingSolTuple<'a> = (
7798                alloy::sol_types::sol_data::Uint<64>,
7799                alloy::sol_types::sol_data::Uint<64>,
7800                BN254::ScalarField,
7801            );
7802            #[doc(hidden)]
7803            type UnderlyingRustTuple<'a> = (
7804                u64,
7805                u64,
7806                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7807            );
7808            #[cfg(test)]
7809            #[allow(dead_code, unreachable_patterns)]
7810            fn _type_assertion(
7811                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7812            ) {
7813                match _t {
7814                    alloy_sol_types::private::AssertTypeEq::<
7815                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7816                    >(_) => {}
7817                }
7818            }
7819            #[automatically_derived]
7820            #[doc(hidden)]
7821            impl ::core::convert::From<finalizedStateReturn>
7822            for UnderlyingRustTuple<'_> {
7823                fn from(value: finalizedStateReturn) -> Self {
7824                    (value.viewNum, value.blockHeight, value.blockCommRoot)
7825                }
7826            }
7827            #[automatically_derived]
7828            #[doc(hidden)]
7829            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7830            for finalizedStateReturn {
7831                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7832                    Self {
7833                        viewNum: tuple.0,
7834                        blockHeight: tuple.1,
7835                        blockCommRoot: tuple.2,
7836                    }
7837                }
7838            }
7839        }
7840        impl finalizedStateReturn {
7841            fn _tokenize(
7842                &self,
7843            ) -> <finalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7844                (
7845                    <alloy::sol_types::sol_data::Uint<
7846                        64,
7847                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
7848                    <alloy::sol_types::sol_data::Uint<
7849                        64,
7850                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
7851                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7852                        &self.blockCommRoot,
7853                    ),
7854                )
7855            }
7856        }
7857        #[automatically_derived]
7858        impl alloy_sol_types::SolCall for finalizedStateCall {
7859            type Parameters<'a> = ();
7860            type Token<'a> = <Self::Parameters<
7861                'a,
7862            > as alloy_sol_types::SolType>::Token<'a>;
7863            type Return = finalizedStateReturn;
7864            type ReturnTuple<'a> = (
7865                alloy::sol_types::sol_data::Uint<64>,
7866                alloy::sol_types::sol_data::Uint<64>,
7867                BN254::ScalarField,
7868            );
7869            type ReturnToken<'a> = <Self::ReturnTuple<
7870                'a,
7871            > as alloy_sol_types::SolType>::Token<'a>;
7872            const SIGNATURE: &'static str = "finalizedState()";
7873            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
7874            #[inline]
7875            fn new<'a>(
7876                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7877            ) -> Self {
7878                tuple.into()
7879            }
7880            #[inline]
7881            fn tokenize(&self) -> Self::Token<'_> {
7882                ()
7883            }
7884            #[inline]
7885            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7886                finalizedStateReturn::_tokenize(ret)
7887            }
7888            #[inline]
7889            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7890                <Self::ReturnTuple<
7891                    '_,
7892                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7893                    .map(Into::into)
7894            }
7895            #[inline]
7896            fn abi_decode_returns_validate(
7897                data: &[u8],
7898            ) -> alloy_sol_types::Result<Self::Return> {
7899                <Self::ReturnTuple<
7900                    '_,
7901                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7902                    .map(Into::into)
7903            }
7904        }
7905    };
7906    #[derive(serde::Serialize, serde::Deserialize)]
7907    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7908    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
7909```solidity
7910function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
7911```*/
7912    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7913    #[derive(Clone)]
7914    pub struct genesisStakeTableStateCall;
7915    #[derive(serde::Serialize, serde::Deserialize)]
7916    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7917    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
7918    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7919    #[derive(Clone)]
7920    pub struct genesisStakeTableStateReturn {
7921        #[allow(missing_docs)]
7922        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
7923        #[allow(missing_docs)]
7924        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7925        #[allow(missing_docs)]
7926        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7927        #[allow(missing_docs)]
7928        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7929    }
7930    #[allow(
7931        non_camel_case_types,
7932        non_snake_case,
7933        clippy::pub_underscore_fields,
7934        clippy::style
7935    )]
7936    const _: () = {
7937        use alloy::sol_types as alloy_sol_types;
7938        {
7939            #[doc(hidden)]
7940            #[allow(dead_code)]
7941            type UnderlyingSolTuple<'a> = ();
7942            #[doc(hidden)]
7943            type UnderlyingRustTuple<'a> = ();
7944            #[cfg(test)]
7945            #[allow(dead_code, unreachable_patterns)]
7946            fn _type_assertion(
7947                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7948            ) {
7949                match _t {
7950                    alloy_sol_types::private::AssertTypeEq::<
7951                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7952                    >(_) => {}
7953                }
7954            }
7955            #[automatically_derived]
7956            #[doc(hidden)]
7957            impl ::core::convert::From<genesisStakeTableStateCall>
7958            for UnderlyingRustTuple<'_> {
7959                fn from(value: genesisStakeTableStateCall) -> Self {
7960                    ()
7961                }
7962            }
7963            #[automatically_derived]
7964            #[doc(hidden)]
7965            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7966            for genesisStakeTableStateCall {
7967                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7968                    Self
7969                }
7970            }
7971        }
7972        {
7973            #[doc(hidden)]
7974            #[allow(dead_code)]
7975            type UnderlyingSolTuple<'a> = (
7976                alloy::sol_types::sol_data::Uint<256>,
7977                BN254::ScalarField,
7978                BN254::ScalarField,
7979                BN254::ScalarField,
7980            );
7981            #[doc(hidden)]
7982            type UnderlyingRustTuple<'a> = (
7983                alloy::sol_types::private::primitives::aliases::U256,
7984                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7985                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7986                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7987            );
7988            #[cfg(test)]
7989            #[allow(dead_code, unreachable_patterns)]
7990            fn _type_assertion(
7991                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7992            ) {
7993                match _t {
7994                    alloy_sol_types::private::AssertTypeEq::<
7995                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7996                    >(_) => {}
7997                }
7998            }
7999            #[automatically_derived]
8000            #[doc(hidden)]
8001            impl ::core::convert::From<genesisStakeTableStateReturn>
8002            for UnderlyingRustTuple<'_> {
8003                fn from(value: genesisStakeTableStateReturn) -> Self {
8004                    (
8005                        value.threshold,
8006                        value.blsKeyComm,
8007                        value.schnorrKeyComm,
8008                        value.amountComm,
8009                    )
8010                }
8011            }
8012            #[automatically_derived]
8013            #[doc(hidden)]
8014            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8015            for genesisStakeTableStateReturn {
8016                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8017                    Self {
8018                        threshold: tuple.0,
8019                        blsKeyComm: tuple.1,
8020                        schnorrKeyComm: tuple.2,
8021                        amountComm: tuple.3,
8022                    }
8023                }
8024            }
8025        }
8026        impl genesisStakeTableStateReturn {
8027            fn _tokenize(
8028                &self,
8029            ) -> <genesisStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
8030                '_,
8031            > {
8032                (
8033                    <alloy::sol_types::sol_data::Uint<
8034                        256,
8035                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
8036                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
8037                        &self.blsKeyComm,
8038                    ),
8039                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
8040                        &self.schnorrKeyComm,
8041                    ),
8042                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
8043                        &self.amountComm,
8044                    ),
8045                )
8046            }
8047        }
8048        #[automatically_derived]
8049        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
8050            type Parameters<'a> = ();
8051            type Token<'a> = <Self::Parameters<
8052                'a,
8053            > as alloy_sol_types::SolType>::Token<'a>;
8054            type Return = genesisStakeTableStateReturn;
8055            type ReturnTuple<'a> = (
8056                alloy::sol_types::sol_data::Uint<256>,
8057                BN254::ScalarField,
8058                BN254::ScalarField,
8059                BN254::ScalarField,
8060            );
8061            type ReturnToken<'a> = <Self::ReturnTuple<
8062                'a,
8063            > as alloy_sol_types::SolType>::Token<'a>;
8064            const SIGNATURE: &'static str = "genesisStakeTableState()";
8065            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
8066            #[inline]
8067            fn new<'a>(
8068                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8069            ) -> Self {
8070                tuple.into()
8071            }
8072            #[inline]
8073            fn tokenize(&self) -> Self::Token<'_> {
8074                ()
8075            }
8076            #[inline]
8077            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8078                genesisStakeTableStateReturn::_tokenize(ret)
8079            }
8080            #[inline]
8081            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8082                <Self::ReturnTuple<
8083                    '_,
8084                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8085                    .map(Into::into)
8086            }
8087            #[inline]
8088            fn abi_decode_returns_validate(
8089                data: &[u8],
8090            ) -> alloy_sol_types::Result<Self::Return> {
8091                <Self::ReturnTuple<
8092                    '_,
8093                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8094                    .map(Into::into)
8095            }
8096        }
8097    };
8098    #[derive(serde::Serialize, serde::Deserialize)]
8099    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8100    /**Function with signature `genesisState()` and selector `0xd24d933d`.
8101```solidity
8102function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
8103```*/
8104    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8105    #[derive(Clone)]
8106    pub struct genesisStateCall;
8107    #[derive(serde::Serialize, serde::Deserialize)]
8108    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8109    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
8110    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8111    #[derive(Clone)]
8112    pub struct genesisStateReturn {
8113        #[allow(missing_docs)]
8114        pub viewNum: u64,
8115        #[allow(missing_docs)]
8116        pub blockHeight: u64,
8117        #[allow(missing_docs)]
8118        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8119    }
8120    #[allow(
8121        non_camel_case_types,
8122        non_snake_case,
8123        clippy::pub_underscore_fields,
8124        clippy::style
8125    )]
8126    const _: () = {
8127        use alloy::sol_types as alloy_sol_types;
8128        {
8129            #[doc(hidden)]
8130            #[allow(dead_code)]
8131            type UnderlyingSolTuple<'a> = ();
8132            #[doc(hidden)]
8133            type UnderlyingRustTuple<'a> = ();
8134            #[cfg(test)]
8135            #[allow(dead_code, unreachable_patterns)]
8136            fn _type_assertion(
8137                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8138            ) {
8139                match _t {
8140                    alloy_sol_types::private::AssertTypeEq::<
8141                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8142                    >(_) => {}
8143                }
8144            }
8145            #[automatically_derived]
8146            #[doc(hidden)]
8147            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
8148                fn from(value: genesisStateCall) -> Self {
8149                    ()
8150                }
8151            }
8152            #[automatically_derived]
8153            #[doc(hidden)]
8154            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
8155                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8156                    Self
8157                }
8158            }
8159        }
8160        {
8161            #[doc(hidden)]
8162            #[allow(dead_code)]
8163            type UnderlyingSolTuple<'a> = (
8164                alloy::sol_types::sol_data::Uint<64>,
8165                alloy::sol_types::sol_data::Uint<64>,
8166                BN254::ScalarField,
8167            );
8168            #[doc(hidden)]
8169            type UnderlyingRustTuple<'a> = (
8170                u64,
8171                u64,
8172                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8173            );
8174            #[cfg(test)]
8175            #[allow(dead_code, unreachable_patterns)]
8176            fn _type_assertion(
8177                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8178            ) {
8179                match _t {
8180                    alloy_sol_types::private::AssertTypeEq::<
8181                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8182                    >(_) => {}
8183                }
8184            }
8185            #[automatically_derived]
8186            #[doc(hidden)]
8187            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
8188                fn from(value: genesisStateReturn) -> Self {
8189                    (value.viewNum, value.blockHeight, value.blockCommRoot)
8190                }
8191            }
8192            #[automatically_derived]
8193            #[doc(hidden)]
8194            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
8195                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8196                    Self {
8197                        viewNum: tuple.0,
8198                        blockHeight: tuple.1,
8199                        blockCommRoot: tuple.2,
8200                    }
8201                }
8202            }
8203        }
8204        impl genesisStateReturn {
8205            fn _tokenize(
8206                &self,
8207            ) -> <genesisStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8208                (
8209                    <alloy::sol_types::sol_data::Uint<
8210                        64,
8211                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
8212                    <alloy::sol_types::sol_data::Uint<
8213                        64,
8214                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
8215                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
8216                        &self.blockCommRoot,
8217                    ),
8218                )
8219            }
8220        }
8221        #[automatically_derived]
8222        impl alloy_sol_types::SolCall for genesisStateCall {
8223            type Parameters<'a> = ();
8224            type Token<'a> = <Self::Parameters<
8225                'a,
8226            > as alloy_sol_types::SolType>::Token<'a>;
8227            type Return = genesisStateReturn;
8228            type ReturnTuple<'a> = (
8229                alloy::sol_types::sol_data::Uint<64>,
8230                alloy::sol_types::sol_data::Uint<64>,
8231                BN254::ScalarField,
8232            );
8233            type ReturnToken<'a> = <Self::ReturnTuple<
8234                'a,
8235            > as alloy_sol_types::SolType>::Token<'a>;
8236            const SIGNATURE: &'static str = "genesisState()";
8237            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
8238            #[inline]
8239            fn new<'a>(
8240                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8241            ) -> Self {
8242                tuple.into()
8243            }
8244            #[inline]
8245            fn tokenize(&self) -> Self::Token<'_> {
8246                ()
8247            }
8248            #[inline]
8249            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8250                genesisStateReturn::_tokenize(ret)
8251            }
8252            #[inline]
8253            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8254                <Self::ReturnTuple<
8255                    '_,
8256                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8257                    .map(Into::into)
8258            }
8259            #[inline]
8260            fn abi_decode_returns_validate(
8261                data: &[u8],
8262            ) -> alloy_sol_types::Result<Self::Return> {
8263                <Self::ReturnTuple<
8264                    '_,
8265                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8266                    .map(Into::into)
8267            }
8268        }
8269    };
8270    #[derive(serde::Serialize, serde::Deserialize)]
8271    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8272    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
8273```solidity
8274function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
8275```*/
8276    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8277    #[derive(Clone)]
8278    pub struct getHotShotCommitmentCall {
8279        #[allow(missing_docs)]
8280        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
8281    }
8282    #[derive(serde::Serialize, serde::Deserialize)]
8283    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8284    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
8285    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8286    #[derive(Clone)]
8287    pub struct getHotShotCommitmentReturn {
8288        #[allow(missing_docs)]
8289        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8290        #[allow(missing_docs)]
8291        pub hotshotBlockHeight: u64,
8292    }
8293    #[allow(
8294        non_camel_case_types,
8295        non_snake_case,
8296        clippy::pub_underscore_fields,
8297        clippy::style
8298    )]
8299    const _: () = {
8300        use alloy::sol_types as alloy_sol_types;
8301        {
8302            #[doc(hidden)]
8303            #[allow(dead_code)]
8304            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8305            #[doc(hidden)]
8306            type UnderlyingRustTuple<'a> = (
8307                alloy::sol_types::private::primitives::aliases::U256,
8308            );
8309            #[cfg(test)]
8310            #[allow(dead_code, unreachable_patterns)]
8311            fn _type_assertion(
8312                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8313            ) {
8314                match _t {
8315                    alloy_sol_types::private::AssertTypeEq::<
8316                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8317                    >(_) => {}
8318                }
8319            }
8320            #[automatically_derived]
8321            #[doc(hidden)]
8322            impl ::core::convert::From<getHotShotCommitmentCall>
8323            for UnderlyingRustTuple<'_> {
8324                fn from(value: getHotShotCommitmentCall) -> Self {
8325                    (value.hotShotBlockHeight,)
8326                }
8327            }
8328            #[automatically_derived]
8329            #[doc(hidden)]
8330            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8331            for getHotShotCommitmentCall {
8332                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8333                    Self {
8334                        hotShotBlockHeight: tuple.0,
8335                    }
8336                }
8337            }
8338        }
8339        {
8340            #[doc(hidden)]
8341            #[allow(dead_code)]
8342            type UnderlyingSolTuple<'a> = (
8343                BN254::ScalarField,
8344                alloy::sol_types::sol_data::Uint<64>,
8345            );
8346            #[doc(hidden)]
8347            type UnderlyingRustTuple<'a> = (
8348                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8349                u64,
8350            );
8351            #[cfg(test)]
8352            #[allow(dead_code, unreachable_patterns)]
8353            fn _type_assertion(
8354                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8355            ) {
8356                match _t {
8357                    alloy_sol_types::private::AssertTypeEq::<
8358                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8359                    >(_) => {}
8360                }
8361            }
8362            #[automatically_derived]
8363            #[doc(hidden)]
8364            impl ::core::convert::From<getHotShotCommitmentReturn>
8365            for UnderlyingRustTuple<'_> {
8366                fn from(value: getHotShotCommitmentReturn) -> Self {
8367                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
8368                }
8369            }
8370            #[automatically_derived]
8371            #[doc(hidden)]
8372            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8373            for getHotShotCommitmentReturn {
8374                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8375                    Self {
8376                        hotShotBlockCommRoot: tuple.0,
8377                        hotshotBlockHeight: tuple.1,
8378                    }
8379                }
8380            }
8381        }
8382        impl getHotShotCommitmentReturn {
8383            fn _tokenize(
8384                &self,
8385            ) -> <getHotShotCommitmentCall as alloy_sol_types::SolCall>::ReturnToken<
8386                '_,
8387            > {
8388                (
8389                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
8390                        &self.hotShotBlockCommRoot,
8391                    ),
8392                    <alloy::sol_types::sol_data::Uint<
8393                        64,
8394                    > as alloy_sol_types::SolType>::tokenize(&self.hotshotBlockHeight),
8395                )
8396            }
8397        }
8398        #[automatically_derived]
8399        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
8400            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8401            type Token<'a> = <Self::Parameters<
8402                'a,
8403            > as alloy_sol_types::SolType>::Token<'a>;
8404            type Return = getHotShotCommitmentReturn;
8405            type ReturnTuple<'a> = (
8406                BN254::ScalarField,
8407                alloy::sol_types::sol_data::Uint<64>,
8408            );
8409            type ReturnToken<'a> = <Self::ReturnTuple<
8410                'a,
8411            > as alloy_sol_types::SolType>::Token<'a>;
8412            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
8413            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
8414            #[inline]
8415            fn new<'a>(
8416                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8417            ) -> Self {
8418                tuple.into()
8419            }
8420            #[inline]
8421            fn tokenize(&self) -> Self::Token<'_> {
8422                (
8423                    <alloy::sol_types::sol_data::Uint<
8424                        256,
8425                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
8426                )
8427            }
8428            #[inline]
8429            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8430                getHotShotCommitmentReturn::_tokenize(ret)
8431            }
8432            #[inline]
8433            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8434                <Self::ReturnTuple<
8435                    '_,
8436                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8437                    .map(Into::into)
8438            }
8439            #[inline]
8440            fn abi_decode_returns_validate(
8441                data: &[u8],
8442            ) -> alloy_sol_types::Result<Self::Return> {
8443                <Self::ReturnTuple<
8444                    '_,
8445                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8446                    .map(Into::into)
8447            }
8448        }
8449    };
8450    #[derive(serde::Serialize, serde::Deserialize)]
8451    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8452    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
8453```solidity
8454function getStateHistoryCount() external view returns (uint256);
8455```*/
8456    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8457    #[derive(Clone)]
8458    pub struct getStateHistoryCountCall;
8459    #[derive(serde::Serialize, serde::Deserialize)]
8460    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8461    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
8462    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8463    #[derive(Clone)]
8464    pub struct getStateHistoryCountReturn {
8465        #[allow(missing_docs)]
8466        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8467    }
8468    #[allow(
8469        non_camel_case_types,
8470        non_snake_case,
8471        clippy::pub_underscore_fields,
8472        clippy::style
8473    )]
8474    const _: () = {
8475        use alloy::sol_types as alloy_sol_types;
8476        {
8477            #[doc(hidden)]
8478            #[allow(dead_code)]
8479            type UnderlyingSolTuple<'a> = ();
8480            #[doc(hidden)]
8481            type UnderlyingRustTuple<'a> = ();
8482            #[cfg(test)]
8483            #[allow(dead_code, unreachable_patterns)]
8484            fn _type_assertion(
8485                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8486            ) {
8487                match _t {
8488                    alloy_sol_types::private::AssertTypeEq::<
8489                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8490                    >(_) => {}
8491                }
8492            }
8493            #[automatically_derived]
8494            #[doc(hidden)]
8495            impl ::core::convert::From<getStateHistoryCountCall>
8496            for UnderlyingRustTuple<'_> {
8497                fn from(value: getStateHistoryCountCall) -> Self {
8498                    ()
8499                }
8500            }
8501            #[automatically_derived]
8502            #[doc(hidden)]
8503            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8504            for getStateHistoryCountCall {
8505                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8506                    Self
8507                }
8508            }
8509        }
8510        {
8511            #[doc(hidden)]
8512            #[allow(dead_code)]
8513            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8514            #[doc(hidden)]
8515            type UnderlyingRustTuple<'a> = (
8516                alloy::sol_types::private::primitives::aliases::U256,
8517            );
8518            #[cfg(test)]
8519            #[allow(dead_code, unreachable_patterns)]
8520            fn _type_assertion(
8521                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8522            ) {
8523                match _t {
8524                    alloy_sol_types::private::AssertTypeEq::<
8525                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8526                    >(_) => {}
8527                }
8528            }
8529            #[automatically_derived]
8530            #[doc(hidden)]
8531            impl ::core::convert::From<getStateHistoryCountReturn>
8532            for UnderlyingRustTuple<'_> {
8533                fn from(value: getStateHistoryCountReturn) -> Self {
8534                    (value._0,)
8535                }
8536            }
8537            #[automatically_derived]
8538            #[doc(hidden)]
8539            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8540            for getStateHistoryCountReturn {
8541                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8542                    Self { _0: tuple.0 }
8543                }
8544            }
8545        }
8546        #[automatically_derived]
8547        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
8548            type Parameters<'a> = ();
8549            type Token<'a> = <Self::Parameters<
8550                'a,
8551            > as alloy_sol_types::SolType>::Token<'a>;
8552            type Return = alloy::sol_types::private::primitives::aliases::U256;
8553            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8554            type ReturnToken<'a> = <Self::ReturnTuple<
8555                'a,
8556            > as alloy_sol_types::SolType>::Token<'a>;
8557            const SIGNATURE: &'static str = "getStateHistoryCount()";
8558            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
8559            #[inline]
8560            fn new<'a>(
8561                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8562            ) -> Self {
8563                tuple.into()
8564            }
8565            #[inline]
8566            fn tokenize(&self) -> Self::Token<'_> {
8567                ()
8568            }
8569            #[inline]
8570            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8571                (
8572                    <alloy::sol_types::sol_data::Uint<
8573                        256,
8574                    > as alloy_sol_types::SolType>::tokenize(ret),
8575                )
8576            }
8577            #[inline]
8578            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8579                <Self::ReturnTuple<
8580                    '_,
8581                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8582                    .map(|r| {
8583                        let r: getStateHistoryCountReturn = r.into();
8584                        r._0
8585                    })
8586            }
8587            #[inline]
8588            fn abi_decode_returns_validate(
8589                data: &[u8],
8590            ) -> alloy_sol_types::Result<Self::Return> {
8591                <Self::ReturnTuple<
8592                    '_,
8593                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8594                    .map(|r| {
8595                        let r: getStateHistoryCountReturn = r.into();
8596                        r._0
8597                    })
8598            }
8599        }
8600    };
8601    #[derive(serde::Serialize, serde::Deserialize)]
8602    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8603    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
8604```solidity
8605function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
8606```*/
8607    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8608    #[derive(Clone)]
8609    pub struct getVersionCall;
8610    #[derive(serde::Serialize, serde::Deserialize)]
8611    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8612    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
8613    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8614    #[derive(Clone)]
8615    pub struct getVersionReturn {
8616        #[allow(missing_docs)]
8617        pub majorVersion: u8,
8618        #[allow(missing_docs)]
8619        pub minorVersion: u8,
8620        #[allow(missing_docs)]
8621        pub patchVersion: u8,
8622    }
8623    #[allow(
8624        non_camel_case_types,
8625        non_snake_case,
8626        clippy::pub_underscore_fields,
8627        clippy::style
8628    )]
8629    const _: () = {
8630        use alloy::sol_types as alloy_sol_types;
8631        {
8632            #[doc(hidden)]
8633            #[allow(dead_code)]
8634            type UnderlyingSolTuple<'a> = ();
8635            #[doc(hidden)]
8636            type UnderlyingRustTuple<'a> = ();
8637            #[cfg(test)]
8638            #[allow(dead_code, unreachable_patterns)]
8639            fn _type_assertion(
8640                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8641            ) {
8642                match _t {
8643                    alloy_sol_types::private::AssertTypeEq::<
8644                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8645                    >(_) => {}
8646                }
8647            }
8648            #[automatically_derived]
8649            #[doc(hidden)]
8650            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
8651                fn from(value: getVersionCall) -> Self {
8652                    ()
8653                }
8654            }
8655            #[automatically_derived]
8656            #[doc(hidden)]
8657            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
8658                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8659                    Self
8660                }
8661            }
8662        }
8663        {
8664            #[doc(hidden)]
8665            #[allow(dead_code)]
8666            type UnderlyingSolTuple<'a> = (
8667                alloy::sol_types::sol_data::Uint<8>,
8668                alloy::sol_types::sol_data::Uint<8>,
8669                alloy::sol_types::sol_data::Uint<8>,
8670            );
8671            #[doc(hidden)]
8672            type UnderlyingRustTuple<'a> = (u8, u8, u8);
8673            #[cfg(test)]
8674            #[allow(dead_code, unreachable_patterns)]
8675            fn _type_assertion(
8676                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8677            ) {
8678                match _t {
8679                    alloy_sol_types::private::AssertTypeEq::<
8680                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8681                    >(_) => {}
8682                }
8683            }
8684            #[automatically_derived]
8685            #[doc(hidden)]
8686            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
8687                fn from(value: getVersionReturn) -> Self {
8688                    (value.majorVersion, value.minorVersion, value.patchVersion)
8689                }
8690            }
8691            #[automatically_derived]
8692            #[doc(hidden)]
8693            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
8694                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8695                    Self {
8696                        majorVersion: tuple.0,
8697                        minorVersion: tuple.1,
8698                        patchVersion: tuple.2,
8699                    }
8700                }
8701            }
8702        }
8703        impl getVersionReturn {
8704            fn _tokenize(
8705                &self,
8706            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8707                (
8708                    <alloy::sol_types::sol_data::Uint<
8709                        8,
8710                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
8711                    <alloy::sol_types::sol_data::Uint<
8712                        8,
8713                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
8714                    <alloy::sol_types::sol_data::Uint<
8715                        8,
8716                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
8717                )
8718            }
8719        }
8720        #[automatically_derived]
8721        impl alloy_sol_types::SolCall for getVersionCall {
8722            type Parameters<'a> = ();
8723            type Token<'a> = <Self::Parameters<
8724                'a,
8725            > as alloy_sol_types::SolType>::Token<'a>;
8726            type Return = getVersionReturn;
8727            type ReturnTuple<'a> = (
8728                alloy::sol_types::sol_data::Uint<8>,
8729                alloy::sol_types::sol_data::Uint<8>,
8730                alloy::sol_types::sol_data::Uint<8>,
8731            );
8732            type ReturnToken<'a> = <Self::ReturnTuple<
8733                'a,
8734            > as alloy_sol_types::SolType>::Token<'a>;
8735            const SIGNATURE: &'static str = "getVersion()";
8736            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
8737            #[inline]
8738            fn new<'a>(
8739                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8740            ) -> Self {
8741                tuple.into()
8742            }
8743            #[inline]
8744            fn tokenize(&self) -> Self::Token<'_> {
8745                ()
8746            }
8747            #[inline]
8748            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8749                getVersionReturn::_tokenize(ret)
8750            }
8751            #[inline]
8752            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8753                <Self::ReturnTuple<
8754                    '_,
8755                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8756                    .map(Into::into)
8757            }
8758            #[inline]
8759            fn abi_decode_returns_validate(
8760                data: &[u8],
8761            ) -> alloy_sol_types::Result<Self::Return> {
8762                <Self::ReturnTuple<
8763                    '_,
8764                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8765                    .map(Into::into)
8766            }
8767        }
8768    };
8769    #[derive(serde::Serialize, serde::Deserialize)]
8770    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8771    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
8772```solidity
8773function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
8774```*/
8775    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8776    #[derive(Clone)]
8777    pub struct initializeCall {
8778        #[allow(missing_docs)]
8779        pub _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
8780        #[allow(missing_docs)]
8781        pub _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
8782        #[allow(missing_docs)]
8783        pub _stateHistoryRetentionPeriod: u32,
8784        #[allow(missing_docs)]
8785        pub owner: alloy::sol_types::private::Address,
8786    }
8787    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
8788    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8789    #[derive(Clone)]
8790    pub struct initializeReturn {}
8791    #[allow(
8792        non_camel_case_types,
8793        non_snake_case,
8794        clippy::pub_underscore_fields,
8795        clippy::style
8796    )]
8797    const _: () = {
8798        use alloy::sol_types as alloy_sol_types;
8799        {
8800            #[doc(hidden)]
8801            #[allow(dead_code)]
8802            type UnderlyingSolTuple<'a> = (
8803                LightClient::LightClientState,
8804                LightClient::StakeTableState,
8805                alloy::sol_types::sol_data::Uint<32>,
8806                alloy::sol_types::sol_data::Address,
8807            );
8808            #[doc(hidden)]
8809            type UnderlyingRustTuple<'a> = (
8810                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
8811                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
8812                u32,
8813                alloy::sol_types::private::Address,
8814            );
8815            #[cfg(test)]
8816            #[allow(dead_code, unreachable_patterns)]
8817            fn _type_assertion(
8818                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8819            ) {
8820                match _t {
8821                    alloy_sol_types::private::AssertTypeEq::<
8822                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8823                    >(_) => {}
8824                }
8825            }
8826            #[automatically_derived]
8827            #[doc(hidden)]
8828            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
8829                fn from(value: initializeCall) -> Self {
8830                    (
8831                        value._genesis,
8832                        value._genesisStakeTableState,
8833                        value._stateHistoryRetentionPeriod,
8834                        value.owner,
8835                    )
8836                }
8837            }
8838            #[automatically_derived]
8839            #[doc(hidden)]
8840            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
8841                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8842                    Self {
8843                        _genesis: tuple.0,
8844                        _genesisStakeTableState: tuple.1,
8845                        _stateHistoryRetentionPeriod: tuple.2,
8846                        owner: tuple.3,
8847                    }
8848                }
8849            }
8850        }
8851        {
8852            #[doc(hidden)]
8853            #[allow(dead_code)]
8854            type UnderlyingSolTuple<'a> = ();
8855            #[doc(hidden)]
8856            type UnderlyingRustTuple<'a> = ();
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<initializeReturn> for UnderlyingRustTuple<'_> {
8871                fn from(value: initializeReturn) -> Self {
8872                    ()
8873                }
8874            }
8875            #[automatically_derived]
8876            #[doc(hidden)]
8877            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
8878                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8879                    Self {}
8880                }
8881            }
8882        }
8883        impl initializeReturn {
8884            fn _tokenize(
8885                &self,
8886            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8887                ()
8888            }
8889        }
8890        #[automatically_derived]
8891        impl alloy_sol_types::SolCall for initializeCall {
8892            type Parameters<'a> = (
8893                LightClient::LightClientState,
8894                LightClient::StakeTableState,
8895                alloy::sol_types::sol_data::Uint<32>,
8896                alloy::sol_types::sol_data::Address,
8897            );
8898            type Token<'a> = <Self::Parameters<
8899                'a,
8900            > as alloy_sol_types::SolType>::Token<'a>;
8901            type Return = initializeReturn;
8902            type ReturnTuple<'a> = ();
8903            type ReturnToken<'a> = <Self::ReturnTuple<
8904                'a,
8905            > as alloy_sol_types::SolType>::Token<'a>;
8906            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
8907            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
8908            #[inline]
8909            fn new<'a>(
8910                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8911            ) -> Self {
8912                tuple.into()
8913            }
8914            #[inline]
8915            fn tokenize(&self) -> Self::Token<'_> {
8916                (
8917                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
8918                        &self._genesis,
8919                    ),
8920                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
8921                        &self._genesisStakeTableState,
8922                    ),
8923                    <alloy::sol_types::sol_data::Uint<
8924                        32,
8925                    > as alloy_sol_types::SolType>::tokenize(
8926                        &self._stateHistoryRetentionPeriod,
8927                    ),
8928                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8929                        &self.owner,
8930                    ),
8931                )
8932            }
8933            #[inline]
8934            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8935                initializeReturn::_tokenize(ret)
8936            }
8937            #[inline]
8938            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8939                <Self::ReturnTuple<
8940                    '_,
8941                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8942                    .map(Into::into)
8943            }
8944            #[inline]
8945            fn abi_decode_returns_validate(
8946                data: &[u8],
8947            ) -> alloy_sol_types::Result<Self::Return> {
8948                <Self::ReturnTuple<
8949                    '_,
8950                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8951                    .map(Into::into)
8952            }
8953        }
8954    };
8955    #[derive(serde::Serialize, serde::Deserialize)]
8956    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8957    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
8958```solidity
8959function isPermissionedProverEnabled() external view returns (bool);
8960```*/
8961    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8962    #[derive(Clone)]
8963    pub struct isPermissionedProverEnabledCall;
8964    #[derive(serde::Serialize, serde::Deserialize)]
8965    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8966    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
8967    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8968    #[derive(Clone)]
8969    pub struct isPermissionedProverEnabledReturn {
8970        #[allow(missing_docs)]
8971        pub _0: bool,
8972    }
8973    #[allow(
8974        non_camel_case_types,
8975        non_snake_case,
8976        clippy::pub_underscore_fields,
8977        clippy::style
8978    )]
8979    const _: () = {
8980        use alloy::sol_types as alloy_sol_types;
8981        {
8982            #[doc(hidden)]
8983            #[allow(dead_code)]
8984            type UnderlyingSolTuple<'a> = ();
8985            #[doc(hidden)]
8986            type UnderlyingRustTuple<'a> = ();
8987            #[cfg(test)]
8988            #[allow(dead_code, unreachable_patterns)]
8989            fn _type_assertion(
8990                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8991            ) {
8992                match _t {
8993                    alloy_sol_types::private::AssertTypeEq::<
8994                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8995                    >(_) => {}
8996                }
8997            }
8998            #[automatically_derived]
8999            #[doc(hidden)]
9000            impl ::core::convert::From<isPermissionedProverEnabledCall>
9001            for UnderlyingRustTuple<'_> {
9002                fn from(value: isPermissionedProverEnabledCall) -> Self {
9003                    ()
9004                }
9005            }
9006            #[automatically_derived]
9007            #[doc(hidden)]
9008            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9009            for isPermissionedProverEnabledCall {
9010                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9011                    Self
9012                }
9013            }
9014        }
9015        {
9016            #[doc(hidden)]
9017            #[allow(dead_code)]
9018            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9019            #[doc(hidden)]
9020            type UnderlyingRustTuple<'a> = (bool,);
9021            #[cfg(test)]
9022            #[allow(dead_code, unreachable_patterns)]
9023            fn _type_assertion(
9024                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9025            ) {
9026                match _t {
9027                    alloy_sol_types::private::AssertTypeEq::<
9028                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9029                    >(_) => {}
9030                }
9031            }
9032            #[automatically_derived]
9033            #[doc(hidden)]
9034            impl ::core::convert::From<isPermissionedProverEnabledReturn>
9035            for UnderlyingRustTuple<'_> {
9036                fn from(value: isPermissionedProverEnabledReturn) -> Self {
9037                    (value._0,)
9038                }
9039            }
9040            #[automatically_derived]
9041            #[doc(hidden)]
9042            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9043            for isPermissionedProverEnabledReturn {
9044                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9045                    Self { _0: tuple.0 }
9046                }
9047            }
9048        }
9049        #[automatically_derived]
9050        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
9051            type Parameters<'a> = ();
9052            type Token<'a> = <Self::Parameters<
9053                'a,
9054            > as alloy_sol_types::SolType>::Token<'a>;
9055            type Return = bool;
9056            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9057            type ReturnToken<'a> = <Self::ReturnTuple<
9058                'a,
9059            > as alloy_sol_types::SolType>::Token<'a>;
9060            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
9061            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
9062            #[inline]
9063            fn new<'a>(
9064                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9065            ) -> Self {
9066                tuple.into()
9067            }
9068            #[inline]
9069            fn tokenize(&self) -> Self::Token<'_> {
9070                ()
9071            }
9072            #[inline]
9073            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9074                (
9075                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
9076                        ret,
9077                    ),
9078                )
9079            }
9080            #[inline]
9081            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9082                <Self::ReturnTuple<
9083                    '_,
9084                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9085                    .map(|r| {
9086                        let r: isPermissionedProverEnabledReturn = r.into();
9087                        r._0
9088                    })
9089            }
9090            #[inline]
9091            fn abi_decode_returns_validate(
9092                data: &[u8],
9093            ) -> alloy_sol_types::Result<Self::Return> {
9094                <Self::ReturnTuple<
9095                    '_,
9096                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9097                    .map(|r| {
9098                        let r: isPermissionedProverEnabledReturn = r.into();
9099                        r._0
9100                    })
9101            }
9102        }
9103    };
9104    #[derive(serde::Serialize, serde::Deserialize)]
9105    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9106    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
9107```solidity
9108function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 threshold) external view returns (bool);
9109```*/
9110    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9111    #[derive(Clone)]
9112    pub struct lagOverEscapeHatchThresholdCall {
9113        #[allow(missing_docs)]
9114        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
9115        #[allow(missing_docs)]
9116        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
9117    }
9118    #[derive(serde::Serialize, serde::Deserialize)]
9119    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9120    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
9121    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9122    #[derive(Clone)]
9123    pub struct lagOverEscapeHatchThresholdReturn {
9124        #[allow(missing_docs)]
9125        pub _0: bool,
9126    }
9127    #[allow(
9128        non_camel_case_types,
9129        non_snake_case,
9130        clippy::pub_underscore_fields,
9131        clippy::style
9132    )]
9133    const _: () = {
9134        use alloy::sol_types as alloy_sol_types;
9135        {
9136            #[doc(hidden)]
9137            #[allow(dead_code)]
9138            type UnderlyingSolTuple<'a> = (
9139                alloy::sol_types::sol_data::Uint<256>,
9140                alloy::sol_types::sol_data::Uint<256>,
9141            );
9142            #[doc(hidden)]
9143            type UnderlyingRustTuple<'a> = (
9144                alloy::sol_types::private::primitives::aliases::U256,
9145                alloy::sol_types::private::primitives::aliases::U256,
9146            );
9147            #[cfg(test)]
9148            #[allow(dead_code, unreachable_patterns)]
9149            fn _type_assertion(
9150                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9151            ) {
9152                match _t {
9153                    alloy_sol_types::private::AssertTypeEq::<
9154                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9155                    >(_) => {}
9156                }
9157            }
9158            #[automatically_derived]
9159            #[doc(hidden)]
9160            impl ::core::convert::From<lagOverEscapeHatchThresholdCall>
9161            for UnderlyingRustTuple<'_> {
9162                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
9163                    (value.blockNumber, value.threshold)
9164                }
9165            }
9166            #[automatically_derived]
9167            #[doc(hidden)]
9168            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9169            for lagOverEscapeHatchThresholdCall {
9170                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9171                    Self {
9172                        blockNumber: tuple.0,
9173                        threshold: tuple.1,
9174                    }
9175                }
9176            }
9177        }
9178        {
9179            #[doc(hidden)]
9180            #[allow(dead_code)]
9181            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9182            #[doc(hidden)]
9183            type UnderlyingRustTuple<'a> = (bool,);
9184            #[cfg(test)]
9185            #[allow(dead_code, unreachable_patterns)]
9186            fn _type_assertion(
9187                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9188            ) {
9189                match _t {
9190                    alloy_sol_types::private::AssertTypeEq::<
9191                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9192                    >(_) => {}
9193                }
9194            }
9195            #[automatically_derived]
9196            #[doc(hidden)]
9197            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn>
9198            for UnderlyingRustTuple<'_> {
9199                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
9200                    (value._0,)
9201                }
9202            }
9203            #[automatically_derived]
9204            #[doc(hidden)]
9205            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9206            for lagOverEscapeHatchThresholdReturn {
9207                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9208                    Self { _0: tuple.0 }
9209                }
9210            }
9211        }
9212        #[automatically_derived]
9213        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
9214            type Parameters<'a> = (
9215                alloy::sol_types::sol_data::Uint<256>,
9216                alloy::sol_types::sol_data::Uint<256>,
9217            );
9218            type Token<'a> = <Self::Parameters<
9219                'a,
9220            > as alloy_sol_types::SolType>::Token<'a>;
9221            type Return = bool;
9222            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9223            type ReturnToken<'a> = <Self::ReturnTuple<
9224                'a,
9225            > as alloy_sol_types::SolType>::Token<'a>;
9226            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
9227            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
9228            #[inline]
9229            fn new<'a>(
9230                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9231            ) -> Self {
9232                tuple.into()
9233            }
9234            #[inline]
9235            fn tokenize(&self) -> Self::Token<'_> {
9236                (
9237                    <alloy::sol_types::sol_data::Uint<
9238                        256,
9239                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
9240                    <alloy::sol_types::sol_data::Uint<
9241                        256,
9242                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
9243                )
9244            }
9245            #[inline]
9246            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9247                (
9248                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
9249                        ret,
9250                    ),
9251                )
9252            }
9253            #[inline]
9254            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9255                <Self::ReturnTuple<
9256                    '_,
9257                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9258                    .map(|r| {
9259                        let r: lagOverEscapeHatchThresholdReturn = r.into();
9260                        r._0
9261                    })
9262            }
9263            #[inline]
9264            fn abi_decode_returns_validate(
9265                data: &[u8],
9266            ) -> alloy_sol_types::Result<Self::Return> {
9267                <Self::ReturnTuple<
9268                    '_,
9269                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9270                    .map(|r| {
9271                        let r: lagOverEscapeHatchThresholdReturn = r.into();
9272                        r._0
9273                    })
9274            }
9275        }
9276    };
9277    #[derive(serde::Serialize, serde::Deserialize)]
9278    #[derive()]
9279    /**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`.
9280```solidity
9281function newFinalizedState(LightClient.LightClientState memory newState, IPlonkVerifier.PlonkProof memory proof) external;
9282```*/
9283    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9284    #[derive(Clone)]
9285    pub struct newFinalizedStateCall {
9286        #[allow(missing_docs)]
9287        pub newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9288        #[allow(missing_docs)]
9289        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
9290    }
9291    ///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.
9292    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9293    #[derive(Clone)]
9294    pub struct newFinalizedStateReturn {}
9295    #[allow(
9296        non_camel_case_types,
9297        non_snake_case,
9298        clippy::pub_underscore_fields,
9299        clippy::style
9300    )]
9301    const _: () = {
9302        use alloy::sol_types as alloy_sol_types;
9303        {
9304            #[doc(hidden)]
9305            #[allow(dead_code)]
9306            type UnderlyingSolTuple<'a> = (
9307                LightClient::LightClientState,
9308                IPlonkVerifier::PlonkProof,
9309            );
9310            #[doc(hidden)]
9311            type UnderlyingRustTuple<'a> = (
9312                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9313                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
9314            );
9315            #[cfg(test)]
9316            #[allow(dead_code, unreachable_patterns)]
9317            fn _type_assertion(
9318                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9319            ) {
9320                match _t {
9321                    alloy_sol_types::private::AssertTypeEq::<
9322                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9323                    >(_) => {}
9324                }
9325            }
9326            #[automatically_derived]
9327            #[doc(hidden)]
9328            impl ::core::convert::From<newFinalizedStateCall>
9329            for UnderlyingRustTuple<'_> {
9330                fn from(value: newFinalizedStateCall) -> Self {
9331                    (value.newState, value.proof)
9332                }
9333            }
9334            #[automatically_derived]
9335            #[doc(hidden)]
9336            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9337            for newFinalizedStateCall {
9338                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9339                    Self {
9340                        newState: tuple.0,
9341                        proof: tuple.1,
9342                    }
9343                }
9344            }
9345        }
9346        {
9347            #[doc(hidden)]
9348            #[allow(dead_code)]
9349            type UnderlyingSolTuple<'a> = ();
9350            #[doc(hidden)]
9351            type UnderlyingRustTuple<'a> = ();
9352            #[cfg(test)]
9353            #[allow(dead_code, unreachable_patterns)]
9354            fn _type_assertion(
9355                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9356            ) {
9357                match _t {
9358                    alloy_sol_types::private::AssertTypeEq::<
9359                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9360                    >(_) => {}
9361                }
9362            }
9363            #[automatically_derived]
9364            #[doc(hidden)]
9365            impl ::core::convert::From<newFinalizedStateReturn>
9366            for UnderlyingRustTuple<'_> {
9367                fn from(value: newFinalizedStateReturn) -> Self {
9368                    ()
9369                }
9370            }
9371            #[automatically_derived]
9372            #[doc(hidden)]
9373            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9374            for newFinalizedStateReturn {
9375                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9376                    Self {}
9377                }
9378            }
9379        }
9380        impl newFinalizedStateReturn {
9381            fn _tokenize(
9382                &self,
9383            ) -> <newFinalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9384                ()
9385            }
9386        }
9387        #[automatically_derived]
9388        impl alloy_sol_types::SolCall for newFinalizedStateCall {
9389            type Parameters<'a> = (
9390                LightClient::LightClientState,
9391                IPlonkVerifier::PlonkProof,
9392            );
9393            type Token<'a> = <Self::Parameters<
9394                'a,
9395            > as alloy_sol_types::SolType>::Token<'a>;
9396            type Return = newFinalizedStateReturn;
9397            type ReturnTuple<'a> = ();
9398            type ReturnToken<'a> = <Self::ReturnTuple<
9399                'a,
9400            > as alloy_sol_types::SolType>::Token<'a>;
9401            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))";
9402            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
9403            #[inline]
9404            fn new<'a>(
9405                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9406            ) -> Self {
9407                tuple.into()
9408            }
9409            #[inline]
9410            fn tokenize(&self) -> Self::Token<'_> {
9411                (
9412                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
9413                        &self.newState,
9414                    ),
9415                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
9416                        &self.proof,
9417                    ),
9418                )
9419            }
9420            #[inline]
9421            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9422                newFinalizedStateReturn::_tokenize(ret)
9423            }
9424            #[inline]
9425            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9426                <Self::ReturnTuple<
9427                    '_,
9428                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9429                    .map(Into::into)
9430            }
9431            #[inline]
9432            fn abi_decode_returns_validate(
9433                data: &[u8],
9434            ) -> alloy_sol_types::Result<Self::Return> {
9435                <Self::ReturnTuple<
9436                    '_,
9437                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9438                    .map(Into::into)
9439            }
9440        }
9441    };
9442    #[derive(serde::Serialize, serde::Deserialize)]
9443    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9444    /**Function with signature `owner()` and selector `0x8da5cb5b`.
9445```solidity
9446function owner() external view returns (address);
9447```*/
9448    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9449    #[derive(Clone)]
9450    pub struct ownerCall;
9451    #[derive(serde::Serialize, serde::Deserialize)]
9452    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9453    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
9454    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9455    #[derive(Clone)]
9456    pub struct ownerReturn {
9457        #[allow(missing_docs)]
9458        pub _0: alloy::sol_types::private::Address,
9459    }
9460    #[allow(
9461        non_camel_case_types,
9462        non_snake_case,
9463        clippy::pub_underscore_fields,
9464        clippy::style
9465    )]
9466    const _: () = {
9467        use alloy::sol_types as alloy_sol_types;
9468        {
9469            #[doc(hidden)]
9470            #[allow(dead_code)]
9471            type UnderlyingSolTuple<'a> = ();
9472            #[doc(hidden)]
9473            type UnderlyingRustTuple<'a> = ();
9474            #[cfg(test)]
9475            #[allow(dead_code, unreachable_patterns)]
9476            fn _type_assertion(
9477                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9478            ) {
9479                match _t {
9480                    alloy_sol_types::private::AssertTypeEq::<
9481                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9482                    >(_) => {}
9483                }
9484            }
9485            #[automatically_derived]
9486            #[doc(hidden)]
9487            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
9488                fn from(value: ownerCall) -> Self {
9489                    ()
9490                }
9491            }
9492            #[automatically_derived]
9493            #[doc(hidden)]
9494            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
9495                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9496                    Self
9497                }
9498            }
9499        }
9500        {
9501            #[doc(hidden)]
9502            #[allow(dead_code)]
9503            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9504            #[doc(hidden)]
9505            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9506            #[cfg(test)]
9507            #[allow(dead_code, unreachable_patterns)]
9508            fn _type_assertion(
9509                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9510            ) {
9511                match _t {
9512                    alloy_sol_types::private::AssertTypeEq::<
9513                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9514                    >(_) => {}
9515                }
9516            }
9517            #[automatically_derived]
9518            #[doc(hidden)]
9519            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
9520                fn from(value: ownerReturn) -> Self {
9521                    (value._0,)
9522                }
9523            }
9524            #[automatically_derived]
9525            #[doc(hidden)]
9526            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
9527                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9528                    Self { _0: tuple.0 }
9529                }
9530            }
9531        }
9532        #[automatically_derived]
9533        impl alloy_sol_types::SolCall for ownerCall {
9534            type Parameters<'a> = ();
9535            type Token<'a> = <Self::Parameters<
9536                'a,
9537            > as alloy_sol_types::SolType>::Token<'a>;
9538            type Return = alloy::sol_types::private::Address;
9539            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
9540            type ReturnToken<'a> = <Self::ReturnTuple<
9541                'a,
9542            > as alloy_sol_types::SolType>::Token<'a>;
9543            const SIGNATURE: &'static str = "owner()";
9544            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
9545            #[inline]
9546            fn new<'a>(
9547                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9548            ) -> Self {
9549                tuple.into()
9550            }
9551            #[inline]
9552            fn tokenize(&self) -> Self::Token<'_> {
9553                ()
9554            }
9555            #[inline]
9556            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9557                (
9558                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9559                        ret,
9560                    ),
9561                )
9562            }
9563            #[inline]
9564            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9565                <Self::ReturnTuple<
9566                    '_,
9567                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9568                    .map(|r| {
9569                        let r: ownerReturn = r.into();
9570                        r._0
9571                    })
9572            }
9573            #[inline]
9574            fn abi_decode_returns_validate(
9575                data: &[u8],
9576            ) -> alloy_sol_types::Result<Self::Return> {
9577                <Self::ReturnTuple<
9578                    '_,
9579                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9580                    .map(|r| {
9581                        let r: ownerReturn = r.into();
9582                        r._0
9583                    })
9584            }
9585        }
9586    };
9587    #[derive(serde::Serialize, serde::Deserialize)]
9588    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9589    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
9590```solidity
9591function permissionedProver() external view returns (address);
9592```*/
9593    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9594    #[derive(Clone)]
9595    pub struct permissionedProverCall;
9596    #[derive(serde::Serialize, serde::Deserialize)]
9597    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9598    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
9599    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9600    #[derive(Clone)]
9601    pub struct permissionedProverReturn {
9602        #[allow(missing_docs)]
9603        pub _0: alloy::sol_types::private::Address,
9604    }
9605    #[allow(
9606        non_camel_case_types,
9607        non_snake_case,
9608        clippy::pub_underscore_fields,
9609        clippy::style
9610    )]
9611    const _: () = {
9612        use alloy::sol_types as alloy_sol_types;
9613        {
9614            #[doc(hidden)]
9615            #[allow(dead_code)]
9616            type UnderlyingSolTuple<'a> = ();
9617            #[doc(hidden)]
9618            type UnderlyingRustTuple<'a> = ();
9619            #[cfg(test)]
9620            #[allow(dead_code, unreachable_patterns)]
9621            fn _type_assertion(
9622                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9623            ) {
9624                match _t {
9625                    alloy_sol_types::private::AssertTypeEq::<
9626                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9627                    >(_) => {}
9628                }
9629            }
9630            #[automatically_derived]
9631            #[doc(hidden)]
9632            impl ::core::convert::From<permissionedProverCall>
9633            for UnderlyingRustTuple<'_> {
9634                fn from(value: permissionedProverCall) -> Self {
9635                    ()
9636                }
9637            }
9638            #[automatically_derived]
9639            #[doc(hidden)]
9640            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9641            for permissionedProverCall {
9642                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9643                    Self
9644                }
9645            }
9646        }
9647        {
9648            #[doc(hidden)]
9649            #[allow(dead_code)]
9650            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9651            #[doc(hidden)]
9652            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9653            #[cfg(test)]
9654            #[allow(dead_code, unreachable_patterns)]
9655            fn _type_assertion(
9656                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9657            ) {
9658                match _t {
9659                    alloy_sol_types::private::AssertTypeEq::<
9660                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9661                    >(_) => {}
9662                }
9663            }
9664            #[automatically_derived]
9665            #[doc(hidden)]
9666            impl ::core::convert::From<permissionedProverReturn>
9667            for UnderlyingRustTuple<'_> {
9668                fn from(value: permissionedProverReturn) -> Self {
9669                    (value._0,)
9670                }
9671            }
9672            #[automatically_derived]
9673            #[doc(hidden)]
9674            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9675            for permissionedProverReturn {
9676                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9677                    Self { _0: tuple.0 }
9678                }
9679            }
9680        }
9681        #[automatically_derived]
9682        impl alloy_sol_types::SolCall for permissionedProverCall {
9683            type Parameters<'a> = ();
9684            type Token<'a> = <Self::Parameters<
9685                'a,
9686            > as alloy_sol_types::SolType>::Token<'a>;
9687            type Return = alloy::sol_types::private::Address;
9688            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
9689            type ReturnToken<'a> = <Self::ReturnTuple<
9690                'a,
9691            > as alloy_sol_types::SolType>::Token<'a>;
9692            const SIGNATURE: &'static str = "permissionedProver()";
9693            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
9694            #[inline]
9695            fn new<'a>(
9696                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9697            ) -> Self {
9698                tuple.into()
9699            }
9700            #[inline]
9701            fn tokenize(&self) -> Self::Token<'_> {
9702                ()
9703            }
9704            #[inline]
9705            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9706                (
9707                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9708                        ret,
9709                    ),
9710                )
9711            }
9712            #[inline]
9713            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9714                <Self::ReturnTuple<
9715                    '_,
9716                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9717                    .map(|r| {
9718                        let r: permissionedProverReturn = r.into();
9719                        r._0
9720                    })
9721            }
9722            #[inline]
9723            fn abi_decode_returns_validate(
9724                data: &[u8],
9725            ) -> alloy_sol_types::Result<Self::Return> {
9726                <Self::ReturnTuple<
9727                    '_,
9728                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9729                    .map(|r| {
9730                        let r: permissionedProverReturn = r.into();
9731                        r._0
9732                    })
9733            }
9734        }
9735    };
9736    #[derive(serde::Serialize, serde::Deserialize)]
9737    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9738    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
9739```solidity
9740function proxiableUUID() external view returns (bytes32);
9741```*/
9742    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9743    #[derive(Clone)]
9744    pub struct proxiableUUIDCall;
9745    #[derive(serde::Serialize, serde::Deserialize)]
9746    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9747    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
9748    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9749    #[derive(Clone)]
9750    pub struct proxiableUUIDReturn {
9751        #[allow(missing_docs)]
9752        pub _0: alloy::sol_types::private::FixedBytes<32>,
9753    }
9754    #[allow(
9755        non_camel_case_types,
9756        non_snake_case,
9757        clippy::pub_underscore_fields,
9758        clippy::style
9759    )]
9760    const _: () = {
9761        use alloy::sol_types as alloy_sol_types;
9762        {
9763            #[doc(hidden)]
9764            #[allow(dead_code)]
9765            type UnderlyingSolTuple<'a> = ();
9766            #[doc(hidden)]
9767            type UnderlyingRustTuple<'a> = ();
9768            #[cfg(test)]
9769            #[allow(dead_code, unreachable_patterns)]
9770            fn _type_assertion(
9771                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9772            ) {
9773                match _t {
9774                    alloy_sol_types::private::AssertTypeEq::<
9775                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9776                    >(_) => {}
9777                }
9778            }
9779            #[automatically_derived]
9780            #[doc(hidden)]
9781            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
9782                fn from(value: proxiableUUIDCall) -> Self {
9783                    ()
9784                }
9785            }
9786            #[automatically_derived]
9787            #[doc(hidden)]
9788            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
9789                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9790                    Self
9791                }
9792            }
9793        }
9794        {
9795            #[doc(hidden)]
9796            #[allow(dead_code)]
9797            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9798            #[doc(hidden)]
9799            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
9800            #[cfg(test)]
9801            #[allow(dead_code, unreachable_patterns)]
9802            fn _type_assertion(
9803                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9804            ) {
9805                match _t {
9806                    alloy_sol_types::private::AssertTypeEq::<
9807                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9808                    >(_) => {}
9809                }
9810            }
9811            #[automatically_derived]
9812            #[doc(hidden)]
9813            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
9814                fn from(value: proxiableUUIDReturn) -> Self {
9815                    (value._0,)
9816                }
9817            }
9818            #[automatically_derived]
9819            #[doc(hidden)]
9820            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
9821                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9822                    Self { _0: tuple.0 }
9823                }
9824            }
9825        }
9826        #[automatically_derived]
9827        impl alloy_sol_types::SolCall for proxiableUUIDCall {
9828            type Parameters<'a> = ();
9829            type Token<'a> = <Self::Parameters<
9830                'a,
9831            > as alloy_sol_types::SolType>::Token<'a>;
9832            type Return = alloy::sol_types::private::FixedBytes<32>;
9833            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9834            type ReturnToken<'a> = <Self::ReturnTuple<
9835                'a,
9836            > as alloy_sol_types::SolType>::Token<'a>;
9837            const SIGNATURE: &'static str = "proxiableUUID()";
9838            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
9839            #[inline]
9840            fn new<'a>(
9841                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9842            ) -> Self {
9843                tuple.into()
9844            }
9845            #[inline]
9846            fn tokenize(&self) -> Self::Token<'_> {
9847                ()
9848            }
9849            #[inline]
9850            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9851                (
9852                    <alloy::sol_types::sol_data::FixedBytes<
9853                        32,
9854                    > as alloy_sol_types::SolType>::tokenize(ret),
9855                )
9856            }
9857            #[inline]
9858            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9859                <Self::ReturnTuple<
9860                    '_,
9861                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9862                    .map(|r| {
9863                        let r: proxiableUUIDReturn = r.into();
9864                        r._0
9865                    })
9866            }
9867            #[inline]
9868            fn abi_decode_returns_validate(
9869                data: &[u8],
9870            ) -> alloy_sol_types::Result<Self::Return> {
9871                <Self::ReturnTuple<
9872                    '_,
9873                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9874                    .map(|r| {
9875                        let r: proxiableUUIDReturn = r.into();
9876                        r._0
9877                    })
9878            }
9879        }
9880    };
9881    #[derive(serde::Serialize, serde::Deserialize)]
9882    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9883    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
9884```solidity
9885function renounceOwnership() external;
9886```*/
9887    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9888    #[derive(Clone)]
9889    pub struct renounceOwnershipCall;
9890    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
9891    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9892    #[derive(Clone)]
9893    pub struct renounceOwnershipReturn {}
9894    #[allow(
9895        non_camel_case_types,
9896        non_snake_case,
9897        clippy::pub_underscore_fields,
9898        clippy::style
9899    )]
9900    const _: () = {
9901        use alloy::sol_types as alloy_sol_types;
9902        {
9903            #[doc(hidden)]
9904            #[allow(dead_code)]
9905            type UnderlyingSolTuple<'a> = ();
9906            #[doc(hidden)]
9907            type UnderlyingRustTuple<'a> = ();
9908            #[cfg(test)]
9909            #[allow(dead_code, unreachable_patterns)]
9910            fn _type_assertion(
9911                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9912            ) {
9913                match _t {
9914                    alloy_sol_types::private::AssertTypeEq::<
9915                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9916                    >(_) => {}
9917                }
9918            }
9919            #[automatically_derived]
9920            #[doc(hidden)]
9921            impl ::core::convert::From<renounceOwnershipCall>
9922            for UnderlyingRustTuple<'_> {
9923                fn from(value: renounceOwnershipCall) -> Self {
9924                    ()
9925                }
9926            }
9927            #[automatically_derived]
9928            #[doc(hidden)]
9929            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9930            for renounceOwnershipCall {
9931                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9932                    Self
9933                }
9934            }
9935        }
9936        {
9937            #[doc(hidden)]
9938            #[allow(dead_code)]
9939            type UnderlyingSolTuple<'a> = ();
9940            #[doc(hidden)]
9941            type UnderlyingRustTuple<'a> = ();
9942            #[cfg(test)]
9943            #[allow(dead_code, unreachable_patterns)]
9944            fn _type_assertion(
9945                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9946            ) {
9947                match _t {
9948                    alloy_sol_types::private::AssertTypeEq::<
9949                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9950                    >(_) => {}
9951                }
9952            }
9953            #[automatically_derived]
9954            #[doc(hidden)]
9955            impl ::core::convert::From<renounceOwnershipReturn>
9956            for UnderlyingRustTuple<'_> {
9957                fn from(value: renounceOwnershipReturn) -> Self {
9958                    ()
9959                }
9960            }
9961            #[automatically_derived]
9962            #[doc(hidden)]
9963            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9964            for renounceOwnershipReturn {
9965                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9966                    Self {}
9967                }
9968            }
9969        }
9970        impl renounceOwnershipReturn {
9971            fn _tokenize(
9972                &self,
9973            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9974                ()
9975            }
9976        }
9977        #[automatically_derived]
9978        impl alloy_sol_types::SolCall for renounceOwnershipCall {
9979            type Parameters<'a> = ();
9980            type Token<'a> = <Self::Parameters<
9981                'a,
9982            > as alloy_sol_types::SolType>::Token<'a>;
9983            type Return = renounceOwnershipReturn;
9984            type ReturnTuple<'a> = ();
9985            type ReturnToken<'a> = <Self::ReturnTuple<
9986                'a,
9987            > as alloy_sol_types::SolType>::Token<'a>;
9988            const SIGNATURE: &'static str = "renounceOwnership()";
9989            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
9990            #[inline]
9991            fn new<'a>(
9992                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9993            ) -> Self {
9994                tuple.into()
9995            }
9996            #[inline]
9997            fn tokenize(&self) -> Self::Token<'_> {
9998                ()
9999            }
10000            #[inline]
10001            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10002                renounceOwnershipReturn::_tokenize(ret)
10003            }
10004            #[inline]
10005            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10006                <Self::ReturnTuple<
10007                    '_,
10008                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10009                    .map(Into::into)
10010            }
10011            #[inline]
10012            fn abi_decode_returns_validate(
10013                data: &[u8],
10014            ) -> alloy_sol_types::Result<Self::Return> {
10015                <Self::ReturnTuple<
10016                    '_,
10017                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10018                    .map(Into::into)
10019            }
10020        }
10021    };
10022    #[derive(serde::Serialize, serde::Deserialize)]
10023    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10024    /**Function with signature `setFinalizedState((uint64,uint64,uint256))` and selector `0xb5adea3c`.
10025```solidity
10026function setFinalizedState(LightClient.LightClientState memory state) external;
10027```*/
10028    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10029    #[derive(Clone)]
10030    pub struct setFinalizedStateCall {
10031        #[allow(missing_docs)]
10032        pub state: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10033    }
10034    ///Container type for the return parameters of the [`setFinalizedState((uint64,uint64,uint256))`](setFinalizedStateCall) function.
10035    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10036    #[derive(Clone)]
10037    pub struct setFinalizedStateReturn {}
10038    #[allow(
10039        non_camel_case_types,
10040        non_snake_case,
10041        clippy::pub_underscore_fields,
10042        clippy::style
10043    )]
10044    const _: () = {
10045        use alloy::sol_types as alloy_sol_types;
10046        {
10047            #[doc(hidden)]
10048            #[allow(dead_code)]
10049            type UnderlyingSolTuple<'a> = (LightClient::LightClientState,);
10050            #[doc(hidden)]
10051            type UnderlyingRustTuple<'a> = (
10052                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10053            );
10054            #[cfg(test)]
10055            #[allow(dead_code, unreachable_patterns)]
10056            fn _type_assertion(
10057                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10058            ) {
10059                match _t {
10060                    alloy_sol_types::private::AssertTypeEq::<
10061                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10062                    >(_) => {}
10063                }
10064            }
10065            #[automatically_derived]
10066            #[doc(hidden)]
10067            impl ::core::convert::From<setFinalizedStateCall>
10068            for UnderlyingRustTuple<'_> {
10069                fn from(value: setFinalizedStateCall) -> Self {
10070                    (value.state,)
10071                }
10072            }
10073            #[automatically_derived]
10074            #[doc(hidden)]
10075            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10076            for setFinalizedStateCall {
10077                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10078                    Self { state: tuple.0 }
10079                }
10080            }
10081        }
10082        {
10083            #[doc(hidden)]
10084            #[allow(dead_code)]
10085            type UnderlyingSolTuple<'a> = ();
10086            #[doc(hidden)]
10087            type UnderlyingRustTuple<'a> = ();
10088            #[cfg(test)]
10089            #[allow(dead_code, unreachable_patterns)]
10090            fn _type_assertion(
10091                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10092            ) {
10093                match _t {
10094                    alloy_sol_types::private::AssertTypeEq::<
10095                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10096                    >(_) => {}
10097                }
10098            }
10099            #[automatically_derived]
10100            #[doc(hidden)]
10101            impl ::core::convert::From<setFinalizedStateReturn>
10102            for UnderlyingRustTuple<'_> {
10103                fn from(value: setFinalizedStateReturn) -> Self {
10104                    ()
10105                }
10106            }
10107            #[automatically_derived]
10108            #[doc(hidden)]
10109            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10110            for setFinalizedStateReturn {
10111                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10112                    Self {}
10113                }
10114            }
10115        }
10116        impl setFinalizedStateReturn {
10117            fn _tokenize(
10118                &self,
10119            ) -> <setFinalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10120                ()
10121            }
10122        }
10123        #[automatically_derived]
10124        impl alloy_sol_types::SolCall for setFinalizedStateCall {
10125            type Parameters<'a> = (LightClient::LightClientState,);
10126            type Token<'a> = <Self::Parameters<
10127                'a,
10128            > as alloy_sol_types::SolType>::Token<'a>;
10129            type Return = setFinalizedStateReturn;
10130            type ReturnTuple<'a> = ();
10131            type ReturnToken<'a> = <Self::ReturnTuple<
10132                'a,
10133            > as alloy_sol_types::SolType>::Token<'a>;
10134            const SIGNATURE: &'static str = "setFinalizedState((uint64,uint64,uint256))";
10135            const SELECTOR: [u8; 4] = [181u8, 173u8, 234u8, 60u8];
10136            #[inline]
10137            fn new<'a>(
10138                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10139            ) -> Self {
10140                tuple.into()
10141            }
10142            #[inline]
10143            fn tokenize(&self) -> Self::Token<'_> {
10144                (
10145                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
10146                        &self.state,
10147                    ),
10148                )
10149            }
10150            #[inline]
10151            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10152                setFinalizedStateReturn::_tokenize(ret)
10153            }
10154            #[inline]
10155            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10156                <Self::ReturnTuple<
10157                    '_,
10158                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10159                    .map(Into::into)
10160            }
10161            #[inline]
10162            fn abi_decode_returns_validate(
10163                data: &[u8],
10164            ) -> alloy_sol_types::Result<Self::Return> {
10165                <Self::ReturnTuple<
10166                    '_,
10167                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10168                    .map(Into::into)
10169            }
10170        }
10171    };
10172    #[derive(serde::Serialize, serde::Deserialize)]
10173    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10174    /**Function with signature `setHotShotDownSince(uint256)` and selector `0x2d52aad6`.
10175```solidity
10176function setHotShotDownSince(uint256 l1Height) external;
10177```*/
10178    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10179    #[derive(Clone)]
10180    pub struct setHotShotDownSinceCall {
10181        #[allow(missing_docs)]
10182        pub l1Height: alloy::sol_types::private::primitives::aliases::U256,
10183    }
10184    ///Container type for the return parameters of the [`setHotShotDownSince(uint256)`](setHotShotDownSinceCall) function.
10185    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10186    #[derive(Clone)]
10187    pub struct setHotShotDownSinceReturn {}
10188    #[allow(
10189        non_camel_case_types,
10190        non_snake_case,
10191        clippy::pub_underscore_fields,
10192        clippy::style
10193    )]
10194    const _: () = {
10195        use alloy::sol_types as alloy_sol_types;
10196        {
10197            #[doc(hidden)]
10198            #[allow(dead_code)]
10199            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10200            #[doc(hidden)]
10201            type UnderlyingRustTuple<'a> = (
10202                alloy::sol_types::private::primitives::aliases::U256,
10203            );
10204            #[cfg(test)]
10205            #[allow(dead_code, unreachable_patterns)]
10206            fn _type_assertion(
10207                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10208            ) {
10209                match _t {
10210                    alloy_sol_types::private::AssertTypeEq::<
10211                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10212                    >(_) => {}
10213                }
10214            }
10215            #[automatically_derived]
10216            #[doc(hidden)]
10217            impl ::core::convert::From<setHotShotDownSinceCall>
10218            for UnderlyingRustTuple<'_> {
10219                fn from(value: setHotShotDownSinceCall) -> Self {
10220                    (value.l1Height,)
10221                }
10222            }
10223            #[automatically_derived]
10224            #[doc(hidden)]
10225            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10226            for setHotShotDownSinceCall {
10227                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10228                    Self { l1Height: tuple.0 }
10229                }
10230            }
10231        }
10232        {
10233            #[doc(hidden)]
10234            #[allow(dead_code)]
10235            type UnderlyingSolTuple<'a> = ();
10236            #[doc(hidden)]
10237            type UnderlyingRustTuple<'a> = ();
10238            #[cfg(test)]
10239            #[allow(dead_code, unreachable_patterns)]
10240            fn _type_assertion(
10241                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10242            ) {
10243                match _t {
10244                    alloy_sol_types::private::AssertTypeEq::<
10245                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10246                    >(_) => {}
10247                }
10248            }
10249            #[automatically_derived]
10250            #[doc(hidden)]
10251            impl ::core::convert::From<setHotShotDownSinceReturn>
10252            for UnderlyingRustTuple<'_> {
10253                fn from(value: setHotShotDownSinceReturn) -> Self {
10254                    ()
10255                }
10256            }
10257            #[automatically_derived]
10258            #[doc(hidden)]
10259            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10260            for setHotShotDownSinceReturn {
10261                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10262                    Self {}
10263                }
10264            }
10265        }
10266        impl setHotShotDownSinceReturn {
10267            fn _tokenize(
10268                &self,
10269            ) -> <setHotShotDownSinceCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10270                ()
10271            }
10272        }
10273        #[automatically_derived]
10274        impl alloy_sol_types::SolCall for setHotShotDownSinceCall {
10275            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10276            type Token<'a> = <Self::Parameters<
10277                'a,
10278            > as alloy_sol_types::SolType>::Token<'a>;
10279            type Return = setHotShotDownSinceReturn;
10280            type ReturnTuple<'a> = ();
10281            type ReturnToken<'a> = <Self::ReturnTuple<
10282                'a,
10283            > as alloy_sol_types::SolType>::Token<'a>;
10284            const SIGNATURE: &'static str = "setHotShotDownSince(uint256)";
10285            const SELECTOR: [u8; 4] = [45u8, 82u8, 170u8, 214u8];
10286            #[inline]
10287            fn new<'a>(
10288                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10289            ) -> Self {
10290                tuple.into()
10291            }
10292            #[inline]
10293            fn tokenize(&self) -> Self::Token<'_> {
10294                (
10295                    <alloy::sol_types::sol_data::Uint<
10296                        256,
10297                    > as alloy_sol_types::SolType>::tokenize(&self.l1Height),
10298                )
10299            }
10300            #[inline]
10301            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10302                setHotShotDownSinceReturn::_tokenize(ret)
10303            }
10304            #[inline]
10305            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10306                <Self::ReturnTuple<
10307                    '_,
10308                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10309                    .map(Into::into)
10310            }
10311            #[inline]
10312            fn abi_decode_returns_validate(
10313                data: &[u8],
10314            ) -> alloy_sol_types::Result<Self::Return> {
10315                <Self::ReturnTuple<
10316                    '_,
10317                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10318                    .map(Into::into)
10319            }
10320        }
10321    };
10322    #[derive(serde::Serialize, serde::Deserialize)]
10323    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10324    /**Function with signature `setHotShotUp()` and selector `0xc8e5e498`.
10325```solidity
10326function setHotShotUp() external;
10327```*/
10328    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10329    #[derive(Clone)]
10330    pub struct setHotShotUpCall;
10331    ///Container type for the return parameters of the [`setHotShotUp()`](setHotShotUpCall) function.
10332    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10333    #[derive(Clone)]
10334    pub struct setHotShotUpReturn {}
10335    #[allow(
10336        non_camel_case_types,
10337        non_snake_case,
10338        clippy::pub_underscore_fields,
10339        clippy::style
10340    )]
10341    const _: () = {
10342        use alloy::sol_types as alloy_sol_types;
10343        {
10344            #[doc(hidden)]
10345            #[allow(dead_code)]
10346            type UnderlyingSolTuple<'a> = ();
10347            #[doc(hidden)]
10348            type UnderlyingRustTuple<'a> = ();
10349            #[cfg(test)]
10350            #[allow(dead_code, unreachable_patterns)]
10351            fn _type_assertion(
10352                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10353            ) {
10354                match _t {
10355                    alloy_sol_types::private::AssertTypeEq::<
10356                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10357                    >(_) => {}
10358                }
10359            }
10360            #[automatically_derived]
10361            #[doc(hidden)]
10362            impl ::core::convert::From<setHotShotUpCall> for UnderlyingRustTuple<'_> {
10363                fn from(value: setHotShotUpCall) -> Self {
10364                    ()
10365                }
10366            }
10367            #[automatically_derived]
10368            #[doc(hidden)]
10369            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotUpCall {
10370                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10371                    Self
10372                }
10373            }
10374        }
10375        {
10376            #[doc(hidden)]
10377            #[allow(dead_code)]
10378            type UnderlyingSolTuple<'a> = ();
10379            #[doc(hidden)]
10380            type UnderlyingRustTuple<'a> = ();
10381            #[cfg(test)]
10382            #[allow(dead_code, unreachable_patterns)]
10383            fn _type_assertion(
10384                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10385            ) {
10386                match _t {
10387                    alloy_sol_types::private::AssertTypeEq::<
10388                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10389                    >(_) => {}
10390                }
10391            }
10392            #[automatically_derived]
10393            #[doc(hidden)]
10394            impl ::core::convert::From<setHotShotUpReturn> for UnderlyingRustTuple<'_> {
10395                fn from(value: setHotShotUpReturn) -> Self {
10396                    ()
10397                }
10398            }
10399            #[automatically_derived]
10400            #[doc(hidden)]
10401            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotUpReturn {
10402                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10403                    Self {}
10404                }
10405            }
10406        }
10407        impl setHotShotUpReturn {
10408            fn _tokenize(
10409                &self,
10410            ) -> <setHotShotUpCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10411                ()
10412            }
10413        }
10414        #[automatically_derived]
10415        impl alloy_sol_types::SolCall for setHotShotUpCall {
10416            type Parameters<'a> = ();
10417            type Token<'a> = <Self::Parameters<
10418                'a,
10419            > as alloy_sol_types::SolType>::Token<'a>;
10420            type Return = setHotShotUpReturn;
10421            type ReturnTuple<'a> = ();
10422            type ReturnToken<'a> = <Self::ReturnTuple<
10423                'a,
10424            > as alloy_sol_types::SolType>::Token<'a>;
10425            const SIGNATURE: &'static str = "setHotShotUp()";
10426            const SELECTOR: [u8; 4] = [200u8, 229u8, 228u8, 152u8];
10427            #[inline]
10428            fn new<'a>(
10429                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10430            ) -> Self {
10431                tuple.into()
10432            }
10433            #[inline]
10434            fn tokenize(&self) -> Self::Token<'_> {
10435                ()
10436            }
10437            #[inline]
10438            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10439                setHotShotUpReturn::_tokenize(ret)
10440            }
10441            #[inline]
10442            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10443                <Self::ReturnTuple<
10444                    '_,
10445                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10446                    .map(Into::into)
10447            }
10448            #[inline]
10449            fn abi_decode_returns_validate(
10450                data: &[u8],
10451            ) -> alloy_sol_types::Result<Self::Return> {
10452                <Self::ReturnTuple<
10453                    '_,
10454                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10455                    .map(Into::into)
10456            }
10457        }
10458    };
10459    #[derive(serde::Serialize, serde::Deserialize)]
10460    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10461    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
10462```solidity
10463function setPermissionedProver(address prover) external;
10464```*/
10465    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10466    #[derive(Clone)]
10467    pub struct setPermissionedProverCall {
10468        #[allow(missing_docs)]
10469        pub prover: alloy::sol_types::private::Address,
10470    }
10471    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
10472    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10473    #[derive(Clone)]
10474    pub struct setPermissionedProverReturn {}
10475    #[allow(
10476        non_camel_case_types,
10477        non_snake_case,
10478        clippy::pub_underscore_fields,
10479        clippy::style
10480    )]
10481    const _: () = {
10482        use alloy::sol_types as alloy_sol_types;
10483        {
10484            #[doc(hidden)]
10485            #[allow(dead_code)]
10486            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10487            #[doc(hidden)]
10488            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10489            #[cfg(test)]
10490            #[allow(dead_code, unreachable_patterns)]
10491            fn _type_assertion(
10492                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10493            ) {
10494                match _t {
10495                    alloy_sol_types::private::AssertTypeEq::<
10496                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10497                    >(_) => {}
10498                }
10499            }
10500            #[automatically_derived]
10501            #[doc(hidden)]
10502            impl ::core::convert::From<setPermissionedProverCall>
10503            for UnderlyingRustTuple<'_> {
10504                fn from(value: setPermissionedProverCall) -> Self {
10505                    (value.prover,)
10506                }
10507            }
10508            #[automatically_derived]
10509            #[doc(hidden)]
10510            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10511            for setPermissionedProverCall {
10512                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10513                    Self { prover: tuple.0 }
10514                }
10515            }
10516        }
10517        {
10518            #[doc(hidden)]
10519            #[allow(dead_code)]
10520            type UnderlyingSolTuple<'a> = ();
10521            #[doc(hidden)]
10522            type UnderlyingRustTuple<'a> = ();
10523            #[cfg(test)]
10524            #[allow(dead_code, unreachable_patterns)]
10525            fn _type_assertion(
10526                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10527            ) {
10528                match _t {
10529                    alloy_sol_types::private::AssertTypeEq::<
10530                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10531                    >(_) => {}
10532                }
10533            }
10534            #[automatically_derived]
10535            #[doc(hidden)]
10536            impl ::core::convert::From<setPermissionedProverReturn>
10537            for UnderlyingRustTuple<'_> {
10538                fn from(value: setPermissionedProverReturn) -> Self {
10539                    ()
10540                }
10541            }
10542            #[automatically_derived]
10543            #[doc(hidden)]
10544            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10545            for setPermissionedProverReturn {
10546                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10547                    Self {}
10548                }
10549            }
10550        }
10551        impl setPermissionedProverReturn {
10552            fn _tokenize(
10553                &self,
10554            ) -> <setPermissionedProverCall as alloy_sol_types::SolCall>::ReturnToken<
10555                '_,
10556            > {
10557                ()
10558            }
10559        }
10560        #[automatically_derived]
10561        impl alloy_sol_types::SolCall for setPermissionedProverCall {
10562            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
10563            type Token<'a> = <Self::Parameters<
10564                'a,
10565            > as alloy_sol_types::SolType>::Token<'a>;
10566            type Return = setPermissionedProverReturn;
10567            type ReturnTuple<'a> = ();
10568            type ReturnToken<'a> = <Self::ReturnTuple<
10569                'a,
10570            > as alloy_sol_types::SolType>::Token<'a>;
10571            const SIGNATURE: &'static str = "setPermissionedProver(address)";
10572            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
10573            #[inline]
10574            fn new<'a>(
10575                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10576            ) -> Self {
10577                tuple.into()
10578            }
10579            #[inline]
10580            fn tokenize(&self) -> Self::Token<'_> {
10581                (
10582                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10583                        &self.prover,
10584                    ),
10585                )
10586            }
10587            #[inline]
10588            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10589                setPermissionedProverReturn::_tokenize(ret)
10590            }
10591            #[inline]
10592            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10593                <Self::ReturnTuple<
10594                    '_,
10595                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10596                    .map(Into::into)
10597            }
10598            #[inline]
10599            fn abi_decode_returns_validate(
10600                data: &[u8],
10601            ) -> alloy_sol_types::Result<Self::Return> {
10602                <Self::ReturnTuple<
10603                    '_,
10604                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10605                    .map(Into::into)
10606            }
10607        }
10608    };
10609    #[derive(serde::Serialize, serde::Deserialize)]
10610    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10611    /**Function with signature `setStateHistory((uint64,uint64,uint64,uint256)[])` and selector `0xf5676160`.
10612```solidity
10613function setStateHistory(LightClient.StateHistoryCommitment[] memory _stateHistoryCommitments) external;
10614```*/
10615    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10616    #[derive(Clone)]
10617    pub struct setStateHistoryCall {
10618        #[allow(missing_docs)]
10619        pub _stateHistoryCommitments: alloy::sol_types::private::Vec<
10620            <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
10621        >,
10622    }
10623    ///Container type for the return parameters of the [`setStateHistory((uint64,uint64,uint64,uint256)[])`](setStateHistoryCall) function.
10624    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10625    #[derive(Clone)]
10626    pub struct setStateHistoryReturn {}
10627    #[allow(
10628        non_camel_case_types,
10629        non_snake_case,
10630        clippy::pub_underscore_fields,
10631        clippy::style
10632    )]
10633    const _: () = {
10634        use alloy::sol_types as alloy_sol_types;
10635        {
10636            #[doc(hidden)]
10637            #[allow(dead_code)]
10638            type UnderlyingSolTuple<'a> = (
10639                alloy::sol_types::sol_data::Array<LightClient::StateHistoryCommitment>,
10640            );
10641            #[doc(hidden)]
10642            type UnderlyingRustTuple<'a> = (
10643                alloy::sol_types::private::Vec<
10644                    <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
10645                >,
10646            );
10647            #[cfg(test)]
10648            #[allow(dead_code, unreachable_patterns)]
10649            fn _type_assertion(
10650                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10651            ) {
10652                match _t {
10653                    alloy_sol_types::private::AssertTypeEq::<
10654                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10655                    >(_) => {}
10656                }
10657            }
10658            #[automatically_derived]
10659            #[doc(hidden)]
10660            impl ::core::convert::From<setStateHistoryCall> for UnderlyingRustTuple<'_> {
10661                fn from(value: setStateHistoryCall) -> Self {
10662                    (value._stateHistoryCommitments,)
10663                }
10664            }
10665            #[automatically_derived]
10666            #[doc(hidden)]
10667            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setStateHistoryCall {
10668                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10669                    Self {
10670                        _stateHistoryCommitments: tuple.0,
10671                    }
10672                }
10673            }
10674        }
10675        {
10676            #[doc(hidden)]
10677            #[allow(dead_code)]
10678            type UnderlyingSolTuple<'a> = ();
10679            #[doc(hidden)]
10680            type UnderlyingRustTuple<'a> = ();
10681            #[cfg(test)]
10682            #[allow(dead_code, unreachable_patterns)]
10683            fn _type_assertion(
10684                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10685            ) {
10686                match _t {
10687                    alloy_sol_types::private::AssertTypeEq::<
10688                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10689                    >(_) => {}
10690                }
10691            }
10692            #[automatically_derived]
10693            #[doc(hidden)]
10694            impl ::core::convert::From<setStateHistoryReturn>
10695            for UnderlyingRustTuple<'_> {
10696                fn from(value: setStateHistoryReturn) -> Self {
10697                    ()
10698                }
10699            }
10700            #[automatically_derived]
10701            #[doc(hidden)]
10702            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10703            for setStateHistoryReturn {
10704                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10705                    Self {}
10706                }
10707            }
10708        }
10709        impl setStateHistoryReturn {
10710            fn _tokenize(
10711                &self,
10712            ) -> <setStateHistoryCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10713                ()
10714            }
10715        }
10716        #[automatically_derived]
10717        impl alloy_sol_types::SolCall for setStateHistoryCall {
10718            type Parameters<'a> = (
10719                alloy::sol_types::sol_data::Array<LightClient::StateHistoryCommitment>,
10720            );
10721            type Token<'a> = <Self::Parameters<
10722                'a,
10723            > as alloy_sol_types::SolType>::Token<'a>;
10724            type Return = setStateHistoryReturn;
10725            type ReturnTuple<'a> = ();
10726            type ReturnToken<'a> = <Self::ReturnTuple<
10727                'a,
10728            > as alloy_sol_types::SolType>::Token<'a>;
10729            const SIGNATURE: &'static str = "setStateHistory((uint64,uint64,uint64,uint256)[])";
10730            const SELECTOR: [u8; 4] = [245u8, 103u8, 97u8, 96u8];
10731            #[inline]
10732            fn new<'a>(
10733                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10734            ) -> Self {
10735                tuple.into()
10736            }
10737            #[inline]
10738            fn tokenize(&self) -> Self::Token<'_> {
10739                (
10740                    <alloy::sol_types::sol_data::Array<
10741                        LightClient::StateHistoryCommitment,
10742                    > as alloy_sol_types::SolType>::tokenize(
10743                        &self._stateHistoryCommitments,
10744                    ),
10745                )
10746            }
10747            #[inline]
10748            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10749                setStateHistoryReturn::_tokenize(ret)
10750            }
10751            #[inline]
10752            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10753                <Self::ReturnTuple<
10754                    '_,
10755                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10756                    .map(Into::into)
10757            }
10758            #[inline]
10759            fn abi_decode_returns_validate(
10760                data: &[u8],
10761            ) -> alloy_sol_types::Result<Self::Return> {
10762                <Self::ReturnTuple<
10763                    '_,
10764                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10765                    .map(Into::into)
10766            }
10767        }
10768    };
10769    #[derive(serde::Serialize, serde::Deserialize)]
10770    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10771    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
10772```solidity
10773function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
10774```*/
10775    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10776    #[derive(Clone)]
10777    pub struct setstateHistoryRetentionPeriodCall {
10778        #[allow(missing_docs)]
10779        pub historySeconds: u32,
10780    }
10781    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
10782    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10783    #[derive(Clone)]
10784    pub struct setstateHistoryRetentionPeriodReturn {}
10785    #[allow(
10786        non_camel_case_types,
10787        non_snake_case,
10788        clippy::pub_underscore_fields,
10789        clippy::style
10790    )]
10791    const _: () = {
10792        use alloy::sol_types as alloy_sol_types;
10793        {
10794            #[doc(hidden)]
10795            #[allow(dead_code)]
10796            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
10797            #[doc(hidden)]
10798            type UnderlyingRustTuple<'a> = (u32,);
10799            #[cfg(test)]
10800            #[allow(dead_code, unreachable_patterns)]
10801            fn _type_assertion(
10802                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10803            ) {
10804                match _t {
10805                    alloy_sol_types::private::AssertTypeEq::<
10806                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10807                    >(_) => {}
10808                }
10809            }
10810            #[automatically_derived]
10811            #[doc(hidden)]
10812            impl ::core::convert::From<setstateHistoryRetentionPeriodCall>
10813            for UnderlyingRustTuple<'_> {
10814                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
10815                    (value.historySeconds,)
10816                }
10817            }
10818            #[automatically_derived]
10819            #[doc(hidden)]
10820            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10821            for setstateHistoryRetentionPeriodCall {
10822                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10823                    Self { historySeconds: tuple.0 }
10824                }
10825            }
10826        }
10827        {
10828            #[doc(hidden)]
10829            #[allow(dead_code)]
10830            type UnderlyingSolTuple<'a> = ();
10831            #[doc(hidden)]
10832            type UnderlyingRustTuple<'a> = ();
10833            #[cfg(test)]
10834            #[allow(dead_code, unreachable_patterns)]
10835            fn _type_assertion(
10836                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10837            ) {
10838                match _t {
10839                    alloy_sol_types::private::AssertTypeEq::<
10840                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10841                    >(_) => {}
10842                }
10843            }
10844            #[automatically_derived]
10845            #[doc(hidden)]
10846            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn>
10847            for UnderlyingRustTuple<'_> {
10848                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
10849                    ()
10850                }
10851            }
10852            #[automatically_derived]
10853            #[doc(hidden)]
10854            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10855            for setstateHistoryRetentionPeriodReturn {
10856                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10857                    Self {}
10858                }
10859            }
10860        }
10861        impl setstateHistoryRetentionPeriodReturn {
10862            fn _tokenize(
10863                &self,
10864            ) -> <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
10865                '_,
10866            > {
10867                ()
10868            }
10869        }
10870        #[automatically_derived]
10871        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
10872            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
10873            type Token<'a> = <Self::Parameters<
10874                'a,
10875            > as alloy_sol_types::SolType>::Token<'a>;
10876            type Return = setstateHistoryRetentionPeriodReturn;
10877            type ReturnTuple<'a> = ();
10878            type ReturnToken<'a> = <Self::ReturnTuple<
10879                'a,
10880            > as alloy_sol_types::SolType>::Token<'a>;
10881            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
10882            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
10883            #[inline]
10884            fn new<'a>(
10885                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10886            ) -> Self {
10887                tuple.into()
10888            }
10889            #[inline]
10890            fn tokenize(&self) -> Self::Token<'_> {
10891                (
10892                    <alloy::sol_types::sol_data::Uint<
10893                        32,
10894                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
10895                )
10896            }
10897            #[inline]
10898            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10899                setstateHistoryRetentionPeriodReturn::_tokenize(ret)
10900            }
10901            #[inline]
10902            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10903                <Self::ReturnTuple<
10904                    '_,
10905                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10906                    .map(Into::into)
10907            }
10908            #[inline]
10909            fn abi_decode_returns_validate(
10910                data: &[u8],
10911            ) -> alloy_sol_types::Result<Self::Return> {
10912                <Self::ReturnTuple<
10913                    '_,
10914                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10915                    .map(Into::into)
10916            }
10917        }
10918    };
10919    #[derive(serde::Serialize, serde::Deserialize)]
10920    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10921    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
10922```solidity
10923function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
10924```*/
10925    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10926    #[derive(Clone)]
10927    pub struct stateHistoryCommitmentsCall(
10928        pub alloy::sol_types::private::primitives::aliases::U256,
10929    );
10930    #[derive(serde::Serialize, serde::Deserialize)]
10931    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10932    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
10933    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10934    #[derive(Clone)]
10935    pub struct stateHistoryCommitmentsReturn {
10936        #[allow(missing_docs)]
10937        pub l1BlockHeight: u64,
10938        #[allow(missing_docs)]
10939        pub l1BlockTimestamp: u64,
10940        #[allow(missing_docs)]
10941        pub hotShotBlockHeight: u64,
10942        #[allow(missing_docs)]
10943        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10944    }
10945    #[allow(
10946        non_camel_case_types,
10947        non_snake_case,
10948        clippy::pub_underscore_fields,
10949        clippy::style
10950    )]
10951    const _: () = {
10952        use alloy::sol_types as alloy_sol_types;
10953        {
10954            #[doc(hidden)]
10955            #[allow(dead_code)]
10956            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10957            #[doc(hidden)]
10958            type UnderlyingRustTuple<'a> = (
10959                alloy::sol_types::private::primitives::aliases::U256,
10960            );
10961            #[cfg(test)]
10962            #[allow(dead_code, unreachable_patterns)]
10963            fn _type_assertion(
10964                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10965            ) {
10966                match _t {
10967                    alloy_sol_types::private::AssertTypeEq::<
10968                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10969                    >(_) => {}
10970                }
10971            }
10972            #[automatically_derived]
10973            #[doc(hidden)]
10974            impl ::core::convert::From<stateHistoryCommitmentsCall>
10975            for UnderlyingRustTuple<'_> {
10976                fn from(value: stateHistoryCommitmentsCall) -> Self {
10977                    (value.0,)
10978                }
10979            }
10980            #[automatically_derived]
10981            #[doc(hidden)]
10982            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10983            for stateHistoryCommitmentsCall {
10984                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10985                    Self(tuple.0)
10986                }
10987            }
10988        }
10989        {
10990            #[doc(hidden)]
10991            #[allow(dead_code)]
10992            type UnderlyingSolTuple<'a> = (
10993                alloy::sol_types::sol_data::Uint<64>,
10994                alloy::sol_types::sol_data::Uint<64>,
10995                alloy::sol_types::sol_data::Uint<64>,
10996                BN254::ScalarField,
10997            );
10998            #[doc(hidden)]
10999            type UnderlyingRustTuple<'a> = (
11000                u64,
11001                u64,
11002                u64,
11003                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
11004            );
11005            #[cfg(test)]
11006            #[allow(dead_code, unreachable_patterns)]
11007            fn _type_assertion(
11008                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11009            ) {
11010                match _t {
11011                    alloy_sol_types::private::AssertTypeEq::<
11012                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11013                    >(_) => {}
11014                }
11015            }
11016            #[automatically_derived]
11017            #[doc(hidden)]
11018            impl ::core::convert::From<stateHistoryCommitmentsReturn>
11019            for UnderlyingRustTuple<'_> {
11020                fn from(value: stateHistoryCommitmentsReturn) -> Self {
11021                    (
11022                        value.l1BlockHeight,
11023                        value.l1BlockTimestamp,
11024                        value.hotShotBlockHeight,
11025                        value.hotShotBlockCommRoot,
11026                    )
11027                }
11028            }
11029            #[automatically_derived]
11030            #[doc(hidden)]
11031            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11032            for stateHistoryCommitmentsReturn {
11033                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11034                    Self {
11035                        l1BlockHeight: tuple.0,
11036                        l1BlockTimestamp: tuple.1,
11037                        hotShotBlockHeight: tuple.2,
11038                        hotShotBlockCommRoot: tuple.3,
11039                    }
11040                }
11041            }
11042        }
11043        impl stateHistoryCommitmentsReturn {
11044            fn _tokenize(
11045                &self,
11046            ) -> <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::ReturnToken<
11047                '_,
11048            > {
11049                (
11050                    <alloy::sol_types::sol_data::Uint<
11051                        64,
11052                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
11053                    <alloy::sol_types::sol_data::Uint<
11054                        64,
11055                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
11056                    <alloy::sol_types::sol_data::Uint<
11057                        64,
11058                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
11059                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
11060                        &self.hotShotBlockCommRoot,
11061                    ),
11062                )
11063            }
11064        }
11065        #[automatically_derived]
11066        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
11067            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11068            type Token<'a> = <Self::Parameters<
11069                'a,
11070            > as alloy_sol_types::SolType>::Token<'a>;
11071            type Return = stateHistoryCommitmentsReturn;
11072            type ReturnTuple<'a> = (
11073                alloy::sol_types::sol_data::Uint<64>,
11074                alloy::sol_types::sol_data::Uint<64>,
11075                alloy::sol_types::sol_data::Uint<64>,
11076                BN254::ScalarField,
11077            );
11078            type ReturnToken<'a> = <Self::ReturnTuple<
11079                'a,
11080            > as alloy_sol_types::SolType>::Token<'a>;
11081            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
11082            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
11083            #[inline]
11084            fn new<'a>(
11085                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11086            ) -> Self {
11087                tuple.into()
11088            }
11089            #[inline]
11090            fn tokenize(&self) -> Self::Token<'_> {
11091                (
11092                    <alloy::sol_types::sol_data::Uint<
11093                        256,
11094                    > as alloy_sol_types::SolType>::tokenize(&self.0),
11095                )
11096            }
11097            #[inline]
11098            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11099                stateHistoryCommitmentsReturn::_tokenize(ret)
11100            }
11101            #[inline]
11102            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11103                <Self::ReturnTuple<
11104                    '_,
11105                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11106                    .map(Into::into)
11107            }
11108            #[inline]
11109            fn abi_decode_returns_validate(
11110                data: &[u8],
11111            ) -> alloy_sol_types::Result<Self::Return> {
11112                <Self::ReturnTuple<
11113                    '_,
11114                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11115                    .map(Into::into)
11116            }
11117        }
11118    };
11119    #[derive(serde::Serialize, serde::Deserialize)]
11120    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11121    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
11122```solidity
11123function stateHistoryFirstIndex() external view returns (uint64);
11124```*/
11125    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11126    #[derive(Clone)]
11127    pub struct stateHistoryFirstIndexCall;
11128    #[derive(serde::Serialize, serde::Deserialize)]
11129    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11130    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
11131    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11132    #[derive(Clone)]
11133    pub struct stateHistoryFirstIndexReturn {
11134        #[allow(missing_docs)]
11135        pub _0: u64,
11136    }
11137    #[allow(
11138        non_camel_case_types,
11139        non_snake_case,
11140        clippy::pub_underscore_fields,
11141        clippy::style
11142    )]
11143    const _: () = {
11144        use alloy::sol_types as alloy_sol_types;
11145        {
11146            #[doc(hidden)]
11147            #[allow(dead_code)]
11148            type UnderlyingSolTuple<'a> = ();
11149            #[doc(hidden)]
11150            type UnderlyingRustTuple<'a> = ();
11151            #[cfg(test)]
11152            #[allow(dead_code, unreachable_patterns)]
11153            fn _type_assertion(
11154                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11155            ) {
11156                match _t {
11157                    alloy_sol_types::private::AssertTypeEq::<
11158                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11159                    >(_) => {}
11160                }
11161            }
11162            #[automatically_derived]
11163            #[doc(hidden)]
11164            impl ::core::convert::From<stateHistoryFirstIndexCall>
11165            for UnderlyingRustTuple<'_> {
11166                fn from(value: stateHistoryFirstIndexCall) -> Self {
11167                    ()
11168                }
11169            }
11170            #[automatically_derived]
11171            #[doc(hidden)]
11172            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11173            for stateHistoryFirstIndexCall {
11174                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11175                    Self
11176                }
11177            }
11178        }
11179        {
11180            #[doc(hidden)]
11181            #[allow(dead_code)]
11182            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11183            #[doc(hidden)]
11184            type UnderlyingRustTuple<'a> = (u64,);
11185            #[cfg(test)]
11186            #[allow(dead_code, unreachable_patterns)]
11187            fn _type_assertion(
11188                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11189            ) {
11190                match _t {
11191                    alloy_sol_types::private::AssertTypeEq::<
11192                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11193                    >(_) => {}
11194                }
11195            }
11196            #[automatically_derived]
11197            #[doc(hidden)]
11198            impl ::core::convert::From<stateHistoryFirstIndexReturn>
11199            for UnderlyingRustTuple<'_> {
11200                fn from(value: stateHistoryFirstIndexReturn) -> Self {
11201                    (value._0,)
11202                }
11203            }
11204            #[automatically_derived]
11205            #[doc(hidden)]
11206            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11207            for stateHistoryFirstIndexReturn {
11208                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11209                    Self { _0: tuple.0 }
11210                }
11211            }
11212        }
11213        #[automatically_derived]
11214        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
11215            type Parameters<'a> = ();
11216            type Token<'a> = <Self::Parameters<
11217                'a,
11218            > as alloy_sol_types::SolType>::Token<'a>;
11219            type Return = u64;
11220            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11221            type ReturnToken<'a> = <Self::ReturnTuple<
11222                'a,
11223            > as alloy_sol_types::SolType>::Token<'a>;
11224            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
11225            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
11226            #[inline]
11227            fn new<'a>(
11228                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11229            ) -> Self {
11230                tuple.into()
11231            }
11232            #[inline]
11233            fn tokenize(&self) -> Self::Token<'_> {
11234                ()
11235            }
11236            #[inline]
11237            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11238                (
11239                    <alloy::sol_types::sol_data::Uint<
11240                        64,
11241                    > as alloy_sol_types::SolType>::tokenize(ret),
11242                )
11243            }
11244            #[inline]
11245            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11246                <Self::ReturnTuple<
11247                    '_,
11248                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11249                    .map(|r| {
11250                        let r: stateHistoryFirstIndexReturn = r.into();
11251                        r._0
11252                    })
11253            }
11254            #[inline]
11255            fn abi_decode_returns_validate(
11256                data: &[u8],
11257            ) -> alloy_sol_types::Result<Self::Return> {
11258                <Self::ReturnTuple<
11259                    '_,
11260                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11261                    .map(|r| {
11262                        let r: stateHistoryFirstIndexReturn = r.into();
11263                        r._0
11264                    })
11265            }
11266        }
11267    };
11268    #[derive(serde::Serialize, serde::Deserialize)]
11269    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11270    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
11271```solidity
11272function stateHistoryRetentionPeriod() external view returns (uint32);
11273```*/
11274    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11275    #[derive(Clone)]
11276    pub struct stateHistoryRetentionPeriodCall;
11277    #[derive(serde::Serialize, serde::Deserialize)]
11278    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11279    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
11280    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11281    #[derive(Clone)]
11282    pub struct stateHistoryRetentionPeriodReturn {
11283        #[allow(missing_docs)]
11284        pub _0: u32,
11285    }
11286    #[allow(
11287        non_camel_case_types,
11288        non_snake_case,
11289        clippy::pub_underscore_fields,
11290        clippy::style
11291    )]
11292    const _: () = {
11293        use alloy::sol_types as alloy_sol_types;
11294        {
11295            #[doc(hidden)]
11296            #[allow(dead_code)]
11297            type UnderlyingSolTuple<'a> = ();
11298            #[doc(hidden)]
11299            type UnderlyingRustTuple<'a> = ();
11300            #[cfg(test)]
11301            #[allow(dead_code, unreachable_patterns)]
11302            fn _type_assertion(
11303                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11304            ) {
11305                match _t {
11306                    alloy_sol_types::private::AssertTypeEq::<
11307                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11308                    >(_) => {}
11309                }
11310            }
11311            #[automatically_derived]
11312            #[doc(hidden)]
11313            impl ::core::convert::From<stateHistoryRetentionPeriodCall>
11314            for UnderlyingRustTuple<'_> {
11315                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
11316                    ()
11317                }
11318            }
11319            #[automatically_derived]
11320            #[doc(hidden)]
11321            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11322            for stateHistoryRetentionPeriodCall {
11323                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11324                    Self
11325                }
11326            }
11327        }
11328        {
11329            #[doc(hidden)]
11330            #[allow(dead_code)]
11331            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
11332            #[doc(hidden)]
11333            type UnderlyingRustTuple<'a> = (u32,);
11334            #[cfg(test)]
11335            #[allow(dead_code, unreachable_patterns)]
11336            fn _type_assertion(
11337                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11338            ) {
11339                match _t {
11340                    alloy_sol_types::private::AssertTypeEq::<
11341                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11342                    >(_) => {}
11343                }
11344            }
11345            #[automatically_derived]
11346            #[doc(hidden)]
11347            impl ::core::convert::From<stateHistoryRetentionPeriodReturn>
11348            for UnderlyingRustTuple<'_> {
11349                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
11350                    (value._0,)
11351                }
11352            }
11353            #[automatically_derived]
11354            #[doc(hidden)]
11355            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11356            for stateHistoryRetentionPeriodReturn {
11357                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11358                    Self { _0: tuple.0 }
11359                }
11360            }
11361        }
11362        #[automatically_derived]
11363        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
11364            type Parameters<'a> = ();
11365            type Token<'a> = <Self::Parameters<
11366                'a,
11367            > as alloy_sol_types::SolType>::Token<'a>;
11368            type Return = u32;
11369            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
11370            type ReturnToken<'a> = <Self::ReturnTuple<
11371                'a,
11372            > as alloy_sol_types::SolType>::Token<'a>;
11373            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
11374            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
11375            #[inline]
11376            fn new<'a>(
11377                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11378            ) -> Self {
11379                tuple.into()
11380            }
11381            #[inline]
11382            fn tokenize(&self) -> Self::Token<'_> {
11383                ()
11384            }
11385            #[inline]
11386            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11387                (
11388                    <alloy::sol_types::sol_data::Uint<
11389                        32,
11390                    > as alloy_sol_types::SolType>::tokenize(ret),
11391                )
11392            }
11393            #[inline]
11394            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11395                <Self::ReturnTuple<
11396                    '_,
11397                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11398                    .map(|r| {
11399                        let r: stateHistoryRetentionPeriodReturn = r.into();
11400                        r._0
11401                    })
11402            }
11403            #[inline]
11404            fn abi_decode_returns_validate(
11405                data: &[u8],
11406            ) -> alloy_sol_types::Result<Self::Return> {
11407                <Self::ReturnTuple<
11408                    '_,
11409                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11410                    .map(|r| {
11411                        let r: stateHistoryRetentionPeriodReturn = r.into();
11412                        r._0
11413                    })
11414            }
11415        }
11416    };
11417    #[derive(serde::Serialize, serde::Deserialize)]
11418    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11419    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
11420```solidity
11421function transferOwnership(address newOwner) external;
11422```*/
11423    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11424    #[derive(Clone)]
11425    pub struct transferOwnershipCall {
11426        #[allow(missing_docs)]
11427        pub newOwner: alloy::sol_types::private::Address,
11428    }
11429    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
11430    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11431    #[derive(Clone)]
11432    pub struct transferOwnershipReturn {}
11433    #[allow(
11434        non_camel_case_types,
11435        non_snake_case,
11436        clippy::pub_underscore_fields,
11437        clippy::style
11438    )]
11439    const _: () = {
11440        use alloy::sol_types as alloy_sol_types;
11441        {
11442            #[doc(hidden)]
11443            #[allow(dead_code)]
11444            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11445            #[doc(hidden)]
11446            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11447            #[cfg(test)]
11448            #[allow(dead_code, unreachable_patterns)]
11449            fn _type_assertion(
11450                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11451            ) {
11452                match _t {
11453                    alloy_sol_types::private::AssertTypeEq::<
11454                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11455                    >(_) => {}
11456                }
11457            }
11458            #[automatically_derived]
11459            #[doc(hidden)]
11460            impl ::core::convert::From<transferOwnershipCall>
11461            for UnderlyingRustTuple<'_> {
11462                fn from(value: transferOwnershipCall) -> Self {
11463                    (value.newOwner,)
11464                }
11465            }
11466            #[automatically_derived]
11467            #[doc(hidden)]
11468            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11469            for transferOwnershipCall {
11470                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11471                    Self { newOwner: tuple.0 }
11472                }
11473            }
11474        }
11475        {
11476            #[doc(hidden)]
11477            #[allow(dead_code)]
11478            type UnderlyingSolTuple<'a> = ();
11479            #[doc(hidden)]
11480            type UnderlyingRustTuple<'a> = ();
11481            #[cfg(test)]
11482            #[allow(dead_code, unreachable_patterns)]
11483            fn _type_assertion(
11484                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11485            ) {
11486                match _t {
11487                    alloy_sol_types::private::AssertTypeEq::<
11488                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11489                    >(_) => {}
11490                }
11491            }
11492            #[automatically_derived]
11493            #[doc(hidden)]
11494            impl ::core::convert::From<transferOwnershipReturn>
11495            for UnderlyingRustTuple<'_> {
11496                fn from(value: transferOwnershipReturn) -> Self {
11497                    ()
11498                }
11499            }
11500            #[automatically_derived]
11501            #[doc(hidden)]
11502            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11503            for transferOwnershipReturn {
11504                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11505                    Self {}
11506                }
11507            }
11508        }
11509        impl transferOwnershipReturn {
11510            fn _tokenize(
11511                &self,
11512            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
11513                ()
11514            }
11515        }
11516        #[automatically_derived]
11517        impl alloy_sol_types::SolCall for transferOwnershipCall {
11518            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
11519            type Token<'a> = <Self::Parameters<
11520                'a,
11521            > as alloy_sol_types::SolType>::Token<'a>;
11522            type Return = transferOwnershipReturn;
11523            type ReturnTuple<'a> = ();
11524            type ReturnToken<'a> = <Self::ReturnTuple<
11525                'a,
11526            > as alloy_sol_types::SolType>::Token<'a>;
11527            const SIGNATURE: &'static str = "transferOwnership(address)";
11528            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
11529            #[inline]
11530            fn new<'a>(
11531                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11532            ) -> Self {
11533                tuple.into()
11534            }
11535            #[inline]
11536            fn tokenize(&self) -> Self::Token<'_> {
11537                (
11538                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11539                        &self.newOwner,
11540                    ),
11541                )
11542            }
11543            #[inline]
11544            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11545                transferOwnershipReturn::_tokenize(ret)
11546            }
11547            #[inline]
11548            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11549                <Self::ReturnTuple<
11550                    '_,
11551                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11552                    .map(Into::into)
11553            }
11554            #[inline]
11555            fn abi_decode_returns_validate(
11556                data: &[u8],
11557            ) -> alloy_sol_types::Result<Self::Return> {
11558                <Self::ReturnTuple<
11559                    '_,
11560                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11561                    .map(Into::into)
11562            }
11563        }
11564    };
11565    #[derive(serde::Serialize, serde::Deserialize)]
11566    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11567    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
11568```solidity
11569function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
11570```*/
11571    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11572    #[derive(Clone)]
11573    pub struct upgradeToAndCallCall {
11574        #[allow(missing_docs)]
11575        pub newImplementation: alloy::sol_types::private::Address,
11576        #[allow(missing_docs)]
11577        pub data: alloy::sol_types::private::Bytes,
11578    }
11579    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
11580    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11581    #[derive(Clone)]
11582    pub struct upgradeToAndCallReturn {}
11583    #[allow(
11584        non_camel_case_types,
11585        non_snake_case,
11586        clippy::pub_underscore_fields,
11587        clippy::style
11588    )]
11589    const _: () = {
11590        use alloy::sol_types as alloy_sol_types;
11591        {
11592            #[doc(hidden)]
11593            #[allow(dead_code)]
11594            type UnderlyingSolTuple<'a> = (
11595                alloy::sol_types::sol_data::Address,
11596                alloy::sol_types::sol_data::Bytes,
11597            );
11598            #[doc(hidden)]
11599            type UnderlyingRustTuple<'a> = (
11600                alloy::sol_types::private::Address,
11601                alloy::sol_types::private::Bytes,
11602            );
11603            #[cfg(test)]
11604            #[allow(dead_code, unreachable_patterns)]
11605            fn _type_assertion(
11606                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11607            ) {
11608                match _t {
11609                    alloy_sol_types::private::AssertTypeEq::<
11610                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11611                    >(_) => {}
11612                }
11613            }
11614            #[automatically_derived]
11615            #[doc(hidden)]
11616            impl ::core::convert::From<upgradeToAndCallCall>
11617            for UnderlyingRustTuple<'_> {
11618                fn from(value: upgradeToAndCallCall) -> Self {
11619                    (value.newImplementation, value.data)
11620                }
11621            }
11622            #[automatically_derived]
11623            #[doc(hidden)]
11624            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11625            for upgradeToAndCallCall {
11626                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11627                    Self {
11628                        newImplementation: tuple.0,
11629                        data: tuple.1,
11630                    }
11631                }
11632            }
11633        }
11634        {
11635            #[doc(hidden)]
11636            #[allow(dead_code)]
11637            type UnderlyingSolTuple<'a> = ();
11638            #[doc(hidden)]
11639            type UnderlyingRustTuple<'a> = ();
11640            #[cfg(test)]
11641            #[allow(dead_code, unreachable_patterns)]
11642            fn _type_assertion(
11643                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11644            ) {
11645                match _t {
11646                    alloy_sol_types::private::AssertTypeEq::<
11647                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11648                    >(_) => {}
11649                }
11650            }
11651            #[automatically_derived]
11652            #[doc(hidden)]
11653            impl ::core::convert::From<upgradeToAndCallReturn>
11654            for UnderlyingRustTuple<'_> {
11655                fn from(value: upgradeToAndCallReturn) -> Self {
11656                    ()
11657                }
11658            }
11659            #[automatically_derived]
11660            #[doc(hidden)]
11661            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11662            for upgradeToAndCallReturn {
11663                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11664                    Self {}
11665                }
11666            }
11667        }
11668        impl upgradeToAndCallReturn {
11669            fn _tokenize(
11670                &self,
11671            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
11672                ()
11673            }
11674        }
11675        #[automatically_derived]
11676        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
11677            type Parameters<'a> = (
11678                alloy::sol_types::sol_data::Address,
11679                alloy::sol_types::sol_data::Bytes,
11680            );
11681            type Token<'a> = <Self::Parameters<
11682                'a,
11683            > as alloy_sol_types::SolType>::Token<'a>;
11684            type Return = upgradeToAndCallReturn;
11685            type ReturnTuple<'a> = ();
11686            type ReturnToken<'a> = <Self::ReturnTuple<
11687                'a,
11688            > as alloy_sol_types::SolType>::Token<'a>;
11689            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
11690            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
11691            #[inline]
11692            fn new<'a>(
11693                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11694            ) -> Self {
11695                tuple.into()
11696            }
11697            #[inline]
11698            fn tokenize(&self) -> Self::Token<'_> {
11699                (
11700                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11701                        &self.newImplementation,
11702                    ),
11703                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
11704                        &self.data,
11705                    ),
11706                )
11707            }
11708            #[inline]
11709            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11710                upgradeToAndCallReturn::_tokenize(ret)
11711            }
11712            #[inline]
11713            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11714                <Self::ReturnTuple<
11715                    '_,
11716                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11717                    .map(Into::into)
11718            }
11719            #[inline]
11720            fn abi_decode_returns_validate(
11721                data: &[u8],
11722            ) -> alloy_sol_types::Result<Self::Return> {
11723                <Self::ReturnTuple<
11724                    '_,
11725                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11726                    .map(Into::into)
11727            }
11728        }
11729    };
11730    ///Container for all the [`LightClientMock`](self) function calls.
11731    #[derive(serde::Serialize, serde::Deserialize)]
11732    #[derive()]
11733    pub enum LightClientMockCalls {
11734        #[allow(missing_docs)]
11735        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
11736        #[allow(missing_docs)]
11737        _getVk(_getVkCall),
11738        #[allow(missing_docs)]
11739        currentBlockNumber(currentBlockNumberCall),
11740        #[allow(missing_docs)]
11741        disablePermissionedProverMode(disablePermissionedProverModeCall),
11742        #[allow(missing_docs)]
11743        finalizedState(finalizedStateCall),
11744        #[allow(missing_docs)]
11745        genesisStakeTableState(genesisStakeTableStateCall),
11746        #[allow(missing_docs)]
11747        genesisState(genesisStateCall),
11748        #[allow(missing_docs)]
11749        getHotShotCommitment(getHotShotCommitmentCall),
11750        #[allow(missing_docs)]
11751        getStateHistoryCount(getStateHistoryCountCall),
11752        #[allow(missing_docs)]
11753        getVersion(getVersionCall),
11754        #[allow(missing_docs)]
11755        initialize(initializeCall),
11756        #[allow(missing_docs)]
11757        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
11758        #[allow(missing_docs)]
11759        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
11760        #[allow(missing_docs)]
11761        newFinalizedState(newFinalizedStateCall),
11762        #[allow(missing_docs)]
11763        owner(ownerCall),
11764        #[allow(missing_docs)]
11765        permissionedProver(permissionedProverCall),
11766        #[allow(missing_docs)]
11767        proxiableUUID(proxiableUUIDCall),
11768        #[allow(missing_docs)]
11769        renounceOwnership(renounceOwnershipCall),
11770        #[allow(missing_docs)]
11771        setFinalizedState(setFinalizedStateCall),
11772        #[allow(missing_docs)]
11773        setHotShotDownSince(setHotShotDownSinceCall),
11774        #[allow(missing_docs)]
11775        setHotShotUp(setHotShotUpCall),
11776        #[allow(missing_docs)]
11777        setPermissionedProver(setPermissionedProverCall),
11778        #[allow(missing_docs)]
11779        setStateHistory(setStateHistoryCall),
11780        #[allow(missing_docs)]
11781        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
11782        #[allow(missing_docs)]
11783        stateHistoryCommitments(stateHistoryCommitmentsCall),
11784        #[allow(missing_docs)]
11785        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
11786        #[allow(missing_docs)]
11787        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
11788        #[allow(missing_docs)]
11789        transferOwnership(transferOwnershipCall),
11790        #[allow(missing_docs)]
11791        upgradeToAndCall(upgradeToAndCallCall),
11792    }
11793    #[automatically_derived]
11794    impl LightClientMockCalls {
11795        /// All the selectors of this enum.
11796        ///
11797        /// Note that the selectors might not be in the same order as the variants.
11798        /// No guarantees are made about the order of the selectors.
11799        ///
11800        /// Prefer using `SolInterface` methods instead.
11801        pub const SELECTORS: &'static [[u8; 4usize]] = &[
11802            [1u8, 63u8, 165u8, 252u8],
11803            [2u8, 181u8, 146u8, 243u8],
11804            [13u8, 142u8, 110u8, 44u8],
11805            [18u8, 23u8, 60u8, 44u8],
11806            [32u8, 99u8, 212u8, 247u8],
11807            [45u8, 82u8, 170u8, 214u8],
11808            [47u8, 121u8, 136u8, 157u8],
11809            [49u8, 61u8, 247u8, 177u8],
11810            [55u8, 142u8, 194u8, 59u8],
11811            [66u8, 109u8, 49u8, 148u8],
11812            [79u8, 30u8, 242u8, 134u8],
11813            [82u8, 209u8, 144u8, 45u8],
11814            [105u8, 204u8, 106u8, 4u8],
11815            [113u8, 80u8, 24u8, 166u8],
11816            [130u8, 110u8, 65u8, 252u8],
11817            [133u8, 132u8, 210u8, 63u8],
11818            [141u8, 165u8, 203u8, 91u8],
11819            [150u8, 193u8, 202u8, 97u8],
11820            [155u8, 170u8, 60u8, 201u8],
11821            [159u8, 219u8, 84u8, 167u8],
11822            [173u8, 60u8, 177u8, 204u8],
11823            [181u8, 173u8, 234u8, 60u8],
11824            [194u8, 59u8, 158u8, 158u8],
11825            [200u8, 229u8, 228u8, 152u8],
11826            [210u8, 77u8, 147u8, 61u8],
11827            [224u8, 48u8, 51u8, 1u8],
11828            [242u8, 253u8, 227u8, 139u8],
11829            [245u8, 103u8, 97u8, 96u8],
11830            [249u8, 229u8, 13u8, 25u8],
11831        ];
11832    }
11833    #[automatically_derived]
11834    impl alloy_sol_types::SolInterface for LightClientMockCalls {
11835        const NAME: &'static str = "LightClientMockCalls";
11836        const MIN_DATA_LENGTH: usize = 0usize;
11837        const COUNT: usize = 29usize;
11838        #[inline]
11839        fn selector(&self) -> [u8; 4] {
11840            match self {
11841                Self::UPGRADE_INTERFACE_VERSION(_) => {
11842                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
11843                }
11844                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
11845                Self::currentBlockNumber(_) => {
11846                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
11847                }
11848                Self::disablePermissionedProverMode(_) => {
11849                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
11850                }
11851                Self::finalizedState(_) => {
11852                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
11853                }
11854                Self::genesisStakeTableState(_) => {
11855                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
11856                }
11857                Self::genesisState(_) => {
11858                    <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR
11859                }
11860                Self::getHotShotCommitment(_) => {
11861                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
11862                }
11863                Self::getStateHistoryCount(_) => {
11864                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
11865                }
11866                Self::getVersion(_) => {
11867                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
11868                }
11869                Self::initialize(_) => {
11870                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
11871                }
11872                Self::isPermissionedProverEnabled(_) => {
11873                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
11874                }
11875                Self::lagOverEscapeHatchThreshold(_) => {
11876                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
11877                }
11878                Self::newFinalizedState(_) => {
11879                    <newFinalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
11880                }
11881                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
11882                Self::permissionedProver(_) => {
11883                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
11884                }
11885                Self::proxiableUUID(_) => {
11886                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
11887                }
11888                Self::renounceOwnership(_) => {
11889                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
11890                }
11891                Self::setFinalizedState(_) => {
11892                    <setFinalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
11893                }
11894                Self::setHotShotDownSince(_) => {
11895                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::SELECTOR
11896                }
11897                Self::setHotShotUp(_) => {
11898                    <setHotShotUpCall as alloy_sol_types::SolCall>::SELECTOR
11899                }
11900                Self::setPermissionedProver(_) => {
11901                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
11902                }
11903                Self::setStateHistory(_) => {
11904                    <setStateHistoryCall as alloy_sol_types::SolCall>::SELECTOR
11905                }
11906                Self::setstateHistoryRetentionPeriod(_) => {
11907                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
11908                }
11909                Self::stateHistoryCommitments(_) => {
11910                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
11911                }
11912                Self::stateHistoryFirstIndex(_) => {
11913                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
11914                }
11915                Self::stateHistoryRetentionPeriod(_) => {
11916                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
11917                }
11918                Self::transferOwnership(_) => {
11919                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
11920                }
11921                Self::upgradeToAndCall(_) => {
11922                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
11923                }
11924            }
11925        }
11926        #[inline]
11927        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
11928            Self::SELECTORS.get(i).copied()
11929        }
11930        #[inline]
11931        fn valid_selector(selector: [u8; 4]) -> bool {
11932            Self::SELECTORS.binary_search(&selector).is_ok()
11933        }
11934        #[inline]
11935        #[allow(non_snake_case)]
11936        fn abi_decode_raw(
11937            selector: [u8; 4],
11938            data: &[u8],
11939        ) -> alloy_sol_types::Result<Self> {
11940            static DECODE_SHIMS: &[fn(
11941                &[u8],
11942            ) -> alloy_sol_types::Result<LightClientMockCalls>] = &[
11943                {
11944                    fn setPermissionedProver(
11945                        data: &[u8],
11946                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
11947                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
11948                                data,
11949                            )
11950                            .map(LightClientMockCalls::setPermissionedProver)
11951                    }
11952                    setPermissionedProver
11953                },
11954                {
11955                    fn stateHistoryCommitments(
11956                        data: &[u8],
11957                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
11958                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
11959                                data,
11960                            )
11961                            .map(LightClientMockCalls::stateHistoryCommitments)
11962                    }
11963                    stateHistoryCommitments
11964                },
11965                {
11966                    fn getVersion(
11967                        data: &[u8],
11968                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
11969                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
11970                                data,
11971                            )
11972                            .map(LightClientMockCalls::getVersion)
11973                    }
11974                    getVersion
11975                },
11976                {
11977                    fn _getVk(
11978                        data: &[u8],
11979                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
11980                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
11981                            .map(LightClientMockCalls::_getVk)
11982                    }
11983                    _getVk
11984                },
11985                {
11986                    fn newFinalizedState(
11987                        data: &[u8],
11988                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
11989                        <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
11990                                data,
11991                            )
11992                            .map(LightClientMockCalls::newFinalizedState)
11993                    }
11994                    newFinalizedState
11995                },
11996                {
11997                    fn setHotShotDownSince(
11998                        data: &[u8],
11999                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12000                        <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_decode_raw(
12001                                data,
12002                            )
12003                            .map(LightClientMockCalls::setHotShotDownSince)
12004                    }
12005                    setHotShotDownSince
12006                },
12007                {
12008                    fn stateHistoryFirstIndex(
12009                        data: &[u8],
12010                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12011                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
12012                                data,
12013                            )
12014                            .map(LightClientMockCalls::stateHistoryFirstIndex)
12015                    }
12016                    stateHistoryFirstIndex
12017                },
12018                {
12019                    fn permissionedProver(
12020                        data: &[u8],
12021                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12022                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
12023                                data,
12024                            )
12025                            .map(LightClientMockCalls::permissionedProver)
12026                    }
12027                    permissionedProver
12028                },
12029                {
12030                    fn currentBlockNumber(
12031                        data: &[u8],
12032                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12033                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
12034                                data,
12035                            )
12036                            .map(LightClientMockCalls::currentBlockNumber)
12037                    }
12038                    currentBlockNumber
12039                },
12040                {
12041                    fn genesisStakeTableState(
12042                        data: &[u8],
12043                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12044                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
12045                                data,
12046                            )
12047                            .map(LightClientMockCalls::genesisStakeTableState)
12048                    }
12049                    genesisStakeTableState
12050                },
12051                {
12052                    fn upgradeToAndCall(
12053                        data: &[u8],
12054                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12055                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
12056                                data,
12057                            )
12058                            .map(LightClientMockCalls::upgradeToAndCall)
12059                    }
12060                    upgradeToAndCall
12061                },
12062                {
12063                    fn proxiableUUID(
12064                        data: &[u8],
12065                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12066                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
12067                                data,
12068                            )
12069                            .map(LightClientMockCalls::proxiableUUID)
12070                    }
12071                    proxiableUUID
12072                },
12073                {
12074                    fn disablePermissionedProverMode(
12075                        data: &[u8],
12076                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12077                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
12078                                data,
12079                            )
12080                            .map(LightClientMockCalls::disablePermissionedProverMode)
12081                    }
12082                    disablePermissionedProverMode
12083                },
12084                {
12085                    fn renounceOwnership(
12086                        data: &[u8],
12087                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12088                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
12089                                data,
12090                            )
12091                            .map(LightClientMockCalls::renounceOwnership)
12092                    }
12093                    renounceOwnership
12094                },
12095                {
12096                    fn isPermissionedProverEnabled(
12097                        data: &[u8],
12098                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12099                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
12100                                data,
12101                            )
12102                            .map(LightClientMockCalls::isPermissionedProverEnabled)
12103                    }
12104                    isPermissionedProverEnabled
12105                },
12106                {
12107                    fn getHotShotCommitment(
12108                        data: &[u8],
12109                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12110                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
12111                                data,
12112                            )
12113                            .map(LightClientMockCalls::getHotShotCommitment)
12114                    }
12115                    getHotShotCommitment
12116                },
12117                {
12118                    fn owner(
12119                        data: &[u8],
12120                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12121                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
12122                            .map(LightClientMockCalls::owner)
12123                    }
12124                    owner
12125                },
12126                {
12127                    fn setstateHistoryRetentionPeriod(
12128                        data: &[u8],
12129                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12130                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
12131                                data,
12132                            )
12133                            .map(LightClientMockCalls::setstateHistoryRetentionPeriod)
12134                    }
12135                    setstateHistoryRetentionPeriod
12136                },
12137                {
12138                    fn initialize(
12139                        data: &[u8],
12140                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12141                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
12142                                data,
12143                            )
12144                            .map(LightClientMockCalls::initialize)
12145                    }
12146                    initialize
12147                },
12148                {
12149                    fn finalizedState(
12150                        data: &[u8],
12151                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12152                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
12153                                data,
12154                            )
12155                            .map(LightClientMockCalls::finalizedState)
12156                    }
12157                    finalizedState
12158                },
12159                {
12160                    fn UPGRADE_INTERFACE_VERSION(
12161                        data: &[u8],
12162                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12163                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
12164                                data,
12165                            )
12166                            .map(LightClientMockCalls::UPGRADE_INTERFACE_VERSION)
12167                    }
12168                    UPGRADE_INTERFACE_VERSION
12169                },
12170                {
12171                    fn setFinalizedState(
12172                        data: &[u8],
12173                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12174                        <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
12175                                data,
12176                            )
12177                            .map(LightClientMockCalls::setFinalizedState)
12178                    }
12179                    setFinalizedState
12180                },
12181                {
12182                    fn stateHistoryRetentionPeriod(
12183                        data: &[u8],
12184                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12185                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
12186                                data,
12187                            )
12188                            .map(LightClientMockCalls::stateHistoryRetentionPeriod)
12189                    }
12190                    stateHistoryRetentionPeriod
12191                },
12192                {
12193                    fn setHotShotUp(
12194                        data: &[u8],
12195                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12196                        <setHotShotUpCall as alloy_sol_types::SolCall>::abi_decode_raw(
12197                                data,
12198                            )
12199                            .map(LightClientMockCalls::setHotShotUp)
12200                    }
12201                    setHotShotUp
12202                },
12203                {
12204                    fn genesisState(
12205                        data: &[u8],
12206                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12207                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
12208                                data,
12209                            )
12210                            .map(LightClientMockCalls::genesisState)
12211                    }
12212                    genesisState
12213                },
12214                {
12215                    fn lagOverEscapeHatchThreshold(
12216                        data: &[u8],
12217                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12218                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
12219                                data,
12220                            )
12221                            .map(LightClientMockCalls::lagOverEscapeHatchThreshold)
12222                    }
12223                    lagOverEscapeHatchThreshold
12224                },
12225                {
12226                    fn transferOwnership(
12227                        data: &[u8],
12228                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12229                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
12230                                data,
12231                            )
12232                            .map(LightClientMockCalls::transferOwnership)
12233                    }
12234                    transferOwnership
12235                },
12236                {
12237                    fn setStateHistory(
12238                        data: &[u8],
12239                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12240                        <setStateHistoryCall as alloy_sol_types::SolCall>::abi_decode_raw(
12241                                data,
12242                            )
12243                            .map(LightClientMockCalls::setStateHistory)
12244                    }
12245                    setStateHistory
12246                },
12247                {
12248                    fn getStateHistoryCount(
12249                        data: &[u8],
12250                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12251                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
12252                                data,
12253                            )
12254                            .map(LightClientMockCalls::getStateHistoryCount)
12255                    }
12256                    getStateHistoryCount
12257                },
12258            ];
12259            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
12260                return Err(
12261                    alloy_sol_types::Error::unknown_selector(
12262                        <Self as alloy_sol_types::SolInterface>::NAME,
12263                        selector,
12264                    ),
12265                );
12266            };
12267            DECODE_SHIMS[idx](data)
12268        }
12269        #[inline]
12270        #[allow(non_snake_case)]
12271        fn abi_decode_raw_validate(
12272            selector: [u8; 4],
12273            data: &[u8],
12274        ) -> alloy_sol_types::Result<Self> {
12275            static DECODE_VALIDATE_SHIMS: &[fn(
12276                &[u8],
12277            ) -> alloy_sol_types::Result<LightClientMockCalls>] = &[
12278                {
12279                    fn setPermissionedProver(
12280                        data: &[u8],
12281                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12282                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12283                                data,
12284                            )
12285                            .map(LightClientMockCalls::setPermissionedProver)
12286                    }
12287                    setPermissionedProver
12288                },
12289                {
12290                    fn stateHistoryCommitments(
12291                        data: &[u8],
12292                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12293                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12294                                data,
12295                            )
12296                            .map(LightClientMockCalls::stateHistoryCommitments)
12297                    }
12298                    stateHistoryCommitments
12299                },
12300                {
12301                    fn getVersion(
12302                        data: &[u8],
12303                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12304                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12305                                data,
12306                            )
12307                            .map(LightClientMockCalls::getVersion)
12308                    }
12309                    getVersion
12310                },
12311                {
12312                    fn _getVk(
12313                        data: &[u8],
12314                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12315                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12316                                data,
12317                            )
12318                            .map(LightClientMockCalls::_getVk)
12319                    }
12320                    _getVk
12321                },
12322                {
12323                    fn newFinalizedState(
12324                        data: &[u8],
12325                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12326                        <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12327                                data,
12328                            )
12329                            .map(LightClientMockCalls::newFinalizedState)
12330                    }
12331                    newFinalizedState
12332                },
12333                {
12334                    fn setHotShotDownSince(
12335                        data: &[u8],
12336                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12337                        <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12338                                data,
12339                            )
12340                            .map(LightClientMockCalls::setHotShotDownSince)
12341                    }
12342                    setHotShotDownSince
12343                },
12344                {
12345                    fn stateHistoryFirstIndex(
12346                        data: &[u8],
12347                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12348                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12349                                data,
12350                            )
12351                            .map(LightClientMockCalls::stateHistoryFirstIndex)
12352                    }
12353                    stateHistoryFirstIndex
12354                },
12355                {
12356                    fn permissionedProver(
12357                        data: &[u8],
12358                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12359                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12360                                data,
12361                            )
12362                            .map(LightClientMockCalls::permissionedProver)
12363                    }
12364                    permissionedProver
12365                },
12366                {
12367                    fn currentBlockNumber(
12368                        data: &[u8],
12369                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12370                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12371                                data,
12372                            )
12373                            .map(LightClientMockCalls::currentBlockNumber)
12374                    }
12375                    currentBlockNumber
12376                },
12377                {
12378                    fn genesisStakeTableState(
12379                        data: &[u8],
12380                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12381                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12382                                data,
12383                            )
12384                            .map(LightClientMockCalls::genesisStakeTableState)
12385                    }
12386                    genesisStakeTableState
12387                },
12388                {
12389                    fn upgradeToAndCall(
12390                        data: &[u8],
12391                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12392                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12393                                data,
12394                            )
12395                            .map(LightClientMockCalls::upgradeToAndCall)
12396                    }
12397                    upgradeToAndCall
12398                },
12399                {
12400                    fn proxiableUUID(
12401                        data: &[u8],
12402                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12403                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12404                                data,
12405                            )
12406                            .map(LightClientMockCalls::proxiableUUID)
12407                    }
12408                    proxiableUUID
12409                },
12410                {
12411                    fn disablePermissionedProverMode(
12412                        data: &[u8],
12413                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12414                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12415                                data,
12416                            )
12417                            .map(LightClientMockCalls::disablePermissionedProverMode)
12418                    }
12419                    disablePermissionedProverMode
12420                },
12421                {
12422                    fn renounceOwnership(
12423                        data: &[u8],
12424                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12425                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12426                                data,
12427                            )
12428                            .map(LightClientMockCalls::renounceOwnership)
12429                    }
12430                    renounceOwnership
12431                },
12432                {
12433                    fn isPermissionedProverEnabled(
12434                        data: &[u8],
12435                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12436                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12437                                data,
12438                            )
12439                            .map(LightClientMockCalls::isPermissionedProverEnabled)
12440                    }
12441                    isPermissionedProverEnabled
12442                },
12443                {
12444                    fn getHotShotCommitment(
12445                        data: &[u8],
12446                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12447                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12448                                data,
12449                            )
12450                            .map(LightClientMockCalls::getHotShotCommitment)
12451                    }
12452                    getHotShotCommitment
12453                },
12454                {
12455                    fn owner(
12456                        data: &[u8],
12457                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12458                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12459                                data,
12460                            )
12461                            .map(LightClientMockCalls::owner)
12462                    }
12463                    owner
12464                },
12465                {
12466                    fn setstateHistoryRetentionPeriod(
12467                        data: &[u8],
12468                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12469                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12470                                data,
12471                            )
12472                            .map(LightClientMockCalls::setstateHistoryRetentionPeriod)
12473                    }
12474                    setstateHistoryRetentionPeriod
12475                },
12476                {
12477                    fn initialize(
12478                        data: &[u8],
12479                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12480                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12481                                data,
12482                            )
12483                            .map(LightClientMockCalls::initialize)
12484                    }
12485                    initialize
12486                },
12487                {
12488                    fn finalizedState(
12489                        data: &[u8],
12490                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12491                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12492                                data,
12493                            )
12494                            .map(LightClientMockCalls::finalizedState)
12495                    }
12496                    finalizedState
12497                },
12498                {
12499                    fn UPGRADE_INTERFACE_VERSION(
12500                        data: &[u8],
12501                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12502                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12503                                data,
12504                            )
12505                            .map(LightClientMockCalls::UPGRADE_INTERFACE_VERSION)
12506                    }
12507                    UPGRADE_INTERFACE_VERSION
12508                },
12509                {
12510                    fn setFinalizedState(
12511                        data: &[u8],
12512                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12513                        <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12514                                data,
12515                            )
12516                            .map(LightClientMockCalls::setFinalizedState)
12517                    }
12518                    setFinalizedState
12519                },
12520                {
12521                    fn stateHistoryRetentionPeriod(
12522                        data: &[u8],
12523                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12524                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12525                                data,
12526                            )
12527                            .map(LightClientMockCalls::stateHistoryRetentionPeriod)
12528                    }
12529                    stateHistoryRetentionPeriod
12530                },
12531                {
12532                    fn setHotShotUp(
12533                        data: &[u8],
12534                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12535                        <setHotShotUpCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12536                                data,
12537                            )
12538                            .map(LightClientMockCalls::setHotShotUp)
12539                    }
12540                    setHotShotUp
12541                },
12542                {
12543                    fn genesisState(
12544                        data: &[u8],
12545                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12546                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12547                                data,
12548                            )
12549                            .map(LightClientMockCalls::genesisState)
12550                    }
12551                    genesisState
12552                },
12553                {
12554                    fn lagOverEscapeHatchThreshold(
12555                        data: &[u8],
12556                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12557                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12558                                data,
12559                            )
12560                            .map(LightClientMockCalls::lagOverEscapeHatchThreshold)
12561                    }
12562                    lagOverEscapeHatchThreshold
12563                },
12564                {
12565                    fn transferOwnership(
12566                        data: &[u8],
12567                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12568                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12569                                data,
12570                            )
12571                            .map(LightClientMockCalls::transferOwnership)
12572                    }
12573                    transferOwnership
12574                },
12575                {
12576                    fn setStateHistory(
12577                        data: &[u8],
12578                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12579                        <setStateHistoryCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12580                                data,
12581                            )
12582                            .map(LightClientMockCalls::setStateHistory)
12583                    }
12584                    setStateHistory
12585                },
12586                {
12587                    fn getStateHistoryCount(
12588                        data: &[u8],
12589                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12590                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12591                                data,
12592                            )
12593                            .map(LightClientMockCalls::getStateHistoryCount)
12594                    }
12595                    getStateHistoryCount
12596                },
12597            ];
12598            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
12599                return Err(
12600                    alloy_sol_types::Error::unknown_selector(
12601                        <Self as alloy_sol_types::SolInterface>::NAME,
12602                        selector,
12603                    ),
12604                );
12605            };
12606            DECODE_VALIDATE_SHIMS[idx](data)
12607        }
12608        #[inline]
12609        fn abi_encoded_size(&self) -> usize {
12610            match self {
12611                Self::UPGRADE_INTERFACE_VERSION(inner) => {
12612                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
12613                        inner,
12614                    )
12615                }
12616                Self::_getVk(inner) => {
12617                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12618                }
12619                Self::currentBlockNumber(inner) => {
12620                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
12621                        inner,
12622                    )
12623                }
12624                Self::disablePermissionedProverMode(inner) => {
12625                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
12626                        inner,
12627                    )
12628                }
12629                Self::finalizedState(inner) => {
12630                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
12631                        inner,
12632                    )
12633                }
12634                Self::genesisStakeTableState(inner) => {
12635                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
12636                        inner,
12637                    )
12638                }
12639                Self::genesisState(inner) => {
12640                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
12641                        inner,
12642                    )
12643                }
12644                Self::getHotShotCommitment(inner) => {
12645                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
12646                        inner,
12647                    )
12648                }
12649                Self::getStateHistoryCount(inner) => {
12650                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
12651                        inner,
12652                    )
12653                }
12654                Self::getVersion(inner) => {
12655                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12656                }
12657                Self::initialize(inner) => {
12658                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12659                }
12660                Self::isPermissionedProverEnabled(inner) => {
12661                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
12662                        inner,
12663                    )
12664                }
12665                Self::lagOverEscapeHatchThreshold(inner) => {
12666                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
12667                        inner,
12668                    )
12669                }
12670                Self::newFinalizedState(inner) => {
12671                    <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
12672                        inner,
12673                    )
12674                }
12675                Self::owner(inner) => {
12676                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12677                }
12678                Self::permissionedProver(inner) => {
12679                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
12680                        inner,
12681                    )
12682                }
12683                Self::proxiableUUID(inner) => {
12684                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
12685                        inner,
12686                    )
12687                }
12688                Self::renounceOwnership(inner) => {
12689                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
12690                        inner,
12691                    )
12692                }
12693                Self::setFinalizedState(inner) => {
12694                    <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
12695                        inner,
12696                    )
12697                }
12698                Self::setHotShotDownSince(inner) => {
12699                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_encoded_size(
12700                        inner,
12701                    )
12702                }
12703                Self::setHotShotUp(inner) => {
12704                    <setHotShotUpCall as alloy_sol_types::SolCall>::abi_encoded_size(
12705                        inner,
12706                    )
12707                }
12708                Self::setPermissionedProver(inner) => {
12709                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
12710                        inner,
12711                    )
12712                }
12713                Self::setStateHistory(inner) => {
12714                    <setStateHistoryCall as alloy_sol_types::SolCall>::abi_encoded_size(
12715                        inner,
12716                    )
12717                }
12718                Self::setstateHistoryRetentionPeriod(inner) => {
12719                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
12720                        inner,
12721                    )
12722                }
12723                Self::stateHistoryCommitments(inner) => {
12724                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
12725                        inner,
12726                    )
12727                }
12728                Self::stateHistoryFirstIndex(inner) => {
12729                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
12730                        inner,
12731                    )
12732                }
12733                Self::stateHistoryRetentionPeriod(inner) => {
12734                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
12735                        inner,
12736                    )
12737                }
12738                Self::transferOwnership(inner) => {
12739                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
12740                        inner,
12741                    )
12742                }
12743                Self::upgradeToAndCall(inner) => {
12744                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
12745                        inner,
12746                    )
12747                }
12748            }
12749        }
12750        #[inline]
12751        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
12752            match self {
12753                Self::UPGRADE_INTERFACE_VERSION(inner) => {
12754                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
12755                        inner,
12756                        out,
12757                    )
12758                }
12759                Self::_getVk(inner) => {
12760                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12761                }
12762                Self::currentBlockNumber(inner) => {
12763                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
12764                        inner,
12765                        out,
12766                    )
12767                }
12768                Self::disablePermissionedProverMode(inner) => {
12769                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
12770                        inner,
12771                        out,
12772                    )
12773                }
12774                Self::finalizedState(inner) => {
12775                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
12776                        inner,
12777                        out,
12778                    )
12779                }
12780                Self::genesisStakeTableState(inner) => {
12781                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
12782                        inner,
12783                        out,
12784                    )
12785                }
12786                Self::genesisState(inner) => {
12787                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
12788                        inner,
12789                        out,
12790                    )
12791                }
12792                Self::getHotShotCommitment(inner) => {
12793                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
12794                        inner,
12795                        out,
12796                    )
12797                }
12798                Self::getStateHistoryCount(inner) => {
12799                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
12800                        inner,
12801                        out,
12802                    )
12803                }
12804                Self::getVersion(inner) => {
12805                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
12806                        inner,
12807                        out,
12808                    )
12809                }
12810                Self::initialize(inner) => {
12811                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
12812                        inner,
12813                        out,
12814                    )
12815                }
12816                Self::isPermissionedProverEnabled(inner) => {
12817                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
12818                        inner,
12819                        out,
12820                    )
12821                }
12822                Self::lagOverEscapeHatchThreshold(inner) => {
12823                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
12824                        inner,
12825                        out,
12826                    )
12827                }
12828                Self::newFinalizedState(inner) => {
12829                    <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
12830                        inner,
12831                        out,
12832                    )
12833                }
12834                Self::owner(inner) => {
12835                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12836                }
12837                Self::permissionedProver(inner) => {
12838                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
12839                        inner,
12840                        out,
12841                    )
12842                }
12843                Self::proxiableUUID(inner) => {
12844                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
12845                        inner,
12846                        out,
12847                    )
12848                }
12849                Self::renounceOwnership(inner) => {
12850                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
12851                        inner,
12852                        out,
12853                    )
12854                }
12855                Self::setFinalizedState(inner) => {
12856                    <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
12857                        inner,
12858                        out,
12859                    )
12860                }
12861                Self::setHotShotDownSince(inner) => {
12862                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_encode_raw(
12863                        inner,
12864                        out,
12865                    )
12866                }
12867                Self::setHotShotUp(inner) => {
12868                    <setHotShotUpCall as alloy_sol_types::SolCall>::abi_encode_raw(
12869                        inner,
12870                        out,
12871                    )
12872                }
12873                Self::setPermissionedProver(inner) => {
12874                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
12875                        inner,
12876                        out,
12877                    )
12878                }
12879                Self::setStateHistory(inner) => {
12880                    <setStateHistoryCall as alloy_sol_types::SolCall>::abi_encode_raw(
12881                        inner,
12882                        out,
12883                    )
12884                }
12885                Self::setstateHistoryRetentionPeriod(inner) => {
12886                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
12887                        inner,
12888                        out,
12889                    )
12890                }
12891                Self::stateHistoryCommitments(inner) => {
12892                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
12893                        inner,
12894                        out,
12895                    )
12896                }
12897                Self::stateHistoryFirstIndex(inner) => {
12898                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
12899                        inner,
12900                        out,
12901                    )
12902                }
12903                Self::stateHistoryRetentionPeriod(inner) => {
12904                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
12905                        inner,
12906                        out,
12907                    )
12908                }
12909                Self::transferOwnership(inner) => {
12910                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
12911                        inner,
12912                        out,
12913                    )
12914                }
12915                Self::upgradeToAndCall(inner) => {
12916                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
12917                        inner,
12918                        out,
12919                    )
12920                }
12921            }
12922        }
12923    }
12924    ///Container for all the [`LightClientMock`](self) custom errors.
12925    #[derive(serde::Serialize, serde::Deserialize)]
12926    #[derive(Debug, PartialEq, Eq, Hash)]
12927    pub enum LightClientMockErrors {
12928        #[allow(missing_docs)]
12929        AddressEmptyCode(AddressEmptyCode),
12930        #[allow(missing_docs)]
12931        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
12932        #[allow(missing_docs)]
12933        ERC1967NonPayable(ERC1967NonPayable),
12934        #[allow(missing_docs)]
12935        FailedInnerCall(FailedInnerCall),
12936        #[allow(missing_docs)]
12937        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
12938        #[allow(missing_docs)]
12939        InvalidAddress(InvalidAddress),
12940        #[allow(missing_docs)]
12941        InvalidArgs(InvalidArgs),
12942        #[allow(missing_docs)]
12943        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
12944        #[allow(missing_docs)]
12945        InvalidInitialization(InvalidInitialization),
12946        #[allow(missing_docs)]
12947        InvalidMaxStateHistory(InvalidMaxStateHistory),
12948        #[allow(missing_docs)]
12949        InvalidProof(InvalidProof),
12950        #[allow(missing_docs)]
12951        InvalidScalar(InvalidScalar),
12952        #[allow(missing_docs)]
12953        NoChangeRequired(NoChangeRequired),
12954        #[allow(missing_docs)]
12955        NotInitializing(NotInitializing),
12956        #[allow(missing_docs)]
12957        OutdatedState(OutdatedState),
12958        #[allow(missing_docs)]
12959        OwnableInvalidOwner(OwnableInvalidOwner),
12960        #[allow(missing_docs)]
12961        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
12962        #[allow(missing_docs)]
12963        ProverNotPermissioned(ProverNotPermissioned),
12964        #[allow(missing_docs)]
12965        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
12966        #[allow(missing_docs)]
12967        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
12968        #[allow(missing_docs)]
12969        WrongStakeTableUsed(WrongStakeTableUsed),
12970    }
12971    #[automatically_derived]
12972    impl LightClientMockErrors {
12973        /// All the selectors of this enum.
12974        ///
12975        /// Note that the selectors might not be in the same order as the variants.
12976        /// No guarantees are made about the order of the selectors.
12977        ///
12978        /// Prefer using `SolInterface` methods instead.
12979        pub const SELECTORS: &'static [[u8; 4usize]] = &[
12980            [5u8, 28u8, 70u8, 239u8],
12981            [5u8, 176u8, 92u8, 204u8],
12982            [9u8, 189u8, 227u8, 57u8],
12983            [17u8, 140u8, 218u8, 167u8],
12984            [20u8, 37u8, 234u8, 66u8],
12985            [30u8, 79u8, 189u8, 247u8],
12986            [76u8, 156u8, 140u8, 227u8],
12987            [81u8, 97u8, 128u8, 137u8],
12988            [97u8, 90u8, 146u8, 100u8],
12989            [153u8, 150u8, 179u8, 21u8],
12990            [161u8, 186u8, 7u8, 238u8],
12991            [163u8, 166u8, 71u8, 128u8],
12992            [168u8, 99u8, 174u8, 201u8],
12993            [170u8, 29u8, 73u8, 164u8],
12994            [176u8, 180u8, 56u8, 119u8],
12995            [179u8, 152u8, 151u8, 159u8],
12996            [215u8, 230u8, 188u8, 248u8],
12997            [224u8, 124u8, 141u8, 186u8],
12998            [230u8, 196u8, 36u8, 123u8],
12999            [244u8, 160u8, 238u8, 224u8],
13000            [249u8, 46u8, 232u8, 169u8],
13001        ];
13002    }
13003    #[automatically_derived]
13004    impl alloy_sol_types::SolInterface for LightClientMockErrors {
13005        const NAME: &'static str = "LightClientMockErrors";
13006        const MIN_DATA_LENGTH: usize = 0usize;
13007        const COUNT: usize = 21usize;
13008        #[inline]
13009        fn selector(&self) -> [u8; 4] {
13010            match self {
13011                Self::AddressEmptyCode(_) => {
13012                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
13013                }
13014                Self::ERC1967InvalidImplementation(_) => {
13015                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
13016                }
13017                Self::ERC1967NonPayable(_) => {
13018                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
13019                }
13020                Self::FailedInnerCall(_) => {
13021                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
13022                }
13023                Self::InsufficientSnapshotHistory(_) => {
13024                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
13025                }
13026                Self::InvalidAddress(_) => {
13027                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
13028                }
13029                Self::InvalidArgs(_) => {
13030                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
13031                }
13032                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
13033                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
13034                }
13035                Self::InvalidInitialization(_) => {
13036                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
13037                }
13038                Self::InvalidMaxStateHistory(_) => {
13039                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
13040                }
13041                Self::InvalidProof(_) => {
13042                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
13043                }
13044                Self::InvalidScalar(_) => {
13045                    <InvalidScalar as alloy_sol_types::SolError>::SELECTOR
13046                }
13047                Self::NoChangeRequired(_) => {
13048                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
13049                }
13050                Self::NotInitializing(_) => {
13051                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
13052                }
13053                Self::OutdatedState(_) => {
13054                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
13055                }
13056                Self::OwnableInvalidOwner(_) => {
13057                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
13058                }
13059                Self::OwnableUnauthorizedAccount(_) => {
13060                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
13061                }
13062                Self::ProverNotPermissioned(_) => {
13063                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
13064                }
13065                Self::UUPSUnauthorizedCallContext(_) => {
13066                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
13067                }
13068                Self::UUPSUnsupportedProxiableUUID(_) => {
13069                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
13070                }
13071                Self::WrongStakeTableUsed(_) => {
13072                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
13073                }
13074            }
13075        }
13076        #[inline]
13077        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
13078            Self::SELECTORS.get(i).copied()
13079        }
13080        #[inline]
13081        fn valid_selector(selector: [u8; 4]) -> bool {
13082            Self::SELECTORS.binary_search(&selector).is_ok()
13083        }
13084        #[inline]
13085        #[allow(non_snake_case)]
13086        fn abi_decode_raw(
13087            selector: [u8; 4],
13088            data: &[u8],
13089        ) -> alloy_sol_types::Result<Self> {
13090            static DECODE_SHIMS: &[fn(
13091                &[u8],
13092            ) -> alloy_sol_types::Result<LightClientMockErrors>] = &[
13093                {
13094                    fn OutdatedState(
13095                        data: &[u8],
13096                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13097                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(
13098                                data,
13099                            )
13100                            .map(LightClientMockErrors::OutdatedState)
13101                    }
13102                    OutdatedState
13103                },
13104                {
13105                    fn InvalidScalar(
13106                        data: &[u8],
13107                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13108                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw(
13109                                data,
13110                            )
13111                            .map(LightClientMockErrors::InvalidScalar)
13112                    }
13113                    InvalidScalar
13114                },
13115                {
13116                    fn InvalidProof(
13117                        data: &[u8],
13118                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13119                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(data)
13120                            .map(LightClientMockErrors::InvalidProof)
13121                    }
13122                    InvalidProof
13123                },
13124                {
13125                    fn OwnableUnauthorizedAccount(
13126                        data: &[u8],
13127                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13128                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
13129                                data,
13130                            )
13131                            .map(LightClientMockErrors::OwnableUnauthorizedAccount)
13132                    }
13133                    OwnableUnauthorizedAccount
13134                },
13135                {
13136                    fn FailedInnerCall(
13137                        data: &[u8],
13138                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13139                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
13140                                data,
13141                            )
13142                            .map(LightClientMockErrors::FailedInnerCall)
13143                    }
13144                    FailedInnerCall
13145                },
13146                {
13147                    fn OwnableInvalidOwner(
13148                        data: &[u8],
13149                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13150                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
13151                                data,
13152                            )
13153                            .map(LightClientMockErrors::OwnableInvalidOwner)
13154                    }
13155                    OwnableInvalidOwner
13156                },
13157                {
13158                    fn ERC1967InvalidImplementation(
13159                        data: &[u8],
13160                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13161                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
13162                                data,
13163                            )
13164                            .map(LightClientMockErrors::ERC1967InvalidImplementation)
13165                    }
13166                    ERC1967InvalidImplementation
13167                },
13168                {
13169                    fn WrongStakeTableUsed(
13170                        data: &[u8],
13171                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13172                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
13173                                data,
13174                            )
13175                            .map(LightClientMockErrors::WrongStakeTableUsed)
13176                    }
13177                    WrongStakeTableUsed
13178                },
13179                {
13180                    fn InvalidHotShotBlockForCommitmentCheck(
13181                        data: &[u8],
13182                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13183                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
13184                                data,
13185                            )
13186                            .map(
13187                                LightClientMockErrors::InvalidHotShotBlockForCommitmentCheck,
13188                            )
13189                    }
13190                    InvalidHotShotBlockForCommitmentCheck
13191                },
13192                {
13193                    fn AddressEmptyCode(
13194                        data: &[u8],
13195                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13196                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
13197                                data,
13198                            )
13199                            .map(LightClientMockErrors::AddressEmptyCode)
13200                    }
13201                    AddressEmptyCode
13202                },
13203                {
13204                    fn InvalidArgs(
13205                        data: &[u8],
13206                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13207                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(data)
13208                            .map(LightClientMockErrors::InvalidArgs)
13209                    }
13210                    InvalidArgs
13211                },
13212                {
13213                    fn ProverNotPermissioned(
13214                        data: &[u8],
13215                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13216                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
13217                                data,
13218                            )
13219                            .map(LightClientMockErrors::ProverNotPermissioned)
13220                    }
13221                    ProverNotPermissioned
13222                },
13223                {
13224                    fn NoChangeRequired(
13225                        data: &[u8],
13226                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13227                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
13228                                data,
13229                            )
13230                            .map(LightClientMockErrors::NoChangeRequired)
13231                    }
13232                    NoChangeRequired
13233                },
13234                {
13235                    fn UUPSUnsupportedProxiableUUID(
13236                        data: &[u8],
13237                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13238                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
13239                                data,
13240                            )
13241                            .map(LightClientMockErrors::UUPSUnsupportedProxiableUUID)
13242                    }
13243                    UUPSUnsupportedProxiableUUID
13244                },
13245                {
13246                    fn InsufficientSnapshotHistory(
13247                        data: &[u8],
13248                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13249                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
13250                                data,
13251                            )
13252                            .map(LightClientMockErrors::InsufficientSnapshotHistory)
13253                    }
13254                    InsufficientSnapshotHistory
13255                },
13256                {
13257                    fn ERC1967NonPayable(
13258                        data: &[u8],
13259                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13260                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
13261                                data,
13262                            )
13263                            .map(LightClientMockErrors::ERC1967NonPayable)
13264                    }
13265                    ERC1967NonPayable
13266                },
13267                {
13268                    fn NotInitializing(
13269                        data: &[u8],
13270                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13271                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
13272                                data,
13273                            )
13274                            .map(LightClientMockErrors::NotInitializing)
13275                    }
13276                    NotInitializing
13277                },
13278                {
13279                    fn UUPSUnauthorizedCallContext(
13280                        data: &[u8],
13281                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13282                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
13283                                data,
13284                            )
13285                            .map(LightClientMockErrors::UUPSUnauthorizedCallContext)
13286                    }
13287                    UUPSUnauthorizedCallContext
13288                },
13289                {
13290                    fn InvalidAddress(
13291                        data: &[u8],
13292                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13293                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
13294                                data,
13295                            )
13296                            .map(LightClientMockErrors::InvalidAddress)
13297                    }
13298                    InvalidAddress
13299                },
13300                {
13301                    fn InvalidMaxStateHistory(
13302                        data: &[u8],
13303                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13304                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
13305                                data,
13306                            )
13307                            .map(LightClientMockErrors::InvalidMaxStateHistory)
13308                    }
13309                    InvalidMaxStateHistory
13310                },
13311                {
13312                    fn InvalidInitialization(
13313                        data: &[u8],
13314                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13315                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
13316                                data,
13317                            )
13318                            .map(LightClientMockErrors::InvalidInitialization)
13319                    }
13320                    InvalidInitialization
13321                },
13322            ];
13323            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
13324                return Err(
13325                    alloy_sol_types::Error::unknown_selector(
13326                        <Self as alloy_sol_types::SolInterface>::NAME,
13327                        selector,
13328                    ),
13329                );
13330            };
13331            DECODE_SHIMS[idx](data)
13332        }
13333        #[inline]
13334        #[allow(non_snake_case)]
13335        fn abi_decode_raw_validate(
13336            selector: [u8; 4],
13337            data: &[u8],
13338        ) -> alloy_sol_types::Result<Self> {
13339            static DECODE_VALIDATE_SHIMS: &[fn(
13340                &[u8],
13341            ) -> alloy_sol_types::Result<LightClientMockErrors>] = &[
13342                {
13343                    fn OutdatedState(
13344                        data: &[u8],
13345                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13346                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw_validate(
13347                                data,
13348                            )
13349                            .map(LightClientMockErrors::OutdatedState)
13350                    }
13351                    OutdatedState
13352                },
13353                {
13354                    fn InvalidScalar(
13355                        data: &[u8],
13356                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13357                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw_validate(
13358                                data,
13359                            )
13360                            .map(LightClientMockErrors::InvalidScalar)
13361                    }
13362                    InvalidScalar
13363                },
13364                {
13365                    fn InvalidProof(
13366                        data: &[u8],
13367                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13368                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw_validate(
13369                                data,
13370                            )
13371                            .map(LightClientMockErrors::InvalidProof)
13372                    }
13373                    InvalidProof
13374                },
13375                {
13376                    fn OwnableUnauthorizedAccount(
13377                        data: &[u8],
13378                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13379                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
13380                                data,
13381                            )
13382                            .map(LightClientMockErrors::OwnableUnauthorizedAccount)
13383                    }
13384                    OwnableUnauthorizedAccount
13385                },
13386                {
13387                    fn FailedInnerCall(
13388                        data: &[u8],
13389                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13390                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
13391                                data,
13392                            )
13393                            .map(LightClientMockErrors::FailedInnerCall)
13394                    }
13395                    FailedInnerCall
13396                },
13397                {
13398                    fn OwnableInvalidOwner(
13399                        data: &[u8],
13400                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13401                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
13402                                data,
13403                            )
13404                            .map(LightClientMockErrors::OwnableInvalidOwner)
13405                    }
13406                    OwnableInvalidOwner
13407                },
13408                {
13409                    fn ERC1967InvalidImplementation(
13410                        data: &[u8],
13411                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13412                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_validate(
13413                                data,
13414                            )
13415                            .map(LightClientMockErrors::ERC1967InvalidImplementation)
13416                    }
13417                    ERC1967InvalidImplementation
13418                },
13419                {
13420                    fn WrongStakeTableUsed(
13421                        data: &[u8],
13422                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13423                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
13424                                data,
13425                            )
13426                            .map(LightClientMockErrors::WrongStakeTableUsed)
13427                    }
13428                    WrongStakeTableUsed
13429                },
13430                {
13431                    fn InvalidHotShotBlockForCommitmentCheck(
13432                        data: &[u8],
13433                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13434                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw_validate(
13435                                data,
13436                            )
13437                            .map(
13438                                LightClientMockErrors::InvalidHotShotBlockForCommitmentCheck,
13439                            )
13440                    }
13441                    InvalidHotShotBlockForCommitmentCheck
13442                },
13443                {
13444                    fn AddressEmptyCode(
13445                        data: &[u8],
13446                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13447                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_validate(
13448                                data,
13449                            )
13450                            .map(LightClientMockErrors::AddressEmptyCode)
13451                    }
13452                    AddressEmptyCode
13453                },
13454                {
13455                    fn InvalidArgs(
13456                        data: &[u8],
13457                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13458                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw_validate(
13459                                data,
13460                            )
13461                            .map(LightClientMockErrors::InvalidArgs)
13462                    }
13463                    InvalidArgs
13464                },
13465                {
13466                    fn ProverNotPermissioned(
13467                        data: &[u8],
13468                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13469                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw_validate(
13470                                data,
13471                            )
13472                            .map(LightClientMockErrors::ProverNotPermissioned)
13473                    }
13474                    ProverNotPermissioned
13475                },
13476                {
13477                    fn NoChangeRequired(
13478                        data: &[u8],
13479                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13480                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw_validate(
13481                                data,
13482                            )
13483                            .map(LightClientMockErrors::NoChangeRequired)
13484                    }
13485                    NoChangeRequired
13486                },
13487                {
13488                    fn UUPSUnsupportedProxiableUUID(
13489                        data: &[u8],
13490                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13491                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_validate(
13492                                data,
13493                            )
13494                            .map(LightClientMockErrors::UUPSUnsupportedProxiableUUID)
13495                    }
13496                    UUPSUnsupportedProxiableUUID
13497                },
13498                {
13499                    fn InsufficientSnapshotHistory(
13500                        data: &[u8],
13501                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13502                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
13503                                data,
13504                            )
13505                            .map(LightClientMockErrors::InsufficientSnapshotHistory)
13506                    }
13507                    InsufficientSnapshotHistory
13508                },
13509                {
13510                    fn ERC1967NonPayable(
13511                        data: &[u8],
13512                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13513                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_validate(
13514                                data,
13515                            )
13516                            .map(LightClientMockErrors::ERC1967NonPayable)
13517                    }
13518                    ERC1967NonPayable
13519                },
13520                {
13521                    fn NotInitializing(
13522                        data: &[u8],
13523                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13524                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_validate(
13525                                data,
13526                            )
13527                            .map(LightClientMockErrors::NotInitializing)
13528                    }
13529                    NotInitializing
13530                },
13531                {
13532                    fn UUPSUnauthorizedCallContext(
13533                        data: &[u8],
13534                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13535                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_validate(
13536                                data,
13537                            )
13538                            .map(LightClientMockErrors::UUPSUnauthorizedCallContext)
13539                    }
13540                    UUPSUnauthorizedCallContext
13541                },
13542                {
13543                    fn InvalidAddress(
13544                        data: &[u8],
13545                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13546                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
13547                                data,
13548                            )
13549                            .map(LightClientMockErrors::InvalidAddress)
13550                    }
13551                    InvalidAddress
13552                },
13553                {
13554                    fn InvalidMaxStateHistory(
13555                        data: &[u8],
13556                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13557                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
13558                                data,
13559                            )
13560                            .map(LightClientMockErrors::InvalidMaxStateHistory)
13561                    }
13562                    InvalidMaxStateHistory
13563                },
13564                {
13565                    fn InvalidInitialization(
13566                        data: &[u8],
13567                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13568                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_validate(
13569                                data,
13570                            )
13571                            .map(LightClientMockErrors::InvalidInitialization)
13572                    }
13573                    InvalidInitialization
13574                },
13575            ];
13576            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
13577                return Err(
13578                    alloy_sol_types::Error::unknown_selector(
13579                        <Self as alloy_sol_types::SolInterface>::NAME,
13580                        selector,
13581                    ),
13582                );
13583            };
13584            DECODE_VALIDATE_SHIMS[idx](data)
13585        }
13586        #[inline]
13587        fn abi_encoded_size(&self) -> usize {
13588            match self {
13589                Self::AddressEmptyCode(inner) => {
13590                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
13591                        inner,
13592                    )
13593                }
13594                Self::ERC1967InvalidImplementation(inner) => {
13595                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
13596                        inner,
13597                    )
13598                }
13599                Self::ERC1967NonPayable(inner) => {
13600                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
13601                        inner,
13602                    )
13603                }
13604                Self::FailedInnerCall(inner) => {
13605                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
13606                        inner,
13607                    )
13608                }
13609                Self::InsufficientSnapshotHistory(inner) => {
13610                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
13611                        inner,
13612                    )
13613                }
13614                Self::InvalidAddress(inner) => {
13615                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
13616                        inner,
13617                    )
13618                }
13619                Self::InvalidArgs(inner) => {
13620                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
13621                }
13622                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
13623                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
13624                        inner,
13625                    )
13626                }
13627                Self::InvalidInitialization(inner) => {
13628                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
13629                        inner,
13630                    )
13631                }
13632                Self::InvalidMaxStateHistory(inner) => {
13633                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
13634                        inner,
13635                    )
13636                }
13637                Self::InvalidProof(inner) => {
13638                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
13639                }
13640                Self::InvalidScalar(inner) => {
13641                    <InvalidScalar as alloy_sol_types::SolError>::abi_encoded_size(inner)
13642                }
13643                Self::NoChangeRequired(inner) => {
13644                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
13645                        inner,
13646                    )
13647                }
13648                Self::NotInitializing(inner) => {
13649                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
13650                        inner,
13651                    )
13652                }
13653                Self::OutdatedState(inner) => {
13654                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
13655                }
13656                Self::OwnableInvalidOwner(inner) => {
13657                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
13658                        inner,
13659                    )
13660                }
13661                Self::OwnableUnauthorizedAccount(inner) => {
13662                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
13663                        inner,
13664                    )
13665                }
13666                Self::ProverNotPermissioned(inner) => {
13667                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
13668                        inner,
13669                    )
13670                }
13671                Self::UUPSUnauthorizedCallContext(inner) => {
13672                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
13673                        inner,
13674                    )
13675                }
13676                Self::UUPSUnsupportedProxiableUUID(inner) => {
13677                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
13678                        inner,
13679                    )
13680                }
13681                Self::WrongStakeTableUsed(inner) => {
13682                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
13683                        inner,
13684                    )
13685                }
13686            }
13687        }
13688        #[inline]
13689        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
13690            match self {
13691                Self::AddressEmptyCode(inner) => {
13692                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
13693                        inner,
13694                        out,
13695                    )
13696                }
13697                Self::ERC1967InvalidImplementation(inner) => {
13698                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
13699                        inner,
13700                        out,
13701                    )
13702                }
13703                Self::ERC1967NonPayable(inner) => {
13704                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
13705                        inner,
13706                        out,
13707                    )
13708                }
13709                Self::FailedInnerCall(inner) => {
13710                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
13711                        inner,
13712                        out,
13713                    )
13714                }
13715                Self::InsufficientSnapshotHistory(inner) => {
13716                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
13717                        inner,
13718                        out,
13719                    )
13720                }
13721                Self::InvalidAddress(inner) => {
13722                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
13723                        inner,
13724                        out,
13725                    )
13726                }
13727                Self::InvalidArgs(inner) => {
13728                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
13729                        inner,
13730                        out,
13731                    )
13732                }
13733                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
13734                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
13735                        inner,
13736                        out,
13737                    )
13738                }
13739                Self::InvalidInitialization(inner) => {
13740                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
13741                        inner,
13742                        out,
13743                    )
13744                }
13745                Self::InvalidMaxStateHistory(inner) => {
13746                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
13747                        inner,
13748                        out,
13749                    )
13750                }
13751                Self::InvalidProof(inner) => {
13752                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
13753                        inner,
13754                        out,
13755                    )
13756                }
13757                Self::InvalidScalar(inner) => {
13758                    <InvalidScalar as alloy_sol_types::SolError>::abi_encode_raw(
13759                        inner,
13760                        out,
13761                    )
13762                }
13763                Self::NoChangeRequired(inner) => {
13764                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
13765                        inner,
13766                        out,
13767                    )
13768                }
13769                Self::NotInitializing(inner) => {
13770                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
13771                        inner,
13772                        out,
13773                    )
13774                }
13775                Self::OutdatedState(inner) => {
13776                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
13777                        inner,
13778                        out,
13779                    )
13780                }
13781                Self::OwnableInvalidOwner(inner) => {
13782                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
13783                        inner,
13784                        out,
13785                    )
13786                }
13787                Self::OwnableUnauthorizedAccount(inner) => {
13788                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
13789                        inner,
13790                        out,
13791                    )
13792                }
13793                Self::ProverNotPermissioned(inner) => {
13794                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
13795                        inner,
13796                        out,
13797                    )
13798                }
13799                Self::UUPSUnauthorizedCallContext(inner) => {
13800                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
13801                        inner,
13802                        out,
13803                    )
13804                }
13805                Self::UUPSUnsupportedProxiableUUID(inner) => {
13806                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
13807                        inner,
13808                        out,
13809                    )
13810                }
13811                Self::WrongStakeTableUsed(inner) => {
13812                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
13813                        inner,
13814                        out,
13815                    )
13816                }
13817            }
13818        }
13819    }
13820    ///Container for all the [`LightClientMock`](self) events.
13821    #[derive(serde::Serialize, serde::Deserialize)]
13822    #[derive(Debug, PartialEq, Eq, Hash)]
13823    pub enum LightClientMockEvents {
13824        #[allow(missing_docs)]
13825        Initialized(Initialized),
13826        #[allow(missing_docs)]
13827        NewState(NewState),
13828        #[allow(missing_docs)]
13829        OwnershipTransferred(OwnershipTransferred),
13830        #[allow(missing_docs)]
13831        PermissionedProverNotRequired(PermissionedProverNotRequired),
13832        #[allow(missing_docs)]
13833        PermissionedProverRequired(PermissionedProverRequired),
13834        #[allow(missing_docs)]
13835        Upgrade(Upgrade),
13836        #[allow(missing_docs)]
13837        Upgraded(Upgraded),
13838    }
13839    #[automatically_derived]
13840    impl LightClientMockEvents {
13841        /// All the selectors of this enum.
13842        ///
13843        /// Note that the selectors might not be in the same order as the variants.
13844        /// No guarantees are made about the order of the selectors.
13845        ///
13846        /// Prefer using `SolInterface` methods instead.
13847        pub const SELECTORS: &'static [[u8; 32usize]] = &[
13848            [
13849                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
13850                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
13851                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
13852            ],
13853            [
13854                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
13855                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
13856                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
13857            ],
13858            [
13859                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
13860                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
13861                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
13862            ],
13863            [
13864                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
13865                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
13866                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
13867            ],
13868            [
13869                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
13870                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
13871                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
13872            ],
13873            [
13874                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
13875                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
13876                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
13877            ],
13878            [
13879                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
13880                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
13881                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
13882            ],
13883        ];
13884    }
13885    #[automatically_derived]
13886    impl alloy_sol_types::SolEventInterface for LightClientMockEvents {
13887        const NAME: &'static str = "LightClientMockEvents";
13888        const COUNT: usize = 7usize;
13889        fn decode_raw_log(
13890            topics: &[alloy_sol_types::Word],
13891            data: &[u8],
13892        ) -> alloy_sol_types::Result<Self> {
13893            match topics.first().copied() {
13894                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
13895                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
13896                            topics,
13897                            data,
13898                        )
13899                        .map(Self::Initialized)
13900                }
13901                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
13902                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
13903                        .map(Self::NewState)
13904                }
13905                Some(
13906                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
13907                ) => {
13908                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
13909                            topics,
13910                            data,
13911                        )
13912                        .map(Self::OwnershipTransferred)
13913                }
13914                Some(
13915                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
13916                ) => {
13917                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
13918                            topics,
13919                            data,
13920                        )
13921                        .map(Self::PermissionedProverNotRequired)
13922                }
13923                Some(
13924                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
13925                ) => {
13926                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
13927                            topics,
13928                            data,
13929                        )
13930                        .map(Self::PermissionedProverRequired)
13931                }
13932                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
13933                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
13934                        .map(Self::Upgrade)
13935                }
13936                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
13937                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
13938                        .map(Self::Upgraded)
13939                }
13940                _ => {
13941                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
13942                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
13943                        log: alloy_sol_types::private::Box::new(
13944                            alloy_sol_types::private::LogData::new_unchecked(
13945                                topics.to_vec(),
13946                                data.to_vec().into(),
13947                            ),
13948                        ),
13949                    })
13950                }
13951            }
13952        }
13953    }
13954    #[automatically_derived]
13955    impl alloy_sol_types::private::IntoLogData for LightClientMockEvents {
13956        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
13957            match self {
13958                Self::Initialized(inner) => {
13959                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
13960                }
13961                Self::NewState(inner) => {
13962                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
13963                }
13964                Self::OwnershipTransferred(inner) => {
13965                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
13966                }
13967                Self::PermissionedProverNotRequired(inner) => {
13968                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
13969                }
13970                Self::PermissionedProverRequired(inner) => {
13971                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
13972                }
13973                Self::Upgrade(inner) => {
13974                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
13975                }
13976                Self::Upgraded(inner) => {
13977                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
13978                }
13979            }
13980        }
13981        fn into_log_data(self) -> alloy_sol_types::private::LogData {
13982            match self {
13983                Self::Initialized(inner) => {
13984                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
13985                }
13986                Self::NewState(inner) => {
13987                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
13988                }
13989                Self::OwnershipTransferred(inner) => {
13990                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
13991                }
13992                Self::PermissionedProverNotRequired(inner) => {
13993                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
13994                }
13995                Self::PermissionedProverRequired(inner) => {
13996                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
13997                }
13998                Self::Upgrade(inner) => {
13999                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14000                }
14001                Self::Upgraded(inner) => {
14002                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14003                }
14004            }
14005        }
14006    }
14007    use alloy::contract as alloy_contract;
14008    /**Creates a new wrapper around an on-chain [`LightClientMock`](self) contract instance.
14009
14010See the [wrapper's documentation](`LightClientMockInstance`) for more details.*/
14011    #[inline]
14012    pub const fn new<
14013        P: alloy_contract::private::Provider<N>,
14014        N: alloy_contract::private::Network,
14015    >(
14016        address: alloy_sol_types::private::Address,
14017        __provider: P,
14018    ) -> LightClientMockInstance<P, N> {
14019        LightClientMockInstance::<P, N>::new(address, __provider)
14020    }
14021    /**Deploys this contract using the given `provider` and constructor arguments, if any.
14022
14023Returns a new instance of the contract, if the deployment was successful.
14024
14025For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
14026    #[inline]
14027    pub fn deploy<
14028        P: alloy_contract::private::Provider<N>,
14029        N: alloy_contract::private::Network,
14030    >(
14031        __provider: P,
14032    ) -> impl ::core::future::Future<
14033        Output = alloy_contract::Result<LightClientMockInstance<P, N>>,
14034    > {
14035        LightClientMockInstance::<P, N>::deploy(__provider)
14036    }
14037    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
14038and constructor arguments, if any.
14039
14040This is a simple wrapper around creating a `RawCallBuilder` with the data set to
14041the bytecode concatenated with the constructor's ABI-encoded arguments.*/
14042    #[inline]
14043    pub fn deploy_builder<
14044        P: alloy_contract::private::Provider<N>,
14045        N: alloy_contract::private::Network,
14046    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
14047        LightClientMockInstance::<P, N>::deploy_builder(__provider)
14048    }
14049    /**A [`LightClientMock`](self) instance.
14050
14051Contains type-safe methods for interacting with an on-chain instance of the
14052[`LightClientMock`](self) contract located at a given `address`, using a given
14053provider `P`.
14054
14055If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
14056documentation on how to provide it), the `deploy` and `deploy_builder` methods can
14057be used to deploy a new instance of the contract.
14058
14059See the [module-level documentation](self) for all the available methods.*/
14060    #[derive(Clone)]
14061    pub struct LightClientMockInstance<P, N = alloy_contract::private::Ethereum> {
14062        address: alloy_sol_types::private::Address,
14063        provider: P,
14064        _network: ::core::marker::PhantomData<N>,
14065    }
14066    #[automatically_derived]
14067    impl<P, N> ::core::fmt::Debug for LightClientMockInstance<P, N> {
14068        #[inline]
14069        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
14070            f.debug_tuple("LightClientMockInstance").field(&self.address).finish()
14071        }
14072    }
14073    /// Instantiation and getters/setters.
14074    #[automatically_derived]
14075    impl<
14076        P: alloy_contract::private::Provider<N>,
14077        N: alloy_contract::private::Network,
14078    > LightClientMockInstance<P, N> {
14079        /**Creates a new wrapper around an on-chain [`LightClientMock`](self) contract instance.
14080
14081See the [wrapper's documentation](`LightClientMockInstance`) for more details.*/
14082        #[inline]
14083        pub const fn new(
14084            address: alloy_sol_types::private::Address,
14085            __provider: P,
14086        ) -> Self {
14087            Self {
14088                address,
14089                provider: __provider,
14090                _network: ::core::marker::PhantomData,
14091            }
14092        }
14093        /**Deploys this contract using the given `provider` and constructor arguments, if any.
14094
14095Returns a new instance of the contract, if the deployment was successful.
14096
14097For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
14098        #[inline]
14099        pub async fn deploy(
14100            __provider: P,
14101        ) -> alloy_contract::Result<LightClientMockInstance<P, N>> {
14102            let call_builder = Self::deploy_builder(__provider);
14103            let contract_address = call_builder.deploy().await?;
14104            Ok(Self::new(contract_address, call_builder.provider))
14105        }
14106        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
14107and constructor arguments, if any.
14108
14109This is a simple wrapper around creating a `RawCallBuilder` with the data set to
14110the bytecode concatenated with the constructor's ABI-encoded arguments.*/
14111        #[inline]
14112        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
14113            alloy_contract::RawCallBuilder::new_raw_deploy(
14114                __provider,
14115                ::core::clone::Clone::clone(&BYTECODE),
14116            )
14117        }
14118        /// Returns a reference to the address.
14119        #[inline]
14120        pub const fn address(&self) -> &alloy_sol_types::private::Address {
14121            &self.address
14122        }
14123        /// Sets the address.
14124        #[inline]
14125        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
14126            self.address = address;
14127        }
14128        /// Sets the address and returns `self`.
14129        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
14130            self.set_address(address);
14131            self
14132        }
14133        /// Returns a reference to the provider.
14134        #[inline]
14135        pub const fn provider(&self) -> &P {
14136            &self.provider
14137        }
14138    }
14139    impl<P: ::core::clone::Clone, N> LightClientMockInstance<&P, N> {
14140        /// Clones the provider and returns a new instance with the cloned provider.
14141        #[inline]
14142        pub fn with_cloned_provider(self) -> LightClientMockInstance<P, N> {
14143            LightClientMockInstance {
14144                address: self.address,
14145                provider: ::core::clone::Clone::clone(&self.provider),
14146                _network: ::core::marker::PhantomData,
14147            }
14148        }
14149    }
14150    /// Function calls.
14151    #[automatically_derived]
14152    impl<
14153        P: alloy_contract::private::Provider<N>,
14154        N: alloy_contract::private::Network,
14155    > LightClientMockInstance<P, N> {
14156        /// Creates a new call builder using this contract instance's provider and address.
14157        ///
14158        /// Note that the call can be any function call, not just those defined in this
14159        /// contract. Prefer using the other methods for building type-safe contract calls.
14160        pub fn call_builder<C: alloy_sol_types::SolCall>(
14161            &self,
14162            call: &C,
14163        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
14164            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
14165        }
14166        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
14167        pub fn UPGRADE_INTERFACE_VERSION(
14168            &self,
14169        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
14170            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
14171        }
14172        ///Creates a new call builder for the [`_getVk`] function.
14173        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<&P, _getVkCall, N> {
14174            self.call_builder(&_getVkCall)
14175        }
14176        ///Creates a new call builder for the [`currentBlockNumber`] function.
14177        pub fn currentBlockNumber(
14178            &self,
14179        ) -> alloy_contract::SolCallBuilder<&P, currentBlockNumberCall, N> {
14180            self.call_builder(&currentBlockNumberCall)
14181        }
14182        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
14183        pub fn disablePermissionedProverMode(
14184            &self,
14185        ) -> alloy_contract::SolCallBuilder<&P, disablePermissionedProverModeCall, N> {
14186            self.call_builder(&disablePermissionedProverModeCall)
14187        }
14188        ///Creates a new call builder for the [`finalizedState`] function.
14189        pub fn finalizedState(
14190            &self,
14191        ) -> alloy_contract::SolCallBuilder<&P, finalizedStateCall, N> {
14192            self.call_builder(&finalizedStateCall)
14193        }
14194        ///Creates a new call builder for the [`genesisStakeTableState`] function.
14195        pub fn genesisStakeTableState(
14196            &self,
14197        ) -> alloy_contract::SolCallBuilder<&P, genesisStakeTableStateCall, N> {
14198            self.call_builder(&genesisStakeTableStateCall)
14199        }
14200        ///Creates a new call builder for the [`genesisState`] function.
14201        pub fn genesisState(
14202            &self,
14203        ) -> alloy_contract::SolCallBuilder<&P, genesisStateCall, N> {
14204            self.call_builder(&genesisStateCall)
14205        }
14206        ///Creates a new call builder for the [`getHotShotCommitment`] function.
14207        pub fn getHotShotCommitment(
14208            &self,
14209            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
14210        ) -> alloy_contract::SolCallBuilder<&P, getHotShotCommitmentCall, N> {
14211            self.call_builder(
14212                &getHotShotCommitmentCall {
14213                    hotShotBlockHeight,
14214                },
14215            )
14216        }
14217        ///Creates a new call builder for the [`getStateHistoryCount`] function.
14218        pub fn getStateHistoryCount(
14219            &self,
14220        ) -> alloy_contract::SolCallBuilder<&P, getStateHistoryCountCall, N> {
14221            self.call_builder(&getStateHistoryCountCall)
14222        }
14223        ///Creates a new call builder for the [`getVersion`] function.
14224        pub fn getVersion(
14225            &self,
14226        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
14227            self.call_builder(&getVersionCall)
14228        }
14229        ///Creates a new call builder for the [`initialize`] function.
14230        pub fn initialize(
14231            &self,
14232            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
14233            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
14234            _stateHistoryRetentionPeriod: u32,
14235            owner: alloy::sol_types::private::Address,
14236        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
14237            self.call_builder(
14238                &initializeCall {
14239                    _genesis,
14240                    _genesisStakeTableState,
14241                    _stateHistoryRetentionPeriod,
14242                    owner,
14243                },
14244            )
14245        }
14246        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
14247        pub fn isPermissionedProverEnabled(
14248            &self,
14249        ) -> alloy_contract::SolCallBuilder<&P, isPermissionedProverEnabledCall, N> {
14250            self.call_builder(&isPermissionedProverEnabledCall)
14251        }
14252        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
14253        pub fn lagOverEscapeHatchThreshold(
14254            &self,
14255            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
14256            threshold: alloy::sol_types::private::primitives::aliases::U256,
14257        ) -> alloy_contract::SolCallBuilder<&P, lagOverEscapeHatchThresholdCall, N> {
14258            self.call_builder(
14259                &lagOverEscapeHatchThresholdCall {
14260                    blockNumber,
14261                    threshold,
14262                },
14263            )
14264        }
14265        ///Creates a new call builder for the [`newFinalizedState`] function.
14266        pub fn newFinalizedState(
14267            &self,
14268            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
14269            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
14270        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedStateCall, N> {
14271            self.call_builder(
14272                &newFinalizedStateCall {
14273                    newState,
14274                    proof,
14275                },
14276            )
14277        }
14278        ///Creates a new call builder for the [`owner`] function.
14279        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
14280            self.call_builder(&ownerCall)
14281        }
14282        ///Creates a new call builder for the [`permissionedProver`] function.
14283        pub fn permissionedProver(
14284            &self,
14285        ) -> alloy_contract::SolCallBuilder<&P, permissionedProverCall, N> {
14286            self.call_builder(&permissionedProverCall)
14287        }
14288        ///Creates a new call builder for the [`proxiableUUID`] function.
14289        pub fn proxiableUUID(
14290            &self,
14291        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
14292            self.call_builder(&proxiableUUIDCall)
14293        }
14294        ///Creates a new call builder for the [`renounceOwnership`] function.
14295        pub fn renounceOwnership(
14296            &self,
14297        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
14298            self.call_builder(&renounceOwnershipCall)
14299        }
14300        ///Creates a new call builder for the [`setFinalizedState`] function.
14301        pub fn setFinalizedState(
14302            &self,
14303            state: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
14304        ) -> alloy_contract::SolCallBuilder<&P, setFinalizedStateCall, N> {
14305            self.call_builder(&setFinalizedStateCall { state })
14306        }
14307        ///Creates a new call builder for the [`setHotShotDownSince`] function.
14308        pub fn setHotShotDownSince(
14309            &self,
14310            l1Height: alloy::sol_types::private::primitives::aliases::U256,
14311        ) -> alloy_contract::SolCallBuilder<&P, setHotShotDownSinceCall, N> {
14312            self.call_builder(
14313                &setHotShotDownSinceCall {
14314                    l1Height,
14315                },
14316            )
14317        }
14318        ///Creates a new call builder for the [`setHotShotUp`] function.
14319        pub fn setHotShotUp(
14320            &self,
14321        ) -> alloy_contract::SolCallBuilder<&P, setHotShotUpCall, N> {
14322            self.call_builder(&setHotShotUpCall)
14323        }
14324        ///Creates a new call builder for the [`setPermissionedProver`] function.
14325        pub fn setPermissionedProver(
14326            &self,
14327            prover: alloy::sol_types::private::Address,
14328        ) -> alloy_contract::SolCallBuilder<&P, setPermissionedProverCall, N> {
14329            self.call_builder(
14330                &setPermissionedProverCall {
14331                    prover,
14332                },
14333            )
14334        }
14335        ///Creates a new call builder for the [`setStateHistory`] function.
14336        pub fn setStateHistory(
14337            &self,
14338            _stateHistoryCommitments: alloy::sol_types::private::Vec<
14339                <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
14340            >,
14341        ) -> alloy_contract::SolCallBuilder<&P, setStateHistoryCall, N> {
14342            self.call_builder(
14343                &setStateHistoryCall {
14344                    _stateHistoryCommitments,
14345                },
14346            )
14347        }
14348        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
14349        pub fn setstateHistoryRetentionPeriod(
14350            &self,
14351            historySeconds: u32,
14352        ) -> alloy_contract::SolCallBuilder<&P, setstateHistoryRetentionPeriodCall, N> {
14353            self.call_builder(
14354                &setstateHistoryRetentionPeriodCall {
14355                    historySeconds,
14356                },
14357            )
14358        }
14359        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
14360        pub fn stateHistoryCommitments(
14361            &self,
14362            _0: alloy::sol_types::private::primitives::aliases::U256,
14363        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryCommitmentsCall, N> {
14364            self.call_builder(&stateHistoryCommitmentsCall(_0))
14365        }
14366        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
14367        pub fn stateHistoryFirstIndex(
14368            &self,
14369        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryFirstIndexCall, N> {
14370            self.call_builder(&stateHistoryFirstIndexCall)
14371        }
14372        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
14373        pub fn stateHistoryRetentionPeriod(
14374            &self,
14375        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryRetentionPeriodCall, N> {
14376            self.call_builder(&stateHistoryRetentionPeriodCall)
14377        }
14378        ///Creates a new call builder for the [`transferOwnership`] function.
14379        pub fn transferOwnership(
14380            &self,
14381            newOwner: alloy::sol_types::private::Address,
14382        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
14383            self.call_builder(&transferOwnershipCall { newOwner })
14384        }
14385        ///Creates a new call builder for the [`upgradeToAndCall`] function.
14386        pub fn upgradeToAndCall(
14387            &self,
14388            newImplementation: alloy::sol_types::private::Address,
14389            data: alloy::sol_types::private::Bytes,
14390        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
14391            self.call_builder(
14392                &upgradeToAndCallCall {
14393                    newImplementation,
14394                    data,
14395                },
14396            )
14397        }
14398    }
14399    /// Event filters.
14400    #[automatically_derived]
14401    impl<
14402        P: alloy_contract::private::Provider<N>,
14403        N: alloy_contract::private::Network,
14404    > LightClientMockInstance<P, N> {
14405        /// Creates a new event filter using this contract instance's provider and address.
14406        ///
14407        /// Note that the type can be any event, not just those defined in this contract.
14408        /// Prefer using the other methods for building type-safe event filters.
14409        pub fn event_filter<E: alloy_sol_types::SolEvent>(
14410            &self,
14411        ) -> alloy_contract::Event<&P, E, N> {
14412            alloy_contract::Event::new_sol(&self.provider, &self.address)
14413        }
14414        ///Creates a new event filter for the [`Initialized`] event.
14415        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
14416            self.event_filter::<Initialized>()
14417        }
14418        ///Creates a new event filter for the [`NewState`] event.
14419        pub fn NewState_filter(&self) -> alloy_contract::Event<&P, NewState, N> {
14420            self.event_filter::<NewState>()
14421        }
14422        ///Creates a new event filter for the [`OwnershipTransferred`] event.
14423        pub fn OwnershipTransferred_filter(
14424            &self,
14425        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
14426            self.event_filter::<OwnershipTransferred>()
14427        }
14428        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
14429        pub fn PermissionedProverNotRequired_filter(
14430            &self,
14431        ) -> alloy_contract::Event<&P, PermissionedProverNotRequired, N> {
14432            self.event_filter::<PermissionedProverNotRequired>()
14433        }
14434        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
14435        pub fn PermissionedProverRequired_filter(
14436            &self,
14437        ) -> alloy_contract::Event<&P, PermissionedProverRequired, N> {
14438            self.event_filter::<PermissionedProverRequired>()
14439        }
14440        ///Creates a new event filter for the [`Upgrade`] event.
14441        pub fn Upgrade_filter(&self) -> alloy_contract::Event<&P, Upgrade, N> {
14442            self.event_filter::<Upgrade>()
14443        }
14444        ///Creates a new event filter for the [`Upgraded`] event.
14445        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
14446            self.event_filter::<Upgraded>()
14447        }
14448    }
14449}