hotshot_contract_adapter/bindings/
light_client_arbitrum.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}
2250```*/
2251#[allow(
2252    non_camel_case_types,
2253    non_snake_case,
2254    clippy::pub_underscore_fields,
2255    clippy::style,
2256    clippy::empty_structs_with_brackets
2257)]
2258pub mod LightClient {
2259    use super::*;
2260    use alloy::sol_types as alloy_sol_types;
2261    #[derive(serde::Serialize, serde::Deserialize)]
2262    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2263    /**```solidity
2264struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2265```*/
2266    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2267    #[derive(Clone)]
2268    pub struct LightClientState {
2269        #[allow(missing_docs)]
2270        pub viewNum: u64,
2271        #[allow(missing_docs)]
2272        pub blockHeight: u64,
2273        #[allow(missing_docs)]
2274        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2275    }
2276    #[allow(
2277        non_camel_case_types,
2278        non_snake_case,
2279        clippy::pub_underscore_fields,
2280        clippy::style
2281    )]
2282    const _: () = {
2283        use alloy::sol_types as alloy_sol_types;
2284        #[doc(hidden)]
2285        #[allow(dead_code)]
2286        type UnderlyingSolTuple<'a> = (
2287            alloy::sol_types::sol_data::Uint<64>,
2288            alloy::sol_types::sol_data::Uint<64>,
2289            BN254::ScalarField,
2290        );
2291        #[doc(hidden)]
2292        type UnderlyingRustTuple<'a> = (
2293            u64,
2294            u64,
2295            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2296        );
2297        #[cfg(test)]
2298        #[allow(dead_code, unreachable_patterns)]
2299        fn _type_assertion(
2300            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2301        ) {
2302            match _t {
2303                alloy_sol_types::private::AssertTypeEq::<
2304                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2305                >(_) => {}
2306            }
2307        }
2308        #[automatically_derived]
2309        #[doc(hidden)]
2310        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
2311            fn from(value: LightClientState) -> Self {
2312                (value.viewNum, value.blockHeight, value.blockCommRoot)
2313            }
2314        }
2315        #[automatically_derived]
2316        #[doc(hidden)]
2317        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
2318            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2319                Self {
2320                    viewNum: tuple.0,
2321                    blockHeight: tuple.1,
2322                    blockCommRoot: tuple.2,
2323                }
2324            }
2325        }
2326        #[automatically_derived]
2327        impl alloy_sol_types::SolValue for LightClientState {
2328            type SolType = Self;
2329        }
2330        #[automatically_derived]
2331        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
2332            #[inline]
2333            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2334                (
2335                    <alloy::sol_types::sol_data::Uint<
2336                        64,
2337                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
2338                    <alloy::sol_types::sol_data::Uint<
2339                        64,
2340                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
2341                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2342                        &self.blockCommRoot,
2343                    ),
2344                )
2345            }
2346            #[inline]
2347            fn stv_abi_encoded_size(&self) -> usize {
2348                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2349                    return size;
2350                }
2351                let tuple = <UnderlyingRustTuple<
2352                    '_,
2353                > as ::core::convert::From<Self>>::from(self.clone());
2354                <UnderlyingSolTuple<
2355                    '_,
2356                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2357            }
2358            #[inline]
2359            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2360                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2361            }
2362            #[inline]
2363            fn stv_abi_encode_packed_to(
2364                &self,
2365                out: &mut alloy_sol_types::private::Vec<u8>,
2366            ) {
2367                let tuple = <UnderlyingRustTuple<
2368                    '_,
2369                > as ::core::convert::From<Self>>::from(self.clone());
2370                <UnderlyingSolTuple<
2371                    '_,
2372                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2373            }
2374            #[inline]
2375            fn stv_abi_packed_encoded_size(&self) -> usize {
2376                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2377                    return size;
2378                }
2379                let tuple = <UnderlyingRustTuple<
2380                    '_,
2381                > as ::core::convert::From<Self>>::from(self.clone());
2382                <UnderlyingSolTuple<
2383                    '_,
2384                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2385            }
2386        }
2387        #[automatically_derived]
2388        impl alloy_sol_types::SolType for LightClientState {
2389            type RustType = Self;
2390            type Token<'a> = <UnderlyingSolTuple<
2391                'a,
2392            > as alloy_sol_types::SolType>::Token<'a>;
2393            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2394            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2395                '_,
2396            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2397            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2398                '_,
2399            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2400            #[inline]
2401            fn valid_token(token: &Self::Token<'_>) -> bool {
2402                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2403            }
2404            #[inline]
2405            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2406                let tuple = <UnderlyingSolTuple<
2407                    '_,
2408                > as alloy_sol_types::SolType>::detokenize(token);
2409                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2410            }
2411        }
2412        #[automatically_derived]
2413        impl alloy_sol_types::SolStruct for LightClientState {
2414            const NAME: &'static str = "LightClientState";
2415            #[inline]
2416            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2417                alloy_sol_types::private::Cow::Borrowed(
2418                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
2419                )
2420            }
2421            #[inline]
2422            fn eip712_components() -> alloy_sol_types::private::Vec<
2423                alloy_sol_types::private::Cow<'static, str>,
2424            > {
2425                alloy_sol_types::private::Vec::new()
2426            }
2427            #[inline]
2428            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2429                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2430            }
2431            #[inline]
2432            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2433                [
2434                    <alloy::sol_types::sol_data::Uint<
2435                        64,
2436                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
2437                        .0,
2438                    <alloy::sol_types::sol_data::Uint<
2439                        64,
2440                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
2441                        .0,
2442                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2443                            &self.blockCommRoot,
2444                        )
2445                        .0,
2446                ]
2447                    .concat()
2448            }
2449        }
2450        #[automatically_derived]
2451        impl alloy_sol_types::EventTopic for LightClientState {
2452            #[inline]
2453            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2454                0usize
2455                    + <alloy::sol_types::sol_data::Uint<
2456                        64,
2457                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2458                        &rust.viewNum,
2459                    )
2460                    + <alloy::sol_types::sol_data::Uint<
2461                        64,
2462                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2463                        &rust.blockHeight,
2464                    )
2465                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2466                        &rust.blockCommRoot,
2467                    )
2468            }
2469            #[inline]
2470            fn encode_topic_preimage(
2471                rust: &Self::RustType,
2472                out: &mut alloy_sol_types::private::Vec<u8>,
2473            ) {
2474                out.reserve(
2475                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2476                );
2477                <alloy::sol_types::sol_data::Uint<
2478                    64,
2479                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2480                    &rust.viewNum,
2481                    out,
2482                );
2483                <alloy::sol_types::sol_data::Uint<
2484                    64,
2485                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2486                    &rust.blockHeight,
2487                    out,
2488                );
2489                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2490                    &rust.blockCommRoot,
2491                    out,
2492                );
2493            }
2494            #[inline]
2495            fn encode_topic(
2496                rust: &Self::RustType,
2497            ) -> alloy_sol_types::abi::token::WordToken {
2498                let mut out = alloy_sol_types::private::Vec::new();
2499                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2500                    rust,
2501                    &mut out,
2502                );
2503                alloy_sol_types::abi::token::WordToken(
2504                    alloy_sol_types::private::keccak256(out),
2505                )
2506            }
2507        }
2508    };
2509    #[derive(serde::Serialize, serde::Deserialize)]
2510    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2511    /**```solidity
2512struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2513```*/
2514    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2515    #[derive(Clone)]
2516    pub struct StakeTableState {
2517        #[allow(missing_docs)]
2518        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
2519        #[allow(missing_docs)]
2520        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2521        #[allow(missing_docs)]
2522        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2523        #[allow(missing_docs)]
2524        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2525    }
2526    #[allow(
2527        non_camel_case_types,
2528        non_snake_case,
2529        clippy::pub_underscore_fields,
2530        clippy::style
2531    )]
2532    const _: () = {
2533        use alloy::sol_types as alloy_sol_types;
2534        #[doc(hidden)]
2535        #[allow(dead_code)]
2536        type UnderlyingSolTuple<'a> = (
2537            alloy::sol_types::sol_data::Uint<256>,
2538            BN254::ScalarField,
2539            BN254::ScalarField,
2540            BN254::ScalarField,
2541        );
2542        #[doc(hidden)]
2543        type UnderlyingRustTuple<'a> = (
2544            alloy::sol_types::private::primitives::aliases::U256,
2545            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2546            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2547            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2548        );
2549        #[cfg(test)]
2550        #[allow(dead_code, unreachable_patterns)]
2551        fn _type_assertion(
2552            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2553        ) {
2554            match _t {
2555                alloy_sol_types::private::AssertTypeEq::<
2556                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2557                >(_) => {}
2558            }
2559        }
2560        #[automatically_derived]
2561        #[doc(hidden)]
2562        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
2563            fn from(value: StakeTableState) -> Self {
2564                (
2565                    value.threshold,
2566                    value.blsKeyComm,
2567                    value.schnorrKeyComm,
2568                    value.amountComm,
2569                )
2570            }
2571        }
2572        #[automatically_derived]
2573        #[doc(hidden)]
2574        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
2575            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2576                Self {
2577                    threshold: tuple.0,
2578                    blsKeyComm: tuple.1,
2579                    schnorrKeyComm: tuple.2,
2580                    amountComm: tuple.3,
2581                }
2582            }
2583        }
2584        #[automatically_derived]
2585        impl alloy_sol_types::SolValue for StakeTableState {
2586            type SolType = Self;
2587        }
2588        #[automatically_derived]
2589        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
2590            #[inline]
2591            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2592                (
2593                    <alloy::sol_types::sol_data::Uint<
2594                        256,
2595                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
2596                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2597                        &self.blsKeyComm,
2598                    ),
2599                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2600                        &self.schnorrKeyComm,
2601                    ),
2602                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2603                        &self.amountComm,
2604                    ),
2605                )
2606            }
2607            #[inline]
2608            fn stv_abi_encoded_size(&self) -> usize {
2609                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2610                    return size;
2611                }
2612                let tuple = <UnderlyingRustTuple<
2613                    '_,
2614                > as ::core::convert::From<Self>>::from(self.clone());
2615                <UnderlyingSolTuple<
2616                    '_,
2617                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2618            }
2619            #[inline]
2620            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2621                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2622            }
2623            #[inline]
2624            fn stv_abi_encode_packed_to(
2625                &self,
2626                out: &mut alloy_sol_types::private::Vec<u8>,
2627            ) {
2628                let tuple = <UnderlyingRustTuple<
2629                    '_,
2630                > as ::core::convert::From<Self>>::from(self.clone());
2631                <UnderlyingSolTuple<
2632                    '_,
2633                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2634            }
2635            #[inline]
2636            fn stv_abi_packed_encoded_size(&self) -> usize {
2637                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2638                    return size;
2639                }
2640                let tuple = <UnderlyingRustTuple<
2641                    '_,
2642                > as ::core::convert::From<Self>>::from(self.clone());
2643                <UnderlyingSolTuple<
2644                    '_,
2645                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2646            }
2647        }
2648        #[automatically_derived]
2649        impl alloy_sol_types::SolType for StakeTableState {
2650            type RustType = Self;
2651            type Token<'a> = <UnderlyingSolTuple<
2652                'a,
2653            > as alloy_sol_types::SolType>::Token<'a>;
2654            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2655            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2656                '_,
2657            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2658            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2659                '_,
2660            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2661            #[inline]
2662            fn valid_token(token: &Self::Token<'_>) -> bool {
2663                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2664            }
2665            #[inline]
2666            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2667                let tuple = <UnderlyingSolTuple<
2668                    '_,
2669                > as alloy_sol_types::SolType>::detokenize(token);
2670                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2671            }
2672        }
2673        #[automatically_derived]
2674        impl alloy_sol_types::SolStruct for StakeTableState {
2675            const NAME: &'static str = "StakeTableState";
2676            #[inline]
2677            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2678                alloy_sol_types::private::Cow::Borrowed(
2679                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
2680                )
2681            }
2682            #[inline]
2683            fn eip712_components() -> alloy_sol_types::private::Vec<
2684                alloy_sol_types::private::Cow<'static, str>,
2685            > {
2686                alloy_sol_types::private::Vec::new()
2687            }
2688            #[inline]
2689            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2690                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2691            }
2692            #[inline]
2693            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2694                [
2695                    <alloy::sol_types::sol_data::Uint<
2696                        256,
2697                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
2698                        .0,
2699                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2700                            &self.blsKeyComm,
2701                        )
2702                        .0,
2703                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2704                            &self.schnorrKeyComm,
2705                        )
2706                        .0,
2707                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2708                            &self.amountComm,
2709                        )
2710                        .0,
2711                ]
2712                    .concat()
2713            }
2714        }
2715        #[automatically_derived]
2716        impl alloy_sol_types::EventTopic for StakeTableState {
2717            #[inline]
2718            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2719                0usize
2720                    + <alloy::sol_types::sol_data::Uint<
2721                        256,
2722                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2723                        &rust.threshold,
2724                    )
2725                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2726                        &rust.blsKeyComm,
2727                    )
2728                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2729                        &rust.schnorrKeyComm,
2730                    )
2731                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2732                        &rust.amountComm,
2733                    )
2734            }
2735            #[inline]
2736            fn encode_topic_preimage(
2737                rust: &Self::RustType,
2738                out: &mut alloy_sol_types::private::Vec<u8>,
2739            ) {
2740                out.reserve(
2741                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2742                );
2743                <alloy::sol_types::sol_data::Uint<
2744                    256,
2745                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2746                    &rust.threshold,
2747                    out,
2748                );
2749                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2750                    &rust.blsKeyComm,
2751                    out,
2752                );
2753                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2754                    &rust.schnorrKeyComm,
2755                    out,
2756                );
2757                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2758                    &rust.amountComm,
2759                    out,
2760                );
2761            }
2762            #[inline]
2763            fn encode_topic(
2764                rust: &Self::RustType,
2765            ) -> alloy_sol_types::abi::token::WordToken {
2766                let mut out = alloy_sol_types::private::Vec::new();
2767                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2768                    rust,
2769                    &mut out,
2770                );
2771                alloy_sol_types::abi::token::WordToken(
2772                    alloy_sol_types::private::keccak256(out),
2773                )
2774            }
2775        }
2776    };
2777    use alloy::contract as alloy_contract;
2778    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2779
2780See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2781    #[inline]
2782    pub const fn new<
2783        P: alloy_contract::private::Provider<N>,
2784        N: alloy_contract::private::Network,
2785    >(
2786        address: alloy_sol_types::private::Address,
2787        __provider: P,
2788    ) -> LightClientInstance<P, N> {
2789        LightClientInstance::<P, N>::new(address, __provider)
2790    }
2791    /**A [`LightClient`](self) instance.
2792
2793Contains type-safe methods for interacting with an on-chain instance of the
2794[`LightClient`](self) contract located at a given `address`, using a given
2795provider `P`.
2796
2797If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2798documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2799be used to deploy a new instance of the contract.
2800
2801See the [module-level documentation](self) for all the available methods.*/
2802    #[derive(Clone)]
2803    pub struct LightClientInstance<P, N = alloy_contract::private::Ethereum> {
2804        address: alloy_sol_types::private::Address,
2805        provider: P,
2806        _network: ::core::marker::PhantomData<N>,
2807    }
2808    #[automatically_derived]
2809    impl<P, N> ::core::fmt::Debug for LightClientInstance<P, N> {
2810        #[inline]
2811        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2812            f.debug_tuple("LightClientInstance").field(&self.address).finish()
2813        }
2814    }
2815    /// Instantiation and getters/setters.
2816    #[automatically_derived]
2817    impl<
2818        P: alloy_contract::private::Provider<N>,
2819        N: alloy_contract::private::Network,
2820    > LightClientInstance<P, N> {
2821        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2822
2823See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2824        #[inline]
2825        pub const fn new(
2826            address: alloy_sol_types::private::Address,
2827            __provider: P,
2828        ) -> Self {
2829            Self {
2830                address,
2831                provider: __provider,
2832                _network: ::core::marker::PhantomData,
2833            }
2834        }
2835        /// Returns a reference to the address.
2836        #[inline]
2837        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2838            &self.address
2839        }
2840        /// Sets the address.
2841        #[inline]
2842        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2843            self.address = address;
2844        }
2845        /// Sets the address and returns `self`.
2846        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2847            self.set_address(address);
2848            self
2849        }
2850        /// Returns a reference to the provider.
2851        #[inline]
2852        pub const fn provider(&self) -> &P {
2853            &self.provider
2854        }
2855    }
2856    impl<P: ::core::clone::Clone, N> LightClientInstance<&P, N> {
2857        /// Clones the provider and returns a new instance with the cloned provider.
2858        #[inline]
2859        pub fn with_cloned_provider(self) -> LightClientInstance<P, N> {
2860            LightClientInstance {
2861                address: self.address,
2862                provider: ::core::clone::Clone::clone(&self.provider),
2863                _network: ::core::marker::PhantomData,
2864            }
2865        }
2866    }
2867    /// Function calls.
2868    #[automatically_derived]
2869    impl<
2870        P: alloy_contract::private::Provider<N>,
2871        N: alloy_contract::private::Network,
2872    > LightClientInstance<P, N> {
2873        /// Creates a new call builder using this contract instance's provider and address.
2874        ///
2875        /// Note that the call can be any function call, not just those defined in this
2876        /// contract. Prefer using the other methods for building type-safe contract calls.
2877        pub fn call_builder<C: alloy_sol_types::SolCall>(
2878            &self,
2879            call: &C,
2880        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2881            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2882        }
2883    }
2884    /// Event filters.
2885    #[automatically_derived]
2886    impl<
2887        P: alloy_contract::private::Provider<N>,
2888        N: alloy_contract::private::Network,
2889    > LightClientInstance<P, N> {
2890        /// Creates a new event filter using this contract instance's provider and address.
2891        ///
2892        /// Note that the type can be any event, not just those defined in this contract.
2893        /// Prefer using the other methods for building type-safe event filters.
2894        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2895            &self,
2896        ) -> alloy_contract::Event<&P, E, N> {
2897            alloy_contract::Event::new_sol(&self.provider, &self.address)
2898        }
2899    }
2900}
2901/**
2902
2903Generated by the following Solidity interface...
2904```solidity
2905library BN254 {
2906    type BaseField is uint256;
2907    type ScalarField is uint256;
2908    struct G1Point {
2909        BaseField x;
2910        BaseField y;
2911    }
2912}
2913
2914library IPlonkVerifier {
2915    struct PlonkProof {
2916        BN254.G1Point wire0;
2917        BN254.G1Point wire1;
2918        BN254.G1Point wire2;
2919        BN254.G1Point wire3;
2920        BN254.G1Point wire4;
2921        BN254.G1Point prodPerm;
2922        BN254.G1Point split0;
2923        BN254.G1Point split1;
2924        BN254.G1Point split2;
2925        BN254.G1Point split3;
2926        BN254.G1Point split4;
2927        BN254.G1Point zeta;
2928        BN254.G1Point zetaOmega;
2929        BN254.ScalarField wireEval0;
2930        BN254.ScalarField wireEval1;
2931        BN254.ScalarField wireEval2;
2932        BN254.ScalarField wireEval3;
2933        BN254.ScalarField wireEval4;
2934        BN254.ScalarField sigmaEval0;
2935        BN254.ScalarField sigmaEval1;
2936        BN254.ScalarField sigmaEval2;
2937        BN254.ScalarField sigmaEval3;
2938        BN254.ScalarField prodPermZetaOmegaEval;
2939    }
2940    struct VerifyingKey {
2941        uint256 domainSize;
2942        uint256 numInputs;
2943        BN254.G1Point sigma0;
2944        BN254.G1Point sigma1;
2945        BN254.G1Point sigma2;
2946        BN254.G1Point sigma3;
2947        BN254.G1Point sigma4;
2948        BN254.G1Point q1;
2949        BN254.G1Point q2;
2950        BN254.G1Point q3;
2951        BN254.G1Point q4;
2952        BN254.G1Point qM12;
2953        BN254.G1Point qM34;
2954        BN254.G1Point qO;
2955        BN254.G1Point qC;
2956        BN254.G1Point qH1;
2957        BN254.G1Point qH2;
2958        BN254.G1Point qH3;
2959        BN254.G1Point qH4;
2960        BN254.G1Point qEcc;
2961        bytes32 g2LSB;
2962        bytes32 g2MSB;
2963    }
2964}
2965
2966library LightClient {
2967    struct LightClientState {
2968        uint64 viewNum;
2969        uint64 blockHeight;
2970        BN254.ScalarField blockCommRoot;
2971    }
2972    struct StakeTableState {
2973        uint256 threshold;
2974        BN254.ScalarField blsKeyComm;
2975        BN254.ScalarField schnorrKeyComm;
2976        BN254.ScalarField amountComm;
2977    }
2978}
2979
2980interface LightClientArbitrum {
2981    error AddressEmptyCode(address target);
2982    error ERC1967InvalidImplementation(address implementation);
2983    error ERC1967NonPayable();
2984    error FailedInnerCall();
2985    error InsufficientSnapshotHistory();
2986    error InvalidAddress();
2987    error InvalidArgs();
2988    error InvalidHotShotBlockForCommitmentCheck();
2989    error InvalidInitialization();
2990    error InvalidMaxStateHistory();
2991    error InvalidProof();
2992    error InvalidScalar();
2993    error NoChangeRequired();
2994    error NotInitializing();
2995    error OutdatedState();
2996    error OwnableInvalidOwner(address owner);
2997    error OwnableUnauthorizedAccount(address account);
2998    error ProverNotPermissioned();
2999    error UUPSUnauthorizedCallContext();
3000    error UUPSUnsupportedProxiableUUID(bytes32 slot);
3001    error WrongStakeTableUsed();
3002
3003    event Initialized(uint64 version);
3004    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
3005    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
3006    event PermissionedProverNotRequired();
3007    event PermissionedProverRequired(address permissionedProver);
3008    event Upgrade(address implementation);
3009    event Upgraded(address indexed implementation);
3010
3011    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
3012    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
3013    function currentBlockNumber() external view returns (uint256);
3014    function disablePermissionedProverMode() external;
3015    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3016    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3017    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3018    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
3019    function getStateHistoryCount() external view returns (uint256);
3020    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
3021    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
3022    function isPermissionedProverEnabled() external view returns (bool);
3023    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
3024    function newFinalizedState(LightClient.LightClientState memory newState, IPlonkVerifier.PlonkProof memory proof) external;
3025    function owner() external view returns (address);
3026    function permissionedProver() external view returns (address);
3027    function proxiableUUID() external view returns (bytes32);
3028    function renounceOwnership() external;
3029    function setPermissionedProver(address prover) external;
3030    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
3031    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
3032    function stateHistoryFirstIndex() external view returns (uint64);
3033    function stateHistoryRetentionPeriod() external view returns (uint32);
3034    function transferOwnership(address newOwner) external;
3035    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
3036}
3037```
3038
3039...which was generated by the following JSON ABI:
3040```json
3041[
3042  {
3043    "type": "function",
3044    "name": "UPGRADE_INTERFACE_VERSION",
3045    "inputs": [],
3046    "outputs": [
3047      {
3048        "name": "",
3049        "type": "string",
3050        "internalType": "string"
3051      }
3052    ],
3053    "stateMutability": "view"
3054  },
3055  {
3056    "type": "function",
3057    "name": "_getVk",
3058    "inputs": [],
3059    "outputs": [
3060      {
3061        "name": "vk",
3062        "type": "tuple",
3063        "internalType": "struct IPlonkVerifier.VerifyingKey",
3064        "components": [
3065          {
3066            "name": "domainSize",
3067            "type": "uint256",
3068            "internalType": "uint256"
3069          },
3070          {
3071            "name": "numInputs",
3072            "type": "uint256",
3073            "internalType": "uint256"
3074          },
3075          {
3076            "name": "sigma0",
3077            "type": "tuple",
3078            "internalType": "struct BN254.G1Point",
3079            "components": [
3080              {
3081                "name": "x",
3082                "type": "uint256",
3083                "internalType": "BN254.BaseField"
3084              },
3085              {
3086                "name": "y",
3087                "type": "uint256",
3088                "internalType": "BN254.BaseField"
3089              }
3090            ]
3091          },
3092          {
3093            "name": "sigma1",
3094            "type": "tuple",
3095            "internalType": "struct BN254.G1Point",
3096            "components": [
3097              {
3098                "name": "x",
3099                "type": "uint256",
3100                "internalType": "BN254.BaseField"
3101              },
3102              {
3103                "name": "y",
3104                "type": "uint256",
3105                "internalType": "BN254.BaseField"
3106              }
3107            ]
3108          },
3109          {
3110            "name": "sigma2",
3111            "type": "tuple",
3112            "internalType": "struct BN254.G1Point",
3113            "components": [
3114              {
3115                "name": "x",
3116                "type": "uint256",
3117                "internalType": "BN254.BaseField"
3118              },
3119              {
3120                "name": "y",
3121                "type": "uint256",
3122                "internalType": "BN254.BaseField"
3123              }
3124            ]
3125          },
3126          {
3127            "name": "sigma3",
3128            "type": "tuple",
3129            "internalType": "struct BN254.G1Point",
3130            "components": [
3131              {
3132                "name": "x",
3133                "type": "uint256",
3134                "internalType": "BN254.BaseField"
3135              },
3136              {
3137                "name": "y",
3138                "type": "uint256",
3139                "internalType": "BN254.BaseField"
3140              }
3141            ]
3142          },
3143          {
3144            "name": "sigma4",
3145            "type": "tuple",
3146            "internalType": "struct BN254.G1Point",
3147            "components": [
3148              {
3149                "name": "x",
3150                "type": "uint256",
3151                "internalType": "BN254.BaseField"
3152              },
3153              {
3154                "name": "y",
3155                "type": "uint256",
3156                "internalType": "BN254.BaseField"
3157              }
3158            ]
3159          },
3160          {
3161            "name": "q1",
3162            "type": "tuple",
3163            "internalType": "struct BN254.G1Point",
3164            "components": [
3165              {
3166                "name": "x",
3167                "type": "uint256",
3168                "internalType": "BN254.BaseField"
3169              },
3170              {
3171                "name": "y",
3172                "type": "uint256",
3173                "internalType": "BN254.BaseField"
3174              }
3175            ]
3176          },
3177          {
3178            "name": "q2",
3179            "type": "tuple",
3180            "internalType": "struct BN254.G1Point",
3181            "components": [
3182              {
3183                "name": "x",
3184                "type": "uint256",
3185                "internalType": "BN254.BaseField"
3186              },
3187              {
3188                "name": "y",
3189                "type": "uint256",
3190                "internalType": "BN254.BaseField"
3191              }
3192            ]
3193          },
3194          {
3195            "name": "q3",
3196            "type": "tuple",
3197            "internalType": "struct BN254.G1Point",
3198            "components": [
3199              {
3200                "name": "x",
3201                "type": "uint256",
3202                "internalType": "BN254.BaseField"
3203              },
3204              {
3205                "name": "y",
3206                "type": "uint256",
3207                "internalType": "BN254.BaseField"
3208              }
3209            ]
3210          },
3211          {
3212            "name": "q4",
3213            "type": "tuple",
3214            "internalType": "struct BN254.G1Point",
3215            "components": [
3216              {
3217                "name": "x",
3218                "type": "uint256",
3219                "internalType": "BN254.BaseField"
3220              },
3221              {
3222                "name": "y",
3223                "type": "uint256",
3224                "internalType": "BN254.BaseField"
3225              }
3226            ]
3227          },
3228          {
3229            "name": "qM12",
3230            "type": "tuple",
3231            "internalType": "struct BN254.G1Point",
3232            "components": [
3233              {
3234                "name": "x",
3235                "type": "uint256",
3236                "internalType": "BN254.BaseField"
3237              },
3238              {
3239                "name": "y",
3240                "type": "uint256",
3241                "internalType": "BN254.BaseField"
3242              }
3243            ]
3244          },
3245          {
3246            "name": "qM34",
3247            "type": "tuple",
3248            "internalType": "struct BN254.G1Point",
3249            "components": [
3250              {
3251                "name": "x",
3252                "type": "uint256",
3253                "internalType": "BN254.BaseField"
3254              },
3255              {
3256                "name": "y",
3257                "type": "uint256",
3258                "internalType": "BN254.BaseField"
3259              }
3260            ]
3261          },
3262          {
3263            "name": "qO",
3264            "type": "tuple",
3265            "internalType": "struct BN254.G1Point",
3266            "components": [
3267              {
3268                "name": "x",
3269                "type": "uint256",
3270                "internalType": "BN254.BaseField"
3271              },
3272              {
3273                "name": "y",
3274                "type": "uint256",
3275                "internalType": "BN254.BaseField"
3276              }
3277            ]
3278          },
3279          {
3280            "name": "qC",
3281            "type": "tuple",
3282            "internalType": "struct BN254.G1Point",
3283            "components": [
3284              {
3285                "name": "x",
3286                "type": "uint256",
3287                "internalType": "BN254.BaseField"
3288              },
3289              {
3290                "name": "y",
3291                "type": "uint256",
3292                "internalType": "BN254.BaseField"
3293              }
3294            ]
3295          },
3296          {
3297            "name": "qH1",
3298            "type": "tuple",
3299            "internalType": "struct BN254.G1Point",
3300            "components": [
3301              {
3302                "name": "x",
3303                "type": "uint256",
3304                "internalType": "BN254.BaseField"
3305              },
3306              {
3307                "name": "y",
3308                "type": "uint256",
3309                "internalType": "BN254.BaseField"
3310              }
3311            ]
3312          },
3313          {
3314            "name": "qH2",
3315            "type": "tuple",
3316            "internalType": "struct BN254.G1Point",
3317            "components": [
3318              {
3319                "name": "x",
3320                "type": "uint256",
3321                "internalType": "BN254.BaseField"
3322              },
3323              {
3324                "name": "y",
3325                "type": "uint256",
3326                "internalType": "BN254.BaseField"
3327              }
3328            ]
3329          },
3330          {
3331            "name": "qH3",
3332            "type": "tuple",
3333            "internalType": "struct BN254.G1Point",
3334            "components": [
3335              {
3336                "name": "x",
3337                "type": "uint256",
3338                "internalType": "BN254.BaseField"
3339              },
3340              {
3341                "name": "y",
3342                "type": "uint256",
3343                "internalType": "BN254.BaseField"
3344              }
3345            ]
3346          },
3347          {
3348            "name": "qH4",
3349            "type": "tuple",
3350            "internalType": "struct BN254.G1Point",
3351            "components": [
3352              {
3353                "name": "x",
3354                "type": "uint256",
3355                "internalType": "BN254.BaseField"
3356              },
3357              {
3358                "name": "y",
3359                "type": "uint256",
3360                "internalType": "BN254.BaseField"
3361              }
3362            ]
3363          },
3364          {
3365            "name": "qEcc",
3366            "type": "tuple",
3367            "internalType": "struct BN254.G1Point",
3368            "components": [
3369              {
3370                "name": "x",
3371                "type": "uint256",
3372                "internalType": "BN254.BaseField"
3373              },
3374              {
3375                "name": "y",
3376                "type": "uint256",
3377                "internalType": "BN254.BaseField"
3378              }
3379            ]
3380          },
3381          {
3382            "name": "g2LSB",
3383            "type": "bytes32",
3384            "internalType": "bytes32"
3385          },
3386          {
3387            "name": "g2MSB",
3388            "type": "bytes32",
3389            "internalType": "bytes32"
3390          }
3391        ]
3392      }
3393    ],
3394    "stateMutability": "pure"
3395  },
3396  {
3397    "type": "function",
3398    "name": "currentBlockNumber",
3399    "inputs": [],
3400    "outputs": [
3401      {
3402        "name": "",
3403        "type": "uint256",
3404        "internalType": "uint256"
3405      }
3406    ],
3407    "stateMutability": "view"
3408  },
3409  {
3410    "type": "function",
3411    "name": "disablePermissionedProverMode",
3412    "inputs": [],
3413    "outputs": [],
3414    "stateMutability": "nonpayable"
3415  },
3416  {
3417    "type": "function",
3418    "name": "finalizedState",
3419    "inputs": [],
3420    "outputs": [
3421      {
3422        "name": "viewNum",
3423        "type": "uint64",
3424        "internalType": "uint64"
3425      },
3426      {
3427        "name": "blockHeight",
3428        "type": "uint64",
3429        "internalType": "uint64"
3430      },
3431      {
3432        "name": "blockCommRoot",
3433        "type": "uint256",
3434        "internalType": "BN254.ScalarField"
3435      }
3436    ],
3437    "stateMutability": "view"
3438  },
3439  {
3440    "type": "function",
3441    "name": "genesisStakeTableState",
3442    "inputs": [],
3443    "outputs": [
3444      {
3445        "name": "threshold",
3446        "type": "uint256",
3447        "internalType": "uint256"
3448      },
3449      {
3450        "name": "blsKeyComm",
3451        "type": "uint256",
3452        "internalType": "BN254.ScalarField"
3453      },
3454      {
3455        "name": "schnorrKeyComm",
3456        "type": "uint256",
3457        "internalType": "BN254.ScalarField"
3458      },
3459      {
3460        "name": "amountComm",
3461        "type": "uint256",
3462        "internalType": "BN254.ScalarField"
3463      }
3464    ],
3465    "stateMutability": "view"
3466  },
3467  {
3468    "type": "function",
3469    "name": "genesisState",
3470    "inputs": [],
3471    "outputs": [
3472      {
3473        "name": "viewNum",
3474        "type": "uint64",
3475        "internalType": "uint64"
3476      },
3477      {
3478        "name": "blockHeight",
3479        "type": "uint64",
3480        "internalType": "uint64"
3481      },
3482      {
3483        "name": "blockCommRoot",
3484        "type": "uint256",
3485        "internalType": "BN254.ScalarField"
3486      }
3487    ],
3488    "stateMutability": "view"
3489  },
3490  {
3491    "type": "function",
3492    "name": "getHotShotCommitment",
3493    "inputs": [
3494      {
3495        "name": "hotShotBlockHeight",
3496        "type": "uint256",
3497        "internalType": "uint256"
3498      }
3499    ],
3500    "outputs": [
3501      {
3502        "name": "hotShotBlockCommRoot",
3503        "type": "uint256",
3504        "internalType": "BN254.ScalarField"
3505      },
3506      {
3507        "name": "hotshotBlockHeight",
3508        "type": "uint64",
3509        "internalType": "uint64"
3510      }
3511    ],
3512    "stateMutability": "view"
3513  },
3514  {
3515    "type": "function",
3516    "name": "getStateHistoryCount",
3517    "inputs": [],
3518    "outputs": [
3519      {
3520        "name": "",
3521        "type": "uint256",
3522        "internalType": "uint256"
3523      }
3524    ],
3525    "stateMutability": "view"
3526  },
3527  {
3528    "type": "function",
3529    "name": "getVersion",
3530    "inputs": [],
3531    "outputs": [
3532      {
3533        "name": "majorVersion",
3534        "type": "uint8",
3535        "internalType": "uint8"
3536      },
3537      {
3538        "name": "minorVersion",
3539        "type": "uint8",
3540        "internalType": "uint8"
3541      },
3542      {
3543        "name": "patchVersion",
3544        "type": "uint8",
3545        "internalType": "uint8"
3546      }
3547    ],
3548    "stateMutability": "pure"
3549  },
3550  {
3551    "type": "function",
3552    "name": "initialize",
3553    "inputs": [
3554      {
3555        "name": "_genesis",
3556        "type": "tuple",
3557        "internalType": "struct LightClient.LightClientState",
3558        "components": [
3559          {
3560            "name": "viewNum",
3561            "type": "uint64",
3562            "internalType": "uint64"
3563          },
3564          {
3565            "name": "blockHeight",
3566            "type": "uint64",
3567            "internalType": "uint64"
3568          },
3569          {
3570            "name": "blockCommRoot",
3571            "type": "uint256",
3572            "internalType": "BN254.ScalarField"
3573          }
3574        ]
3575      },
3576      {
3577        "name": "_genesisStakeTableState",
3578        "type": "tuple",
3579        "internalType": "struct LightClient.StakeTableState",
3580        "components": [
3581          {
3582            "name": "threshold",
3583            "type": "uint256",
3584            "internalType": "uint256"
3585          },
3586          {
3587            "name": "blsKeyComm",
3588            "type": "uint256",
3589            "internalType": "BN254.ScalarField"
3590          },
3591          {
3592            "name": "schnorrKeyComm",
3593            "type": "uint256",
3594            "internalType": "BN254.ScalarField"
3595          },
3596          {
3597            "name": "amountComm",
3598            "type": "uint256",
3599            "internalType": "BN254.ScalarField"
3600          }
3601        ]
3602      },
3603      {
3604        "name": "_stateHistoryRetentionPeriod",
3605        "type": "uint32",
3606        "internalType": "uint32"
3607      },
3608      {
3609        "name": "owner",
3610        "type": "address",
3611        "internalType": "address"
3612      }
3613    ],
3614    "outputs": [],
3615    "stateMutability": "nonpayable"
3616  },
3617  {
3618    "type": "function",
3619    "name": "isPermissionedProverEnabled",
3620    "inputs": [],
3621    "outputs": [
3622      {
3623        "name": "",
3624        "type": "bool",
3625        "internalType": "bool"
3626      }
3627    ],
3628    "stateMutability": "view"
3629  },
3630  {
3631    "type": "function",
3632    "name": "lagOverEscapeHatchThreshold",
3633    "inputs": [
3634      {
3635        "name": "blockNumber",
3636        "type": "uint256",
3637        "internalType": "uint256"
3638      },
3639      {
3640        "name": "blockThreshold",
3641        "type": "uint256",
3642        "internalType": "uint256"
3643      }
3644    ],
3645    "outputs": [
3646      {
3647        "name": "",
3648        "type": "bool",
3649        "internalType": "bool"
3650      }
3651    ],
3652    "stateMutability": "view"
3653  },
3654  {
3655    "type": "function",
3656    "name": "newFinalizedState",
3657    "inputs": [
3658      {
3659        "name": "newState",
3660        "type": "tuple",
3661        "internalType": "struct LightClient.LightClientState",
3662        "components": [
3663          {
3664            "name": "viewNum",
3665            "type": "uint64",
3666            "internalType": "uint64"
3667          },
3668          {
3669            "name": "blockHeight",
3670            "type": "uint64",
3671            "internalType": "uint64"
3672          },
3673          {
3674            "name": "blockCommRoot",
3675            "type": "uint256",
3676            "internalType": "BN254.ScalarField"
3677          }
3678        ]
3679      },
3680      {
3681        "name": "proof",
3682        "type": "tuple",
3683        "internalType": "struct IPlonkVerifier.PlonkProof",
3684        "components": [
3685          {
3686            "name": "wire0",
3687            "type": "tuple",
3688            "internalType": "struct BN254.G1Point",
3689            "components": [
3690              {
3691                "name": "x",
3692                "type": "uint256",
3693                "internalType": "BN254.BaseField"
3694              },
3695              {
3696                "name": "y",
3697                "type": "uint256",
3698                "internalType": "BN254.BaseField"
3699              }
3700            ]
3701          },
3702          {
3703            "name": "wire1",
3704            "type": "tuple",
3705            "internalType": "struct BN254.G1Point",
3706            "components": [
3707              {
3708                "name": "x",
3709                "type": "uint256",
3710                "internalType": "BN254.BaseField"
3711              },
3712              {
3713                "name": "y",
3714                "type": "uint256",
3715                "internalType": "BN254.BaseField"
3716              }
3717            ]
3718          },
3719          {
3720            "name": "wire2",
3721            "type": "tuple",
3722            "internalType": "struct BN254.G1Point",
3723            "components": [
3724              {
3725                "name": "x",
3726                "type": "uint256",
3727                "internalType": "BN254.BaseField"
3728              },
3729              {
3730                "name": "y",
3731                "type": "uint256",
3732                "internalType": "BN254.BaseField"
3733              }
3734            ]
3735          },
3736          {
3737            "name": "wire3",
3738            "type": "tuple",
3739            "internalType": "struct BN254.G1Point",
3740            "components": [
3741              {
3742                "name": "x",
3743                "type": "uint256",
3744                "internalType": "BN254.BaseField"
3745              },
3746              {
3747                "name": "y",
3748                "type": "uint256",
3749                "internalType": "BN254.BaseField"
3750              }
3751            ]
3752          },
3753          {
3754            "name": "wire4",
3755            "type": "tuple",
3756            "internalType": "struct BN254.G1Point",
3757            "components": [
3758              {
3759                "name": "x",
3760                "type": "uint256",
3761                "internalType": "BN254.BaseField"
3762              },
3763              {
3764                "name": "y",
3765                "type": "uint256",
3766                "internalType": "BN254.BaseField"
3767              }
3768            ]
3769          },
3770          {
3771            "name": "prodPerm",
3772            "type": "tuple",
3773            "internalType": "struct BN254.G1Point",
3774            "components": [
3775              {
3776                "name": "x",
3777                "type": "uint256",
3778                "internalType": "BN254.BaseField"
3779              },
3780              {
3781                "name": "y",
3782                "type": "uint256",
3783                "internalType": "BN254.BaseField"
3784              }
3785            ]
3786          },
3787          {
3788            "name": "split0",
3789            "type": "tuple",
3790            "internalType": "struct BN254.G1Point",
3791            "components": [
3792              {
3793                "name": "x",
3794                "type": "uint256",
3795                "internalType": "BN254.BaseField"
3796              },
3797              {
3798                "name": "y",
3799                "type": "uint256",
3800                "internalType": "BN254.BaseField"
3801              }
3802            ]
3803          },
3804          {
3805            "name": "split1",
3806            "type": "tuple",
3807            "internalType": "struct BN254.G1Point",
3808            "components": [
3809              {
3810                "name": "x",
3811                "type": "uint256",
3812                "internalType": "BN254.BaseField"
3813              },
3814              {
3815                "name": "y",
3816                "type": "uint256",
3817                "internalType": "BN254.BaseField"
3818              }
3819            ]
3820          },
3821          {
3822            "name": "split2",
3823            "type": "tuple",
3824            "internalType": "struct BN254.G1Point",
3825            "components": [
3826              {
3827                "name": "x",
3828                "type": "uint256",
3829                "internalType": "BN254.BaseField"
3830              },
3831              {
3832                "name": "y",
3833                "type": "uint256",
3834                "internalType": "BN254.BaseField"
3835              }
3836            ]
3837          },
3838          {
3839            "name": "split3",
3840            "type": "tuple",
3841            "internalType": "struct BN254.G1Point",
3842            "components": [
3843              {
3844                "name": "x",
3845                "type": "uint256",
3846                "internalType": "BN254.BaseField"
3847              },
3848              {
3849                "name": "y",
3850                "type": "uint256",
3851                "internalType": "BN254.BaseField"
3852              }
3853            ]
3854          },
3855          {
3856            "name": "split4",
3857            "type": "tuple",
3858            "internalType": "struct BN254.G1Point",
3859            "components": [
3860              {
3861                "name": "x",
3862                "type": "uint256",
3863                "internalType": "BN254.BaseField"
3864              },
3865              {
3866                "name": "y",
3867                "type": "uint256",
3868                "internalType": "BN254.BaseField"
3869              }
3870            ]
3871          },
3872          {
3873            "name": "zeta",
3874            "type": "tuple",
3875            "internalType": "struct BN254.G1Point",
3876            "components": [
3877              {
3878                "name": "x",
3879                "type": "uint256",
3880                "internalType": "BN254.BaseField"
3881              },
3882              {
3883                "name": "y",
3884                "type": "uint256",
3885                "internalType": "BN254.BaseField"
3886              }
3887            ]
3888          },
3889          {
3890            "name": "zetaOmega",
3891            "type": "tuple",
3892            "internalType": "struct BN254.G1Point",
3893            "components": [
3894              {
3895                "name": "x",
3896                "type": "uint256",
3897                "internalType": "BN254.BaseField"
3898              },
3899              {
3900                "name": "y",
3901                "type": "uint256",
3902                "internalType": "BN254.BaseField"
3903              }
3904            ]
3905          },
3906          {
3907            "name": "wireEval0",
3908            "type": "uint256",
3909            "internalType": "BN254.ScalarField"
3910          },
3911          {
3912            "name": "wireEval1",
3913            "type": "uint256",
3914            "internalType": "BN254.ScalarField"
3915          },
3916          {
3917            "name": "wireEval2",
3918            "type": "uint256",
3919            "internalType": "BN254.ScalarField"
3920          },
3921          {
3922            "name": "wireEval3",
3923            "type": "uint256",
3924            "internalType": "BN254.ScalarField"
3925          },
3926          {
3927            "name": "wireEval4",
3928            "type": "uint256",
3929            "internalType": "BN254.ScalarField"
3930          },
3931          {
3932            "name": "sigmaEval0",
3933            "type": "uint256",
3934            "internalType": "BN254.ScalarField"
3935          },
3936          {
3937            "name": "sigmaEval1",
3938            "type": "uint256",
3939            "internalType": "BN254.ScalarField"
3940          },
3941          {
3942            "name": "sigmaEval2",
3943            "type": "uint256",
3944            "internalType": "BN254.ScalarField"
3945          },
3946          {
3947            "name": "sigmaEval3",
3948            "type": "uint256",
3949            "internalType": "BN254.ScalarField"
3950          },
3951          {
3952            "name": "prodPermZetaOmegaEval",
3953            "type": "uint256",
3954            "internalType": "BN254.ScalarField"
3955          }
3956        ]
3957      }
3958    ],
3959    "outputs": [],
3960    "stateMutability": "nonpayable"
3961  },
3962  {
3963    "type": "function",
3964    "name": "owner",
3965    "inputs": [],
3966    "outputs": [
3967      {
3968        "name": "",
3969        "type": "address",
3970        "internalType": "address"
3971      }
3972    ],
3973    "stateMutability": "view"
3974  },
3975  {
3976    "type": "function",
3977    "name": "permissionedProver",
3978    "inputs": [],
3979    "outputs": [
3980      {
3981        "name": "",
3982        "type": "address",
3983        "internalType": "address"
3984      }
3985    ],
3986    "stateMutability": "view"
3987  },
3988  {
3989    "type": "function",
3990    "name": "proxiableUUID",
3991    "inputs": [],
3992    "outputs": [
3993      {
3994        "name": "",
3995        "type": "bytes32",
3996        "internalType": "bytes32"
3997      }
3998    ],
3999    "stateMutability": "view"
4000  },
4001  {
4002    "type": "function",
4003    "name": "renounceOwnership",
4004    "inputs": [],
4005    "outputs": [],
4006    "stateMutability": "nonpayable"
4007  },
4008  {
4009    "type": "function",
4010    "name": "setPermissionedProver",
4011    "inputs": [
4012      {
4013        "name": "prover",
4014        "type": "address",
4015        "internalType": "address"
4016      }
4017    ],
4018    "outputs": [],
4019    "stateMutability": "nonpayable"
4020  },
4021  {
4022    "type": "function",
4023    "name": "setstateHistoryRetentionPeriod",
4024    "inputs": [
4025      {
4026        "name": "historySeconds",
4027        "type": "uint32",
4028        "internalType": "uint32"
4029      }
4030    ],
4031    "outputs": [],
4032    "stateMutability": "nonpayable"
4033  },
4034  {
4035    "type": "function",
4036    "name": "stateHistoryCommitments",
4037    "inputs": [
4038      {
4039        "name": "",
4040        "type": "uint256",
4041        "internalType": "uint256"
4042      }
4043    ],
4044    "outputs": [
4045      {
4046        "name": "l1BlockHeight",
4047        "type": "uint64",
4048        "internalType": "uint64"
4049      },
4050      {
4051        "name": "l1BlockTimestamp",
4052        "type": "uint64",
4053        "internalType": "uint64"
4054      },
4055      {
4056        "name": "hotShotBlockHeight",
4057        "type": "uint64",
4058        "internalType": "uint64"
4059      },
4060      {
4061        "name": "hotShotBlockCommRoot",
4062        "type": "uint256",
4063        "internalType": "BN254.ScalarField"
4064      }
4065    ],
4066    "stateMutability": "view"
4067  },
4068  {
4069    "type": "function",
4070    "name": "stateHistoryFirstIndex",
4071    "inputs": [],
4072    "outputs": [
4073      {
4074        "name": "",
4075        "type": "uint64",
4076        "internalType": "uint64"
4077      }
4078    ],
4079    "stateMutability": "view"
4080  },
4081  {
4082    "type": "function",
4083    "name": "stateHistoryRetentionPeriod",
4084    "inputs": [],
4085    "outputs": [
4086      {
4087        "name": "",
4088        "type": "uint32",
4089        "internalType": "uint32"
4090      }
4091    ],
4092    "stateMutability": "view"
4093  },
4094  {
4095    "type": "function",
4096    "name": "transferOwnership",
4097    "inputs": [
4098      {
4099        "name": "newOwner",
4100        "type": "address",
4101        "internalType": "address"
4102      }
4103    ],
4104    "outputs": [],
4105    "stateMutability": "nonpayable"
4106  },
4107  {
4108    "type": "function",
4109    "name": "upgradeToAndCall",
4110    "inputs": [
4111      {
4112        "name": "newImplementation",
4113        "type": "address",
4114        "internalType": "address"
4115      },
4116      {
4117        "name": "data",
4118        "type": "bytes",
4119        "internalType": "bytes"
4120      }
4121    ],
4122    "outputs": [],
4123    "stateMutability": "payable"
4124  },
4125  {
4126    "type": "event",
4127    "name": "Initialized",
4128    "inputs": [
4129      {
4130        "name": "version",
4131        "type": "uint64",
4132        "indexed": false,
4133        "internalType": "uint64"
4134      }
4135    ],
4136    "anonymous": false
4137  },
4138  {
4139    "type": "event",
4140    "name": "NewState",
4141    "inputs": [
4142      {
4143        "name": "viewNum",
4144        "type": "uint64",
4145        "indexed": true,
4146        "internalType": "uint64"
4147      },
4148      {
4149        "name": "blockHeight",
4150        "type": "uint64",
4151        "indexed": true,
4152        "internalType": "uint64"
4153      },
4154      {
4155        "name": "blockCommRoot",
4156        "type": "uint256",
4157        "indexed": false,
4158        "internalType": "BN254.ScalarField"
4159      }
4160    ],
4161    "anonymous": false
4162  },
4163  {
4164    "type": "event",
4165    "name": "OwnershipTransferred",
4166    "inputs": [
4167      {
4168        "name": "previousOwner",
4169        "type": "address",
4170        "indexed": true,
4171        "internalType": "address"
4172      },
4173      {
4174        "name": "newOwner",
4175        "type": "address",
4176        "indexed": true,
4177        "internalType": "address"
4178      }
4179    ],
4180    "anonymous": false
4181  },
4182  {
4183    "type": "event",
4184    "name": "PermissionedProverNotRequired",
4185    "inputs": [],
4186    "anonymous": false
4187  },
4188  {
4189    "type": "event",
4190    "name": "PermissionedProverRequired",
4191    "inputs": [
4192      {
4193        "name": "permissionedProver",
4194        "type": "address",
4195        "indexed": false,
4196        "internalType": "address"
4197      }
4198    ],
4199    "anonymous": false
4200  },
4201  {
4202    "type": "event",
4203    "name": "Upgrade",
4204    "inputs": [
4205      {
4206        "name": "implementation",
4207        "type": "address",
4208        "indexed": false,
4209        "internalType": "address"
4210      }
4211    ],
4212    "anonymous": false
4213  },
4214  {
4215    "type": "event",
4216    "name": "Upgraded",
4217    "inputs": [
4218      {
4219        "name": "implementation",
4220        "type": "address",
4221        "indexed": true,
4222        "internalType": "address"
4223      }
4224    ],
4225    "anonymous": false
4226  },
4227  {
4228    "type": "error",
4229    "name": "AddressEmptyCode",
4230    "inputs": [
4231      {
4232        "name": "target",
4233        "type": "address",
4234        "internalType": "address"
4235      }
4236    ]
4237  },
4238  {
4239    "type": "error",
4240    "name": "ERC1967InvalidImplementation",
4241    "inputs": [
4242      {
4243        "name": "implementation",
4244        "type": "address",
4245        "internalType": "address"
4246      }
4247    ]
4248  },
4249  {
4250    "type": "error",
4251    "name": "ERC1967NonPayable",
4252    "inputs": []
4253  },
4254  {
4255    "type": "error",
4256    "name": "FailedInnerCall",
4257    "inputs": []
4258  },
4259  {
4260    "type": "error",
4261    "name": "InsufficientSnapshotHistory",
4262    "inputs": []
4263  },
4264  {
4265    "type": "error",
4266    "name": "InvalidAddress",
4267    "inputs": []
4268  },
4269  {
4270    "type": "error",
4271    "name": "InvalidArgs",
4272    "inputs": []
4273  },
4274  {
4275    "type": "error",
4276    "name": "InvalidHotShotBlockForCommitmentCheck",
4277    "inputs": []
4278  },
4279  {
4280    "type": "error",
4281    "name": "InvalidInitialization",
4282    "inputs": []
4283  },
4284  {
4285    "type": "error",
4286    "name": "InvalidMaxStateHistory",
4287    "inputs": []
4288  },
4289  {
4290    "type": "error",
4291    "name": "InvalidProof",
4292    "inputs": []
4293  },
4294  {
4295    "type": "error",
4296    "name": "InvalidScalar",
4297    "inputs": []
4298  },
4299  {
4300    "type": "error",
4301    "name": "NoChangeRequired",
4302    "inputs": []
4303  },
4304  {
4305    "type": "error",
4306    "name": "NotInitializing",
4307    "inputs": []
4308  },
4309  {
4310    "type": "error",
4311    "name": "OutdatedState",
4312    "inputs": []
4313  },
4314  {
4315    "type": "error",
4316    "name": "OwnableInvalidOwner",
4317    "inputs": [
4318      {
4319        "name": "owner",
4320        "type": "address",
4321        "internalType": "address"
4322      }
4323    ]
4324  },
4325  {
4326    "type": "error",
4327    "name": "OwnableUnauthorizedAccount",
4328    "inputs": [
4329      {
4330        "name": "account",
4331        "type": "address",
4332        "internalType": "address"
4333      }
4334    ]
4335  },
4336  {
4337    "type": "error",
4338    "name": "ProverNotPermissioned",
4339    "inputs": []
4340  },
4341  {
4342    "type": "error",
4343    "name": "UUPSUnauthorizedCallContext",
4344    "inputs": []
4345  },
4346  {
4347    "type": "error",
4348    "name": "UUPSUnsupportedProxiableUUID",
4349    "inputs": [
4350      {
4351        "name": "slot",
4352        "type": "bytes32",
4353        "internalType": "bytes32"
4354      }
4355    ]
4356  },
4357  {
4358    "type": "error",
4359    "name": "WrongStakeTableUsed",
4360    "inputs": []
4361  }
4362]
4363```*/
4364#[allow(
4365    non_camel_case_types,
4366    non_snake_case,
4367    clippy::pub_underscore_fields,
4368    clippy::style,
4369    clippy::empty_structs_with_brackets
4370)]
4371pub mod LightClientArbitrum {
4372    use super::*;
4373    use alloy::sol_types as alloy_sol_types;
4374    /// The creation / init bytecode of the contract.
4375    ///
4376    /// ```text
4377    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612b9d6100f95f395f81816117540152818161177d01526118fa0152612b9d5ff3fe608060405260043610610161575f3560e01c8063715018a6116100cd5780639fdb54a711610087578063d24d933d11610062578063d24d933d14610520578063e03033011461054f578063f2fde38b1461056e578063f9e50d191461058d575f5ffd5b80639fdb54a714610456578063ad3cb1cc146104ab578063c23b9e9e146104e8575f5ffd5b8063715018a614610361578063826e41fc146103755780638584d23f146103a05780638da5cb5b146103dc57806396c1ca61146104185780639baa3cc914610437575f5ffd5b8063313df7b11161011e578063313df7b11461028c578063378ec23b146102c3578063426d3194146102e55780634f1ef2861461032657806352d1902d1461033957806369cc6a041461034d575f5ffd5b8063013fa5fc1461016557806302b592f3146101865780630d8e6e2c146101e357806312173c2c1461020e5780632063d4f71461022f5780632f79889d1461024e575b5f5ffd5b348015610170575f5ffd5b5061018461017f366004611fad565b6105a1565b005b348015610191575f5ffd5b506101a56101a0366004611fc6565b610654565b6040516101da94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156101ee575f5ffd5b5060408051600181525f60208201819052918101919091526060016101da565b348015610219575f5ffd5b5061022261069d565b6040516101da9190611fdd565b34801561023a575f5ffd5b50610184610249366004612312565b6106b2565b348015610259575f5ffd5b5060085461027490600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016101da565b348015610297575f5ffd5b506008546102ab906001600160a01b031681565b6040516001600160a01b0390911681526020016101da565b3480156102ce575f5ffd5b506102d761080d565b6040519081526020016101da565b3480156102f0575f5ffd5b505f546001546002546003546103069392919084565b6040805194855260208501939093529183015260608201526080016101da565b6101846103343660046124c2565b61086f565b348015610344575f5ffd5b506102d761088e565b348015610358575f5ffd5b506101846108a9565b34801561036c575f5ffd5b50610184610917565b348015610380575f5ffd5b506008546001600160a01b031615155b60405190151581526020016101da565b3480156103ab575f5ffd5b506103bf6103ba366004611fc6565b610928565b604080519283526001600160401b039091166020830152016101da565b3480156103e7575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166102ab565b348015610423575f5ffd5b50610184610432366004612578565b610a53565b348015610442575f5ffd5b50610184610451366004612591565b610adc565b348015610461575f5ffd5b50600654600754610485916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016101da565b3480156104b6575f5ffd5b506104db604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101da919061263a565b3480156104f3575f5ffd5b5060085461050b90600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016101da565b34801561052b575f5ffd5b50600454600554610485916001600160401b0380821692600160401b909204169083565b34801561055a575f5ffd5b5061039061056936600461266f565b610bfe565b348015610579575f5ffd5b50610184610588366004611fad565b610d5f565b348015610598575f5ffd5b506009546102d7565b6105a9610da1565b6001600160a01b0381166105d05760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036105ff5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610663575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6106a5611d0f565b6106ad610dfc565b905090565b6008546001600160a01b0316151580156106d757506008546001600160a01b03163314155b156106f5576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b03918216911611158061072e575060065460208301516001600160401b03600160401b9092048216911611155b1561074c5760405163051c46ef60e01b815260040160405180910390fd5b610759826040015161142b565b610763828261146c565b81516006805460208501516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408201516007556107b16107aa61080d565b4284611560565b81602001516001600160401b0316825f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6846040015160405161080191815260200190565b60405180910390a35050565b5f60646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ad919061268f565b610877611749565b610880826117ed565b61088a828261182e565b5050565b5f6108976118ef565b505f516020612b715f395f51905f5290565b6108b1610da1565b6008546001600160a01b0316156108fc57600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b61091f610da1565b6109155f611938565b600980545f9182919061093c6001836126ba565b8154811061094c5761094c6126cd565b5f918252602090912060029091020154600160801b90046001600160401b0316841061098b57604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610a4c5784600982815481106109bb576109bb6126cd565b5f918252602090912060029091020154600160801b90046001600160401b03161115610a4457600981815481106109f4576109f46126cd565b905f5260205f2090600202016001015460098281548110610a1757610a176126cd565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b60010161099f565b5050915091565b610a5b610da1565b610e108163ffffffff161080610a7a57506301e133808163ffffffff16115b80610a98575060085463ffffffff600160a01b909104811690821611155b15610ab6576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610b205750825b90505f826001600160401b03166001148015610b3b5750303b155b905081158015610b49575080155b15610b675760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610b9157845460ff60401b1916600160401b1785555b610b9a866119a8565b610ba26119b9565b610bad8989896119c1565b8315610bf357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6009545f90610c0b61080d565b841180610c16575080155b80610c605750600854600980549091600160c01b90046001600160401b0316908110610c4457610c446126cd565b5f9182526020909120600290910201546001600160401b031684105b15610c7e5760405163b0b4387760e01b815260040160405180910390fd5b5f8080610c8c6001856126ba565b90505b81610d2857600854600160c01b90046001600160401b03168110610d28578660098281548110610cc157610cc16126cd565b5f9182526020909120600290910201546001600160401b031611610d16576001915060098181548110610cf657610cf66126cd565b5f9182526020909120600290910201546001600160401b03169250610d28565b80610d20816126e1565b915050610c8f565b81610d465760405163b0b4387760e01b815260040160405180910390fd5b85610d5184896126ba565b119450505050505b92915050565b610d67610da1565b6001600160a01b038116610d9557604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610d9e81611938565b50565b33610dd37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146109155760405163118cdaa760e01b8152336004820152602401610d8c565b610e04611d0f565b621000008152600760208201527f23783d0e9777b7af65fbf849da7edb75e74b1eaf503e025d7f2f7f80991befa26040820151527f2a4e2fe8adfa53f468525582d5184c4c70bbdb946c21f216418a9879705e54a76020604083015101527f0624b2c1e77f24afceaf39451743b9fa80d5853fca7ba00389c675650774009b6060820151527f250d7719e94ca2df00dfe327938f5a8d4d837779b99837ca777a53d39127b1796020606083015101527f0dc09515152eaea66d0db2f571cc995e369d26fe647394f10db5398c917519dc6080820151527f1273144d6cec2c4a68b24a149379c0f5592bb7fbddbe32fa171919950ca404cb6020608083015101527f119521bb68caec216e2f05eeb466fb3abfe1f39baf7fe7cb392ea057b6a2d9bf60a0820151527f2d52adeaba8045e53ab526fe9982d0ea452def6b3ea0253d27a19ef3b46e8428602060a083015101527f16c3b5b217d302975a920d13374524d7a52e4a50fd7fb930842271ebf4a84efd60c0820151527f200788916b907b196972bde304318e885a2521514b2db5e4a11899c51204f089602060c083015101527f1127581afe753defca9aef12e7332db9978a200b1699ce3888c0f3aea6111dc360e0820151527f0881e13f00723be1a04872ed02b2d078c31e80feaf27724e262ce97c2cb0bb1d602060e083015101527f1482a3a6bb91d6483d153683e2404f2f5546e0e895530fdf132091498406e3de610100820151527efa52db3d52d905ead1248102f3a80a43a90d8400c68f60a62c543c417b2f4b602061010083015101527f0a57dadd4a55199525ac6ac6fabc87a4cccfdc98142bcef9dbf47de00ecc5164610120820151527f18d95abd9b8e12c36936aa218cfff582548a6bbff25c338c2006eaeb1fe5b696602061012083015101527f2bc40e91dd169b8bc143a02952a1b6c6e627bfeb7a2bbe5078e14123f3c54c1c610140820151527f108d65a20c579b6d9883275eb6889fc3f5fc79735ca9f611a13b67daa2fbc8d0602061014083015101527f21bc1f86d0608e5f0626b467ee6f8282b619223f60a7acb0fc63ba7bdaf783be610160820151527f05ef3282f8eef01515fb9a8a7d6ca06b8b007d1d512403efb268fb03ce5f09e9602061016083015101527f2cab66c1cb5a83869e73ac34fbe467486999babd541d9010ee9a804806eee4ef610180820151527f2db1982419c5a4a17593acff9535fa967683d75c8aec01319b64b84aada2ad84602061018083015101527f2c38667c6c7eb868bdd30c34dd3f4b84d9b9b1a27d7867b364c8b7831423e9086101a0820151527f2b2cb4044dd51165c48138219d51cf8d1689f91ed3eeefead6e055eb488a2ce260206101a083015101527f2d48e54703011df2c74a14dafde3af4fd83ec71875d8ddc3554658640cc955016101c0820151527f243a99d80d32eb5408b59d5b08302bede070d3fb0a8efe2f2262f865bffb4d0d60206101c083015101527f0455d2325bf6269a66f07d838f55f36947a3cd9b87edd8480bced95cbb45cc116101e0820151527f0f66d9085a6ed60b838179987e240992bff4c0516ccf6ccde4a1ca94ce8b986460206101e083015101527f2bac0d23c8585d1487ec611b5effc97e5852fea43a7cba36ccdd2c207931f394610200820151527f1860b54e01a06aea5adb4b13bf5baebab92b736807a3a89ff2040992b06ee6ec602061020083015101527f0c0bfa1c2fc6f8ed01233d5168db1e1dfe725504f032f669f50a92ae77c72906610220820151527f0d741e124c7d1069b8a400cbcdcfd90128a533901ad4de1e037fe72984dc34cf602061022083015101527f01cfed30085c9efce04668205794aa39b1a8ee591234b4c77a22f8c26d899e05610240820151527f2ab68ac82d36cedb647d14a5b0035e8c9a0be84780b7bae1133a27a880966ed1602061024083015101527f072e1d50f8b5cf8d574b3847276477d95bbd5116351000841f728da44f4043b5610260820151527f23f8ea6eacd0876d57220f57eabacbe76a2323411663731a251d5dca36f1b59f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181108061088a5760405163016c173360e21b815260040160405180910390fd5b5f61147561069d565b905061147f611f74565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a08301525f5460c08301525163ce537a7760e01b815273ffffffffffffffffffffffffffffffffffffffff9063ce537a77906114fe908590859088906004016128d2565b602060405180830381865af4158015611519573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061153d9190612af2565b61155a576040516309bde33960e01b815260040160405180910390fd5b50505050565b600954158015906115d5575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b03169081106115a0576115a06126cd565b5f9182526020909120600290910201546115ca90600160401b90046001600160401b031684612b11565b6001600160401b0316115b1561166857600854600980549091600160c01b90046001600160401b0316908110611602576116026126cd565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861164283612b30565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806117cf57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166117c35f516020612b715f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156109155760405163703e46dd60e11b815260040160405180910390fd5b6117f5610da1565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610649565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611888575060408051601f3d908101601f191682019092526118859181019061268f565b60015b6118b057604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d8c565b5f516020612b715f395f51905f5281146118e057604051632a87526960e21b815260048101829052602401610d8c565b6118ea8383611aed565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109155760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6119b0611b42565b610d9e81611b8b565b610915611b42565b82516001600160401b03161515806119e5575060208301516001600160401b031615155b806119f257506020820151155b806119ff57506040820151155b80611a0c57506060820151155b80611a1657508151155b80611a285750610e108163ffffffff16105b80611a3c57506301e133808163ffffffff16115b15611a5a576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b611af682611b93565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611b3a576118ea8282611bf6565b61088a611c68565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661091557604051631afcd79f60e31b815260040160405180910390fd5b610d67611b42565b806001600160a01b03163b5f03611bc857604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d8c565b5f516020612b715f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611c129190612b5a565b5f60405180830381855af49150503d805f8114611c4a576040519150601f19603f3d011682016040523d82523d5f602084013e611c4f565b606091505b5091509150611c5f858383611c87565b95945050505050565b34156109155760405163b398979f60e01b815260040160405180910390fd5b606082611c9c57611c9782611ce6565b611cdf565b8151158015611cb357506001600160a01b0384163b155b15611cdc57604051639996b31560e01b81526001600160a01b0385166004820152602401610d8c565b50805b9392505050565b805115611cf65780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f8152602001611d4260405180604001604052805f81526020015f81525090565b8152602001611d6260405180604001604052805f81526020015f81525090565b8152602001611d8260405180604001604052805f81526020015f81525090565b8152602001611da260405180604001604052805f81526020015f81525090565b8152602001611dc260405180604001604052805f81526020015f81525090565b8152602001611de260405180604001604052805f81526020015f81525090565b8152602001611e0260405180604001604052805f81526020015f81525090565b8152602001611e2260405180604001604052805f81526020015f81525090565b8152602001611e4260405180604001604052805f81526020015f81525090565b8152602001611e6260405180604001604052805f81526020015f81525090565b8152602001611e8260405180604001604052805f81526020015f81525090565b8152602001611ea260405180604001604052805f81526020015f81525090565b8152602001611ec260405180604001604052805f81526020015f81525090565b8152602001611ee260405180604001604052805f81526020015f81525090565b8152602001611f0260405180604001604052805f81526020015f81525090565b8152602001611f2260405180604001604052805f81526020015f81525090565b8152602001611f4260405180604001604052805f81526020015f81525090565b8152602001611f6260405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b6040518060e001604052806007906020820280368337509192915050565b80356001600160a01b0381168114611fa8575f5ffd5b919050565b5f60208284031215611fbd575f5ffd5b611cdf82611f92565b5f60208284031215611fd6575f5ffd5b5035919050565b5f610500820190508251825260208301516020830152604083015161200f604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612215576122156121de565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612243576122436121de565b604052919050565b80356001600160401b0381168114611fa8575f5ffd5b5f60608284031215612271575f5ffd5b604051606081016001600160401b0381118282101715612293576122936121de565b6040529050806122a28361224b565b81526122b06020840161224b565b6020820152604092830135920191909152919050565b5f604082840312156122d6575f5ffd5b604080519081016001600160401b03811182821017156122f8576122f86121de565b604052823581526020928301359281019290925250919050565b5f5f8284036104e0811215612325575f5ffd5b61232f8585612261565b9250610480605f1982011215612343575f5ffd5b5061234c6121f2565b61235985606086016122c6565b81526123688560a086016122c6565b602082015261237a8560e086016122c6565b604082015261238d8561012086016122c6565b60608201526123a08561016086016122c6565b60808201526123b3856101a086016122c6565b60a08201526123c6856101e086016122c6565b60c08201526123d98561022086016122c6565b60e08201526123ec8561026086016122c6565b610100820152612400856102a086016122c6565b610120820152612414856102e086016122c6565b6101408201526124288561032086016122c6565b61016082015261243c8561036086016122c6565b6101808201526103a08401356101a08201526103c08401356101c08201526103e08401356101e08201526104008401356102008201526104208401356102208201526104408401356102408201526104608401356102608201526104808401356102808201526104a08401356102a08201526104c0909301356102c08401525092909150565b5f5f604083850312156124d3575f5ffd5b6124dc83611f92565b915060208301356001600160401b038111156124f6575f5ffd5b8301601f81018513612506575f5ffd5b80356001600160401b0381111561251f5761251f6121de565b612532601f8201601f191660200161221b565b818152866020838501011115612546575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff81168114611fa8575f5ffd5b5f60208284031215612588575f5ffd5b611cdf82612565565b5f5f5f5f8486036101208112156125a6575f5ffd5b6125b08787612261565b94506080605f19820112156125c3575f5ffd5b50604051608081016001600160401b03811182821017156125e6576125e66121de565b604090815260608781013583526080880135602084015260a08801359183019190915260c087013590820152925061262060e08601612565565b915061262f6101008601611f92565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215612680575f5ffd5b50508035926020909101359150565b5f6020828403121561269f575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610d5957610d596126a6565b634e487b7160e01b5f52603260045260245ffd5b5f816126ef576126ef6126a6565b505f190190565b805f5b600781101561155a5781518452602093840193909101906001016126f9565b61272d82825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a608201905084518252602085015160208301526040850151612904604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152612adc6105008301856126f6565b612aea6105e0830184612718565b949350505050565b5f60208284031215612b02575f5ffd5b81518015158114611cdf575f5ffd5b6001600160401b038281168282160390811115610d5957610d596126a6565b5f6001600160401b0382166001600160401b038103612b5157612b516126a6565b60010192915050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
4378    /// ```
4379    #[rustfmt::skip]
4380    #[allow(clippy::all)]
4381    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4382        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+\x9Da\0\xF9_9_\x81\x81a\x17T\x01R\x81\x81a\x17}\x01Ra\x18\xFA\x01Ra+\x9D_\xF3\xFE`\x80`@R`\x046\x10a\x01aW_5`\xE0\x1C\x80cqP\x18\xA6\x11a\0\xCDW\x80c\x9F\xDBT\xA7\x11a\0\x87W\x80c\xD2M\x93=\x11a\0bW\x80c\xD2M\x93=\x14a\x05 W\x80c\xE003\x01\x14a\x05OW\x80c\xF2\xFD\xE3\x8B\x14a\x05nW\x80c\xF9\xE5\r\x19\x14a\x05\x8DW__\xFD[\x80c\x9F\xDBT\xA7\x14a\x04VW\x80c\xAD<\xB1\xCC\x14a\x04\xABW\x80c\xC2;\x9E\x9E\x14a\x04\xE8W__\xFD[\x80cqP\x18\xA6\x14a\x03aW\x80c\x82nA\xFC\x14a\x03uW\x80c\x85\x84\xD2?\x14a\x03\xA0W\x80c\x8D\xA5\xCB[\x14a\x03\xDCW\x80c\x96\xC1\xCAa\x14a\x04\x18W\x80c\x9B\xAA<\xC9\x14a\x047W__\xFD[\x80c1=\xF7\xB1\x11a\x01\x1EW\x80c1=\xF7\xB1\x14a\x02\x8CW\x80c7\x8E\xC2;\x14a\x02\xC3W\x80cBm1\x94\x14a\x02\xE5W\x80cO\x1E\xF2\x86\x14a\x03&W\x80cR\xD1\x90-\x14a\x039W\x80ci\xCCj\x04\x14a\x03MW__\xFD[\x80c\x01?\xA5\xFC\x14a\x01eW\x80c\x02\xB5\x92\xF3\x14a\x01\x86W\x80c\r\x8En,\x14a\x01\xE3W\x80c\x12\x17<,\x14a\x02\x0EW\x80c c\xD4\xF7\x14a\x02/W\x80c/y\x88\x9D\x14a\x02NW[__\xFD[4\x80\x15a\x01pW__\xFD[Pa\x01\x84a\x01\x7F6`\x04a\x1F\xADV[a\x05\xA1V[\0[4\x80\x15a\x01\x91W__\xFD[Pa\x01\xA5a\x01\xA06`\x04a\x1F\xC6V[a\x06TV[`@Qa\x01\xDA\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xEEW__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x01\xDAV[4\x80\x15a\x02\x19W__\xFD[Pa\x02\"a\x06\x9DV[`@Qa\x01\xDA\x91\x90a\x1F\xDDV[4\x80\x15a\x02:W__\xFD[Pa\x01\x84a\x02I6`\x04a#\x12V[a\x06\xB2V[4\x80\x15a\x02YW__\xFD[P`\x08Ta\x02t\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\x97W__\xFD[P`\x08Ta\x02\xAB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xCEW__\xFD[Pa\x02\xD7a\x08\rV[`@Q\x90\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xF0W__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\x06\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x01\xDAV[a\x01\x84a\x0346`\x04a$\xC2V[a\x08oV[4\x80\x15a\x03DW__\xFD[Pa\x02\xD7a\x08\x8EV[4\x80\x15a\x03XW__\xFD[Pa\x01\x84a\x08\xA9V[4\x80\x15a\x03lW__\xFD[Pa\x01\x84a\t\x17V[4\x80\x15a\x03\x80W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15[`@Q\x90\x15\x15\x81R` \x01a\x01\xDAV[4\x80\x15a\x03\xABW__\xFD[Pa\x03\xBFa\x03\xBA6`\x04a\x1F\xC6V[a\t(V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x01\xDAV[4\x80\x15a\x03\xE7W__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16a\x02\xABV[4\x80\x15a\x04#W__\xFD[Pa\x01\x84a\x0426`\x04a%xV[a\nSV[4\x80\x15a\x04BW__\xFD[Pa\x01\x84a\x04Q6`\x04a%\x91V[a\n\xDCV[4\x80\x15a\x04aW__\xFD[P`\x06T`\x07Ta\x04\x85\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x01\xDAV[4\x80\x15a\x04\xB6W__\xFD[Pa\x04\xDB`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x01\xDA\x91\x90a&:V[4\x80\x15a\x04\xF3W__\xFD[P`\x08Ta\x05\x0B\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x05+W__\xFD[P`\x04T`\x05Ta\x04\x85\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x05ZW__\xFD[Pa\x03\x90a\x05i6`\x04a&oV[a\x0B\xFEV[4\x80\x15a\x05yW__\xFD[Pa\x01\x84a\x05\x886`\x04a\x1F\xADV[a\r_V[4\x80\x15a\x05\x98W__\xFD[P`\tTa\x02\xD7V[a\x05\xA9a\r\xA1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x05\xD0W`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x05\xFFW`@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\x06cW_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\x06\xA5a\x1D\x0FV[a\x06\xADa\r\xFCV[\x90P\x90V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x06\xD7WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x06\xF5W`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x82Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x07.WP`\x06T` \x83\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x07LW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x07Y\x82`@\x01Qa\x14+V[a\x07c\x82\x82a\x14lV[\x81Q`\x06\x80T` \x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x82\x01Q`\x07Ua\x07\xB1a\x07\xAAa\x08\rV[B\x84a\x15`V[\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\x08\x01\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPV[_`d`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08KW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xAD\x91\x90a&\x8FV[a\x08wa\x17IV[a\x08\x80\x82a\x17\xEDV[a\x08\x8A\x82\x82a\x18.V[PPV[_a\x08\x97a\x18\xEFV[P_Q` a+q_9_Q\x90_R\x90V[a\x08\xB1a\r\xA1V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x08\xFCW`\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\x1Fa\r\xA1V[a\t\x15_a\x198V[`\t\x80T_\x91\x82\x91\x90a\t<`\x01\x83a&\xBAV[\x81T\x81\x10a\tLWa\tLa&\xCDV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\t\x8BW`@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\nLW\x84`\t\x82\x81T\x81\x10a\t\xBBWa\t\xBBa&\xCDV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\nDW`\t\x81\x81T\x81\x10a\t\xF4Wa\t\xF4a&\xCDV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\n\x17Wa\n\x17a&\xCDV[\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\t\x9FV[PP\x91P\x91V[a\n[a\r\xA1V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\nzWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\n\x98WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\n\xB6W`@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 WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0B;WP0;\x15[\x90P\x81\x15\x80\x15a\x0BIWP\x80\x15[\x15a\x0BgW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x0B\x91W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0B\x9A\x86a\x19\xA8V[a\x0B\xA2a\x19\xB9V[a\x0B\xAD\x89\x89\x89a\x19\xC1V[\x83\x15a\x0B\xF3W\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[`\tT_\x90a\x0C\x0Ba\x08\rV[\x84\x11\x80a\x0C\x16WP\x80\x15[\x80a\x0C`WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x0CDWa\x0CDa&\xCDV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x0C~W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x0C\x8C`\x01\x85a&\xBAV[\x90P[\x81a\r(W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\r(W\x86`\t\x82\x81T\x81\x10a\x0C\xC1Wa\x0C\xC1a&\xCDV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\r\x16W`\x01\x91P`\t\x81\x81T\x81\x10a\x0C\xF6Wa\x0C\xF6a&\xCDV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\r(V[\x80a\r \x81a&\xE1V[\x91PPa\x0C\x8FV[\x81a\rFW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\rQ\x84\x89a&\xBAV[\x11\x94PPPPP[\x92\x91PPV[a\rga\r\xA1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r\x95W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\r\x9E\x81a\x198V[PV[3a\r\xD3\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\x15W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r\x8CV[a\x0E\x04a\x1D\x0FV[b\x10\0\0\x81R`\x07` \x82\x01R\x7F#x=\x0E\x97w\xB7\xAFe\xFB\xF8I\xDA~\xDBu\xE7K\x1E\xAFP>\x02]\x7F/\x7F\x80\x99\x1B\xEF\xA2`@\x82\x01QR\x7F*N/\xE8\xAD\xFAS\xF4hRU\x82\xD5\x18LLp\xBB\xDB\x94l!\xF2\x16A\x8A\x98yp^T\xA7` `@\x83\x01Q\x01R\x7F\x06$\xB2\xC1\xE7\x7F$\xAF\xCE\xAF9E\x17C\xB9\xFA\x80\xD5\x85?\xCA{\xA0\x03\x89\xC6ue\x07t\0\x9B``\x82\x01QR\x7F%\rw\x19\xE9L\xA2\xDF\0\xDF\xE3'\x93\x8FZ\x8DM\x83wy\xB9\x987\xCAwzS\xD3\x91'\xB1y` ``\x83\x01Q\x01R\x7F\r\xC0\x95\x15\x15.\xAE\xA6m\r\xB2\xF5q\xCC\x99^6\x9D&\xFEds\x94\xF1\r\xB59\x8C\x91u\x19\xDC`\x80\x82\x01QR\x7F\x12s\x14Ml\xEC,Jh\xB2J\x14\x93y\xC0\xF5Y+\xB7\xFB\xDD\xBE2\xFA\x17\x19\x19\x95\x0C\xA4\x04\xCB` `\x80\x83\x01Q\x01R\x7F\x11\x95!\xBBh\xCA\xEC!n/\x05\xEE\xB4f\xFB:\xBF\xE1\xF3\x9B\xAF\x7F\xE7\xCB9.\xA0W\xB6\xA2\xD9\xBF`\xA0\x82\x01QR\x7F-R\xAD\xEA\xBA\x80E\xE5:\xB5&\xFE\x99\x82\xD0\xEAE-\xEFk>\xA0%='\xA1\x9E\xF3\xB4n\x84(` `\xA0\x83\x01Q\x01R\x7F\x16\xC3\xB5\xB2\x17\xD3\x02\x97Z\x92\r\x137E$\xD7\xA5.JP\xFD\x7F\xB90\x84\"q\xEB\xF4\xA8N\xFD`\xC0\x82\x01QR\x7F \x07\x88\x91k\x90{\x19ir\xBD\xE3\x041\x8E\x88Z%!QK-\xB5\xE4\xA1\x18\x99\xC5\x12\x04\xF0\x89` `\xC0\x83\x01Q\x01R\x7F\x11'X\x1A\xFEu=\xEF\xCA\x9A\xEF\x12\xE73-\xB9\x97\x8A \x0B\x16\x99\xCE8\x88\xC0\xF3\xAE\xA6\x11\x1D\xC3`\xE0\x82\x01QR\x7F\x08\x81\xE1?\0r;\xE1\xA0Hr\xED\x02\xB2\xD0x\xC3\x1E\x80\xFE\xAF'rN&,\xE9|,\xB0\xBB\x1D` `\xE0\x83\x01Q\x01R\x7F\x14\x82\xA3\xA6\xBB\x91\xD6H=\x156\x83\xE2@O/UF\xE0\xE8\x95S\x0F\xDF\x13 \x91I\x84\x06\xE3\xDEa\x01\0\x82\x01QR~\xFAR\xDB=R\xD9\x05\xEA\xD1$\x81\x02\xF3\xA8\nC\xA9\r\x84\0\xC6\x8F`\xA6,T<A{/K` a\x01\0\x83\x01Q\x01R\x7F\nW\xDA\xDDJU\x19\x95%\xACj\xC6\xFA\xBC\x87\xA4\xCC\xCF\xDC\x98\x14+\xCE\xF9\xDB\xF4}\xE0\x0E\xCCQda\x01 \x82\x01QR\x7F\x18\xD9Z\xBD\x9B\x8E\x12\xC3i6\xAA!\x8C\xFF\xF5\x82T\x8Ak\xBF\xF2\\3\x8C \x06\xEA\xEB\x1F\xE5\xB6\x96` a\x01 \x83\x01Q\x01R\x7F+\xC4\x0E\x91\xDD\x16\x9B\x8B\xC1C\xA0)R\xA1\xB6\xC6\xE6'\xBF\xEBz+\xBEPx\xE1A#\xF3\xC5L\x1Ca\x01@\x82\x01QR\x7F\x10\x8De\xA2\x0CW\x9Bm\x98\x83'^\xB6\x88\x9F\xC3\xF5\xFCys\\\xA9\xF6\x11\xA1;g\xDA\xA2\xFB\xC8\xD0` a\x01@\x83\x01Q\x01R\x7F!\xBC\x1F\x86\xD0`\x8E_\x06&\xB4g\xEEo\x82\x82\xB6\x19\"?`\xA7\xAC\xB0\xFCc\xBA{\xDA\xF7\x83\xBEa\x01`\x82\x01QR\x7F\x05\xEF2\x82\xF8\xEE\xF0\x15\x15\xFB\x9A\x8A}l\xA0k\x8B\0}\x1DQ$\x03\xEF\xB2h\xFB\x03\xCE_\t\xE9` a\x01`\x83\x01Q\x01R\x7F,\xABf\xC1\xCBZ\x83\x86\x9Es\xAC4\xFB\xE4gHi\x99\xBA\xBDT\x1D\x90\x10\xEE\x9A\x80H\x06\xEE\xE4\xEFa\x01\x80\x82\x01QR\x7F-\xB1\x98$\x19\xC5\xA4\xA1u\x93\xAC\xFF\x955\xFA\x96v\x83\xD7\\\x8A\xEC\x011\x9Bd\xB8J\xAD\xA2\xAD\x84` a\x01\x80\x83\x01Q\x01R\x7F,8f|l~\xB8h\xBD\xD3\x0C4\xDD?K\x84\xD9\xB9\xB1\xA2}xg\xB3d\xC8\xB7\x83\x14#\xE9\x08a\x01\xA0\x82\x01QR\x7F+,\xB4\x04M\xD5\x11e\xC4\x818!\x9DQ\xCF\x8D\x16\x89\xF9\x1E\xD3\xEE\xEF\xEA\xD6\xE0U\xEBH\x8A,\xE2` a\x01\xA0\x83\x01Q\x01R\x7F-H\xE5G\x03\x01\x1D\xF2\xC7J\x14\xDA\xFD\xE3\xAFO\xD8>\xC7\x18u\xD8\xDD\xC3UFXd\x0C\xC9U\x01a\x01\xC0\x82\x01QR\x7F$:\x99\xD8\r2\xEBT\x08\xB5\x9D[\x080+\xED\xE0p\xD3\xFB\n\x8E\xFE/\"b\xF8e\xBF\xFBM\r` a\x01\xC0\x83\x01Q\x01R\x7F\x04U\xD22[\xF6&\x9Af\xF0}\x83\x8FU\xF3iG\xA3\xCD\x9B\x87\xED\xD8H\x0B\xCE\xD9\\\xBBE\xCC\x11a\x01\xE0\x82\x01QR\x7F\x0Ff\xD9\x08Zn\xD6\x0B\x83\x81y\x98~$\t\x92\xBF\xF4\xC0Ql\xCFl\xCD\xE4\xA1\xCA\x94\xCE\x8B\x98d` a\x01\xE0\x83\x01Q\x01R\x7F+\xAC\r#\xC8X]\x14\x87\xECa\x1B^\xFF\xC9~XR\xFE\xA4:|\xBA6\xCC\xDD, y1\xF3\x94a\x02\0\x82\x01QR\x7F\x18`\xB5N\x01\xA0j\xEAZ\xDBK\x13\xBF[\xAE\xBA\xB9+sh\x07\xA3\xA8\x9F\xF2\x04\t\x92\xB0n\xE6\xEC` a\x02\0\x83\x01Q\x01R\x7F\x0C\x0B\xFA\x1C/\xC6\xF8\xED\x01#=Qh\xDB\x1E\x1D\xFErU\x04\xF02\xF6i\xF5\n\x92\xAEw\xC7)\x06a\x02 \x82\x01QR\x7F\rt\x1E\x12L}\x10i\xB8\xA4\0\xCB\xCD\xCF\xD9\x01(\xA53\x90\x1A\xD4\xDE\x1E\x03\x7F\xE7)\x84\xDC4\xCF` a\x02 \x83\x01Q\x01R\x7F\x01\xCF\xED0\x08\\\x9E\xFC\xE0Fh W\x94\xAA9\xB1\xA8\xEEY\x124\xB4\xC7z\"\xF8\xC2m\x89\x9E\x05a\x02@\x82\x01QR\x7F*\xB6\x8A\xC8-6\xCE\xDBd}\x14\xA5\xB0\x03^\x8C\x9A\x0B\xE8G\x80\xB7\xBA\xE1\x13:'\xA8\x80\x96n\xD1` a\x02@\x83\x01Q\x01R\x7F\x07.\x1DP\xF8\xB5\xCF\x8DWK8G'dw\xD9[\xBDQ\x165\x10\0\x84\x1Fr\x8D\xA4O@C\xB5a\x02`\x82\x01QR\x7F#\xF8\xEAn\xAC\xD0\x87mW\"\x0FW\xEA\xBA\xCB\xE7j##A\x16cs\x1A%\x1D]\xCA6\xF1\xB5\x9F` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\x08\x8AW`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x14ua\x06\x9DV[\x90Pa\x14\x7Fa\x1FtV[\x83Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x82R` \x85\x01Q\x16\x81`\x01` \x02\x01R`@\x84\x81\x01Q\x82\x82\x01R`\x01T``\x83\x01R`\x02T`\x80\x83\x01R`\x03T`\xA0\x83\x01R_T`\xC0\x83\x01RQc\xCESzw`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90c\xCESzw\x90a\x14\xFE\x90\x85\x90\x85\x90\x88\x90`\x04\x01a(\xD2V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x15\x19W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15=\x91\x90a*\xF2V[a\x15ZW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[`\tT\x15\x80\x15\x90a\x15\xD5WP`\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\xA0Wa\x15\xA0a&\xCDV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x15\xCA\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a+\x11V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x16hW`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x16\x02Wa\x16\x02a&\xCDV[_\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\x16B\x83a+0V[\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\xCFWP\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\xC3_Q` a+q_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\t\x15W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x17\xF5a\r\xA1V[`@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\x06IV[\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\x88WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18\x85\x91\x81\x01\x90a&\x8FV[`\x01[a\x18\xB0W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r\x8CV[_Q` a+q_9_Q\x90_R\x81\x14a\x18\xE0W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\x8CV[a\x18\xEA\x83\x83a\x1A\xEDV[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\x15W`@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\xB0a\x1BBV[a\r\x9E\x81a\x1B\x8BV[a\t\x15a\x1BBV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x19\xE5WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x19\xF2WP` \x82\x01Q\x15[\x80a\x19\xFFWP`@\x82\x01Q\x15[\x80a\x1A\x0CWP``\x82\x01Q\x15[\x80a\x1A\x16WP\x81Q\x15[\x80a\x1A(WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x1A<WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x1AZW`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[a\x1A\xF6\x82a\x1B\x93V[`@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\x1B:Wa\x18\xEA\x82\x82a\x1B\xF6V[a\x08\x8Aa\x1ChV[\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\x15W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\rga\x1BBV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1B\xC8W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r\x8CV[_Q` a+q_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\x1C\x12\x91\x90a+ZV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1CJW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1COV[``\x91P[P\x91P\x91Pa\x1C_\x85\x83\x83a\x1C\x87V[\x95\x94PPPPPV[4\x15a\t\x15W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a\x1C\x9CWa\x1C\x97\x82a\x1C\xE6V[a\x1C\xDFV[\x81Q\x15\x80\x15a\x1C\xB3WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x1C\xDCW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r\x8CV[P\x80[\x93\x92PPPV[\x80Q\x15a\x1C\xF6W\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\x1DB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Db`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\x82`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xA2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xC2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xE2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x02`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\"`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1EB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Eb`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x82`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xA2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xC2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xE2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x02`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\"`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1FB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Fb`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\xE0\x01`@R\x80`\x07\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x1F\xA8W__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\x1F\xBDW__\xFD[a\x1C\xDF\x82a\x1F\x92V[_` \x82\x84\x03\x12\x15a\x1F\xD6W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa \x0F`@\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\"\x15Wa\"\x15a!\xDEV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"CWa\"Ca!\xDEV[`@R\x91\x90PV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x1F\xA8W__\xFD[_``\x82\x84\x03\x12\x15a\"qW__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"\x93Wa\"\x93a!\xDEV[`@R\x90P\x80a\"\xA2\x83a\"KV[\x81Ra\"\xB0` \x84\x01a\"KV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a\"\xD6W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"\xF8Wa\"\xF8a!\xDEV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[__\x82\x84\x03a\x04\xE0\x81\x12\x15a#%W__\xFD[a#/\x85\x85a\"aV[\x92Pa\x04\x80`_\x19\x82\x01\x12\x15a#CW__\xFD[Pa#La!\xF2V[a#Y\x85``\x86\x01a\"\xC6V[\x81Ra#h\x85`\xA0\x86\x01a\"\xC6V[` \x82\x01Ra#z\x85`\xE0\x86\x01a\"\xC6V[`@\x82\x01Ra#\x8D\x85a\x01 \x86\x01a\"\xC6V[``\x82\x01Ra#\xA0\x85a\x01`\x86\x01a\"\xC6V[`\x80\x82\x01Ra#\xB3\x85a\x01\xA0\x86\x01a\"\xC6V[`\xA0\x82\x01Ra#\xC6\x85a\x01\xE0\x86\x01a\"\xC6V[`\xC0\x82\x01Ra#\xD9\x85a\x02 \x86\x01a\"\xC6V[`\xE0\x82\x01Ra#\xEC\x85a\x02`\x86\x01a\"\xC6V[a\x01\0\x82\x01Ra$\0\x85a\x02\xA0\x86\x01a\"\xC6V[a\x01 \x82\x01Ra$\x14\x85a\x02\xE0\x86\x01a\"\xC6V[a\x01@\x82\x01Ra$(\x85a\x03 \x86\x01a\"\xC6V[a\x01`\x82\x01Ra$<\x85a\x03`\x86\x01a\"\xC6V[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$\xD3W__\xFD[a$\xDC\x83a\x1F\x92V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a$\xF6W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a%\x06W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a%\x1FWa%\x1Fa!\xDEV[a%2`\x1F\x82\x01`\x1F\x19\x16` \x01a\"\x1BV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a%FW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1F\xA8W__\xFD[_` \x82\x84\x03\x12\x15a%\x88W__\xFD[a\x1C\xDF\x82a%eV[____\x84\x86\x03a\x01 \x81\x12\x15a%\xA6W__\xFD[a%\xB0\x87\x87a\"aV[\x94P`\x80`_\x19\x82\x01\x12\x15a%\xC3W__\xFD[P`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a%\xE6Wa%\xE6a!\xDEV[`@\x90\x81R``\x87\x81\x015\x83R`\x80\x88\x015` \x84\x01R`\xA0\x88\x015\x91\x83\x01\x91\x90\x91R`\xC0\x87\x015\x90\x82\x01R\x92Pa& `\xE0\x86\x01a%eV[\x91Pa&/a\x01\0\x86\x01a\x1F\x92V[\x90P\x92\x95\x91\x94P\x92PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[__`@\x83\x85\x03\x12\x15a&\x80W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a&\x9FW__\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\rYWa\rYa&\xA6V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x81a&\xEFWa&\xEFa&\xA6V[P_\x19\x01\x90V[\x80_[`\x07\x81\x10\x15a\x15ZW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a&\xF9V[a'-\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)\x04`@\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*\xDCa\x05\0\x83\x01\x85a&\xF6V[a*\xEAa\x05\xE0\x83\x01\x84a'\x18V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a+\x02W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1C\xDFW__\xFD[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\rYWa\rYa&\xA6V[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a+QWa+Qa&\xA6V[`\x01\x01\x92\x91PPV[_\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",
4383    );
4384    /// The runtime bytecode of the contract, as deployed on the network.
4385    ///
4386    /// ```text
4387    ///0x608060405260043610610161575f3560e01c8063715018a6116100cd5780639fdb54a711610087578063d24d933d11610062578063d24d933d14610520578063e03033011461054f578063f2fde38b1461056e578063f9e50d191461058d575f5ffd5b80639fdb54a714610456578063ad3cb1cc146104ab578063c23b9e9e146104e8575f5ffd5b8063715018a614610361578063826e41fc146103755780638584d23f146103a05780638da5cb5b146103dc57806396c1ca61146104185780639baa3cc914610437575f5ffd5b8063313df7b11161011e578063313df7b11461028c578063378ec23b146102c3578063426d3194146102e55780634f1ef2861461032657806352d1902d1461033957806369cc6a041461034d575f5ffd5b8063013fa5fc1461016557806302b592f3146101865780630d8e6e2c146101e357806312173c2c1461020e5780632063d4f71461022f5780632f79889d1461024e575b5f5ffd5b348015610170575f5ffd5b5061018461017f366004611fad565b6105a1565b005b348015610191575f5ffd5b506101a56101a0366004611fc6565b610654565b6040516101da94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156101ee575f5ffd5b5060408051600181525f60208201819052918101919091526060016101da565b348015610219575f5ffd5b5061022261069d565b6040516101da9190611fdd565b34801561023a575f5ffd5b50610184610249366004612312565b6106b2565b348015610259575f5ffd5b5060085461027490600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016101da565b348015610297575f5ffd5b506008546102ab906001600160a01b031681565b6040516001600160a01b0390911681526020016101da565b3480156102ce575f5ffd5b506102d761080d565b6040519081526020016101da565b3480156102f0575f5ffd5b505f546001546002546003546103069392919084565b6040805194855260208501939093529183015260608201526080016101da565b6101846103343660046124c2565b61086f565b348015610344575f5ffd5b506102d761088e565b348015610358575f5ffd5b506101846108a9565b34801561036c575f5ffd5b50610184610917565b348015610380575f5ffd5b506008546001600160a01b031615155b60405190151581526020016101da565b3480156103ab575f5ffd5b506103bf6103ba366004611fc6565b610928565b604080519283526001600160401b039091166020830152016101da565b3480156103e7575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166102ab565b348015610423575f5ffd5b50610184610432366004612578565b610a53565b348015610442575f5ffd5b50610184610451366004612591565b610adc565b348015610461575f5ffd5b50600654600754610485916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016101da565b3480156104b6575f5ffd5b506104db604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101da919061263a565b3480156104f3575f5ffd5b5060085461050b90600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016101da565b34801561052b575f5ffd5b50600454600554610485916001600160401b0380821692600160401b909204169083565b34801561055a575f5ffd5b5061039061056936600461266f565b610bfe565b348015610579575f5ffd5b50610184610588366004611fad565b610d5f565b348015610598575f5ffd5b506009546102d7565b6105a9610da1565b6001600160a01b0381166105d05760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036105ff5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610663575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6106a5611d0f565b6106ad610dfc565b905090565b6008546001600160a01b0316151580156106d757506008546001600160a01b03163314155b156106f5576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b03918216911611158061072e575060065460208301516001600160401b03600160401b9092048216911611155b1561074c5760405163051c46ef60e01b815260040160405180910390fd5b610759826040015161142b565b610763828261146c565b81516006805460208501516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408201516007556107b16107aa61080d565b4284611560565b81602001516001600160401b0316825f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6846040015160405161080191815260200190565b60405180910390a35050565b5f60646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ad919061268f565b610877611749565b610880826117ed565b61088a828261182e565b5050565b5f6108976118ef565b505f516020612b715f395f51905f5290565b6108b1610da1565b6008546001600160a01b0316156108fc57600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b61091f610da1565b6109155f611938565b600980545f9182919061093c6001836126ba565b8154811061094c5761094c6126cd565b5f918252602090912060029091020154600160801b90046001600160401b0316841061098b57604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610a4c5784600982815481106109bb576109bb6126cd565b5f918252602090912060029091020154600160801b90046001600160401b03161115610a4457600981815481106109f4576109f46126cd565b905f5260205f2090600202016001015460098281548110610a1757610a176126cd565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b60010161099f565b5050915091565b610a5b610da1565b610e108163ffffffff161080610a7a57506301e133808163ffffffff16115b80610a98575060085463ffffffff600160a01b909104811690821611155b15610ab6576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610b205750825b90505f826001600160401b03166001148015610b3b5750303b155b905081158015610b49575080155b15610b675760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610b9157845460ff60401b1916600160401b1785555b610b9a866119a8565b610ba26119b9565b610bad8989896119c1565b8315610bf357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6009545f90610c0b61080d565b841180610c16575080155b80610c605750600854600980549091600160c01b90046001600160401b0316908110610c4457610c446126cd565b5f9182526020909120600290910201546001600160401b031684105b15610c7e5760405163b0b4387760e01b815260040160405180910390fd5b5f8080610c8c6001856126ba565b90505b81610d2857600854600160c01b90046001600160401b03168110610d28578660098281548110610cc157610cc16126cd565b5f9182526020909120600290910201546001600160401b031611610d16576001915060098181548110610cf657610cf66126cd565b5f9182526020909120600290910201546001600160401b03169250610d28565b80610d20816126e1565b915050610c8f565b81610d465760405163b0b4387760e01b815260040160405180910390fd5b85610d5184896126ba565b119450505050505b92915050565b610d67610da1565b6001600160a01b038116610d9557604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610d9e81611938565b50565b33610dd37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146109155760405163118cdaa760e01b8152336004820152602401610d8c565b610e04611d0f565b621000008152600760208201527f23783d0e9777b7af65fbf849da7edb75e74b1eaf503e025d7f2f7f80991befa26040820151527f2a4e2fe8adfa53f468525582d5184c4c70bbdb946c21f216418a9879705e54a76020604083015101527f0624b2c1e77f24afceaf39451743b9fa80d5853fca7ba00389c675650774009b6060820151527f250d7719e94ca2df00dfe327938f5a8d4d837779b99837ca777a53d39127b1796020606083015101527f0dc09515152eaea66d0db2f571cc995e369d26fe647394f10db5398c917519dc6080820151527f1273144d6cec2c4a68b24a149379c0f5592bb7fbddbe32fa171919950ca404cb6020608083015101527f119521bb68caec216e2f05eeb466fb3abfe1f39baf7fe7cb392ea057b6a2d9bf60a0820151527f2d52adeaba8045e53ab526fe9982d0ea452def6b3ea0253d27a19ef3b46e8428602060a083015101527f16c3b5b217d302975a920d13374524d7a52e4a50fd7fb930842271ebf4a84efd60c0820151527f200788916b907b196972bde304318e885a2521514b2db5e4a11899c51204f089602060c083015101527f1127581afe753defca9aef12e7332db9978a200b1699ce3888c0f3aea6111dc360e0820151527f0881e13f00723be1a04872ed02b2d078c31e80feaf27724e262ce97c2cb0bb1d602060e083015101527f1482a3a6bb91d6483d153683e2404f2f5546e0e895530fdf132091498406e3de610100820151527efa52db3d52d905ead1248102f3a80a43a90d8400c68f60a62c543c417b2f4b602061010083015101527f0a57dadd4a55199525ac6ac6fabc87a4cccfdc98142bcef9dbf47de00ecc5164610120820151527f18d95abd9b8e12c36936aa218cfff582548a6bbff25c338c2006eaeb1fe5b696602061012083015101527f2bc40e91dd169b8bc143a02952a1b6c6e627bfeb7a2bbe5078e14123f3c54c1c610140820151527f108d65a20c579b6d9883275eb6889fc3f5fc79735ca9f611a13b67daa2fbc8d0602061014083015101527f21bc1f86d0608e5f0626b467ee6f8282b619223f60a7acb0fc63ba7bdaf783be610160820151527f05ef3282f8eef01515fb9a8a7d6ca06b8b007d1d512403efb268fb03ce5f09e9602061016083015101527f2cab66c1cb5a83869e73ac34fbe467486999babd541d9010ee9a804806eee4ef610180820151527f2db1982419c5a4a17593acff9535fa967683d75c8aec01319b64b84aada2ad84602061018083015101527f2c38667c6c7eb868bdd30c34dd3f4b84d9b9b1a27d7867b364c8b7831423e9086101a0820151527f2b2cb4044dd51165c48138219d51cf8d1689f91ed3eeefead6e055eb488a2ce260206101a083015101527f2d48e54703011df2c74a14dafde3af4fd83ec71875d8ddc3554658640cc955016101c0820151527f243a99d80d32eb5408b59d5b08302bede070d3fb0a8efe2f2262f865bffb4d0d60206101c083015101527f0455d2325bf6269a66f07d838f55f36947a3cd9b87edd8480bced95cbb45cc116101e0820151527f0f66d9085a6ed60b838179987e240992bff4c0516ccf6ccde4a1ca94ce8b986460206101e083015101527f2bac0d23c8585d1487ec611b5effc97e5852fea43a7cba36ccdd2c207931f394610200820151527f1860b54e01a06aea5adb4b13bf5baebab92b736807a3a89ff2040992b06ee6ec602061020083015101527f0c0bfa1c2fc6f8ed01233d5168db1e1dfe725504f032f669f50a92ae77c72906610220820151527f0d741e124c7d1069b8a400cbcdcfd90128a533901ad4de1e037fe72984dc34cf602061022083015101527f01cfed30085c9efce04668205794aa39b1a8ee591234b4c77a22f8c26d899e05610240820151527f2ab68ac82d36cedb647d14a5b0035e8c9a0be84780b7bae1133a27a880966ed1602061024083015101527f072e1d50f8b5cf8d574b3847276477d95bbd5116351000841f728da44f4043b5610260820151527f23f8ea6eacd0876d57220f57eabacbe76a2323411663731a251d5dca36f1b59f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181108061088a5760405163016c173360e21b815260040160405180910390fd5b5f61147561069d565b905061147f611f74565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a08301525f5460c08301525163ce537a7760e01b815273ffffffffffffffffffffffffffffffffffffffff9063ce537a77906114fe908590859088906004016128d2565b602060405180830381865af4158015611519573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061153d9190612af2565b61155a576040516309bde33960e01b815260040160405180910390fd5b50505050565b600954158015906115d5575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b03169081106115a0576115a06126cd565b5f9182526020909120600290910201546115ca90600160401b90046001600160401b031684612b11565b6001600160401b0316115b1561166857600854600980549091600160c01b90046001600160401b0316908110611602576116026126cd565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861164283612b30565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806117cf57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166117c35f516020612b715f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156109155760405163703e46dd60e11b815260040160405180910390fd5b6117f5610da1565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610649565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611888575060408051601f3d908101601f191682019092526118859181019061268f565b60015b6118b057604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d8c565b5f516020612b715f395f51905f5281146118e057604051632a87526960e21b815260048101829052602401610d8c565b6118ea8383611aed565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109155760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6119b0611b42565b610d9e81611b8b565b610915611b42565b82516001600160401b03161515806119e5575060208301516001600160401b031615155b806119f257506020820151155b806119ff57506040820151155b80611a0c57506060820151155b80611a1657508151155b80611a285750610e108163ffffffff16105b80611a3c57506301e133808163ffffffff16115b15611a5a576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b611af682611b93565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611b3a576118ea8282611bf6565b61088a611c68565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661091557604051631afcd79f60e31b815260040160405180910390fd5b610d67611b42565b806001600160a01b03163b5f03611bc857604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d8c565b5f516020612b715f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611c129190612b5a565b5f60405180830381855af49150503d805f8114611c4a576040519150601f19603f3d011682016040523d82523d5f602084013e611c4f565b606091505b5091509150611c5f858383611c87565b95945050505050565b34156109155760405163b398979f60e01b815260040160405180910390fd5b606082611c9c57611c9782611ce6565b611cdf565b8151158015611cb357506001600160a01b0384163b155b15611cdc57604051639996b31560e01b81526001600160a01b0385166004820152602401610d8c565b50805b9392505050565b805115611cf65780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f8152602001611d4260405180604001604052805f81526020015f81525090565b8152602001611d6260405180604001604052805f81526020015f81525090565b8152602001611d8260405180604001604052805f81526020015f81525090565b8152602001611da260405180604001604052805f81526020015f81525090565b8152602001611dc260405180604001604052805f81526020015f81525090565b8152602001611de260405180604001604052805f81526020015f81525090565b8152602001611e0260405180604001604052805f81526020015f81525090565b8152602001611e2260405180604001604052805f81526020015f81525090565b8152602001611e4260405180604001604052805f81526020015f81525090565b8152602001611e6260405180604001604052805f81526020015f81525090565b8152602001611e8260405180604001604052805f81526020015f81525090565b8152602001611ea260405180604001604052805f81526020015f81525090565b8152602001611ec260405180604001604052805f81526020015f81525090565b8152602001611ee260405180604001604052805f81526020015f81525090565b8152602001611f0260405180604001604052805f81526020015f81525090565b8152602001611f2260405180604001604052805f81526020015f81525090565b8152602001611f4260405180604001604052805f81526020015f81525090565b8152602001611f6260405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b6040518060e001604052806007906020820280368337509192915050565b80356001600160a01b0381168114611fa8575f5ffd5b919050565b5f60208284031215611fbd575f5ffd5b611cdf82611f92565b5f60208284031215611fd6575f5ffd5b5035919050565b5f610500820190508251825260208301516020830152604083015161200f604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612215576122156121de565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612243576122436121de565b604052919050565b80356001600160401b0381168114611fa8575f5ffd5b5f60608284031215612271575f5ffd5b604051606081016001600160401b0381118282101715612293576122936121de565b6040529050806122a28361224b565b81526122b06020840161224b565b6020820152604092830135920191909152919050565b5f604082840312156122d6575f5ffd5b604080519081016001600160401b03811182821017156122f8576122f86121de565b604052823581526020928301359281019290925250919050565b5f5f8284036104e0811215612325575f5ffd5b61232f8585612261565b9250610480605f1982011215612343575f5ffd5b5061234c6121f2565b61235985606086016122c6565b81526123688560a086016122c6565b602082015261237a8560e086016122c6565b604082015261238d8561012086016122c6565b60608201526123a08561016086016122c6565b60808201526123b3856101a086016122c6565b60a08201526123c6856101e086016122c6565b60c08201526123d98561022086016122c6565b60e08201526123ec8561026086016122c6565b610100820152612400856102a086016122c6565b610120820152612414856102e086016122c6565b6101408201526124288561032086016122c6565b61016082015261243c8561036086016122c6565b6101808201526103a08401356101a08201526103c08401356101c08201526103e08401356101e08201526104008401356102008201526104208401356102208201526104408401356102408201526104608401356102608201526104808401356102808201526104a08401356102a08201526104c0909301356102c08401525092909150565b5f5f604083850312156124d3575f5ffd5b6124dc83611f92565b915060208301356001600160401b038111156124f6575f5ffd5b8301601f81018513612506575f5ffd5b80356001600160401b0381111561251f5761251f6121de565b612532601f8201601f191660200161221b565b818152866020838501011115612546575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff81168114611fa8575f5ffd5b5f60208284031215612588575f5ffd5b611cdf82612565565b5f5f5f5f8486036101208112156125a6575f5ffd5b6125b08787612261565b94506080605f19820112156125c3575f5ffd5b50604051608081016001600160401b03811182821017156125e6576125e66121de565b604090815260608781013583526080880135602084015260a08801359183019190915260c087013590820152925061262060e08601612565565b915061262f6101008601611f92565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215612680575f5ffd5b50508035926020909101359150565b5f6020828403121561269f575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610d5957610d596126a6565b634e487b7160e01b5f52603260045260245ffd5b5f816126ef576126ef6126a6565b505f190190565b805f5b600781101561155a5781518452602093840193909101906001016126f9565b61272d82825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a608201905084518252602085015160208301526040850151612904604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152612adc6105008301856126f6565b612aea6105e0830184612718565b949350505050565b5f60208284031215612b02575f5ffd5b81518015158114611cdf575f5ffd5b6001600160401b038281168282160390811115610d5957610d596126a6565b5f6001600160401b0382166001600160401b038103612b5157612b516126a6565b60010192915050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
4388    /// ```
4389    #[rustfmt::skip]
4390    #[allow(clippy::all)]
4391    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4392        b"`\x80`@R`\x046\x10a\x01aW_5`\xE0\x1C\x80cqP\x18\xA6\x11a\0\xCDW\x80c\x9F\xDBT\xA7\x11a\0\x87W\x80c\xD2M\x93=\x11a\0bW\x80c\xD2M\x93=\x14a\x05 W\x80c\xE003\x01\x14a\x05OW\x80c\xF2\xFD\xE3\x8B\x14a\x05nW\x80c\xF9\xE5\r\x19\x14a\x05\x8DW__\xFD[\x80c\x9F\xDBT\xA7\x14a\x04VW\x80c\xAD<\xB1\xCC\x14a\x04\xABW\x80c\xC2;\x9E\x9E\x14a\x04\xE8W__\xFD[\x80cqP\x18\xA6\x14a\x03aW\x80c\x82nA\xFC\x14a\x03uW\x80c\x85\x84\xD2?\x14a\x03\xA0W\x80c\x8D\xA5\xCB[\x14a\x03\xDCW\x80c\x96\xC1\xCAa\x14a\x04\x18W\x80c\x9B\xAA<\xC9\x14a\x047W__\xFD[\x80c1=\xF7\xB1\x11a\x01\x1EW\x80c1=\xF7\xB1\x14a\x02\x8CW\x80c7\x8E\xC2;\x14a\x02\xC3W\x80cBm1\x94\x14a\x02\xE5W\x80cO\x1E\xF2\x86\x14a\x03&W\x80cR\xD1\x90-\x14a\x039W\x80ci\xCCj\x04\x14a\x03MW__\xFD[\x80c\x01?\xA5\xFC\x14a\x01eW\x80c\x02\xB5\x92\xF3\x14a\x01\x86W\x80c\r\x8En,\x14a\x01\xE3W\x80c\x12\x17<,\x14a\x02\x0EW\x80c c\xD4\xF7\x14a\x02/W\x80c/y\x88\x9D\x14a\x02NW[__\xFD[4\x80\x15a\x01pW__\xFD[Pa\x01\x84a\x01\x7F6`\x04a\x1F\xADV[a\x05\xA1V[\0[4\x80\x15a\x01\x91W__\xFD[Pa\x01\xA5a\x01\xA06`\x04a\x1F\xC6V[a\x06TV[`@Qa\x01\xDA\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xEEW__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x01\xDAV[4\x80\x15a\x02\x19W__\xFD[Pa\x02\"a\x06\x9DV[`@Qa\x01\xDA\x91\x90a\x1F\xDDV[4\x80\x15a\x02:W__\xFD[Pa\x01\x84a\x02I6`\x04a#\x12V[a\x06\xB2V[4\x80\x15a\x02YW__\xFD[P`\x08Ta\x02t\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\x97W__\xFD[P`\x08Ta\x02\xAB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xCEW__\xFD[Pa\x02\xD7a\x08\rV[`@Q\x90\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xF0W__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\x06\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x01\xDAV[a\x01\x84a\x0346`\x04a$\xC2V[a\x08oV[4\x80\x15a\x03DW__\xFD[Pa\x02\xD7a\x08\x8EV[4\x80\x15a\x03XW__\xFD[Pa\x01\x84a\x08\xA9V[4\x80\x15a\x03lW__\xFD[Pa\x01\x84a\t\x17V[4\x80\x15a\x03\x80W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15[`@Q\x90\x15\x15\x81R` \x01a\x01\xDAV[4\x80\x15a\x03\xABW__\xFD[Pa\x03\xBFa\x03\xBA6`\x04a\x1F\xC6V[a\t(V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x01\xDAV[4\x80\x15a\x03\xE7W__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16a\x02\xABV[4\x80\x15a\x04#W__\xFD[Pa\x01\x84a\x0426`\x04a%xV[a\nSV[4\x80\x15a\x04BW__\xFD[Pa\x01\x84a\x04Q6`\x04a%\x91V[a\n\xDCV[4\x80\x15a\x04aW__\xFD[P`\x06T`\x07Ta\x04\x85\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x01\xDAV[4\x80\x15a\x04\xB6W__\xFD[Pa\x04\xDB`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x01\xDA\x91\x90a&:V[4\x80\x15a\x04\xF3W__\xFD[P`\x08Ta\x05\x0B\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x05+W__\xFD[P`\x04T`\x05Ta\x04\x85\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x05ZW__\xFD[Pa\x03\x90a\x05i6`\x04a&oV[a\x0B\xFEV[4\x80\x15a\x05yW__\xFD[Pa\x01\x84a\x05\x886`\x04a\x1F\xADV[a\r_V[4\x80\x15a\x05\x98W__\xFD[P`\tTa\x02\xD7V[a\x05\xA9a\r\xA1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x05\xD0W`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x05\xFFW`@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\x06cW_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\x06\xA5a\x1D\x0FV[a\x06\xADa\r\xFCV[\x90P\x90V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x06\xD7WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x06\xF5W`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x82Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x07.WP`\x06T` \x83\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x07LW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x07Y\x82`@\x01Qa\x14+V[a\x07c\x82\x82a\x14lV[\x81Q`\x06\x80T` \x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x82\x01Q`\x07Ua\x07\xB1a\x07\xAAa\x08\rV[B\x84a\x15`V[\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\x08\x01\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPV[_`d`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08KW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xAD\x91\x90a&\x8FV[a\x08wa\x17IV[a\x08\x80\x82a\x17\xEDV[a\x08\x8A\x82\x82a\x18.V[PPV[_a\x08\x97a\x18\xEFV[P_Q` a+q_9_Q\x90_R\x90V[a\x08\xB1a\r\xA1V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x08\xFCW`\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\x1Fa\r\xA1V[a\t\x15_a\x198V[`\t\x80T_\x91\x82\x91\x90a\t<`\x01\x83a&\xBAV[\x81T\x81\x10a\tLWa\tLa&\xCDV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\t\x8BW`@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\nLW\x84`\t\x82\x81T\x81\x10a\t\xBBWa\t\xBBa&\xCDV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\nDW`\t\x81\x81T\x81\x10a\t\xF4Wa\t\xF4a&\xCDV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\n\x17Wa\n\x17a&\xCDV[\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\t\x9FV[PP\x91P\x91V[a\n[a\r\xA1V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\nzWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\n\x98WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\n\xB6W`@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 WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0B;WP0;\x15[\x90P\x81\x15\x80\x15a\x0BIWP\x80\x15[\x15a\x0BgW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x0B\x91W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0B\x9A\x86a\x19\xA8V[a\x0B\xA2a\x19\xB9V[a\x0B\xAD\x89\x89\x89a\x19\xC1V[\x83\x15a\x0B\xF3W\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[`\tT_\x90a\x0C\x0Ba\x08\rV[\x84\x11\x80a\x0C\x16WP\x80\x15[\x80a\x0C`WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x0CDWa\x0CDa&\xCDV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x0C~W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x0C\x8C`\x01\x85a&\xBAV[\x90P[\x81a\r(W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\r(W\x86`\t\x82\x81T\x81\x10a\x0C\xC1Wa\x0C\xC1a&\xCDV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\r\x16W`\x01\x91P`\t\x81\x81T\x81\x10a\x0C\xF6Wa\x0C\xF6a&\xCDV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\r(V[\x80a\r \x81a&\xE1V[\x91PPa\x0C\x8FV[\x81a\rFW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\rQ\x84\x89a&\xBAV[\x11\x94PPPPP[\x92\x91PPV[a\rga\r\xA1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r\x95W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\r\x9E\x81a\x198V[PV[3a\r\xD3\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\x15W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r\x8CV[a\x0E\x04a\x1D\x0FV[b\x10\0\0\x81R`\x07` \x82\x01R\x7F#x=\x0E\x97w\xB7\xAFe\xFB\xF8I\xDA~\xDBu\xE7K\x1E\xAFP>\x02]\x7F/\x7F\x80\x99\x1B\xEF\xA2`@\x82\x01QR\x7F*N/\xE8\xAD\xFAS\xF4hRU\x82\xD5\x18LLp\xBB\xDB\x94l!\xF2\x16A\x8A\x98yp^T\xA7` `@\x83\x01Q\x01R\x7F\x06$\xB2\xC1\xE7\x7F$\xAF\xCE\xAF9E\x17C\xB9\xFA\x80\xD5\x85?\xCA{\xA0\x03\x89\xC6ue\x07t\0\x9B``\x82\x01QR\x7F%\rw\x19\xE9L\xA2\xDF\0\xDF\xE3'\x93\x8FZ\x8DM\x83wy\xB9\x987\xCAwzS\xD3\x91'\xB1y` ``\x83\x01Q\x01R\x7F\r\xC0\x95\x15\x15.\xAE\xA6m\r\xB2\xF5q\xCC\x99^6\x9D&\xFEds\x94\xF1\r\xB59\x8C\x91u\x19\xDC`\x80\x82\x01QR\x7F\x12s\x14Ml\xEC,Jh\xB2J\x14\x93y\xC0\xF5Y+\xB7\xFB\xDD\xBE2\xFA\x17\x19\x19\x95\x0C\xA4\x04\xCB` `\x80\x83\x01Q\x01R\x7F\x11\x95!\xBBh\xCA\xEC!n/\x05\xEE\xB4f\xFB:\xBF\xE1\xF3\x9B\xAF\x7F\xE7\xCB9.\xA0W\xB6\xA2\xD9\xBF`\xA0\x82\x01QR\x7F-R\xAD\xEA\xBA\x80E\xE5:\xB5&\xFE\x99\x82\xD0\xEAE-\xEFk>\xA0%='\xA1\x9E\xF3\xB4n\x84(` `\xA0\x83\x01Q\x01R\x7F\x16\xC3\xB5\xB2\x17\xD3\x02\x97Z\x92\r\x137E$\xD7\xA5.JP\xFD\x7F\xB90\x84\"q\xEB\xF4\xA8N\xFD`\xC0\x82\x01QR\x7F \x07\x88\x91k\x90{\x19ir\xBD\xE3\x041\x8E\x88Z%!QK-\xB5\xE4\xA1\x18\x99\xC5\x12\x04\xF0\x89` `\xC0\x83\x01Q\x01R\x7F\x11'X\x1A\xFEu=\xEF\xCA\x9A\xEF\x12\xE73-\xB9\x97\x8A \x0B\x16\x99\xCE8\x88\xC0\xF3\xAE\xA6\x11\x1D\xC3`\xE0\x82\x01QR\x7F\x08\x81\xE1?\0r;\xE1\xA0Hr\xED\x02\xB2\xD0x\xC3\x1E\x80\xFE\xAF'rN&,\xE9|,\xB0\xBB\x1D` `\xE0\x83\x01Q\x01R\x7F\x14\x82\xA3\xA6\xBB\x91\xD6H=\x156\x83\xE2@O/UF\xE0\xE8\x95S\x0F\xDF\x13 \x91I\x84\x06\xE3\xDEa\x01\0\x82\x01QR~\xFAR\xDB=R\xD9\x05\xEA\xD1$\x81\x02\xF3\xA8\nC\xA9\r\x84\0\xC6\x8F`\xA6,T<A{/K` a\x01\0\x83\x01Q\x01R\x7F\nW\xDA\xDDJU\x19\x95%\xACj\xC6\xFA\xBC\x87\xA4\xCC\xCF\xDC\x98\x14+\xCE\xF9\xDB\xF4}\xE0\x0E\xCCQda\x01 \x82\x01QR\x7F\x18\xD9Z\xBD\x9B\x8E\x12\xC3i6\xAA!\x8C\xFF\xF5\x82T\x8Ak\xBF\xF2\\3\x8C \x06\xEA\xEB\x1F\xE5\xB6\x96` a\x01 \x83\x01Q\x01R\x7F+\xC4\x0E\x91\xDD\x16\x9B\x8B\xC1C\xA0)R\xA1\xB6\xC6\xE6'\xBF\xEBz+\xBEPx\xE1A#\xF3\xC5L\x1Ca\x01@\x82\x01QR\x7F\x10\x8De\xA2\x0CW\x9Bm\x98\x83'^\xB6\x88\x9F\xC3\xF5\xFCys\\\xA9\xF6\x11\xA1;g\xDA\xA2\xFB\xC8\xD0` a\x01@\x83\x01Q\x01R\x7F!\xBC\x1F\x86\xD0`\x8E_\x06&\xB4g\xEEo\x82\x82\xB6\x19\"?`\xA7\xAC\xB0\xFCc\xBA{\xDA\xF7\x83\xBEa\x01`\x82\x01QR\x7F\x05\xEF2\x82\xF8\xEE\xF0\x15\x15\xFB\x9A\x8A}l\xA0k\x8B\0}\x1DQ$\x03\xEF\xB2h\xFB\x03\xCE_\t\xE9` a\x01`\x83\x01Q\x01R\x7F,\xABf\xC1\xCBZ\x83\x86\x9Es\xAC4\xFB\xE4gHi\x99\xBA\xBDT\x1D\x90\x10\xEE\x9A\x80H\x06\xEE\xE4\xEFa\x01\x80\x82\x01QR\x7F-\xB1\x98$\x19\xC5\xA4\xA1u\x93\xAC\xFF\x955\xFA\x96v\x83\xD7\\\x8A\xEC\x011\x9Bd\xB8J\xAD\xA2\xAD\x84` a\x01\x80\x83\x01Q\x01R\x7F,8f|l~\xB8h\xBD\xD3\x0C4\xDD?K\x84\xD9\xB9\xB1\xA2}xg\xB3d\xC8\xB7\x83\x14#\xE9\x08a\x01\xA0\x82\x01QR\x7F+,\xB4\x04M\xD5\x11e\xC4\x818!\x9DQ\xCF\x8D\x16\x89\xF9\x1E\xD3\xEE\xEF\xEA\xD6\xE0U\xEBH\x8A,\xE2` a\x01\xA0\x83\x01Q\x01R\x7F-H\xE5G\x03\x01\x1D\xF2\xC7J\x14\xDA\xFD\xE3\xAFO\xD8>\xC7\x18u\xD8\xDD\xC3UFXd\x0C\xC9U\x01a\x01\xC0\x82\x01QR\x7F$:\x99\xD8\r2\xEBT\x08\xB5\x9D[\x080+\xED\xE0p\xD3\xFB\n\x8E\xFE/\"b\xF8e\xBF\xFBM\r` a\x01\xC0\x83\x01Q\x01R\x7F\x04U\xD22[\xF6&\x9Af\xF0}\x83\x8FU\xF3iG\xA3\xCD\x9B\x87\xED\xD8H\x0B\xCE\xD9\\\xBBE\xCC\x11a\x01\xE0\x82\x01QR\x7F\x0Ff\xD9\x08Zn\xD6\x0B\x83\x81y\x98~$\t\x92\xBF\xF4\xC0Ql\xCFl\xCD\xE4\xA1\xCA\x94\xCE\x8B\x98d` a\x01\xE0\x83\x01Q\x01R\x7F+\xAC\r#\xC8X]\x14\x87\xECa\x1B^\xFF\xC9~XR\xFE\xA4:|\xBA6\xCC\xDD, y1\xF3\x94a\x02\0\x82\x01QR\x7F\x18`\xB5N\x01\xA0j\xEAZ\xDBK\x13\xBF[\xAE\xBA\xB9+sh\x07\xA3\xA8\x9F\xF2\x04\t\x92\xB0n\xE6\xEC` a\x02\0\x83\x01Q\x01R\x7F\x0C\x0B\xFA\x1C/\xC6\xF8\xED\x01#=Qh\xDB\x1E\x1D\xFErU\x04\xF02\xF6i\xF5\n\x92\xAEw\xC7)\x06a\x02 \x82\x01QR\x7F\rt\x1E\x12L}\x10i\xB8\xA4\0\xCB\xCD\xCF\xD9\x01(\xA53\x90\x1A\xD4\xDE\x1E\x03\x7F\xE7)\x84\xDC4\xCF` a\x02 \x83\x01Q\x01R\x7F\x01\xCF\xED0\x08\\\x9E\xFC\xE0Fh W\x94\xAA9\xB1\xA8\xEEY\x124\xB4\xC7z\"\xF8\xC2m\x89\x9E\x05a\x02@\x82\x01QR\x7F*\xB6\x8A\xC8-6\xCE\xDBd}\x14\xA5\xB0\x03^\x8C\x9A\x0B\xE8G\x80\xB7\xBA\xE1\x13:'\xA8\x80\x96n\xD1` a\x02@\x83\x01Q\x01R\x7F\x07.\x1DP\xF8\xB5\xCF\x8DWK8G'dw\xD9[\xBDQ\x165\x10\0\x84\x1Fr\x8D\xA4O@C\xB5a\x02`\x82\x01QR\x7F#\xF8\xEAn\xAC\xD0\x87mW\"\x0FW\xEA\xBA\xCB\xE7j##A\x16cs\x1A%\x1D]\xCA6\xF1\xB5\x9F` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\x08\x8AW`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x14ua\x06\x9DV[\x90Pa\x14\x7Fa\x1FtV[\x83Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x82R` \x85\x01Q\x16\x81`\x01` \x02\x01R`@\x84\x81\x01Q\x82\x82\x01R`\x01T``\x83\x01R`\x02T`\x80\x83\x01R`\x03T`\xA0\x83\x01R_T`\xC0\x83\x01RQc\xCESzw`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90c\xCESzw\x90a\x14\xFE\x90\x85\x90\x85\x90\x88\x90`\x04\x01a(\xD2V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x15\x19W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15=\x91\x90a*\xF2V[a\x15ZW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[`\tT\x15\x80\x15\x90a\x15\xD5WP`\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\xA0Wa\x15\xA0a&\xCDV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x15\xCA\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a+\x11V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x16hW`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x16\x02Wa\x16\x02a&\xCDV[_\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\x16B\x83a+0V[\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\xCFWP\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\xC3_Q` a+q_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\t\x15W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x17\xF5a\r\xA1V[`@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\x06IV[\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\x88WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18\x85\x91\x81\x01\x90a&\x8FV[`\x01[a\x18\xB0W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r\x8CV[_Q` a+q_9_Q\x90_R\x81\x14a\x18\xE0W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\x8CV[a\x18\xEA\x83\x83a\x1A\xEDV[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\x15W`@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\xB0a\x1BBV[a\r\x9E\x81a\x1B\x8BV[a\t\x15a\x1BBV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x19\xE5WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x19\xF2WP` \x82\x01Q\x15[\x80a\x19\xFFWP`@\x82\x01Q\x15[\x80a\x1A\x0CWP``\x82\x01Q\x15[\x80a\x1A\x16WP\x81Q\x15[\x80a\x1A(WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x1A<WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x1AZW`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[a\x1A\xF6\x82a\x1B\x93V[`@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\x1B:Wa\x18\xEA\x82\x82a\x1B\xF6V[a\x08\x8Aa\x1ChV[\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\x15W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\rga\x1BBV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1B\xC8W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r\x8CV[_Q` a+q_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\x1C\x12\x91\x90a+ZV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1CJW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1COV[``\x91P[P\x91P\x91Pa\x1C_\x85\x83\x83a\x1C\x87V[\x95\x94PPPPPV[4\x15a\t\x15W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a\x1C\x9CWa\x1C\x97\x82a\x1C\xE6V[a\x1C\xDFV[\x81Q\x15\x80\x15a\x1C\xB3WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x1C\xDCW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r\x8CV[P\x80[\x93\x92PPPV[\x80Q\x15a\x1C\xF6W\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\x1DB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Db`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\x82`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xA2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xC2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xE2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x02`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\"`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1EB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Eb`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x82`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xA2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xC2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xE2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x02`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\"`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1FB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Fb`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\xE0\x01`@R\x80`\x07\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x1F\xA8W__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\x1F\xBDW__\xFD[a\x1C\xDF\x82a\x1F\x92V[_` \x82\x84\x03\x12\x15a\x1F\xD6W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa \x0F`@\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\"\x15Wa\"\x15a!\xDEV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"CWa\"Ca!\xDEV[`@R\x91\x90PV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x1F\xA8W__\xFD[_``\x82\x84\x03\x12\x15a\"qW__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"\x93Wa\"\x93a!\xDEV[`@R\x90P\x80a\"\xA2\x83a\"KV[\x81Ra\"\xB0` \x84\x01a\"KV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a\"\xD6W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"\xF8Wa\"\xF8a!\xDEV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[__\x82\x84\x03a\x04\xE0\x81\x12\x15a#%W__\xFD[a#/\x85\x85a\"aV[\x92Pa\x04\x80`_\x19\x82\x01\x12\x15a#CW__\xFD[Pa#La!\xF2V[a#Y\x85``\x86\x01a\"\xC6V[\x81Ra#h\x85`\xA0\x86\x01a\"\xC6V[` \x82\x01Ra#z\x85`\xE0\x86\x01a\"\xC6V[`@\x82\x01Ra#\x8D\x85a\x01 \x86\x01a\"\xC6V[``\x82\x01Ra#\xA0\x85a\x01`\x86\x01a\"\xC6V[`\x80\x82\x01Ra#\xB3\x85a\x01\xA0\x86\x01a\"\xC6V[`\xA0\x82\x01Ra#\xC6\x85a\x01\xE0\x86\x01a\"\xC6V[`\xC0\x82\x01Ra#\xD9\x85a\x02 \x86\x01a\"\xC6V[`\xE0\x82\x01Ra#\xEC\x85a\x02`\x86\x01a\"\xC6V[a\x01\0\x82\x01Ra$\0\x85a\x02\xA0\x86\x01a\"\xC6V[a\x01 \x82\x01Ra$\x14\x85a\x02\xE0\x86\x01a\"\xC6V[a\x01@\x82\x01Ra$(\x85a\x03 \x86\x01a\"\xC6V[a\x01`\x82\x01Ra$<\x85a\x03`\x86\x01a\"\xC6V[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$\xD3W__\xFD[a$\xDC\x83a\x1F\x92V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a$\xF6W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a%\x06W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a%\x1FWa%\x1Fa!\xDEV[a%2`\x1F\x82\x01`\x1F\x19\x16` \x01a\"\x1BV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a%FW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1F\xA8W__\xFD[_` \x82\x84\x03\x12\x15a%\x88W__\xFD[a\x1C\xDF\x82a%eV[____\x84\x86\x03a\x01 \x81\x12\x15a%\xA6W__\xFD[a%\xB0\x87\x87a\"aV[\x94P`\x80`_\x19\x82\x01\x12\x15a%\xC3W__\xFD[P`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a%\xE6Wa%\xE6a!\xDEV[`@\x90\x81R``\x87\x81\x015\x83R`\x80\x88\x015` \x84\x01R`\xA0\x88\x015\x91\x83\x01\x91\x90\x91R`\xC0\x87\x015\x90\x82\x01R\x92Pa& `\xE0\x86\x01a%eV[\x91Pa&/a\x01\0\x86\x01a\x1F\x92V[\x90P\x92\x95\x91\x94P\x92PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[__`@\x83\x85\x03\x12\x15a&\x80W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a&\x9FW__\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\rYWa\rYa&\xA6V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x81a&\xEFWa&\xEFa&\xA6V[P_\x19\x01\x90V[\x80_[`\x07\x81\x10\x15a\x15ZW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a&\xF9V[a'-\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)\x04`@\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*\xDCa\x05\0\x83\x01\x85a&\xF6V[a*\xEAa\x05\xE0\x83\x01\x84a'\x18V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a+\x02W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1C\xDFW__\xFD[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\rYWa\rYa&\xA6V[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a+QWa+Qa&\xA6V[`\x01\x01\x92\x91PPV[_\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",
4393    );
4394    #[derive(serde::Serialize, serde::Deserialize)]
4395    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4396    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
4397```solidity
4398error AddressEmptyCode(address target);
4399```*/
4400    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4401    #[derive(Clone)]
4402    pub struct AddressEmptyCode {
4403        #[allow(missing_docs)]
4404        pub target: alloy::sol_types::private::Address,
4405    }
4406    #[allow(
4407        non_camel_case_types,
4408        non_snake_case,
4409        clippy::pub_underscore_fields,
4410        clippy::style
4411    )]
4412    const _: () = {
4413        use alloy::sol_types as alloy_sol_types;
4414        #[doc(hidden)]
4415        #[allow(dead_code)]
4416        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4417        #[doc(hidden)]
4418        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4419        #[cfg(test)]
4420        #[allow(dead_code, unreachable_patterns)]
4421        fn _type_assertion(
4422            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4423        ) {
4424            match _t {
4425                alloy_sol_types::private::AssertTypeEq::<
4426                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4427                >(_) => {}
4428            }
4429        }
4430        #[automatically_derived]
4431        #[doc(hidden)]
4432        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
4433            fn from(value: AddressEmptyCode) -> Self {
4434                (value.target,)
4435            }
4436        }
4437        #[automatically_derived]
4438        #[doc(hidden)]
4439        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
4440            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4441                Self { target: tuple.0 }
4442            }
4443        }
4444        #[automatically_derived]
4445        impl alloy_sol_types::SolError for AddressEmptyCode {
4446            type Parameters<'a> = UnderlyingSolTuple<'a>;
4447            type Token<'a> = <Self::Parameters<
4448                'a,
4449            > as alloy_sol_types::SolType>::Token<'a>;
4450            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
4451            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
4452            #[inline]
4453            fn new<'a>(
4454                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4455            ) -> Self {
4456                tuple.into()
4457            }
4458            #[inline]
4459            fn tokenize(&self) -> Self::Token<'_> {
4460                (
4461                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4462                        &self.target,
4463                    ),
4464                )
4465            }
4466            #[inline]
4467            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4468                <Self::Parameters<
4469                    '_,
4470                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4471                    .map(Self::new)
4472            }
4473        }
4474    };
4475    #[derive(serde::Serialize, serde::Deserialize)]
4476    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4477    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
4478```solidity
4479error ERC1967InvalidImplementation(address implementation);
4480```*/
4481    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4482    #[derive(Clone)]
4483    pub struct ERC1967InvalidImplementation {
4484        #[allow(missing_docs)]
4485        pub implementation: alloy::sol_types::private::Address,
4486    }
4487    #[allow(
4488        non_camel_case_types,
4489        non_snake_case,
4490        clippy::pub_underscore_fields,
4491        clippy::style
4492    )]
4493    const _: () = {
4494        use alloy::sol_types as alloy_sol_types;
4495        #[doc(hidden)]
4496        #[allow(dead_code)]
4497        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4498        #[doc(hidden)]
4499        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4500        #[cfg(test)]
4501        #[allow(dead_code, unreachable_patterns)]
4502        fn _type_assertion(
4503            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4504        ) {
4505            match _t {
4506                alloy_sol_types::private::AssertTypeEq::<
4507                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4508                >(_) => {}
4509            }
4510        }
4511        #[automatically_derived]
4512        #[doc(hidden)]
4513        impl ::core::convert::From<ERC1967InvalidImplementation>
4514        for UnderlyingRustTuple<'_> {
4515            fn from(value: ERC1967InvalidImplementation) -> Self {
4516                (value.implementation,)
4517            }
4518        }
4519        #[automatically_derived]
4520        #[doc(hidden)]
4521        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4522        for ERC1967InvalidImplementation {
4523            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4524                Self { implementation: tuple.0 }
4525            }
4526        }
4527        #[automatically_derived]
4528        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
4529            type Parameters<'a> = UnderlyingSolTuple<'a>;
4530            type Token<'a> = <Self::Parameters<
4531                'a,
4532            > as alloy_sol_types::SolType>::Token<'a>;
4533            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
4534            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
4535            #[inline]
4536            fn new<'a>(
4537                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4538            ) -> Self {
4539                tuple.into()
4540            }
4541            #[inline]
4542            fn tokenize(&self) -> Self::Token<'_> {
4543                (
4544                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4545                        &self.implementation,
4546                    ),
4547                )
4548            }
4549            #[inline]
4550            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4551                <Self::Parameters<
4552                    '_,
4553                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4554                    .map(Self::new)
4555            }
4556        }
4557    };
4558    #[derive(serde::Serialize, serde::Deserialize)]
4559    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4560    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
4561```solidity
4562error ERC1967NonPayable();
4563```*/
4564    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4565    #[derive(Clone)]
4566    pub struct ERC1967NonPayable;
4567    #[allow(
4568        non_camel_case_types,
4569        non_snake_case,
4570        clippy::pub_underscore_fields,
4571        clippy::style
4572    )]
4573    const _: () = {
4574        use alloy::sol_types as alloy_sol_types;
4575        #[doc(hidden)]
4576        #[allow(dead_code)]
4577        type UnderlyingSolTuple<'a> = ();
4578        #[doc(hidden)]
4579        type UnderlyingRustTuple<'a> = ();
4580        #[cfg(test)]
4581        #[allow(dead_code, unreachable_patterns)]
4582        fn _type_assertion(
4583            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4584        ) {
4585            match _t {
4586                alloy_sol_types::private::AssertTypeEq::<
4587                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4588                >(_) => {}
4589            }
4590        }
4591        #[automatically_derived]
4592        #[doc(hidden)]
4593        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
4594            fn from(value: ERC1967NonPayable) -> Self {
4595                ()
4596            }
4597        }
4598        #[automatically_derived]
4599        #[doc(hidden)]
4600        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
4601            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4602                Self
4603            }
4604        }
4605        #[automatically_derived]
4606        impl alloy_sol_types::SolError for ERC1967NonPayable {
4607            type Parameters<'a> = UnderlyingSolTuple<'a>;
4608            type Token<'a> = <Self::Parameters<
4609                'a,
4610            > as alloy_sol_types::SolType>::Token<'a>;
4611            const SIGNATURE: &'static str = "ERC1967NonPayable()";
4612            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
4613            #[inline]
4614            fn new<'a>(
4615                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4616            ) -> Self {
4617                tuple.into()
4618            }
4619            #[inline]
4620            fn tokenize(&self) -> Self::Token<'_> {
4621                ()
4622            }
4623            #[inline]
4624            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4625                <Self::Parameters<
4626                    '_,
4627                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4628                    .map(Self::new)
4629            }
4630        }
4631    };
4632    #[derive(serde::Serialize, serde::Deserialize)]
4633    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4634    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
4635```solidity
4636error FailedInnerCall();
4637```*/
4638    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4639    #[derive(Clone)]
4640    pub struct FailedInnerCall;
4641    #[allow(
4642        non_camel_case_types,
4643        non_snake_case,
4644        clippy::pub_underscore_fields,
4645        clippy::style
4646    )]
4647    const _: () = {
4648        use alloy::sol_types as alloy_sol_types;
4649        #[doc(hidden)]
4650        #[allow(dead_code)]
4651        type UnderlyingSolTuple<'a> = ();
4652        #[doc(hidden)]
4653        type UnderlyingRustTuple<'a> = ();
4654        #[cfg(test)]
4655        #[allow(dead_code, unreachable_patterns)]
4656        fn _type_assertion(
4657            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4658        ) {
4659            match _t {
4660                alloy_sol_types::private::AssertTypeEq::<
4661                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4662                >(_) => {}
4663            }
4664        }
4665        #[automatically_derived]
4666        #[doc(hidden)]
4667        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
4668            fn from(value: FailedInnerCall) -> Self {
4669                ()
4670            }
4671        }
4672        #[automatically_derived]
4673        #[doc(hidden)]
4674        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
4675            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4676                Self
4677            }
4678        }
4679        #[automatically_derived]
4680        impl alloy_sol_types::SolError for FailedInnerCall {
4681            type Parameters<'a> = UnderlyingSolTuple<'a>;
4682            type Token<'a> = <Self::Parameters<
4683                'a,
4684            > as alloy_sol_types::SolType>::Token<'a>;
4685            const SIGNATURE: &'static str = "FailedInnerCall()";
4686            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
4687            #[inline]
4688            fn new<'a>(
4689                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4690            ) -> Self {
4691                tuple.into()
4692            }
4693            #[inline]
4694            fn tokenize(&self) -> Self::Token<'_> {
4695                ()
4696            }
4697            #[inline]
4698            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4699                <Self::Parameters<
4700                    '_,
4701                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4702                    .map(Self::new)
4703            }
4704        }
4705    };
4706    #[derive(serde::Serialize, serde::Deserialize)]
4707    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4708    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
4709```solidity
4710error InsufficientSnapshotHistory();
4711```*/
4712    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4713    #[derive(Clone)]
4714    pub struct InsufficientSnapshotHistory;
4715    #[allow(
4716        non_camel_case_types,
4717        non_snake_case,
4718        clippy::pub_underscore_fields,
4719        clippy::style
4720    )]
4721    const _: () = {
4722        use alloy::sol_types as alloy_sol_types;
4723        #[doc(hidden)]
4724        #[allow(dead_code)]
4725        type UnderlyingSolTuple<'a> = ();
4726        #[doc(hidden)]
4727        type UnderlyingRustTuple<'a> = ();
4728        #[cfg(test)]
4729        #[allow(dead_code, unreachable_patterns)]
4730        fn _type_assertion(
4731            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4732        ) {
4733            match _t {
4734                alloy_sol_types::private::AssertTypeEq::<
4735                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4736                >(_) => {}
4737            }
4738        }
4739        #[automatically_derived]
4740        #[doc(hidden)]
4741        impl ::core::convert::From<InsufficientSnapshotHistory>
4742        for UnderlyingRustTuple<'_> {
4743            fn from(value: InsufficientSnapshotHistory) -> Self {
4744                ()
4745            }
4746        }
4747        #[automatically_derived]
4748        #[doc(hidden)]
4749        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4750        for InsufficientSnapshotHistory {
4751            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4752                Self
4753            }
4754        }
4755        #[automatically_derived]
4756        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
4757            type Parameters<'a> = UnderlyingSolTuple<'a>;
4758            type Token<'a> = <Self::Parameters<
4759                'a,
4760            > as alloy_sol_types::SolType>::Token<'a>;
4761            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
4762            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
4763            #[inline]
4764            fn new<'a>(
4765                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4766            ) -> Self {
4767                tuple.into()
4768            }
4769            #[inline]
4770            fn tokenize(&self) -> Self::Token<'_> {
4771                ()
4772            }
4773            #[inline]
4774            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4775                <Self::Parameters<
4776                    '_,
4777                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4778                    .map(Self::new)
4779            }
4780        }
4781    };
4782    #[derive(serde::Serialize, serde::Deserialize)]
4783    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4784    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
4785```solidity
4786error InvalidAddress();
4787```*/
4788    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4789    #[derive(Clone)]
4790    pub struct InvalidAddress;
4791    #[allow(
4792        non_camel_case_types,
4793        non_snake_case,
4794        clippy::pub_underscore_fields,
4795        clippy::style
4796    )]
4797    const _: () = {
4798        use alloy::sol_types as alloy_sol_types;
4799        #[doc(hidden)]
4800        #[allow(dead_code)]
4801        type UnderlyingSolTuple<'a> = ();
4802        #[doc(hidden)]
4803        type UnderlyingRustTuple<'a> = ();
4804        #[cfg(test)]
4805        #[allow(dead_code, unreachable_patterns)]
4806        fn _type_assertion(
4807            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4808        ) {
4809            match _t {
4810                alloy_sol_types::private::AssertTypeEq::<
4811                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4812                >(_) => {}
4813            }
4814        }
4815        #[automatically_derived]
4816        #[doc(hidden)]
4817        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
4818            fn from(value: InvalidAddress) -> Self {
4819                ()
4820            }
4821        }
4822        #[automatically_derived]
4823        #[doc(hidden)]
4824        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
4825            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4826                Self
4827            }
4828        }
4829        #[automatically_derived]
4830        impl alloy_sol_types::SolError for InvalidAddress {
4831            type Parameters<'a> = UnderlyingSolTuple<'a>;
4832            type Token<'a> = <Self::Parameters<
4833                'a,
4834            > as alloy_sol_types::SolType>::Token<'a>;
4835            const SIGNATURE: &'static str = "InvalidAddress()";
4836            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
4837            #[inline]
4838            fn new<'a>(
4839                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4840            ) -> Self {
4841                tuple.into()
4842            }
4843            #[inline]
4844            fn tokenize(&self) -> Self::Token<'_> {
4845                ()
4846            }
4847            #[inline]
4848            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4849                <Self::Parameters<
4850                    '_,
4851                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4852                    .map(Self::new)
4853            }
4854        }
4855    };
4856    #[derive(serde::Serialize, serde::Deserialize)]
4857    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4858    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
4859```solidity
4860error InvalidArgs();
4861```*/
4862    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4863    #[derive(Clone)]
4864    pub struct InvalidArgs;
4865    #[allow(
4866        non_camel_case_types,
4867        non_snake_case,
4868        clippy::pub_underscore_fields,
4869        clippy::style
4870    )]
4871    const _: () = {
4872        use alloy::sol_types as alloy_sol_types;
4873        #[doc(hidden)]
4874        #[allow(dead_code)]
4875        type UnderlyingSolTuple<'a> = ();
4876        #[doc(hidden)]
4877        type UnderlyingRustTuple<'a> = ();
4878        #[cfg(test)]
4879        #[allow(dead_code, unreachable_patterns)]
4880        fn _type_assertion(
4881            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4882        ) {
4883            match _t {
4884                alloy_sol_types::private::AssertTypeEq::<
4885                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4886                >(_) => {}
4887            }
4888        }
4889        #[automatically_derived]
4890        #[doc(hidden)]
4891        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
4892            fn from(value: InvalidArgs) -> Self {
4893                ()
4894            }
4895        }
4896        #[automatically_derived]
4897        #[doc(hidden)]
4898        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
4899            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4900                Self
4901            }
4902        }
4903        #[automatically_derived]
4904        impl alloy_sol_types::SolError for InvalidArgs {
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 = "InvalidArgs()";
4910            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
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            }
4921            #[inline]
4922            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4923                <Self::Parameters<
4924                    '_,
4925                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4926                    .map(Self::new)
4927            }
4928        }
4929    };
4930    #[derive(serde::Serialize, serde::Deserialize)]
4931    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4932    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
4933```solidity
4934error InvalidHotShotBlockForCommitmentCheck();
4935```*/
4936    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4937    #[derive(Clone)]
4938    pub struct InvalidHotShotBlockForCommitmentCheck;
4939    #[allow(
4940        non_camel_case_types,
4941        non_snake_case,
4942        clippy::pub_underscore_fields,
4943        clippy::style
4944    )]
4945    const _: () = {
4946        use alloy::sol_types as alloy_sol_types;
4947        #[doc(hidden)]
4948        #[allow(dead_code)]
4949        type UnderlyingSolTuple<'a> = ();
4950        #[doc(hidden)]
4951        type UnderlyingRustTuple<'a> = ();
4952        #[cfg(test)]
4953        #[allow(dead_code, unreachable_patterns)]
4954        fn _type_assertion(
4955            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4956        ) {
4957            match _t {
4958                alloy_sol_types::private::AssertTypeEq::<
4959                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4960                >(_) => {}
4961            }
4962        }
4963        #[automatically_derived]
4964        #[doc(hidden)]
4965        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck>
4966        for UnderlyingRustTuple<'_> {
4967            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
4968                ()
4969            }
4970        }
4971        #[automatically_derived]
4972        #[doc(hidden)]
4973        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4974        for InvalidHotShotBlockForCommitmentCheck {
4975            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4976                Self
4977            }
4978        }
4979        #[automatically_derived]
4980        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
4981            type Parameters<'a> = UnderlyingSolTuple<'a>;
4982            type Token<'a> = <Self::Parameters<
4983                'a,
4984            > as alloy_sol_types::SolType>::Token<'a>;
4985            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
4986            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
4987            #[inline]
4988            fn new<'a>(
4989                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4990            ) -> Self {
4991                tuple.into()
4992            }
4993            #[inline]
4994            fn tokenize(&self) -> Self::Token<'_> {
4995                ()
4996            }
4997            #[inline]
4998            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4999                <Self::Parameters<
5000                    '_,
5001                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5002                    .map(Self::new)
5003            }
5004        }
5005    };
5006    #[derive(serde::Serialize, serde::Deserialize)]
5007    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5008    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
5009```solidity
5010error InvalidInitialization();
5011```*/
5012    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5013    #[derive(Clone)]
5014    pub struct InvalidInitialization;
5015    #[allow(
5016        non_camel_case_types,
5017        non_snake_case,
5018        clippy::pub_underscore_fields,
5019        clippy::style
5020    )]
5021    const _: () = {
5022        use alloy::sol_types as alloy_sol_types;
5023        #[doc(hidden)]
5024        #[allow(dead_code)]
5025        type UnderlyingSolTuple<'a> = ();
5026        #[doc(hidden)]
5027        type UnderlyingRustTuple<'a> = ();
5028        #[cfg(test)]
5029        #[allow(dead_code, unreachable_patterns)]
5030        fn _type_assertion(
5031            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5032        ) {
5033            match _t {
5034                alloy_sol_types::private::AssertTypeEq::<
5035                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5036                >(_) => {}
5037            }
5038        }
5039        #[automatically_derived]
5040        #[doc(hidden)]
5041        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
5042            fn from(value: InvalidInitialization) -> Self {
5043                ()
5044            }
5045        }
5046        #[automatically_derived]
5047        #[doc(hidden)]
5048        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
5049            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5050                Self
5051            }
5052        }
5053        #[automatically_derived]
5054        impl alloy_sol_types::SolError for InvalidInitialization {
5055            type Parameters<'a> = UnderlyingSolTuple<'a>;
5056            type Token<'a> = <Self::Parameters<
5057                'a,
5058            > as alloy_sol_types::SolType>::Token<'a>;
5059            const SIGNATURE: &'static str = "InvalidInitialization()";
5060            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
5061            #[inline]
5062            fn new<'a>(
5063                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5064            ) -> Self {
5065                tuple.into()
5066            }
5067            #[inline]
5068            fn tokenize(&self) -> Self::Token<'_> {
5069                ()
5070            }
5071            #[inline]
5072            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5073                <Self::Parameters<
5074                    '_,
5075                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5076                    .map(Self::new)
5077            }
5078        }
5079    };
5080    #[derive(serde::Serialize, serde::Deserialize)]
5081    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5082    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
5083```solidity
5084error InvalidMaxStateHistory();
5085```*/
5086    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5087    #[derive(Clone)]
5088    pub struct InvalidMaxStateHistory;
5089    #[allow(
5090        non_camel_case_types,
5091        non_snake_case,
5092        clippy::pub_underscore_fields,
5093        clippy::style
5094    )]
5095    const _: () = {
5096        use alloy::sol_types as alloy_sol_types;
5097        #[doc(hidden)]
5098        #[allow(dead_code)]
5099        type UnderlyingSolTuple<'a> = ();
5100        #[doc(hidden)]
5101        type UnderlyingRustTuple<'a> = ();
5102        #[cfg(test)]
5103        #[allow(dead_code, unreachable_patterns)]
5104        fn _type_assertion(
5105            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5106        ) {
5107            match _t {
5108                alloy_sol_types::private::AssertTypeEq::<
5109                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5110                >(_) => {}
5111            }
5112        }
5113        #[automatically_derived]
5114        #[doc(hidden)]
5115        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
5116            fn from(value: InvalidMaxStateHistory) -> Self {
5117                ()
5118            }
5119        }
5120        #[automatically_derived]
5121        #[doc(hidden)]
5122        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
5123            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5124                Self
5125            }
5126        }
5127        #[automatically_derived]
5128        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
5129            type Parameters<'a> = UnderlyingSolTuple<'a>;
5130            type Token<'a> = <Self::Parameters<
5131                'a,
5132            > as alloy_sol_types::SolType>::Token<'a>;
5133            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
5134            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
5135            #[inline]
5136            fn new<'a>(
5137                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5138            ) -> Self {
5139                tuple.into()
5140            }
5141            #[inline]
5142            fn tokenize(&self) -> Self::Token<'_> {
5143                ()
5144            }
5145            #[inline]
5146            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5147                <Self::Parameters<
5148                    '_,
5149                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5150                    .map(Self::new)
5151            }
5152        }
5153    };
5154    #[derive(serde::Serialize, serde::Deserialize)]
5155    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5156    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
5157```solidity
5158error InvalidProof();
5159```*/
5160    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5161    #[derive(Clone)]
5162    pub struct InvalidProof;
5163    #[allow(
5164        non_camel_case_types,
5165        non_snake_case,
5166        clippy::pub_underscore_fields,
5167        clippy::style
5168    )]
5169    const _: () = {
5170        use alloy::sol_types as alloy_sol_types;
5171        #[doc(hidden)]
5172        #[allow(dead_code)]
5173        type UnderlyingSolTuple<'a> = ();
5174        #[doc(hidden)]
5175        type UnderlyingRustTuple<'a> = ();
5176        #[cfg(test)]
5177        #[allow(dead_code, unreachable_patterns)]
5178        fn _type_assertion(
5179            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5180        ) {
5181            match _t {
5182                alloy_sol_types::private::AssertTypeEq::<
5183                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5184                >(_) => {}
5185            }
5186        }
5187        #[automatically_derived]
5188        #[doc(hidden)]
5189        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
5190            fn from(value: InvalidProof) -> Self {
5191                ()
5192            }
5193        }
5194        #[automatically_derived]
5195        #[doc(hidden)]
5196        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
5197            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5198                Self
5199            }
5200        }
5201        #[automatically_derived]
5202        impl alloy_sol_types::SolError for InvalidProof {
5203            type Parameters<'a> = UnderlyingSolTuple<'a>;
5204            type Token<'a> = <Self::Parameters<
5205                'a,
5206            > as alloy_sol_types::SolType>::Token<'a>;
5207            const SIGNATURE: &'static str = "InvalidProof()";
5208            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
5209            #[inline]
5210            fn new<'a>(
5211                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5212            ) -> Self {
5213                tuple.into()
5214            }
5215            #[inline]
5216            fn tokenize(&self) -> Self::Token<'_> {
5217                ()
5218            }
5219            #[inline]
5220            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5221                <Self::Parameters<
5222                    '_,
5223                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5224                    .map(Self::new)
5225            }
5226        }
5227    };
5228    #[derive(serde::Serialize, serde::Deserialize)]
5229    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5230    /**Custom error with signature `InvalidScalar()` and selector `0x05b05ccc`.
5231```solidity
5232error InvalidScalar();
5233```*/
5234    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5235    #[derive(Clone)]
5236    pub struct InvalidScalar;
5237    #[allow(
5238        non_camel_case_types,
5239        non_snake_case,
5240        clippy::pub_underscore_fields,
5241        clippy::style
5242    )]
5243    const _: () = {
5244        use alloy::sol_types as alloy_sol_types;
5245        #[doc(hidden)]
5246        #[allow(dead_code)]
5247        type UnderlyingSolTuple<'a> = ();
5248        #[doc(hidden)]
5249        type UnderlyingRustTuple<'a> = ();
5250        #[cfg(test)]
5251        #[allow(dead_code, unreachable_patterns)]
5252        fn _type_assertion(
5253            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5254        ) {
5255            match _t {
5256                alloy_sol_types::private::AssertTypeEq::<
5257                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5258                >(_) => {}
5259            }
5260        }
5261        #[automatically_derived]
5262        #[doc(hidden)]
5263        impl ::core::convert::From<InvalidScalar> for UnderlyingRustTuple<'_> {
5264            fn from(value: InvalidScalar) -> Self {
5265                ()
5266            }
5267        }
5268        #[automatically_derived]
5269        #[doc(hidden)]
5270        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidScalar {
5271            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5272                Self
5273            }
5274        }
5275        #[automatically_derived]
5276        impl alloy_sol_types::SolError for InvalidScalar {
5277            type Parameters<'a> = UnderlyingSolTuple<'a>;
5278            type Token<'a> = <Self::Parameters<
5279                'a,
5280            > as alloy_sol_types::SolType>::Token<'a>;
5281            const SIGNATURE: &'static str = "InvalidScalar()";
5282            const SELECTOR: [u8; 4] = [5u8, 176u8, 92u8, 204u8];
5283            #[inline]
5284            fn new<'a>(
5285                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5286            ) -> Self {
5287                tuple.into()
5288            }
5289            #[inline]
5290            fn tokenize(&self) -> Self::Token<'_> {
5291                ()
5292            }
5293            #[inline]
5294            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5295                <Self::Parameters<
5296                    '_,
5297                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5298                    .map(Self::new)
5299            }
5300        }
5301    };
5302    #[derive(serde::Serialize, serde::Deserialize)]
5303    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5304    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
5305```solidity
5306error NoChangeRequired();
5307```*/
5308    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5309    #[derive(Clone)]
5310    pub struct NoChangeRequired;
5311    #[allow(
5312        non_camel_case_types,
5313        non_snake_case,
5314        clippy::pub_underscore_fields,
5315        clippy::style
5316    )]
5317    const _: () = {
5318        use alloy::sol_types as alloy_sol_types;
5319        #[doc(hidden)]
5320        #[allow(dead_code)]
5321        type UnderlyingSolTuple<'a> = ();
5322        #[doc(hidden)]
5323        type UnderlyingRustTuple<'a> = ();
5324        #[cfg(test)]
5325        #[allow(dead_code, unreachable_patterns)]
5326        fn _type_assertion(
5327            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5328        ) {
5329            match _t {
5330                alloy_sol_types::private::AssertTypeEq::<
5331                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5332                >(_) => {}
5333            }
5334        }
5335        #[automatically_derived]
5336        #[doc(hidden)]
5337        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
5338            fn from(value: NoChangeRequired) -> Self {
5339                ()
5340            }
5341        }
5342        #[automatically_derived]
5343        #[doc(hidden)]
5344        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
5345            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5346                Self
5347            }
5348        }
5349        #[automatically_derived]
5350        impl alloy_sol_types::SolError for NoChangeRequired {
5351            type Parameters<'a> = UnderlyingSolTuple<'a>;
5352            type Token<'a> = <Self::Parameters<
5353                'a,
5354            > as alloy_sol_types::SolType>::Token<'a>;
5355            const SIGNATURE: &'static str = "NoChangeRequired()";
5356            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
5357            #[inline]
5358            fn new<'a>(
5359                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5360            ) -> Self {
5361                tuple.into()
5362            }
5363            #[inline]
5364            fn tokenize(&self) -> Self::Token<'_> {
5365                ()
5366            }
5367            #[inline]
5368            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5369                <Self::Parameters<
5370                    '_,
5371                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5372                    .map(Self::new)
5373            }
5374        }
5375    };
5376    #[derive(serde::Serialize, serde::Deserialize)]
5377    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5378    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
5379```solidity
5380error NotInitializing();
5381```*/
5382    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5383    #[derive(Clone)]
5384    pub struct NotInitializing;
5385    #[allow(
5386        non_camel_case_types,
5387        non_snake_case,
5388        clippy::pub_underscore_fields,
5389        clippy::style
5390    )]
5391    const _: () = {
5392        use alloy::sol_types as alloy_sol_types;
5393        #[doc(hidden)]
5394        #[allow(dead_code)]
5395        type UnderlyingSolTuple<'a> = ();
5396        #[doc(hidden)]
5397        type UnderlyingRustTuple<'a> = ();
5398        #[cfg(test)]
5399        #[allow(dead_code, unreachable_patterns)]
5400        fn _type_assertion(
5401            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5402        ) {
5403            match _t {
5404                alloy_sol_types::private::AssertTypeEq::<
5405                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5406                >(_) => {}
5407            }
5408        }
5409        #[automatically_derived]
5410        #[doc(hidden)]
5411        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
5412            fn from(value: NotInitializing) -> Self {
5413                ()
5414            }
5415        }
5416        #[automatically_derived]
5417        #[doc(hidden)]
5418        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
5419            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5420                Self
5421            }
5422        }
5423        #[automatically_derived]
5424        impl alloy_sol_types::SolError for NotInitializing {
5425            type Parameters<'a> = UnderlyingSolTuple<'a>;
5426            type Token<'a> = <Self::Parameters<
5427                'a,
5428            > as alloy_sol_types::SolType>::Token<'a>;
5429            const SIGNATURE: &'static str = "NotInitializing()";
5430            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
5431            #[inline]
5432            fn new<'a>(
5433                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5434            ) -> Self {
5435                tuple.into()
5436            }
5437            #[inline]
5438            fn tokenize(&self) -> Self::Token<'_> {
5439                ()
5440            }
5441            #[inline]
5442            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5443                <Self::Parameters<
5444                    '_,
5445                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5446                    .map(Self::new)
5447            }
5448        }
5449    };
5450    #[derive(serde::Serialize, serde::Deserialize)]
5451    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5452    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
5453```solidity
5454error OutdatedState();
5455```*/
5456    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5457    #[derive(Clone)]
5458    pub struct OutdatedState;
5459    #[allow(
5460        non_camel_case_types,
5461        non_snake_case,
5462        clippy::pub_underscore_fields,
5463        clippy::style
5464    )]
5465    const _: () = {
5466        use alloy::sol_types as alloy_sol_types;
5467        #[doc(hidden)]
5468        #[allow(dead_code)]
5469        type UnderlyingSolTuple<'a> = ();
5470        #[doc(hidden)]
5471        type UnderlyingRustTuple<'a> = ();
5472        #[cfg(test)]
5473        #[allow(dead_code, unreachable_patterns)]
5474        fn _type_assertion(
5475            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5476        ) {
5477            match _t {
5478                alloy_sol_types::private::AssertTypeEq::<
5479                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5480                >(_) => {}
5481            }
5482        }
5483        #[automatically_derived]
5484        #[doc(hidden)]
5485        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
5486            fn from(value: OutdatedState) -> Self {
5487                ()
5488            }
5489        }
5490        #[automatically_derived]
5491        #[doc(hidden)]
5492        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
5493            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5494                Self
5495            }
5496        }
5497        #[automatically_derived]
5498        impl alloy_sol_types::SolError for OutdatedState {
5499            type Parameters<'a> = UnderlyingSolTuple<'a>;
5500            type Token<'a> = <Self::Parameters<
5501                'a,
5502            > as alloy_sol_types::SolType>::Token<'a>;
5503            const SIGNATURE: &'static str = "OutdatedState()";
5504            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
5505            #[inline]
5506            fn new<'a>(
5507                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5508            ) -> Self {
5509                tuple.into()
5510            }
5511            #[inline]
5512            fn tokenize(&self) -> Self::Token<'_> {
5513                ()
5514            }
5515            #[inline]
5516            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5517                <Self::Parameters<
5518                    '_,
5519                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5520                    .map(Self::new)
5521            }
5522        }
5523    };
5524    #[derive(serde::Serialize, serde::Deserialize)]
5525    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5526    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
5527```solidity
5528error OwnableInvalidOwner(address owner);
5529```*/
5530    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5531    #[derive(Clone)]
5532    pub struct OwnableInvalidOwner {
5533        #[allow(missing_docs)]
5534        pub owner: alloy::sol_types::private::Address,
5535    }
5536    #[allow(
5537        non_camel_case_types,
5538        non_snake_case,
5539        clippy::pub_underscore_fields,
5540        clippy::style
5541    )]
5542    const _: () = {
5543        use alloy::sol_types as alloy_sol_types;
5544        #[doc(hidden)]
5545        #[allow(dead_code)]
5546        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5547        #[doc(hidden)]
5548        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5549        #[cfg(test)]
5550        #[allow(dead_code, unreachable_patterns)]
5551        fn _type_assertion(
5552            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5553        ) {
5554            match _t {
5555                alloy_sol_types::private::AssertTypeEq::<
5556                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5557                >(_) => {}
5558            }
5559        }
5560        #[automatically_derived]
5561        #[doc(hidden)]
5562        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
5563            fn from(value: OwnableInvalidOwner) -> Self {
5564                (value.owner,)
5565            }
5566        }
5567        #[automatically_derived]
5568        #[doc(hidden)]
5569        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
5570            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5571                Self { owner: tuple.0 }
5572            }
5573        }
5574        #[automatically_derived]
5575        impl alloy_sol_types::SolError for OwnableInvalidOwner {
5576            type Parameters<'a> = UnderlyingSolTuple<'a>;
5577            type Token<'a> = <Self::Parameters<
5578                'a,
5579            > as alloy_sol_types::SolType>::Token<'a>;
5580            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
5581            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
5582            #[inline]
5583            fn new<'a>(
5584                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5585            ) -> Self {
5586                tuple.into()
5587            }
5588            #[inline]
5589            fn tokenize(&self) -> Self::Token<'_> {
5590                (
5591                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5592                        &self.owner,
5593                    ),
5594                )
5595            }
5596            #[inline]
5597            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5598                <Self::Parameters<
5599                    '_,
5600                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5601                    .map(Self::new)
5602            }
5603        }
5604    };
5605    #[derive(serde::Serialize, serde::Deserialize)]
5606    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5607    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
5608```solidity
5609error OwnableUnauthorizedAccount(address account);
5610```*/
5611    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5612    #[derive(Clone)]
5613    pub struct OwnableUnauthorizedAccount {
5614        #[allow(missing_docs)]
5615        pub account: alloy::sol_types::private::Address,
5616    }
5617    #[allow(
5618        non_camel_case_types,
5619        non_snake_case,
5620        clippy::pub_underscore_fields,
5621        clippy::style
5622    )]
5623    const _: () = {
5624        use alloy::sol_types as alloy_sol_types;
5625        #[doc(hidden)]
5626        #[allow(dead_code)]
5627        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5628        #[doc(hidden)]
5629        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5630        #[cfg(test)]
5631        #[allow(dead_code, unreachable_patterns)]
5632        fn _type_assertion(
5633            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5634        ) {
5635            match _t {
5636                alloy_sol_types::private::AssertTypeEq::<
5637                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5638                >(_) => {}
5639            }
5640        }
5641        #[automatically_derived]
5642        #[doc(hidden)]
5643        impl ::core::convert::From<OwnableUnauthorizedAccount>
5644        for UnderlyingRustTuple<'_> {
5645            fn from(value: OwnableUnauthorizedAccount) -> Self {
5646                (value.account,)
5647            }
5648        }
5649        #[automatically_derived]
5650        #[doc(hidden)]
5651        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5652        for OwnableUnauthorizedAccount {
5653            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5654                Self { account: tuple.0 }
5655            }
5656        }
5657        #[automatically_derived]
5658        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
5659            type Parameters<'a> = UnderlyingSolTuple<'a>;
5660            type Token<'a> = <Self::Parameters<
5661                'a,
5662            > as alloy_sol_types::SolType>::Token<'a>;
5663            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
5664            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
5665            #[inline]
5666            fn new<'a>(
5667                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5668            ) -> Self {
5669                tuple.into()
5670            }
5671            #[inline]
5672            fn tokenize(&self) -> Self::Token<'_> {
5673                (
5674                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5675                        &self.account,
5676                    ),
5677                )
5678            }
5679            #[inline]
5680            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5681                <Self::Parameters<
5682                    '_,
5683                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5684                    .map(Self::new)
5685            }
5686        }
5687    };
5688    #[derive(serde::Serialize, serde::Deserialize)]
5689    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5690    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
5691```solidity
5692error ProverNotPermissioned();
5693```*/
5694    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5695    #[derive(Clone)]
5696    pub struct ProverNotPermissioned;
5697    #[allow(
5698        non_camel_case_types,
5699        non_snake_case,
5700        clippy::pub_underscore_fields,
5701        clippy::style
5702    )]
5703    const _: () = {
5704        use alloy::sol_types as alloy_sol_types;
5705        #[doc(hidden)]
5706        #[allow(dead_code)]
5707        type UnderlyingSolTuple<'a> = ();
5708        #[doc(hidden)]
5709        type UnderlyingRustTuple<'a> = ();
5710        #[cfg(test)]
5711        #[allow(dead_code, unreachable_patterns)]
5712        fn _type_assertion(
5713            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5714        ) {
5715            match _t {
5716                alloy_sol_types::private::AssertTypeEq::<
5717                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5718                >(_) => {}
5719            }
5720        }
5721        #[automatically_derived]
5722        #[doc(hidden)]
5723        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
5724            fn from(value: ProverNotPermissioned) -> Self {
5725                ()
5726            }
5727        }
5728        #[automatically_derived]
5729        #[doc(hidden)]
5730        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
5731            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5732                Self
5733            }
5734        }
5735        #[automatically_derived]
5736        impl alloy_sol_types::SolError for ProverNotPermissioned {
5737            type Parameters<'a> = UnderlyingSolTuple<'a>;
5738            type Token<'a> = <Self::Parameters<
5739                'a,
5740            > as alloy_sol_types::SolType>::Token<'a>;
5741            const SIGNATURE: &'static str = "ProverNotPermissioned()";
5742            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
5743            #[inline]
5744            fn new<'a>(
5745                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5746            ) -> Self {
5747                tuple.into()
5748            }
5749            #[inline]
5750            fn tokenize(&self) -> Self::Token<'_> {
5751                ()
5752            }
5753            #[inline]
5754            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5755                <Self::Parameters<
5756                    '_,
5757                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5758                    .map(Self::new)
5759            }
5760        }
5761    };
5762    #[derive(serde::Serialize, serde::Deserialize)]
5763    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5764    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
5765```solidity
5766error UUPSUnauthorizedCallContext();
5767```*/
5768    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5769    #[derive(Clone)]
5770    pub struct UUPSUnauthorizedCallContext;
5771    #[allow(
5772        non_camel_case_types,
5773        non_snake_case,
5774        clippy::pub_underscore_fields,
5775        clippy::style
5776    )]
5777    const _: () = {
5778        use alloy::sol_types as alloy_sol_types;
5779        #[doc(hidden)]
5780        #[allow(dead_code)]
5781        type UnderlyingSolTuple<'a> = ();
5782        #[doc(hidden)]
5783        type UnderlyingRustTuple<'a> = ();
5784        #[cfg(test)]
5785        #[allow(dead_code, unreachable_patterns)]
5786        fn _type_assertion(
5787            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5788        ) {
5789            match _t {
5790                alloy_sol_types::private::AssertTypeEq::<
5791                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5792                >(_) => {}
5793            }
5794        }
5795        #[automatically_derived]
5796        #[doc(hidden)]
5797        impl ::core::convert::From<UUPSUnauthorizedCallContext>
5798        for UnderlyingRustTuple<'_> {
5799            fn from(value: UUPSUnauthorizedCallContext) -> Self {
5800                ()
5801            }
5802        }
5803        #[automatically_derived]
5804        #[doc(hidden)]
5805        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5806        for UUPSUnauthorizedCallContext {
5807            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5808                Self
5809            }
5810        }
5811        #[automatically_derived]
5812        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
5813            type Parameters<'a> = UnderlyingSolTuple<'a>;
5814            type Token<'a> = <Self::Parameters<
5815                'a,
5816            > as alloy_sol_types::SolType>::Token<'a>;
5817            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
5818            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
5819            #[inline]
5820            fn new<'a>(
5821                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5822            ) -> Self {
5823                tuple.into()
5824            }
5825            #[inline]
5826            fn tokenize(&self) -> Self::Token<'_> {
5827                ()
5828            }
5829            #[inline]
5830            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5831                <Self::Parameters<
5832                    '_,
5833                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5834                    .map(Self::new)
5835            }
5836        }
5837    };
5838    #[derive(serde::Serialize, serde::Deserialize)]
5839    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5840    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
5841```solidity
5842error UUPSUnsupportedProxiableUUID(bytes32 slot);
5843```*/
5844    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5845    #[derive(Clone)]
5846    pub struct UUPSUnsupportedProxiableUUID {
5847        #[allow(missing_docs)]
5848        pub slot: alloy::sol_types::private::FixedBytes<32>,
5849    }
5850    #[allow(
5851        non_camel_case_types,
5852        non_snake_case,
5853        clippy::pub_underscore_fields,
5854        clippy::style
5855    )]
5856    const _: () = {
5857        use alloy::sol_types as alloy_sol_types;
5858        #[doc(hidden)]
5859        #[allow(dead_code)]
5860        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5861        #[doc(hidden)]
5862        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5863        #[cfg(test)]
5864        #[allow(dead_code, unreachable_patterns)]
5865        fn _type_assertion(
5866            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5867        ) {
5868            match _t {
5869                alloy_sol_types::private::AssertTypeEq::<
5870                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5871                >(_) => {}
5872            }
5873        }
5874        #[automatically_derived]
5875        #[doc(hidden)]
5876        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
5877        for UnderlyingRustTuple<'_> {
5878            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
5879                (value.slot,)
5880            }
5881        }
5882        #[automatically_derived]
5883        #[doc(hidden)]
5884        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5885        for UUPSUnsupportedProxiableUUID {
5886            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5887                Self { slot: tuple.0 }
5888            }
5889        }
5890        #[automatically_derived]
5891        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
5892            type Parameters<'a> = UnderlyingSolTuple<'a>;
5893            type Token<'a> = <Self::Parameters<
5894                'a,
5895            > as alloy_sol_types::SolType>::Token<'a>;
5896            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
5897            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
5898            #[inline]
5899            fn new<'a>(
5900                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5901            ) -> Self {
5902                tuple.into()
5903            }
5904            #[inline]
5905            fn tokenize(&self) -> Self::Token<'_> {
5906                (
5907                    <alloy::sol_types::sol_data::FixedBytes<
5908                        32,
5909                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
5910                )
5911            }
5912            #[inline]
5913            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5914                <Self::Parameters<
5915                    '_,
5916                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5917                    .map(Self::new)
5918            }
5919        }
5920    };
5921    #[derive(serde::Serialize, serde::Deserialize)]
5922    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5923    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
5924```solidity
5925error WrongStakeTableUsed();
5926```*/
5927    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5928    #[derive(Clone)]
5929    pub struct WrongStakeTableUsed;
5930    #[allow(
5931        non_camel_case_types,
5932        non_snake_case,
5933        clippy::pub_underscore_fields,
5934        clippy::style
5935    )]
5936    const _: () = {
5937        use alloy::sol_types as alloy_sol_types;
5938        #[doc(hidden)]
5939        #[allow(dead_code)]
5940        type UnderlyingSolTuple<'a> = ();
5941        #[doc(hidden)]
5942        type UnderlyingRustTuple<'a> = ();
5943        #[cfg(test)]
5944        #[allow(dead_code, unreachable_patterns)]
5945        fn _type_assertion(
5946            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5947        ) {
5948            match _t {
5949                alloy_sol_types::private::AssertTypeEq::<
5950                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5951                >(_) => {}
5952            }
5953        }
5954        #[automatically_derived]
5955        #[doc(hidden)]
5956        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
5957            fn from(value: WrongStakeTableUsed) -> Self {
5958                ()
5959            }
5960        }
5961        #[automatically_derived]
5962        #[doc(hidden)]
5963        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
5964            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5965                Self
5966            }
5967        }
5968        #[automatically_derived]
5969        impl alloy_sol_types::SolError for WrongStakeTableUsed {
5970            type Parameters<'a> = UnderlyingSolTuple<'a>;
5971            type Token<'a> = <Self::Parameters<
5972                'a,
5973            > as alloy_sol_types::SolType>::Token<'a>;
5974            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
5975            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
5976            #[inline]
5977            fn new<'a>(
5978                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5979            ) -> Self {
5980                tuple.into()
5981            }
5982            #[inline]
5983            fn tokenize(&self) -> Self::Token<'_> {
5984                ()
5985            }
5986            #[inline]
5987            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5988                <Self::Parameters<
5989                    '_,
5990                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5991                    .map(Self::new)
5992            }
5993        }
5994    };
5995    #[derive(serde::Serialize, serde::Deserialize)]
5996    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5997    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
5998```solidity
5999event Initialized(uint64 version);
6000```*/
6001    #[allow(
6002        non_camel_case_types,
6003        non_snake_case,
6004        clippy::pub_underscore_fields,
6005        clippy::style
6006    )]
6007    #[derive(Clone)]
6008    pub struct Initialized {
6009        #[allow(missing_docs)]
6010        pub version: u64,
6011    }
6012    #[allow(
6013        non_camel_case_types,
6014        non_snake_case,
6015        clippy::pub_underscore_fields,
6016        clippy::style
6017    )]
6018    const _: () = {
6019        use alloy::sol_types as alloy_sol_types;
6020        #[automatically_derived]
6021        impl alloy_sol_types::SolEvent for Initialized {
6022            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6023            type DataToken<'a> = <Self::DataTuple<
6024                'a,
6025            > as alloy_sol_types::SolType>::Token<'a>;
6026            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6027            const SIGNATURE: &'static str = "Initialized(uint64)";
6028            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6029                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
6030                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
6031                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
6032            ]);
6033            const ANONYMOUS: bool = false;
6034            #[allow(unused_variables)]
6035            #[inline]
6036            fn new(
6037                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6038                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6039            ) -> Self {
6040                Self { version: data.0 }
6041            }
6042            #[inline]
6043            fn check_signature(
6044                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6045            ) -> alloy_sol_types::Result<()> {
6046                if topics.0 != Self::SIGNATURE_HASH {
6047                    return Err(
6048                        alloy_sol_types::Error::invalid_event_signature_hash(
6049                            Self::SIGNATURE,
6050                            topics.0,
6051                            Self::SIGNATURE_HASH,
6052                        ),
6053                    );
6054                }
6055                Ok(())
6056            }
6057            #[inline]
6058            fn tokenize_body(&self) -> Self::DataToken<'_> {
6059                (
6060                    <alloy::sol_types::sol_data::Uint<
6061                        64,
6062                    > as alloy_sol_types::SolType>::tokenize(&self.version),
6063                )
6064            }
6065            #[inline]
6066            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6067                (Self::SIGNATURE_HASH.into(),)
6068            }
6069            #[inline]
6070            fn encode_topics_raw(
6071                &self,
6072                out: &mut [alloy_sol_types::abi::token::WordToken],
6073            ) -> alloy_sol_types::Result<()> {
6074                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6075                    return Err(alloy_sol_types::Error::Overrun);
6076                }
6077                out[0usize] = alloy_sol_types::abi::token::WordToken(
6078                    Self::SIGNATURE_HASH,
6079                );
6080                Ok(())
6081            }
6082        }
6083        #[automatically_derived]
6084        impl alloy_sol_types::private::IntoLogData for Initialized {
6085            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6086                From::from(self)
6087            }
6088            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6089                From::from(&self)
6090            }
6091        }
6092        #[automatically_derived]
6093        impl From<&Initialized> for alloy_sol_types::private::LogData {
6094            #[inline]
6095            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
6096                alloy_sol_types::SolEvent::encode_log_data(this)
6097            }
6098        }
6099    };
6100    #[derive(serde::Serialize, serde::Deserialize)]
6101    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6102    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
6103```solidity
6104event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
6105```*/
6106    #[allow(
6107        non_camel_case_types,
6108        non_snake_case,
6109        clippy::pub_underscore_fields,
6110        clippy::style
6111    )]
6112    #[derive(Clone)]
6113    pub struct NewState {
6114        #[allow(missing_docs)]
6115        pub viewNum: u64,
6116        #[allow(missing_docs)]
6117        pub blockHeight: u64,
6118        #[allow(missing_docs)]
6119        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6120    }
6121    #[allow(
6122        non_camel_case_types,
6123        non_snake_case,
6124        clippy::pub_underscore_fields,
6125        clippy::style
6126    )]
6127    const _: () = {
6128        use alloy::sol_types as alloy_sol_types;
6129        #[automatically_derived]
6130        impl alloy_sol_types::SolEvent for NewState {
6131            type DataTuple<'a> = (BN254::ScalarField,);
6132            type DataToken<'a> = <Self::DataTuple<
6133                'a,
6134            > as alloy_sol_types::SolType>::Token<'a>;
6135            type TopicList = (
6136                alloy_sol_types::sol_data::FixedBytes<32>,
6137                alloy::sol_types::sol_data::Uint<64>,
6138                alloy::sol_types::sol_data::Uint<64>,
6139            );
6140            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
6141            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6142                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
6143                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
6144                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
6145            ]);
6146            const ANONYMOUS: bool = false;
6147            #[allow(unused_variables)]
6148            #[inline]
6149            fn new(
6150                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6151                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6152            ) -> Self {
6153                Self {
6154                    viewNum: topics.1,
6155                    blockHeight: topics.2,
6156                    blockCommRoot: data.0,
6157                }
6158            }
6159            #[inline]
6160            fn check_signature(
6161                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6162            ) -> alloy_sol_types::Result<()> {
6163                if topics.0 != Self::SIGNATURE_HASH {
6164                    return Err(
6165                        alloy_sol_types::Error::invalid_event_signature_hash(
6166                            Self::SIGNATURE,
6167                            topics.0,
6168                            Self::SIGNATURE_HASH,
6169                        ),
6170                    );
6171                }
6172                Ok(())
6173            }
6174            #[inline]
6175            fn tokenize_body(&self) -> Self::DataToken<'_> {
6176                (
6177                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
6178                        &self.blockCommRoot,
6179                    ),
6180                )
6181            }
6182            #[inline]
6183            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6184                (
6185                    Self::SIGNATURE_HASH.into(),
6186                    self.viewNum.clone(),
6187                    self.blockHeight.clone(),
6188                )
6189            }
6190            #[inline]
6191            fn encode_topics_raw(
6192                &self,
6193                out: &mut [alloy_sol_types::abi::token::WordToken],
6194            ) -> alloy_sol_types::Result<()> {
6195                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6196                    return Err(alloy_sol_types::Error::Overrun);
6197                }
6198                out[0usize] = alloy_sol_types::abi::token::WordToken(
6199                    Self::SIGNATURE_HASH,
6200                );
6201                out[1usize] = <alloy::sol_types::sol_data::Uint<
6202                    64,
6203                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
6204                out[2usize] = <alloy::sol_types::sol_data::Uint<
6205                    64,
6206                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
6207                Ok(())
6208            }
6209        }
6210        #[automatically_derived]
6211        impl alloy_sol_types::private::IntoLogData for NewState {
6212            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6213                From::from(self)
6214            }
6215            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6216                From::from(&self)
6217            }
6218        }
6219        #[automatically_derived]
6220        impl From<&NewState> for alloy_sol_types::private::LogData {
6221            #[inline]
6222            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
6223                alloy_sol_types::SolEvent::encode_log_data(this)
6224            }
6225        }
6226    };
6227    #[derive(serde::Serialize, serde::Deserialize)]
6228    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6229    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
6230```solidity
6231event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
6232```*/
6233    #[allow(
6234        non_camel_case_types,
6235        non_snake_case,
6236        clippy::pub_underscore_fields,
6237        clippy::style
6238    )]
6239    #[derive(Clone)]
6240    pub struct OwnershipTransferred {
6241        #[allow(missing_docs)]
6242        pub previousOwner: alloy::sol_types::private::Address,
6243        #[allow(missing_docs)]
6244        pub newOwner: alloy::sol_types::private::Address,
6245    }
6246    #[allow(
6247        non_camel_case_types,
6248        non_snake_case,
6249        clippy::pub_underscore_fields,
6250        clippy::style
6251    )]
6252    const _: () = {
6253        use alloy::sol_types as alloy_sol_types;
6254        #[automatically_derived]
6255        impl alloy_sol_types::SolEvent for OwnershipTransferred {
6256            type DataTuple<'a> = ();
6257            type DataToken<'a> = <Self::DataTuple<
6258                'a,
6259            > as alloy_sol_types::SolType>::Token<'a>;
6260            type TopicList = (
6261                alloy_sol_types::sol_data::FixedBytes<32>,
6262                alloy::sol_types::sol_data::Address,
6263                alloy::sol_types::sol_data::Address,
6264            );
6265            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
6266            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6267                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
6268                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
6269                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
6270            ]);
6271            const ANONYMOUS: bool = false;
6272            #[allow(unused_variables)]
6273            #[inline]
6274            fn new(
6275                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6276                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6277            ) -> Self {
6278                Self {
6279                    previousOwner: topics.1,
6280                    newOwner: topics.2,
6281                }
6282            }
6283            #[inline]
6284            fn check_signature(
6285                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6286            ) -> alloy_sol_types::Result<()> {
6287                if topics.0 != Self::SIGNATURE_HASH {
6288                    return Err(
6289                        alloy_sol_types::Error::invalid_event_signature_hash(
6290                            Self::SIGNATURE,
6291                            topics.0,
6292                            Self::SIGNATURE_HASH,
6293                        ),
6294                    );
6295                }
6296                Ok(())
6297            }
6298            #[inline]
6299            fn tokenize_body(&self) -> Self::DataToken<'_> {
6300                ()
6301            }
6302            #[inline]
6303            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6304                (
6305                    Self::SIGNATURE_HASH.into(),
6306                    self.previousOwner.clone(),
6307                    self.newOwner.clone(),
6308                )
6309            }
6310            #[inline]
6311            fn encode_topics_raw(
6312                &self,
6313                out: &mut [alloy_sol_types::abi::token::WordToken],
6314            ) -> alloy_sol_types::Result<()> {
6315                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6316                    return Err(alloy_sol_types::Error::Overrun);
6317                }
6318                out[0usize] = alloy_sol_types::abi::token::WordToken(
6319                    Self::SIGNATURE_HASH,
6320                );
6321                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6322                    &self.previousOwner,
6323                );
6324                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6325                    &self.newOwner,
6326                );
6327                Ok(())
6328            }
6329        }
6330        #[automatically_derived]
6331        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
6332            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6333                From::from(self)
6334            }
6335            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6336                From::from(&self)
6337            }
6338        }
6339        #[automatically_derived]
6340        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
6341            #[inline]
6342            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
6343                alloy_sol_types::SolEvent::encode_log_data(this)
6344            }
6345        }
6346    };
6347    #[derive(serde::Serialize, serde::Deserialize)]
6348    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6349    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
6350```solidity
6351event PermissionedProverNotRequired();
6352```*/
6353    #[allow(
6354        non_camel_case_types,
6355        non_snake_case,
6356        clippy::pub_underscore_fields,
6357        clippy::style
6358    )]
6359    #[derive(Clone)]
6360    pub struct PermissionedProverNotRequired;
6361    #[allow(
6362        non_camel_case_types,
6363        non_snake_case,
6364        clippy::pub_underscore_fields,
6365        clippy::style
6366    )]
6367    const _: () = {
6368        use alloy::sol_types as alloy_sol_types;
6369        #[automatically_derived]
6370        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
6371            type DataTuple<'a> = ();
6372            type DataToken<'a> = <Self::DataTuple<
6373                'a,
6374            > as alloy_sol_types::SolType>::Token<'a>;
6375            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6376            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
6377            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6378                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
6379                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
6380                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
6381            ]);
6382            const ANONYMOUS: bool = false;
6383            #[allow(unused_variables)]
6384            #[inline]
6385            fn new(
6386                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6387                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6388            ) -> Self {
6389                Self {}
6390            }
6391            #[inline]
6392            fn check_signature(
6393                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6394            ) -> alloy_sol_types::Result<()> {
6395                if topics.0 != Self::SIGNATURE_HASH {
6396                    return Err(
6397                        alloy_sol_types::Error::invalid_event_signature_hash(
6398                            Self::SIGNATURE,
6399                            topics.0,
6400                            Self::SIGNATURE_HASH,
6401                        ),
6402                    );
6403                }
6404                Ok(())
6405            }
6406            #[inline]
6407            fn tokenize_body(&self) -> Self::DataToken<'_> {
6408                ()
6409            }
6410            #[inline]
6411            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6412                (Self::SIGNATURE_HASH.into(),)
6413            }
6414            #[inline]
6415            fn encode_topics_raw(
6416                &self,
6417                out: &mut [alloy_sol_types::abi::token::WordToken],
6418            ) -> alloy_sol_types::Result<()> {
6419                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6420                    return Err(alloy_sol_types::Error::Overrun);
6421                }
6422                out[0usize] = alloy_sol_types::abi::token::WordToken(
6423                    Self::SIGNATURE_HASH,
6424                );
6425                Ok(())
6426            }
6427        }
6428        #[automatically_derived]
6429        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
6430            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6431                From::from(self)
6432            }
6433            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6434                From::from(&self)
6435            }
6436        }
6437        #[automatically_derived]
6438        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
6439            #[inline]
6440            fn from(
6441                this: &PermissionedProverNotRequired,
6442            ) -> alloy_sol_types::private::LogData {
6443                alloy_sol_types::SolEvent::encode_log_data(this)
6444            }
6445        }
6446    };
6447    #[derive(serde::Serialize, serde::Deserialize)]
6448    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6449    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
6450```solidity
6451event PermissionedProverRequired(address permissionedProver);
6452```*/
6453    #[allow(
6454        non_camel_case_types,
6455        non_snake_case,
6456        clippy::pub_underscore_fields,
6457        clippy::style
6458    )]
6459    #[derive(Clone)]
6460    pub struct PermissionedProverRequired {
6461        #[allow(missing_docs)]
6462        pub permissionedProver: alloy::sol_types::private::Address,
6463    }
6464    #[allow(
6465        non_camel_case_types,
6466        non_snake_case,
6467        clippy::pub_underscore_fields,
6468        clippy::style
6469    )]
6470    const _: () = {
6471        use alloy::sol_types as alloy_sol_types;
6472        #[automatically_derived]
6473        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
6474            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6475            type DataToken<'a> = <Self::DataTuple<
6476                'a,
6477            > as alloy_sol_types::SolType>::Token<'a>;
6478            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6479            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
6480            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6481                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
6482                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
6483                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
6484            ]);
6485            const ANONYMOUS: bool = false;
6486            #[allow(unused_variables)]
6487            #[inline]
6488            fn new(
6489                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6490                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6491            ) -> Self {
6492                Self { permissionedProver: data.0 }
6493            }
6494            #[inline]
6495            fn check_signature(
6496                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6497            ) -> alloy_sol_types::Result<()> {
6498                if topics.0 != Self::SIGNATURE_HASH {
6499                    return Err(
6500                        alloy_sol_types::Error::invalid_event_signature_hash(
6501                            Self::SIGNATURE,
6502                            topics.0,
6503                            Self::SIGNATURE_HASH,
6504                        ),
6505                    );
6506                }
6507                Ok(())
6508            }
6509            #[inline]
6510            fn tokenize_body(&self) -> Self::DataToken<'_> {
6511                (
6512                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6513                        &self.permissionedProver,
6514                    ),
6515                )
6516            }
6517            #[inline]
6518            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6519                (Self::SIGNATURE_HASH.into(),)
6520            }
6521            #[inline]
6522            fn encode_topics_raw(
6523                &self,
6524                out: &mut [alloy_sol_types::abi::token::WordToken],
6525            ) -> alloy_sol_types::Result<()> {
6526                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6527                    return Err(alloy_sol_types::Error::Overrun);
6528                }
6529                out[0usize] = alloy_sol_types::abi::token::WordToken(
6530                    Self::SIGNATURE_HASH,
6531                );
6532                Ok(())
6533            }
6534        }
6535        #[automatically_derived]
6536        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
6537            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6538                From::from(self)
6539            }
6540            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6541                From::from(&self)
6542            }
6543        }
6544        #[automatically_derived]
6545        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
6546            #[inline]
6547            fn from(
6548                this: &PermissionedProverRequired,
6549            ) -> alloy_sol_types::private::LogData {
6550                alloy_sol_types::SolEvent::encode_log_data(this)
6551            }
6552        }
6553    };
6554    #[derive(serde::Serialize, serde::Deserialize)]
6555    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6556    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
6557```solidity
6558event Upgrade(address implementation);
6559```*/
6560    #[allow(
6561        non_camel_case_types,
6562        non_snake_case,
6563        clippy::pub_underscore_fields,
6564        clippy::style
6565    )]
6566    #[derive(Clone)]
6567    pub struct Upgrade {
6568        #[allow(missing_docs)]
6569        pub implementation: alloy::sol_types::private::Address,
6570    }
6571    #[allow(
6572        non_camel_case_types,
6573        non_snake_case,
6574        clippy::pub_underscore_fields,
6575        clippy::style
6576    )]
6577    const _: () = {
6578        use alloy::sol_types as alloy_sol_types;
6579        #[automatically_derived]
6580        impl alloy_sol_types::SolEvent for Upgrade {
6581            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6582            type DataToken<'a> = <Self::DataTuple<
6583                'a,
6584            > as alloy_sol_types::SolType>::Token<'a>;
6585            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6586            const SIGNATURE: &'static str = "Upgrade(address)";
6587            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6588                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
6589                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
6590                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
6591            ]);
6592            const ANONYMOUS: bool = false;
6593            #[allow(unused_variables)]
6594            #[inline]
6595            fn new(
6596                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6597                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6598            ) -> Self {
6599                Self { implementation: data.0 }
6600            }
6601            #[inline]
6602            fn check_signature(
6603                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6604            ) -> alloy_sol_types::Result<()> {
6605                if topics.0 != Self::SIGNATURE_HASH {
6606                    return Err(
6607                        alloy_sol_types::Error::invalid_event_signature_hash(
6608                            Self::SIGNATURE,
6609                            topics.0,
6610                            Self::SIGNATURE_HASH,
6611                        ),
6612                    );
6613                }
6614                Ok(())
6615            }
6616            #[inline]
6617            fn tokenize_body(&self) -> Self::DataToken<'_> {
6618                (
6619                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6620                        &self.implementation,
6621                    ),
6622                )
6623            }
6624            #[inline]
6625            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6626                (Self::SIGNATURE_HASH.into(),)
6627            }
6628            #[inline]
6629            fn encode_topics_raw(
6630                &self,
6631                out: &mut [alloy_sol_types::abi::token::WordToken],
6632            ) -> alloy_sol_types::Result<()> {
6633                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6634                    return Err(alloy_sol_types::Error::Overrun);
6635                }
6636                out[0usize] = alloy_sol_types::abi::token::WordToken(
6637                    Self::SIGNATURE_HASH,
6638                );
6639                Ok(())
6640            }
6641        }
6642        #[automatically_derived]
6643        impl alloy_sol_types::private::IntoLogData for Upgrade {
6644            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6645                From::from(self)
6646            }
6647            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6648                From::from(&self)
6649            }
6650        }
6651        #[automatically_derived]
6652        impl From<&Upgrade> for alloy_sol_types::private::LogData {
6653            #[inline]
6654            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
6655                alloy_sol_types::SolEvent::encode_log_data(this)
6656            }
6657        }
6658    };
6659    #[derive(serde::Serialize, serde::Deserialize)]
6660    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6661    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
6662```solidity
6663event Upgraded(address indexed implementation);
6664```*/
6665    #[allow(
6666        non_camel_case_types,
6667        non_snake_case,
6668        clippy::pub_underscore_fields,
6669        clippy::style
6670    )]
6671    #[derive(Clone)]
6672    pub struct Upgraded {
6673        #[allow(missing_docs)]
6674        pub implementation: alloy::sol_types::private::Address,
6675    }
6676    #[allow(
6677        non_camel_case_types,
6678        non_snake_case,
6679        clippy::pub_underscore_fields,
6680        clippy::style
6681    )]
6682    const _: () = {
6683        use alloy::sol_types as alloy_sol_types;
6684        #[automatically_derived]
6685        impl alloy_sol_types::SolEvent for Upgraded {
6686            type DataTuple<'a> = ();
6687            type DataToken<'a> = <Self::DataTuple<
6688                'a,
6689            > as alloy_sol_types::SolType>::Token<'a>;
6690            type TopicList = (
6691                alloy_sol_types::sol_data::FixedBytes<32>,
6692                alloy::sol_types::sol_data::Address,
6693            );
6694            const SIGNATURE: &'static str = "Upgraded(address)";
6695            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6696                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
6697                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
6698                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
6699            ]);
6700            const ANONYMOUS: bool = false;
6701            #[allow(unused_variables)]
6702            #[inline]
6703            fn new(
6704                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6705                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6706            ) -> Self {
6707                Self { implementation: topics.1 }
6708            }
6709            #[inline]
6710            fn check_signature(
6711                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6712            ) -> alloy_sol_types::Result<()> {
6713                if topics.0 != Self::SIGNATURE_HASH {
6714                    return Err(
6715                        alloy_sol_types::Error::invalid_event_signature_hash(
6716                            Self::SIGNATURE,
6717                            topics.0,
6718                            Self::SIGNATURE_HASH,
6719                        ),
6720                    );
6721                }
6722                Ok(())
6723            }
6724            #[inline]
6725            fn tokenize_body(&self) -> Self::DataToken<'_> {
6726                ()
6727            }
6728            #[inline]
6729            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6730                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
6731            }
6732            #[inline]
6733            fn encode_topics_raw(
6734                &self,
6735                out: &mut [alloy_sol_types::abi::token::WordToken],
6736            ) -> alloy_sol_types::Result<()> {
6737                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6738                    return Err(alloy_sol_types::Error::Overrun);
6739                }
6740                out[0usize] = alloy_sol_types::abi::token::WordToken(
6741                    Self::SIGNATURE_HASH,
6742                );
6743                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6744                    &self.implementation,
6745                );
6746                Ok(())
6747            }
6748        }
6749        #[automatically_derived]
6750        impl alloy_sol_types::private::IntoLogData for Upgraded {
6751            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6752                From::from(self)
6753            }
6754            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6755                From::from(&self)
6756            }
6757        }
6758        #[automatically_derived]
6759        impl From<&Upgraded> for alloy_sol_types::private::LogData {
6760            #[inline]
6761            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
6762                alloy_sol_types::SolEvent::encode_log_data(this)
6763            }
6764        }
6765    };
6766    #[derive(serde::Serialize, serde::Deserialize)]
6767    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6768    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
6769```solidity
6770function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
6771```*/
6772    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6773    #[derive(Clone)]
6774    pub struct UPGRADE_INTERFACE_VERSIONCall;
6775    #[derive(serde::Serialize, serde::Deserialize)]
6776    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6777    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
6778    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6779    #[derive(Clone)]
6780    pub struct UPGRADE_INTERFACE_VERSIONReturn {
6781        #[allow(missing_docs)]
6782        pub _0: alloy::sol_types::private::String,
6783    }
6784    #[allow(
6785        non_camel_case_types,
6786        non_snake_case,
6787        clippy::pub_underscore_fields,
6788        clippy::style
6789    )]
6790    const _: () = {
6791        use alloy::sol_types as alloy_sol_types;
6792        {
6793            #[doc(hidden)]
6794            #[allow(dead_code)]
6795            type UnderlyingSolTuple<'a> = ();
6796            #[doc(hidden)]
6797            type UnderlyingRustTuple<'a> = ();
6798            #[cfg(test)]
6799            #[allow(dead_code, unreachable_patterns)]
6800            fn _type_assertion(
6801                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6802            ) {
6803                match _t {
6804                    alloy_sol_types::private::AssertTypeEq::<
6805                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6806                    >(_) => {}
6807                }
6808            }
6809            #[automatically_derived]
6810            #[doc(hidden)]
6811            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
6812            for UnderlyingRustTuple<'_> {
6813                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
6814                    ()
6815                }
6816            }
6817            #[automatically_derived]
6818            #[doc(hidden)]
6819            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6820            for UPGRADE_INTERFACE_VERSIONCall {
6821                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6822                    Self
6823                }
6824            }
6825        }
6826        {
6827            #[doc(hidden)]
6828            #[allow(dead_code)]
6829            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
6830            #[doc(hidden)]
6831            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
6832            #[cfg(test)]
6833            #[allow(dead_code, unreachable_patterns)]
6834            fn _type_assertion(
6835                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6836            ) {
6837                match _t {
6838                    alloy_sol_types::private::AssertTypeEq::<
6839                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6840                    >(_) => {}
6841                }
6842            }
6843            #[automatically_derived]
6844            #[doc(hidden)]
6845            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
6846            for UnderlyingRustTuple<'_> {
6847                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
6848                    (value._0,)
6849                }
6850            }
6851            #[automatically_derived]
6852            #[doc(hidden)]
6853            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6854            for UPGRADE_INTERFACE_VERSIONReturn {
6855                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6856                    Self { _0: tuple.0 }
6857                }
6858            }
6859        }
6860        #[automatically_derived]
6861        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
6862            type Parameters<'a> = ();
6863            type Token<'a> = <Self::Parameters<
6864                'a,
6865            > as alloy_sol_types::SolType>::Token<'a>;
6866            type Return = alloy::sol_types::private::String;
6867            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
6868            type ReturnToken<'a> = <Self::ReturnTuple<
6869                'a,
6870            > as alloy_sol_types::SolType>::Token<'a>;
6871            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
6872            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
6873            #[inline]
6874            fn new<'a>(
6875                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6876            ) -> Self {
6877                tuple.into()
6878            }
6879            #[inline]
6880            fn tokenize(&self) -> Self::Token<'_> {
6881                ()
6882            }
6883            #[inline]
6884            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6885                (
6886                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
6887                        ret,
6888                    ),
6889                )
6890            }
6891            #[inline]
6892            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6893                <Self::ReturnTuple<
6894                    '_,
6895                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6896                    .map(|r| {
6897                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
6898                        r._0
6899                    })
6900            }
6901            #[inline]
6902            fn abi_decode_returns_validate(
6903                data: &[u8],
6904            ) -> alloy_sol_types::Result<Self::Return> {
6905                <Self::ReturnTuple<
6906                    '_,
6907                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6908                    .map(|r| {
6909                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
6910                        r._0
6911                    })
6912            }
6913        }
6914    };
6915    #[derive(serde::Serialize, serde::Deserialize)]
6916    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6917    /**Function with signature `_getVk()` and selector `0x12173c2c`.
6918```solidity
6919function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
6920```*/
6921    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6922    #[derive(Clone)]
6923    pub struct _getVkCall;
6924    #[derive(serde::Serialize, serde::Deserialize)]
6925    #[derive()]
6926    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
6927    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6928    #[derive(Clone)]
6929    pub struct _getVkReturn {
6930        #[allow(missing_docs)]
6931        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
6932    }
6933    #[allow(
6934        non_camel_case_types,
6935        non_snake_case,
6936        clippy::pub_underscore_fields,
6937        clippy::style
6938    )]
6939    const _: () = {
6940        use alloy::sol_types as alloy_sol_types;
6941        {
6942            #[doc(hidden)]
6943            #[allow(dead_code)]
6944            type UnderlyingSolTuple<'a> = ();
6945            #[doc(hidden)]
6946            type UnderlyingRustTuple<'a> = ();
6947            #[cfg(test)]
6948            #[allow(dead_code, unreachable_patterns)]
6949            fn _type_assertion(
6950                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6951            ) {
6952                match _t {
6953                    alloy_sol_types::private::AssertTypeEq::<
6954                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6955                    >(_) => {}
6956                }
6957            }
6958            #[automatically_derived]
6959            #[doc(hidden)]
6960            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
6961                fn from(value: _getVkCall) -> Self {
6962                    ()
6963                }
6964            }
6965            #[automatically_derived]
6966            #[doc(hidden)]
6967            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
6968                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6969                    Self
6970                }
6971            }
6972        }
6973        {
6974            #[doc(hidden)]
6975            #[allow(dead_code)]
6976            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
6977            #[doc(hidden)]
6978            type UnderlyingRustTuple<'a> = (
6979                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
6980            );
6981            #[cfg(test)]
6982            #[allow(dead_code, unreachable_patterns)]
6983            fn _type_assertion(
6984                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6985            ) {
6986                match _t {
6987                    alloy_sol_types::private::AssertTypeEq::<
6988                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6989                    >(_) => {}
6990                }
6991            }
6992            #[automatically_derived]
6993            #[doc(hidden)]
6994            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
6995                fn from(value: _getVkReturn) -> Self {
6996                    (value.vk,)
6997                }
6998            }
6999            #[automatically_derived]
7000            #[doc(hidden)]
7001            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
7002                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7003                    Self { vk: tuple.0 }
7004                }
7005            }
7006        }
7007        #[automatically_derived]
7008        impl alloy_sol_types::SolCall for _getVkCall {
7009            type Parameters<'a> = ();
7010            type Token<'a> = <Self::Parameters<
7011                'a,
7012            > as alloy_sol_types::SolType>::Token<'a>;
7013            type Return = <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType;
7014            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7015            type ReturnToken<'a> = <Self::ReturnTuple<
7016                'a,
7017            > as alloy_sol_types::SolType>::Token<'a>;
7018            const SIGNATURE: &'static str = "_getVk()";
7019            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
7020            #[inline]
7021            fn new<'a>(
7022                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7023            ) -> Self {
7024                tuple.into()
7025            }
7026            #[inline]
7027            fn tokenize(&self) -> Self::Token<'_> {
7028                ()
7029            }
7030            #[inline]
7031            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7032                (
7033                    <IPlonkVerifier::VerifyingKey as alloy_sol_types::SolType>::tokenize(
7034                        ret,
7035                    ),
7036                )
7037            }
7038            #[inline]
7039            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7040                <Self::ReturnTuple<
7041                    '_,
7042                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7043                    .map(|r| {
7044                        let r: _getVkReturn = r.into();
7045                        r.vk
7046                    })
7047            }
7048            #[inline]
7049            fn abi_decode_returns_validate(
7050                data: &[u8],
7051            ) -> alloy_sol_types::Result<Self::Return> {
7052                <Self::ReturnTuple<
7053                    '_,
7054                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7055                    .map(|r| {
7056                        let r: _getVkReturn = r.into();
7057                        r.vk
7058                    })
7059            }
7060        }
7061    };
7062    #[derive(serde::Serialize, serde::Deserialize)]
7063    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7064    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
7065```solidity
7066function currentBlockNumber() external view returns (uint256);
7067```*/
7068    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7069    #[derive(Clone)]
7070    pub struct currentBlockNumberCall;
7071    #[derive(serde::Serialize, serde::Deserialize)]
7072    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7073    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
7074    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7075    #[derive(Clone)]
7076    pub struct currentBlockNumberReturn {
7077        #[allow(missing_docs)]
7078        pub _0: alloy::sol_types::private::primitives::aliases::U256,
7079    }
7080    #[allow(
7081        non_camel_case_types,
7082        non_snake_case,
7083        clippy::pub_underscore_fields,
7084        clippy::style
7085    )]
7086    const _: () = {
7087        use alloy::sol_types as alloy_sol_types;
7088        {
7089            #[doc(hidden)]
7090            #[allow(dead_code)]
7091            type UnderlyingSolTuple<'a> = ();
7092            #[doc(hidden)]
7093            type UnderlyingRustTuple<'a> = ();
7094            #[cfg(test)]
7095            #[allow(dead_code, unreachable_patterns)]
7096            fn _type_assertion(
7097                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7098            ) {
7099                match _t {
7100                    alloy_sol_types::private::AssertTypeEq::<
7101                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7102                    >(_) => {}
7103                }
7104            }
7105            #[automatically_derived]
7106            #[doc(hidden)]
7107            impl ::core::convert::From<currentBlockNumberCall>
7108            for UnderlyingRustTuple<'_> {
7109                fn from(value: currentBlockNumberCall) -> Self {
7110                    ()
7111                }
7112            }
7113            #[automatically_derived]
7114            #[doc(hidden)]
7115            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7116            for currentBlockNumberCall {
7117                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7118                    Self
7119                }
7120            }
7121        }
7122        {
7123            #[doc(hidden)]
7124            #[allow(dead_code)]
7125            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7126            #[doc(hidden)]
7127            type UnderlyingRustTuple<'a> = (
7128                alloy::sol_types::private::primitives::aliases::U256,
7129            );
7130            #[cfg(test)]
7131            #[allow(dead_code, unreachable_patterns)]
7132            fn _type_assertion(
7133                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7134            ) {
7135                match _t {
7136                    alloy_sol_types::private::AssertTypeEq::<
7137                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7138                    >(_) => {}
7139                }
7140            }
7141            #[automatically_derived]
7142            #[doc(hidden)]
7143            impl ::core::convert::From<currentBlockNumberReturn>
7144            for UnderlyingRustTuple<'_> {
7145                fn from(value: currentBlockNumberReturn) -> Self {
7146                    (value._0,)
7147                }
7148            }
7149            #[automatically_derived]
7150            #[doc(hidden)]
7151            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7152            for currentBlockNumberReturn {
7153                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7154                    Self { _0: tuple.0 }
7155                }
7156            }
7157        }
7158        #[automatically_derived]
7159        impl alloy_sol_types::SolCall for currentBlockNumberCall {
7160            type Parameters<'a> = ();
7161            type Token<'a> = <Self::Parameters<
7162                'a,
7163            > as alloy_sol_types::SolType>::Token<'a>;
7164            type Return = alloy::sol_types::private::primitives::aliases::U256;
7165            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7166            type ReturnToken<'a> = <Self::ReturnTuple<
7167                'a,
7168            > as alloy_sol_types::SolType>::Token<'a>;
7169            const SIGNATURE: &'static str = "currentBlockNumber()";
7170            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
7171            #[inline]
7172            fn new<'a>(
7173                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7174            ) -> Self {
7175                tuple.into()
7176            }
7177            #[inline]
7178            fn tokenize(&self) -> Self::Token<'_> {
7179                ()
7180            }
7181            #[inline]
7182            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7183                (
7184                    <alloy::sol_types::sol_data::Uint<
7185                        256,
7186                    > as alloy_sol_types::SolType>::tokenize(ret),
7187                )
7188            }
7189            #[inline]
7190            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7191                <Self::ReturnTuple<
7192                    '_,
7193                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7194                    .map(|r| {
7195                        let r: currentBlockNumberReturn = r.into();
7196                        r._0
7197                    })
7198            }
7199            #[inline]
7200            fn abi_decode_returns_validate(
7201                data: &[u8],
7202            ) -> alloy_sol_types::Result<Self::Return> {
7203                <Self::ReturnTuple<
7204                    '_,
7205                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7206                    .map(|r| {
7207                        let r: currentBlockNumberReturn = r.into();
7208                        r._0
7209                    })
7210            }
7211        }
7212    };
7213    #[derive(serde::Serialize, serde::Deserialize)]
7214    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7215    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
7216```solidity
7217function disablePermissionedProverMode() external;
7218```*/
7219    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7220    #[derive(Clone)]
7221    pub struct disablePermissionedProverModeCall;
7222    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
7223    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7224    #[derive(Clone)]
7225    pub struct disablePermissionedProverModeReturn {}
7226    #[allow(
7227        non_camel_case_types,
7228        non_snake_case,
7229        clippy::pub_underscore_fields,
7230        clippy::style
7231    )]
7232    const _: () = {
7233        use alloy::sol_types as alloy_sol_types;
7234        {
7235            #[doc(hidden)]
7236            #[allow(dead_code)]
7237            type UnderlyingSolTuple<'a> = ();
7238            #[doc(hidden)]
7239            type UnderlyingRustTuple<'a> = ();
7240            #[cfg(test)]
7241            #[allow(dead_code, unreachable_patterns)]
7242            fn _type_assertion(
7243                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7244            ) {
7245                match _t {
7246                    alloy_sol_types::private::AssertTypeEq::<
7247                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7248                    >(_) => {}
7249                }
7250            }
7251            #[automatically_derived]
7252            #[doc(hidden)]
7253            impl ::core::convert::From<disablePermissionedProverModeCall>
7254            for UnderlyingRustTuple<'_> {
7255                fn from(value: disablePermissionedProverModeCall) -> Self {
7256                    ()
7257                }
7258            }
7259            #[automatically_derived]
7260            #[doc(hidden)]
7261            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7262            for disablePermissionedProverModeCall {
7263                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7264                    Self
7265                }
7266            }
7267        }
7268        {
7269            #[doc(hidden)]
7270            #[allow(dead_code)]
7271            type UnderlyingSolTuple<'a> = ();
7272            #[doc(hidden)]
7273            type UnderlyingRustTuple<'a> = ();
7274            #[cfg(test)]
7275            #[allow(dead_code, unreachable_patterns)]
7276            fn _type_assertion(
7277                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7278            ) {
7279                match _t {
7280                    alloy_sol_types::private::AssertTypeEq::<
7281                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7282                    >(_) => {}
7283                }
7284            }
7285            #[automatically_derived]
7286            #[doc(hidden)]
7287            impl ::core::convert::From<disablePermissionedProverModeReturn>
7288            for UnderlyingRustTuple<'_> {
7289                fn from(value: disablePermissionedProverModeReturn) -> Self {
7290                    ()
7291                }
7292            }
7293            #[automatically_derived]
7294            #[doc(hidden)]
7295            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7296            for disablePermissionedProverModeReturn {
7297                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7298                    Self {}
7299                }
7300            }
7301        }
7302        impl disablePermissionedProverModeReturn {
7303            fn _tokenize(
7304                &self,
7305            ) -> <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::ReturnToken<
7306                '_,
7307            > {
7308                ()
7309            }
7310        }
7311        #[automatically_derived]
7312        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
7313            type Parameters<'a> = ();
7314            type Token<'a> = <Self::Parameters<
7315                'a,
7316            > as alloy_sol_types::SolType>::Token<'a>;
7317            type Return = disablePermissionedProverModeReturn;
7318            type ReturnTuple<'a> = ();
7319            type ReturnToken<'a> = <Self::ReturnTuple<
7320                'a,
7321            > as alloy_sol_types::SolType>::Token<'a>;
7322            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
7323            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
7324            #[inline]
7325            fn new<'a>(
7326                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7327            ) -> Self {
7328                tuple.into()
7329            }
7330            #[inline]
7331            fn tokenize(&self) -> Self::Token<'_> {
7332                ()
7333            }
7334            #[inline]
7335            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7336                disablePermissionedProverModeReturn::_tokenize(ret)
7337            }
7338            #[inline]
7339            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7340                <Self::ReturnTuple<
7341                    '_,
7342                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7343                    .map(Into::into)
7344            }
7345            #[inline]
7346            fn abi_decode_returns_validate(
7347                data: &[u8],
7348            ) -> alloy_sol_types::Result<Self::Return> {
7349                <Self::ReturnTuple<
7350                    '_,
7351                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7352                    .map(Into::into)
7353            }
7354        }
7355    };
7356    #[derive(serde::Serialize, serde::Deserialize)]
7357    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7358    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
7359```solidity
7360function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
7361```*/
7362    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7363    #[derive(Clone)]
7364    pub struct finalizedStateCall;
7365    #[derive(serde::Serialize, serde::Deserialize)]
7366    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7367    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
7368    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7369    #[derive(Clone)]
7370    pub struct finalizedStateReturn {
7371        #[allow(missing_docs)]
7372        pub viewNum: u64,
7373        #[allow(missing_docs)]
7374        pub blockHeight: u64,
7375        #[allow(missing_docs)]
7376        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7377    }
7378    #[allow(
7379        non_camel_case_types,
7380        non_snake_case,
7381        clippy::pub_underscore_fields,
7382        clippy::style
7383    )]
7384    const _: () = {
7385        use alloy::sol_types as alloy_sol_types;
7386        {
7387            #[doc(hidden)]
7388            #[allow(dead_code)]
7389            type UnderlyingSolTuple<'a> = ();
7390            #[doc(hidden)]
7391            type UnderlyingRustTuple<'a> = ();
7392            #[cfg(test)]
7393            #[allow(dead_code, unreachable_patterns)]
7394            fn _type_assertion(
7395                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7396            ) {
7397                match _t {
7398                    alloy_sol_types::private::AssertTypeEq::<
7399                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7400                    >(_) => {}
7401                }
7402            }
7403            #[automatically_derived]
7404            #[doc(hidden)]
7405            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
7406                fn from(value: finalizedStateCall) -> Self {
7407                    ()
7408                }
7409            }
7410            #[automatically_derived]
7411            #[doc(hidden)]
7412            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
7413                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7414                    Self
7415                }
7416            }
7417        }
7418        {
7419            #[doc(hidden)]
7420            #[allow(dead_code)]
7421            type UnderlyingSolTuple<'a> = (
7422                alloy::sol_types::sol_data::Uint<64>,
7423                alloy::sol_types::sol_data::Uint<64>,
7424                BN254::ScalarField,
7425            );
7426            #[doc(hidden)]
7427            type UnderlyingRustTuple<'a> = (
7428                u64,
7429                u64,
7430                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7431            );
7432            #[cfg(test)]
7433            #[allow(dead_code, unreachable_patterns)]
7434            fn _type_assertion(
7435                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7436            ) {
7437                match _t {
7438                    alloy_sol_types::private::AssertTypeEq::<
7439                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7440                    >(_) => {}
7441                }
7442            }
7443            #[automatically_derived]
7444            #[doc(hidden)]
7445            impl ::core::convert::From<finalizedStateReturn>
7446            for UnderlyingRustTuple<'_> {
7447                fn from(value: finalizedStateReturn) -> Self {
7448                    (value.viewNum, value.blockHeight, value.blockCommRoot)
7449                }
7450            }
7451            #[automatically_derived]
7452            #[doc(hidden)]
7453            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7454            for finalizedStateReturn {
7455                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7456                    Self {
7457                        viewNum: tuple.0,
7458                        blockHeight: tuple.1,
7459                        blockCommRoot: tuple.2,
7460                    }
7461                }
7462            }
7463        }
7464        impl finalizedStateReturn {
7465            fn _tokenize(
7466                &self,
7467            ) -> <finalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7468                (
7469                    <alloy::sol_types::sol_data::Uint<
7470                        64,
7471                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
7472                    <alloy::sol_types::sol_data::Uint<
7473                        64,
7474                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
7475                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7476                        &self.blockCommRoot,
7477                    ),
7478                )
7479            }
7480        }
7481        #[automatically_derived]
7482        impl alloy_sol_types::SolCall for finalizedStateCall {
7483            type Parameters<'a> = ();
7484            type Token<'a> = <Self::Parameters<
7485                'a,
7486            > as alloy_sol_types::SolType>::Token<'a>;
7487            type Return = finalizedStateReturn;
7488            type ReturnTuple<'a> = (
7489                alloy::sol_types::sol_data::Uint<64>,
7490                alloy::sol_types::sol_data::Uint<64>,
7491                BN254::ScalarField,
7492            );
7493            type ReturnToken<'a> = <Self::ReturnTuple<
7494                'a,
7495            > as alloy_sol_types::SolType>::Token<'a>;
7496            const SIGNATURE: &'static str = "finalizedState()";
7497            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
7498            #[inline]
7499            fn new<'a>(
7500                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7501            ) -> Self {
7502                tuple.into()
7503            }
7504            #[inline]
7505            fn tokenize(&self) -> Self::Token<'_> {
7506                ()
7507            }
7508            #[inline]
7509            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7510                finalizedStateReturn::_tokenize(ret)
7511            }
7512            #[inline]
7513            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7514                <Self::ReturnTuple<
7515                    '_,
7516                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7517                    .map(Into::into)
7518            }
7519            #[inline]
7520            fn abi_decode_returns_validate(
7521                data: &[u8],
7522            ) -> alloy_sol_types::Result<Self::Return> {
7523                <Self::ReturnTuple<
7524                    '_,
7525                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7526                    .map(Into::into)
7527            }
7528        }
7529    };
7530    #[derive(serde::Serialize, serde::Deserialize)]
7531    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7532    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
7533```solidity
7534function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
7535```*/
7536    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7537    #[derive(Clone)]
7538    pub struct genesisStakeTableStateCall;
7539    #[derive(serde::Serialize, serde::Deserialize)]
7540    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7541    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
7542    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7543    #[derive(Clone)]
7544    pub struct genesisStakeTableStateReturn {
7545        #[allow(missing_docs)]
7546        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
7547        #[allow(missing_docs)]
7548        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7549        #[allow(missing_docs)]
7550        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7551        #[allow(missing_docs)]
7552        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7553    }
7554    #[allow(
7555        non_camel_case_types,
7556        non_snake_case,
7557        clippy::pub_underscore_fields,
7558        clippy::style
7559    )]
7560    const _: () = {
7561        use alloy::sol_types as alloy_sol_types;
7562        {
7563            #[doc(hidden)]
7564            #[allow(dead_code)]
7565            type UnderlyingSolTuple<'a> = ();
7566            #[doc(hidden)]
7567            type UnderlyingRustTuple<'a> = ();
7568            #[cfg(test)]
7569            #[allow(dead_code, unreachable_patterns)]
7570            fn _type_assertion(
7571                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7572            ) {
7573                match _t {
7574                    alloy_sol_types::private::AssertTypeEq::<
7575                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7576                    >(_) => {}
7577                }
7578            }
7579            #[automatically_derived]
7580            #[doc(hidden)]
7581            impl ::core::convert::From<genesisStakeTableStateCall>
7582            for UnderlyingRustTuple<'_> {
7583                fn from(value: genesisStakeTableStateCall) -> Self {
7584                    ()
7585                }
7586            }
7587            #[automatically_derived]
7588            #[doc(hidden)]
7589            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7590            for genesisStakeTableStateCall {
7591                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7592                    Self
7593                }
7594            }
7595        }
7596        {
7597            #[doc(hidden)]
7598            #[allow(dead_code)]
7599            type UnderlyingSolTuple<'a> = (
7600                alloy::sol_types::sol_data::Uint<256>,
7601                BN254::ScalarField,
7602                BN254::ScalarField,
7603                BN254::ScalarField,
7604            );
7605            #[doc(hidden)]
7606            type UnderlyingRustTuple<'a> = (
7607                alloy::sol_types::private::primitives::aliases::U256,
7608                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7609                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7610                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7611            );
7612            #[cfg(test)]
7613            #[allow(dead_code, unreachable_patterns)]
7614            fn _type_assertion(
7615                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7616            ) {
7617                match _t {
7618                    alloy_sol_types::private::AssertTypeEq::<
7619                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7620                    >(_) => {}
7621                }
7622            }
7623            #[automatically_derived]
7624            #[doc(hidden)]
7625            impl ::core::convert::From<genesisStakeTableStateReturn>
7626            for UnderlyingRustTuple<'_> {
7627                fn from(value: genesisStakeTableStateReturn) -> Self {
7628                    (
7629                        value.threshold,
7630                        value.blsKeyComm,
7631                        value.schnorrKeyComm,
7632                        value.amountComm,
7633                    )
7634                }
7635            }
7636            #[automatically_derived]
7637            #[doc(hidden)]
7638            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7639            for genesisStakeTableStateReturn {
7640                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7641                    Self {
7642                        threshold: tuple.0,
7643                        blsKeyComm: tuple.1,
7644                        schnorrKeyComm: tuple.2,
7645                        amountComm: tuple.3,
7646                    }
7647                }
7648            }
7649        }
7650        impl genesisStakeTableStateReturn {
7651            fn _tokenize(
7652                &self,
7653            ) -> <genesisStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
7654                '_,
7655            > {
7656                (
7657                    <alloy::sol_types::sol_data::Uint<
7658                        256,
7659                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
7660                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7661                        &self.blsKeyComm,
7662                    ),
7663                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7664                        &self.schnorrKeyComm,
7665                    ),
7666                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7667                        &self.amountComm,
7668                    ),
7669                )
7670            }
7671        }
7672        #[automatically_derived]
7673        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
7674            type Parameters<'a> = ();
7675            type Token<'a> = <Self::Parameters<
7676                'a,
7677            > as alloy_sol_types::SolType>::Token<'a>;
7678            type Return = genesisStakeTableStateReturn;
7679            type ReturnTuple<'a> = (
7680                alloy::sol_types::sol_data::Uint<256>,
7681                BN254::ScalarField,
7682                BN254::ScalarField,
7683                BN254::ScalarField,
7684            );
7685            type ReturnToken<'a> = <Self::ReturnTuple<
7686                'a,
7687            > as alloy_sol_types::SolType>::Token<'a>;
7688            const SIGNATURE: &'static str = "genesisStakeTableState()";
7689            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
7690            #[inline]
7691            fn new<'a>(
7692                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7693            ) -> Self {
7694                tuple.into()
7695            }
7696            #[inline]
7697            fn tokenize(&self) -> Self::Token<'_> {
7698                ()
7699            }
7700            #[inline]
7701            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7702                genesisStakeTableStateReturn::_tokenize(ret)
7703            }
7704            #[inline]
7705            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7706                <Self::ReturnTuple<
7707                    '_,
7708                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7709                    .map(Into::into)
7710            }
7711            #[inline]
7712            fn abi_decode_returns_validate(
7713                data: &[u8],
7714            ) -> alloy_sol_types::Result<Self::Return> {
7715                <Self::ReturnTuple<
7716                    '_,
7717                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7718                    .map(Into::into)
7719            }
7720        }
7721    };
7722    #[derive(serde::Serialize, serde::Deserialize)]
7723    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7724    /**Function with signature `genesisState()` and selector `0xd24d933d`.
7725```solidity
7726function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
7727```*/
7728    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7729    #[derive(Clone)]
7730    pub struct genesisStateCall;
7731    #[derive(serde::Serialize, serde::Deserialize)]
7732    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7733    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
7734    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7735    #[derive(Clone)]
7736    pub struct genesisStateReturn {
7737        #[allow(missing_docs)]
7738        pub viewNum: u64,
7739        #[allow(missing_docs)]
7740        pub blockHeight: u64,
7741        #[allow(missing_docs)]
7742        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7743    }
7744    #[allow(
7745        non_camel_case_types,
7746        non_snake_case,
7747        clippy::pub_underscore_fields,
7748        clippy::style
7749    )]
7750    const _: () = {
7751        use alloy::sol_types as alloy_sol_types;
7752        {
7753            #[doc(hidden)]
7754            #[allow(dead_code)]
7755            type UnderlyingSolTuple<'a> = ();
7756            #[doc(hidden)]
7757            type UnderlyingRustTuple<'a> = ();
7758            #[cfg(test)]
7759            #[allow(dead_code, unreachable_patterns)]
7760            fn _type_assertion(
7761                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7762            ) {
7763                match _t {
7764                    alloy_sol_types::private::AssertTypeEq::<
7765                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7766                    >(_) => {}
7767                }
7768            }
7769            #[automatically_derived]
7770            #[doc(hidden)]
7771            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
7772                fn from(value: genesisStateCall) -> Self {
7773                    ()
7774                }
7775            }
7776            #[automatically_derived]
7777            #[doc(hidden)]
7778            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
7779                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7780                    Self
7781                }
7782            }
7783        }
7784        {
7785            #[doc(hidden)]
7786            #[allow(dead_code)]
7787            type UnderlyingSolTuple<'a> = (
7788                alloy::sol_types::sol_data::Uint<64>,
7789                alloy::sol_types::sol_data::Uint<64>,
7790                BN254::ScalarField,
7791            );
7792            #[doc(hidden)]
7793            type UnderlyingRustTuple<'a> = (
7794                u64,
7795                u64,
7796                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7797            );
7798            #[cfg(test)]
7799            #[allow(dead_code, unreachable_patterns)]
7800            fn _type_assertion(
7801                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7802            ) {
7803                match _t {
7804                    alloy_sol_types::private::AssertTypeEq::<
7805                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7806                    >(_) => {}
7807                }
7808            }
7809            #[automatically_derived]
7810            #[doc(hidden)]
7811            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
7812                fn from(value: genesisStateReturn) -> Self {
7813                    (value.viewNum, value.blockHeight, value.blockCommRoot)
7814                }
7815            }
7816            #[automatically_derived]
7817            #[doc(hidden)]
7818            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
7819                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7820                    Self {
7821                        viewNum: tuple.0,
7822                        blockHeight: tuple.1,
7823                        blockCommRoot: tuple.2,
7824                    }
7825                }
7826            }
7827        }
7828        impl genesisStateReturn {
7829            fn _tokenize(
7830                &self,
7831            ) -> <genesisStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7832                (
7833                    <alloy::sol_types::sol_data::Uint<
7834                        64,
7835                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
7836                    <alloy::sol_types::sol_data::Uint<
7837                        64,
7838                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
7839                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7840                        &self.blockCommRoot,
7841                    ),
7842                )
7843            }
7844        }
7845        #[automatically_derived]
7846        impl alloy_sol_types::SolCall for genesisStateCall {
7847            type Parameters<'a> = ();
7848            type Token<'a> = <Self::Parameters<
7849                'a,
7850            > as alloy_sol_types::SolType>::Token<'a>;
7851            type Return = genesisStateReturn;
7852            type ReturnTuple<'a> = (
7853                alloy::sol_types::sol_data::Uint<64>,
7854                alloy::sol_types::sol_data::Uint<64>,
7855                BN254::ScalarField,
7856            );
7857            type ReturnToken<'a> = <Self::ReturnTuple<
7858                'a,
7859            > as alloy_sol_types::SolType>::Token<'a>;
7860            const SIGNATURE: &'static str = "genesisState()";
7861            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
7862            #[inline]
7863            fn new<'a>(
7864                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7865            ) -> Self {
7866                tuple.into()
7867            }
7868            #[inline]
7869            fn tokenize(&self) -> Self::Token<'_> {
7870                ()
7871            }
7872            #[inline]
7873            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7874                genesisStateReturn::_tokenize(ret)
7875            }
7876            #[inline]
7877            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7878                <Self::ReturnTuple<
7879                    '_,
7880                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7881                    .map(Into::into)
7882            }
7883            #[inline]
7884            fn abi_decode_returns_validate(
7885                data: &[u8],
7886            ) -> alloy_sol_types::Result<Self::Return> {
7887                <Self::ReturnTuple<
7888                    '_,
7889                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7890                    .map(Into::into)
7891            }
7892        }
7893    };
7894    #[derive(serde::Serialize, serde::Deserialize)]
7895    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7896    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
7897```solidity
7898function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
7899```*/
7900    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7901    #[derive(Clone)]
7902    pub struct getHotShotCommitmentCall {
7903        #[allow(missing_docs)]
7904        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
7905    }
7906    #[derive(serde::Serialize, serde::Deserialize)]
7907    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7908    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
7909    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7910    #[derive(Clone)]
7911    pub struct getHotShotCommitmentReturn {
7912        #[allow(missing_docs)]
7913        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7914        #[allow(missing_docs)]
7915        pub hotshotBlockHeight: u64,
7916    }
7917    #[allow(
7918        non_camel_case_types,
7919        non_snake_case,
7920        clippy::pub_underscore_fields,
7921        clippy::style
7922    )]
7923    const _: () = {
7924        use alloy::sol_types as alloy_sol_types;
7925        {
7926            #[doc(hidden)]
7927            #[allow(dead_code)]
7928            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7929            #[doc(hidden)]
7930            type UnderlyingRustTuple<'a> = (
7931                alloy::sol_types::private::primitives::aliases::U256,
7932            );
7933            #[cfg(test)]
7934            #[allow(dead_code, unreachable_patterns)]
7935            fn _type_assertion(
7936                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7937            ) {
7938                match _t {
7939                    alloy_sol_types::private::AssertTypeEq::<
7940                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7941                    >(_) => {}
7942                }
7943            }
7944            #[automatically_derived]
7945            #[doc(hidden)]
7946            impl ::core::convert::From<getHotShotCommitmentCall>
7947            for UnderlyingRustTuple<'_> {
7948                fn from(value: getHotShotCommitmentCall) -> Self {
7949                    (value.hotShotBlockHeight,)
7950                }
7951            }
7952            #[automatically_derived]
7953            #[doc(hidden)]
7954            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7955            for getHotShotCommitmentCall {
7956                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7957                    Self {
7958                        hotShotBlockHeight: tuple.0,
7959                    }
7960                }
7961            }
7962        }
7963        {
7964            #[doc(hidden)]
7965            #[allow(dead_code)]
7966            type UnderlyingSolTuple<'a> = (
7967                BN254::ScalarField,
7968                alloy::sol_types::sol_data::Uint<64>,
7969            );
7970            #[doc(hidden)]
7971            type UnderlyingRustTuple<'a> = (
7972                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7973                u64,
7974            );
7975            #[cfg(test)]
7976            #[allow(dead_code, unreachable_patterns)]
7977            fn _type_assertion(
7978                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7979            ) {
7980                match _t {
7981                    alloy_sol_types::private::AssertTypeEq::<
7982                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7983                    >(_) => {}
7984                }
7985            }
7986            #[automatically_derived]
7987            #[doc(hidden)]
7988            impl ::core::convert::From<getHotShotCommitmentReturn>
7989            for UnderlyingRustTuple<'_> {
7990                fn from(value: getHotShotCommitmentReturn) -> Self {
7991                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
7992                }
7993            }
7994            #[automatically_derived]
7995            #[doc(hidden)]
7996            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7997            for getHotShotCommitmentReturn {
7998                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7999                    Self {
8000                        hotShotBlockCommRoot: tuple.0,
8001                        hotshotBlockHeight: tuple.1,
8002                    }
8003                }
8004            }
8005        }
8006        impl getHotShotCommitmentReturn {
8007            fn _tokenize(
8008                &self,
8009            ) -> <getHotShotCommitmentCall as alloy_sol_types::SolCall>::ReturnToken<
8010                '_,
8011            > {
8012                (
8013                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
8014                        &self.hotShotBlockCommRoot,
8015                    ),
8016                    <alloy::sol_types::sol_data::Uint<
8017                        64,
8018                    > as alloy_sol_types::SolType>::tokenize(&self.hotshotBlockHeight),
8019                )
8020            }
8021        }
8022        #[automatically_derived]
8023        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
8024            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8025            type Token<'a> = <Self::Parameters<
8026                'a,
8027            > as alloy_sol_types::SolType>::Token<'a>;
8028            type Return = getHotShotCommitmentReturn;
8029            type ReturnTuple<'a> = (
8030                BN254::ScalarField,
8031                alloy::sol_types::sol_data::Uint<64>,
8032            );
8033            type ReturnToken<'a> = <Self::ReturnTuple<
8034                'a,
8035            > as alloy_sol_types::SolType>::Token<'a>;
8036            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
8037            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
8038            #[inline]
8039            fn new<'a>(
8040                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8041            ) -> Self {
8042                tuple.into()
8043            }
8044            #[inline]
8045            fn tokenize(&self) -> Self::Token<'_> {
8046                (
8047                    <alloy::sol_types::sol_data::Uint<
8048                        256,
8049                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
8050                )
8051            }
8052            #[inline]
8053            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8054                getHotShotCommitmentReturn::_tokenize(ret)
8055            }
8056            #[inline]
8057            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8058                <Self::ReturnTuple<
8059                    '_,
8060                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8061                    .map(Into::into)
8062            }
8063            #[inline]
8064            fn abi_decode_returns_validate(
8065                data: &[u8],
8066            ) -> alloy_sol_types::Result<Self::Return> {
8067                <Self::ReturnTuple<
8068                    '_,
8069                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8070                    .map(Into::into)
8071            }
8072        }
8073    };
8074    #[derive(serde::Serialize, serde::Deserialize)]
8075    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8076    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
8077```solidity
8078function getStateHistoryCount() external view returns (uint256);
8079```*/
8080    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8081    #[derive(Clone)]
8082    pub struct getStateHistoryCountCall;
8083    #[derive(serde::Serialize, serde::Deserialize)]
8084    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8085    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
8086    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8087    #[derive(Clone)]
8088    pub struct getStateHistoryCountReturn {
8089        #[allow(missing_docs)]
8090        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8091    }
8092    #[allow(
8093        non_camel_case_types,
8094        non_snake_case,
8095        clippy::pub_underscore_fields,
8096        clippy::style
8097    )]
8098    const _: () = {
8099        use alloy::sol_types as alloy_sol_types;
8100        {
8101            #[doc(hidden)]
8102            #[allow(dead_code)]
8103            type UnderlyingSolTuple<'a> = ();
8104            #[doc(hidden)]
8105            type UnderlyingRustTuple<'a> = ();
8106            #[cfg(test)]
8107            #[allow(dead_code, unreachable_patterns)]
8108            fn _type_assertion(
8109                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8110            ) {
8111                match _t {
8112                    alloy_sol_types::private::AssertTypeEq::<
8113                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8114                    >(_) => {}
8115                }
8116            }
8117            #[automatically_derived]
8118            #[doc(hidden)]
8119            impl ::core::convert::From<getStateHistoryCountCall>
8120            for UnderlyingRustTuple<'_> {
8121                fn from(value: getStateHistoryCountCall) -> Self {
8122                    ()
8123                }
8124            }
8125            #[automatically_derived]
8126            #[doc(hidden)]
8127            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8128            for getStateHistoryCountCall {
8129                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8130                    Self
8131                }
8132            }
8133        }
8134        {
8135            #[doc(hidden)]
8136            #[allow(dead_code)]
8137            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8138            #[doc(hidden)]
8139            type UnderlyingRustTuple<'a> = (
8140                alloy::sol_types::private::primitives::aliases::U256,
8141            );
8142            #[cfg(test)]
8143            #[allow(dead_code, unreachable_patterns)]
8144            fn _type_assertion(
8145                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8146            ) {
8147                match _t {
8148                    alloy_sol_types::private::AssertTypeEq::<
8149                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8150                    >(_) => {}
8151                }
8152            }
8153            #[automatically_derived]
8154            #[doc(hidden)]
8155            impl ::core::convert::From<getStateHistoryCountReturn>
8156            for UnderlyingRustTuple<'_> {
8157                fn from(value: getStateHistoryCountReturn) -> Self {
8158                    (value._0,)
8159                }
8160            }
8161            #[automatically_derived]
8162            #[doc(hidden)]
8163            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8164            for getStateHistoryCountReturn {
8165                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8166                    Self { _0: tuple.0 }
8167                }
8168            }
8169        }
8170        #[automatically_derived]
8171        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
8172            type Parameters<'a> = ();
8173            type Token<'a> = <Self::Parameters<
8174                'a,
8175            > as alloy_sol_types::SolType>::Token<'a>;
8176            type Return = alloy::sol_types::private::primitives::aliases::U256;
8177            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8178            type ReturnToken<'a> = <Self::ReturnTuple<
8179                'a,
8180            > as alloy_sol_types::SolType>::Token<'a>;
8181            const SIGNATURE: &'static str = "getStateHistoryCount()";
8182            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
8183            #[inline]
8184            fn new<'a>(
8185                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8186            ) -> Self {
8187                tuple.into()
8188            }
8189            #[inline]
8190            fn tokenize(&self) -> Self::Token<'_> {
8191                ()
8192            }
8193            #[inline]
8194            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8195                (
8196                    <alloy::sol_types::sol_data::Uint<
8197                        256,
8198                    > as alloy_sol_types::SolType>::tokenize(ret),
8199                )
8200            }
8201            #[inline]
8202            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8203                <Self::ReturnTuple<
8204                    '_,
8205                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8206                    .map(|r| {
8207                        let r: getStateHistoryCountReturn = r.into();
8208                        r._0
8209                    })
8210            }
8211            #[inline]
8212            fn abi_decode_returns_validate(
8213                data: &[u8],
8214            ) -> alloy_sol_types::Result<Self::Return> {
8215                <Self::ReturnTuple<
8216                    '_,
8217                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8218                    .map(|r| {
8219                        let r: getStateHistoryCountReturn = r.into();
8220                        r._0
8221                    })
8222            }
8223        }
8224    };
8225    #[derive(serde::Serialize, serde::Deserialize)]
8226    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8227    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
8228```solidity
8229function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
8230```*/
8231    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8232    #[derive(Clone)]
8233    pub struct getVersionCall;
8234    #[derive(serde::Serialize, serde::Deserialize)]
8235    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8236    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
8237    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8238    #[derive(Clone)]
8239    pub struct getVersionReturn {
8240        #[allow(missing_docs)]
8241        pub majorVersion: u8,
8242        #[allow(missing_docs)]
8243        pub minorVersion: u8,
8244        #[allow(missing_docs)]
8245        pub patchVersion: u8,
8246    }
8247    #[allow(
8248        non_camel_case_types,
8249        non_snake_case,
8250        clippy::pub_underscore_fields,
8251        clippy::style
8252    )]
8253    const _: () = {
8254        use alloy::sol_types as alloy_sol_types;
8255        {
8256            #[doc(hidden)]
8257            #[allow(dead_code)]
8258            type UnderlyingSolTuple<'a> = ();
8259            #[doc(hidden)]
8260            type UnderlyingRustTuple<'a> = ();
8261            #[cfg(test)]
8262            #[allow(dead_code, unreachable_patterns)]
8263            fn _type_assertion(
8264                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8265            ) {
8266                match _t {
8267                    alloy_sol_types::private::AssertTypeEq::<
8268                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8269                    >(_) => {}
8270                }
8271            }
8272            #[automatically_derived]
8273            #[doc(hidden)]
8274            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
8275                fn from(value: getVersionCall) -> Self {
8276                    ()
8277                }
8278            }
8279            #[automatically_derived]
8280            #[doc(hidden)]
8281            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
8282                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8283                    Self
8284                }
8285            }
8286        }
8287        {
8288            #[doc(hidden)]
8289            #[allow(dead_code)]
8290            type UnderlyingSolTuple<'a> = (
8291                alloy::sol_types::sol_data::Uint<8>,
8292                alloy::sol_types::sol_data::Uint<8>,
8293                alloy::sol_types::sol_data::Uint<8>,
8294            );
8295            #[doc(hidden)]
8296            type UnderlyingRustTuple<'a> = (u8, u8, u8);
8297            #[cfg(test)]
8298            #[allow(dead_code, unreachable_patterns)]
8299            fn _type_assertion(
8300                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8301            ) {
8302                match _t {
8303                    alloy_sol_types::private::AssertTypeEq::<
8304                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8305                    >(_) => {}
8306                }
8307            }
8308            #[automatically_derived]
8309            #[doc(hidden)]
8310            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
8311                fn from(value: getVersionReturn) -> Self {
8312                    (value.majorVersion, value.minorVersion, value.patchVersion)
8313                }
8314            }
8315            #[automatically_derived]
8316            #[doc(hidden)]
8317            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
8318                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8319                    Self {
8320                        majorVersion: tuple.0,
8321                        minorVersion: tuple.1,
8322                        patchVersion: tuple.2,
8323                    }
8324                }
8325            }
8326        }
8327        impl getVersionReturn {
8328            fn _tokenize(
8329                &self,
8330            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8331                (
8332                    <alloy::sol_types::sol_data::Uint<
8333                        8,
8334                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
8335                    <alloy::sol_types::sol_data::Uint<
8336                        8,
8337                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
8338                    <alloy::sol_types::sol_data::Uint<
8339                        8,
8340                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
8341                )
8342            }
8343        }
8344        #[automatically_derived]
8345        impl alloy_sol_types::SolCall for getVersionCall {
8346            type Parameters<'a> = ();
8347            type Token<'a> = <Self::Parameters<
8348                'a,
8349            > as alloy_sol_types::SolType>::Token<'a>;
8350            type Return = getVersionReturn;
8351            type ReturnTuple<'a> = (
8352                alloy::sol_types::sol_data::Uint<8>,
8353                alloy::sol_types::sol_data::Uint<8>,
8354                alloy::sol_types::sol_data::Uint<8>,
8355            );
8356            type ReturnToken<'a> = <Self::ReturnTuple<
8357                'a,
8358            > as alloy_sol_types::SolType>::Token<'a>;
8359            const SIGNATURE: &'static str = "getVersion()";
8360            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
8361            #[inline]
8362            fn new<'a>(
8363                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8364            ) -> Self {
8365                tuple.into()
8366            }
8367            #[inline]
8368            fn tokenize(&self) -> Self::Token<'_> {
8369                ()
8370            }
8371            #[inline]
8372            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8373                getVersionReturn::_tokenize(ret)
8374            }
8375            #[inline]
8376            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8377                <Self::ReturnTuple<
8378                    '_,
8379                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8380                    .map(Into::into)
8381            }
8382            #[inline]
8383            fn abi_decode_returns_validate(
8384                data: &[u8],
8385            ) -> alloy_sol_types::Result<Self::Return> {
8386                <Self::ReturnTuple<
8387                    '_,
8388                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8389                    .map(Into::into)
8390            }
8391        }
8392    };
8393    #[derive(serde::Serialize, serde::Deserialize)]
8394    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8395    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
8396```solidity
8397function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
8398```*/
8399    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8400    #[derive(Clone)]
8401    pub struct initializeCall {
8402        #[allow(missing_docs)]
8403        pub _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
8404        #[allow(missing_docs)]
8405        pub _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
8406        #[allow(missing_docs)]
8407        pub _stateHistoryRetentionPeriod: u32,
8408        #[allow(missing_docs)]
8409        pub owner: alloy::sol_types::private::Address,
8410    }
8411    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
8412    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8413    #[derive(Clone)]
8414    pub struct initializeReturn {}
8415    #[allow(
8416        non_camel_case_types,
8417        non_snake_case,
8418        clippy::pub_underscore_fields,
8419        clippy::style
8420    )]
8421    const _: () = {
8422        use alloy::sol_types as alloy_sol_types;
8423        {
8424            #[doc(hidden)]
8425            #[allow(dead_code)]
8426            type UnderlyingSolTuple<'a> = (
8427                LightClient::LightClientState,
8428                LightClient::StakeTableState,
8429                alloy::sol_types::sol_data::Uint<32>,
8430                alloy::sol_types::sol_data::Address,
8431            );
8432            #[doc(hidden)]
8433            type UnderlyingRustTuple<'a> = (
8434                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
8435                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
8436                u32,
8437                alloy::sol_types::private::Address,
8438            );
8439            #[cfg(test)]
8440            #[allow(dead_code, unreachable_patterns)]
8441            fn _type_assertion(
8442                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8443            ) {
8444                match _t {
8445                    alloy_sol_types::private::AssertTypeEq::<
8446                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8447                    >(_) => {}
8448                }
8449            }
8450            #[automatically_derived]
8451            #[doc(hidden)]
8452            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
8453                fn from(value: initializeCall) -> Self {
8454                    (
8455                        value._genesis,
8456                        value._genesisStakeTableState,
8457                        value._stateHistoryRetentionPeriod,
8458                        value.owner,
8459                    )
8460                }
8461            }
8462            #[automatically_derived]
8463            #[doc(hidden)]
8464            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
8465                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8466                    Self {
8467                        _genesis: tuple.0,
8468                        _genesisStakeTableState: tuple.1,
8469                        _stateHistoryRetentionPeriod: tuple.2,
8470                        owner: tuple.3,
8471                    }
8472                }
8473            }
8474        }
8475        {
8476            #[doc(hidden)]
8477            #[allow(dead_code)]
8478            type UnderlyingSolTuple<'a> = ();
8479            #[doc(hidden)]
8480            type UnderlyingRustTuple<'a> = ();
8481            #[cfg(test)]
8482            #[allow(dead_code, unreachable_patterns)]
8483            fn _type_assertion(
8484                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8485            ) {
8486                match _t {
8487                    alloy_sol_types::private::AssertTypeEq::<
8488                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8489                    >(_) => {}
8490                }
8491            }
8492            #[automatically_derived]
8493            #[doc(hidden)]
8494            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
8495                fn from(value: initializeReturn) -> Self {
8496                    ()
8497                }
8498            }
8499            #[automatically_derived]
8500            #[doc(hidden)]
8501            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
8502                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8503                    Self {}
8504                }
8505            }
8506        }
8507        impl initializeReturn {
8508            fn _tokenize(
8509                &self,
8510            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8511                ()
8512            }
8513        }
8514        #[automatically_derived]
8515        impl alloy_sol_types::SolCall for initializeCall {
8516            type Parameters<'a> = (
8517                LightClient::LightClientState,
8518                LightClient::StakeTableState,
8519                alloy::sol_types::sol_data::Uint<32>,
8520                alloy::sol_types::sol_data::Address,
8521            );
8522            type Token<'a> = <Self::Parameters<
8523                'a,
8524            > as alloy_sol_types::SolType>::Token<'a>;
8525            type Return = initializeReturn;
8526            type ReturnTuple<'a> = ();
8527            type ReturnToken<'a> = <Self::ReturnTuple<
8528                'a,
8529            > as alloy_sol_types::SolType>::Token<'a>;
8530            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
8531            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
8532            #[inline]
8533            fn new<'a>(
8534                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8535            ) -> Self {
8536                tuple.into()
8537            }
8538            #[inline]
8539            fn tokenize(&self) -> Self::Token<'_> {
8540                (
8541                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
8542                        &self._genesis,
8543                    ),
8544                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
8545                        &self._genesisStakeTableState,
8546                    ),
8547                    <alloy::sol_types::sol_data::Uint<
8548                        32,
8549                    > as alloy_sol_types::SolType>::tokenize(
8550                        &self._stateHistoryRetentionPeriod,
8551                    ),
8552                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8553                        &self.owner,
8554                    ),
8555                )
8556            }
8557            #[inline]
8558            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8559                initializeReturn::_tokenize(ret)
8560            }
8561            #[inline]
8562            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8563                <Self::ReturnTuple<
8564                    '_,
8565                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8566                    .map(Into::into)
8567            }
8568            #[inline]
8569            fn abi_decode_returns_validate(
8570                data: &[u8],
8571            ) -> alloy_sol_types::Result<Self::Return> {
8572                <Self::ReturnTuple<
8573                    '_,
8574                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8575                    .map(Into::into)
8576            }
8577        }
8578    };
8579    #[derive(serde::Serialize, serde::Deserialize)]
8580    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8581    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
8582```solidity
8583function isPermissionedProverEnabled() external view returns (bool);
8584```*/
8585    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8586    #[derive(Clone)]
8587    pub struct isPermissionedProverEnabledCall;
8588    #[derive(serde::Serialize, serde::Deserialize)]
8589    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8590    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
8591    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8592    #[derive(Clone)]
8593    pub struct isPermissionedProverEnabledReturn {
8594        #[allow(missing_docs)]
8595        pub _0: bool,
8596    }
8597    #[allow(
8598        non_camel_case_types,
8599        non_snake_case,
8600        clippy::pub_underscore_fields,
8601        clippy::style
8602    )]
8603    const _: () = {
8604        use alloy::sol_types as alloy_sol_types;
8605        {
8606            #[doc(hidden)]
8607            #[allow(dead_code)]
8608            type UnderlyingSolTuple<'a> = ();
8609            #[doc(hidden)]
8610            type UnderlyingRustTuple<'a> = ();
8611            #[cfg(test)]
8612            #[allow(dead_code, unreachable_patterns)]
8613            fn _type_assertion(
8614                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8615            ) {
8616                match _t {
8617                    alloy_sol_types::private::AssertTypeEq::<
8618                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8619                    >(_) => {}
8620                }
8621            }
8622            #[automatically_derived]
8623            #[doc(hidden)]
8624            impl ::core::convert::From<isPermissionedProverEnabledCall>
8625            for UnderlyingRustTuple<'_> {
8626                fn from(value: isPermissionedProverEnabledCall) -> Self {
8627                    ()
8628                }
8629            }
8630            #[automatically_derived]
8631            #[doc(hidden)]
8632            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8633            for isPermissionedProverEnabledCall {
8634                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8635                    Self
8636                }
8637            }
8638        }
8639        {
8640            #[doc(hidden)]
8641            #[allow(dead_code)]
8642            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8643            #[doc(hidden)]
8644            type UnderlyingRustTuple<'a> = (bool,);
8645            #[cfg(test)]
8646            #[allow(dead_code, unreachable_patterns)]
8647            fn _type_assertion(
8648                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8649            ) {
8650                match _t {
8651                    alloy_sol_types::private::AssertTypeEq::<
8652                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8653                    >(_) => {}
8654                }
8655            }
8656            #[automatically_derived]
8657            #[doc(hidden)]
8658            impl ::core::convert::From<isPermissionedProverEnabledReturn>
8659            for UnderlyingRustTuple<'_> {
8660                fn from(value: isPermissionedProverEnabledReturn) -> Self {
8661                    (value._0,)
8662                }
8663            }
8664            #[automatically_derived]
8665            #[doc(hidden)]
8666            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8667            for isPermissionedProverEnabledReturn {
8668                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8669                    Self { _0: tuple.0 }
8670                }
8671            }
8672        }
8673        #[automatically_derived]
8674        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
8675            type Parameters<'a> = ();
8676            type Token<'a> = <Self::Parameters<
8677                'a,
8678            > as alloy_sol_types::SolType>::Token<'a>;
8679            type Return = bool;
8680            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8681            type ReturnToken<'a> = <Self::ReturnTuple<
8682                'a,
8683            > as alloy_sol_types::SolType>::Token<'a>;
8684            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
8685            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
8686            #[inline]
8687            fn new<'a>(
8688                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8689            ) -> Self {
8690                tuple.into()
8691            }
8692            #[inline]
8693            fn tokenize(&self) -> Self::Token<'_> {
8694                ()
8695            }
8696            #[inline]
8697            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8698                (
8699                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
8700                        ret,
8701                    ),
8702                )
8703            }
8704            #[inline]
8705            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8706                <Self::ReturnTuple<
8707                    '_,
8708                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8709                    .map(|r| {
8710                        let r: isPermissionedProverEnabledReturn = r.into();
8711                        r._0
8712                    })
8713            }
8714            #[inline]
8715            fn abi_decode_returns_validate(
8716                data: &[u8],
8717            ) -> alloy_sol_types::Result<Self::Return> {
8718                <Self::ReturnTuple<
8719                    '_,
8720                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8721                    .map(|r| {
8722                        let r: isPermissionedProverEnabledReturn = r.into();
8723                        r._0
8724                    })
8725            }
8726        }
8727    };
8728    #[derive(serde::Serialize, serde::Deserialize)]
8729    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8730    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
8731```solidity
8732function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
8733```*/
8734    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8735    #[derive(Clone)]
8736    pub struct lagOverEscapeHatchThresholdCall {
8737        #[allow(missing_docs)]
8738        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
8739        #[allow(missing_docs)]
8740        pub blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
8741    }
8742    #[derive(serde::Serialize, serde::Deserialize)]
8743    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8744    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
8745    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8746    #[derive(Clone)]
8747    pub struct lagOverEscapeHatchThresholdReturn {
8748        #[allow(missing_docs)]
8749        pub _0: bool,
8750    }
8751    #[allow(
8752        non_camel_case_types,
8753        non_snake_case,
8754        clippy::pub_underscore_fields,
8755        clippy::style
8756    )]
8757    const _: () = {
8758        use alloy::sol_types as alloy_sol_types;
8759        {
8760            #[doc(hidden)]
8761            #[allow(dead_code)]
8762            type UnderlyingSolTuple<'a> = (
8763                alloy::sol_types::sol_data::Uint<256>,
8764                alloy::sol_types::sol_data::Uint<256>,
8765            );
8766            #[doc(hidden)]
8767            type UnderlyingRustTuple<'a> = (
8768                alloy::sol_types::private::primitives::aliases::U256,
8769                alloy::sol_types::private::primitives::aliases::U256,
8770            );
8771            #[cfg(test)]
8772            #[allow(dead_code, unreachable_patterns)]
8773            fn _type_assertion(
8774                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8775            ) {
8776                match _t {
8777                    alloy_sol_types::private::AssertTypeEq::<
8778                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8779                    >(_) => {}
8780                }
8781            }
8782            #[automatically_derived]
8783            #[doc(hidden)]
8784            impl ::core::convert::From<lagOverEscapeHatchThresholdCall>
8785            for UnderlyingRustTuple<'_> {
8786                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
8787                    (value.blockNumber, value.blockThreshold)
8788                }
8789            }
8790            #[automatically_derived]
8791            #[doc(hidden)]
8792            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8793            for lagOverEscapeHatchThresholdCall {
8794                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8795                    Self {
8796                        blockNumber: tuple.0,
8797                        blockThreshold: tuple.1,
8798                    }
8799                }
8800            }
8801        }
8802        {
8803            #[doc(hidden)]
8804            #[allow(dead_code)]
8805            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8806            #[doc(hidden)]
8807            type UnderlyingRustTuple<'a> = (bool,);
8808            #[cfg(test)]
8809            #[allow(dead_code, unreachable_patterns)]
8810            fn _type_assertion(
8811                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8812            ) {
8813                match _t {
8814                    alloy_sol_types::private::AssertTypeEq::<
8815                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8816                    >(_) => {}
8817                }
8818            }
8819            #[automatically_derived]
8820            #[doc(hidden)]
8821            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn>
8822            for UnderlyingRustTuple<'_> {
8823                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
8824                    (value._0,)
8825                }
8826            }
8827            #[automatically_derived]
8828            #[doc(hidden)]
8829            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8830            for lagOverEscapeHatchThresholdReturn {
8831                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8832                    Self { _0: tuple.0 }
8833                }
8834            }
8835        }
8836        #[automatically_derived]
8837        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
8838            type Parameters<'a> = (
8839                alloy::sol_types::sol_data::Uint<256>,
8840                alloy::sol_types::sol_data::Uint<256>,
8841            );
8842            type Token<'a> = <Self::Parameters<
8843                'a,
8844            > as alloy_sol_types::SolType>::Token<'a>;
8845            type Return = bool;
8846            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8847            type ReturnToken<'a> = <Self::ReturnTuple<
8848                'a,
8849            > as alloy_sol_types::SolType>::Token<'a>;
8850            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
8851            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
8852            #[inline]
8853            fn new<'a>(
8854                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8855            ) -> Self {
8856                tuple.into()
8857            }
8858            #[inline]
8859            fn tokenize(&self) -> Self::Token<'_> {
8860                (
8861                    <alloy::sol_types::sol_data::Uint<
8862                        256,
8863                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
8864                    <alloy::sol_types::sol_data::Uint<
8865                        256,
8866                    > as alloy_sol_types::SolType>::tokenize(&self.blockThreshold),
8867                )
8868            }
8869            #[inline]
8870            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8871                (
8872                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
8873                        ret,
8874                    ),
8875                )
8876            }
8877            #[inline]
8878            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8879                <Self::ReturnTuple<
8880                    '_,
8881                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8882                    .map(|r| {
8883                        let r: lagOverEscapeHatchThresholdReturn = r.into();
8884                        r._0
8885                    })
8886            }
8887            #[inline]
8888            fn abi_decode_returns_validate(
8889                data: &[u8],
8890            ) -> alloy_sol_types::Result<Self::Return> {
8891                <Self::ReturnTuple<
8892                    '_,
8893                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8894                    .map(|r| {
8895                        let r: lagOverEscapeHatchThresholdReturn = r.into();
8896                        r._0
8897                    })
8898            }
8899        }
8900    };
8901    #[derive(serde::Serialize, serde::Deserialize)]
8902    #[derive()]
8903    /**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`.
8904```solidity
8905function newFinalizedState(LightClient.LightClientState memory newState, IPlonkVerifier.PlonkProof memory proof) external;
8906```*/
8907    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8908    #[derive(Clone)]
8909    pub struct newFinalizedStateCall {
8910        #[allow(missing_docs)]
8911        pub newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
8912        #[allow(missing_docs)]
8913        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
8914    }
8915    ///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.
8916    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8917    #[derive(Clone)]
8918    pub struct newFinalizedStateReturn {}
8919    #[allow(
8920        non_camel_case_types,
8921        non_snake_case,
8922        clippy::pub_underscore_fields,
8923        clippy::style
8924    )]
8925    const _: () = {
8926        use alloy::sol_types as alloy_sol_types;
8927        {
8928            #[doc(hidden)]
8929            #[allow(dead_code)]
8930            type UnderlyingSolTuple<'a> = (
8931                LightClient::LightClientState,
8932                IPlonkVerifier::PlonkProof,
8933            );
8934            #[doc(hidden)]
8935            type UnderlyingRustTuple<'a> = (
8936                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
8937                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
8938            );
8939            #[cfg(test)]
8940            #[allow(dead_code, unreachable_patterns)]
8941            fn _type_assertion(
8942                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8943            ) {
8944                match _t {
8945                    alloy_sol_types::private::AssertTypeEq::<
8946                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8947                    >(_) => {}
8948                }
8949            }
8950            #[automatically_derived]
8951            #[doc(hidden)]
8952            impl ::core::convert::From<newFinalizedStateCall>
8953            for UnderlyingRustTuple<'_> {
8954                fn from(value: newFinalizedStateCall) -> Self {
8955                    (value.newState, value.proof)
8956                }
8957            }
8958            #[automatically_derived]
8959            #[doc(hidden)]
8960            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8961            for newFinalizedStateCall {
8962                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8963                    Self {
8964                        newState: tuple.0,
8965                        proof: tuple.1,
8966                    }
8967                }
8968            }
8969        }
8970        {
8971            #[doc(hidden)]
8972            #[allow(dead_code)]
8973            type UnderlyingSolTuple<'a> = ();
8974            #[doc(hidden)]
8975            type UnderlyingRustTuple<'a> = ();
8976            #[cfg(test)]
8977            #[allow(dead_code, unreachable_patterns)]
8978            fn _type_assertion(
8979                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8980            ) {
8981                match _t {
8982                    alloy_sol_types::private::AssertTypeEq::<
8983                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8984                    >(_) => {}
8985                }
8986            }
8987            #[automatically_derived]
8988            #[doc(hidden)]
8989            impl ::core::convert::From<newFinalizedStateReturn>
8990            for UnderlyingRustTuple<'_> {
8991                fn from(value: newFinalizedStateReturn) -> Self {
8992                    ()
8993                }
8994            }
8995            #[automatically_derived]
8996            #[doc(hidden)]
8997            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8998            for newFinalizedStateReturn {
8999                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9000                    Self {}
9001                }
9002            }
9003        }
9004        impl newFinalizedStateReturn {
9005            fn _tokenize(
9006                &self,
9007            ) -> <newFinalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9008                ()
9009            }
9010        }
9011        #[automatically_derived]
9012        impl alloy_sol_types::SolCall for newFinalizedStateCall {
9013            type Parameters<'a> = (
9014                LightClient::LightClientState,
9015                IPlonkVerifier::PlonkProof,
9016            );
9017            type Token<'a> = <Self::Parameters<
9018                'a,
9019            > as alloy_sol_types::SolType>::Token<'a>;
9020            type Return = newFinalizedStateReturn;
9021            type ReturnTuple<'a> = ();
9022            type ReturnToken<'a> = <Self::ReturnTuple<
9023                'a,
9024            > as alloy_sol_types::SolType>::Token<'a>;
9025            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))";
9026            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
9027            #[inline]
9028            fn new<'a>(
9029                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9030            ) -> Self {
9031                tuple.into()
9032            }
9033            #[inline]
9034            fn tokenize(&self) -> Self::Token<'_> {
9035                (
9036                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
9037                        &self.newState,
9038                    ),
9039                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
9040                        &self.proof,
9041                    ),
9042                )
9043            }
9044            #[inline]
9045            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9046                newFinalizedStateReturn::_tokenize(ret)
9047            }
9048            #[inline]
9049            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9050                <Self::ReturnTuple<
9051                    '_,
9052                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9053                    .map(Into::into)
9054            }
9055            #[inline]
9056            fn abi_decode_returns_validate(
9057                data: &[u8],
9058            ) -> alloy_sol_types::Result<Self::Return> {
9059                <Self::ReturnTuple<
9060                    '_,
9061                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9062                    .map(Into::into)
9063            }
9064        }
9065    };
9066    #[derive(serde::Serialize, serde::Deserialize)]
9067    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9068    /**Function with signature `owner()` and selector `0x8da5cb5b`.
9069```solidity
9070function owner() external view returns (address);
9071```*/
9072    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9073    #[derive(Clone)]
9074    pub struct ownerCall;
9075    #[derive(serde::Serialize, serde::Deserialize)]
9076    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9077    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
9078    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9079    #[derive(Clone)]
9080    pub struct ownerReturn {
9081        #[allow(missing_docs)]
9082        pub _0: alloy::sol_types::private::Address,
9083    }
9084    #[allow(
9085        non_camel_case_types,
9086        non_snake_case,
9087        clippy::pub_underscore_fields,
9088        clippy::style
9089    )]
9090    const _: () = {
9091        use alloy::sol_types as alloy_sol_types;
9092        {
9093            #[doc(hidden)]
9094            #[allow(dead_code)]
9095            type UnderlyingSolTuple<'a> = ();
9096            #[doc(hidden)]
9097            type UnderlyingRustTuple<'a> = ();
9098            #[cfg(test)]
9099            #[allow(dead_code, unreachable_patterns)]
9100            fn _type_assertion(
9101                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9102            ) {
9103                match _t {
9104                    alloy_sol_types::private::AssertTypeEq::<
9105                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9106                    >(_) => {}
9107                }
9108            }
9109            #[automatically_derived]
9110            #[doc(hidden)]
9111            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
9112                fn from(value: ownerCall) -> Self {
9113                    ()
9114                }
9115            }
9116            #[automatically_derived]
9117            #[doc(hidden)]
9118            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
9119                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9120                    Self
9121                }
9122            }
9123        }
9124        {
9125            #[doc(hidden)]
9126            #[allow(dead_code)]
9127            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9128            #[doc(hidden)]
9129            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9130            #[cfg(test)]
9131            #[allow(dead_code, unreachable_patterns)]
9132            fn _type_assertion(
9133                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9134            ) {
9135                match _t {
9136                    alloy_sol_types::private::AssertTypeEq::<
9137                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9138                    >(_) => {}
9139                }
9140            }
9141            #[automatically_derived]
9142            #[doc(hidden)]
9143            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
9144                fn from(value: ownerReturn) -> Self {
9145                    (value._0,)
9146                }
9147            }
9148            #[automatically_derived]
9149            #[doc(hidden)]
9150            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
9151                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9152                    Self { _0: tuple.0 }
9153                }
9154            }
9155        }
9156        #[automatically_derived]
9157        impl alloy_sol_types::SolCall for ownerCall {
9158            type Parameters<'a> = ();
9159            type Token<'a> = <Self::Parameters<
9160                'a,
9161            > as alloy_sol_types::SolType>::Token<'a>;
9162            type Return = alloy::sol_types::private::Address;
9163            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
9164            type ReturnToken<'a> = <Self::ReturnTuple<
9165                'a,
9166            > as alloy_sol_types::SolType>::Token<'a>;
9167            const SIGNATURE: &'static str = "owner()";
9168            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
9169            #[inline]
9170            fn new<'a>(
9171                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9172            ) -> Self {
9173                tuple.into()
9174            }
9175            #[inline]
9176            fn tokenize(&self) -> Self::Token<'_> {
9177                ()
9178            }
9179            #[inline]
9180            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9181                (
9182                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9183                        ret,
9184                    ),
9185                )
9186            }
9187            #[inline]
9188            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9189                <Self::ReturnTuple<
9190                    '_,
9191                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9192                    .map(|r| {
9193                        let r: ownerReturn = r.into();
9194                        r._0
9195                    })
9196            }
9197            #[inline]
9198            fn abi_decode_returns_validate(
9199                data: &[u8],
9200            ) -> alloy_sol_types::Result<Self::Return> {
9201                <Self::ReturnTuple<
9202                    '_,
9203                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9204                    .map(|r| {
9205                        let r: ownerReturn = r.into();
9206                        r._0
9207                    })
9208            }
9209        }
9210    };
9211    #[derive(serde::Serialize, serde::Deserialize)]
9212    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9213    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
9214```solidity
9215function permissionedProver() external view returns (address);
9216```*/
9217    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9218    #[derive(Clone)]
9219    pub struct permissionedProverCall;
9220    #[derive(serde::Serialize, serde::Deserialize)]
9221    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9222    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
9223    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9224    #[derive(Clone)]
9225    pub struct permissionedProverReturn {
9226        #[allow(missing_docs)]
9227        pub _0: alloy::sol_types::private::Address,
9228    }
9229    #[allow(
9230        non_camel_case_types,
9231        non_snake_case,
9232        clippy::pub_underscore_fields,
9233        clippy::style
9234    )]
9235    const _: () = {
9236        use alloy::sol_types as alloy_sol_types;
9237        {
9238            #[doc(hidden)]
9239            #[allow(dead_code)]
9240            type UnderlyingSolTuple<'a> = ();
9241            #[doc(hidden)]
9242            type UnderlyingRustTuple<'a> = ();
9243            #[cfg(test)]
9244            #[allow(dead_code, unreachable_patterns)]
9245            fn _type_assertion(
9246                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9247            ) {
9248                match _t {
9249                    alloy_sol_types::private::AssertTypeEq::<
9250                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9251                    >(_) => {}
9252                }
9253            }
9254            #[automatically_derived]
9255            #[doc(hidden)]
9256            impl ::core::convert::From<permissionedProverCall>
9257            for UnderlyingRustTuple<'_> {
9258                fn from(value: permissionedProverCall) -> Self {
9259                    ()
9260                }
9261            }
9262            #[automatically_derived]
9263            #[doc(hidden)]
9264            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9265            for permissionedProverCall {
9266                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9267                    Self
9268                }
9269            }
9270        }
9271        {
9272            #[doc(hidden)]
9273            #[allow(dead_code)]
9274            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9275            #[doc(hidden)]
9276            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9277            #[cfg(test)]
9278            #[allow(dead_code, unreachable_patterns)]
9279            fn _type_assertion(
9280                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9281            ) {
9282                match _t {
9283                    alloy_sol_types::private::AssertTypeEq::<
9284                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9285                    >(_) => {}
9286                }
9287            }
9288            #[automatically_derived]
9289            #[doc(hidden)]
9290            impl ::core::convert::From<permissionedProverReturn>
9291            for UnderlyingRustTuple<'_> {
9292                fn from(value: permissionedProverReturn) -> Self {
9293                    (value._0,)
9294                }
9295            }
9296            #[automatically_derived]
9297            #[doc(hidden)]
9298            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9299            for permissionedProverReturn {
9300                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9301                    Self { _0: tuple.0 }
9302                }
9303            }
9304        }
9305        #[automatically_derived]
9306        impl alloy_sol_types::SolCall for permissionedProverCall {
9307            type Parameters<'a> = ();
9308            type Token<'a> = <Self::Parameters<
9309                'a,
9310            > as alloy_sol_types::SolType>::Token<'a>;
9311            type Return = alloy::sol_types::private::Address;
9312            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
9313            type ReturnToken<'a> = <Self::ReturnTuple<
9314                'a,
9315            > as alloy_sol_types::SolType>::Token<'a>;
9316            const SIGNATURE: &'static str = "permissionedProver()";
9317            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
9318            #[inline]
9319            fn new<'a>(
9320                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9321            ) -> Self {
9322                tuple.into()
9323            }
9324            #[inline]
9325            fn tokenize(&self) -> Self::Token<'_> {
9326                ()
9327            }
9328            #[inline]
9329            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9330                (
9331                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9332                        ret,
9333                    ),
9334                )
9335            }
9336            #[inline]
9337            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9338                <Self::ReturnTuple<
9339                    '_,
9340                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9341                    .map(|r| {
9342                        let r: permissionedProverReturn = r.into();
9343                        r._0
9344                    })
9345            }
9346            #[inline]
9347            fn abi_decode_returns_validate(
9348                data: &[u8],
9349            ) -> alloy_sol_types::Result<Self::Return> {
9350                <Self::ReturnTuple<
9351                    '_,
9352                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9353                    .map(|r| {
9354                        let r: permissionedProverReturn = r.into();
9355                        r._0
9356                    })
9357            }
9358        }
9359    };
9360    #[derive(serde::Serialize, serde::Deserialize)]
9361    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9362    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
9363```solidity
9364function proxiableUUID() external view returns (bytes32);
9365```*/
9366    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9367    #[derive(Clone)]
9368    pub struct proxiableUUIDCall;
9369    #[derive(serde::Serialize, serde::Deserialize)]
9370    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9371    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
9372    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9373    #[derive(Clone)]
9374    pub struct proxiableUUIDReturn {
9375        #[allow(missing_docs)]
9376        pub _0: alloy::sol_types::private::FixedBytes<32>,
9377    }
9378    #[allow(
9379        non_camel_case_types,
9380        non_snake_case,
9381        clippy::pub_underscore_fields,
9382        clippy::style
9383    )]
9384    const _: () = {
9385        use alloy::sol_types as alloy_sol_types;
9386        {
9387            #[doc(hidden)]
9388            #[allow(dead_code)]
9389            type UnderlyingSolTuple<'a> = ();
9390            #[doc(hidden)]
9391            type UnderlyingRustTuple<'a> = ();
9392            #[cfg(test)]
9393            #[allow(dead_code, unreachable_patterns)]
9394            fn _type_assertion(
9395                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9396            ) {
9397                match _t {
9398                    alloy_sol_types::private::AssertTypeEq::<
9399                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9400                    >(_) => {}
9401                }
9402            }
9403            #[automatically_derived]
9404            #[doc(hidden)]
9405            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
9406                fn from(value: proxiableUUIDCall) -> Self {
9407                    ()
9408                }
9409            }
9410            #[automatically_derived]
9411            #[doc(hidden)]
9412            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
9413                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9414                    Self
9415                }
9416            }
9417        }
9418        {
9419            #[doc(hidden)]
9420            #[allow(dead_code)]
9421            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9422            #[doc(hidden)]
9423            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
9424            #[cfg(test)]
9425            #[allow(dead_code, unreachable_patterns)]
9426            fn _type_assertion(
9427                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9428            ) {
9429                match _t {
9430                    alloy_sol_types::private::AssertTypeEq::<
9431                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9432                    >(_) => {}
9433                }
9434            }
9435            #[automatically_derived]
9436            #[doc(hidden)]
9437            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
9438                fn from(value: proxiableUUIDReturn) -> Self {
9439                    (value._0,)
9440                }
9441            }
9442            #[automatically_derived]
9443            #[doc(hidden)]
9444            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
9445                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9446                    Self { _0: tuple.0 }
9447                }
9448            }
9449        }
9450        #[automatically_derived]
9451        impl alloy_sol_types::SolCall for proxiableUUIDCall {
9452            type Parameters<'a> = ();
9453            type Token<'a> = <Self::Parameters<
9454                'a,
9455            > as alloy_sol_types::SolType>::Token<'a>;
9456            type Return = alloy::sol_types::private::FixedBytes<32>;
9457            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9458            type ReturnToken<'a> = <Self::ReturnTuple<
9459                'a,
9460            > as alloy_sol_types::SolType>::Token<'a>;
9461            const SIGNATURE: &'static str = "proxiableUUID()";
9462            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
9463            #[inline]
9464            fn new<'a>(
9465                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9466            ) -> Self {
9467                tuple.into()
9468            }
9469            #[inline]
9470            fn tokenize(&self) -> Self::Token<'_> {
9471                ()
9472            }
9473            #[inline]
9474            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9475                (
9476                    <alloy::sol_types::sol_data::FixedBytes<
9477                        32,
9478                    > as alloy_sol_types::SolType>::tokenize(ret),
9479                )
9480            }
9481            #[inline]
9482            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9483                <Self::ReturnTuple<
9484                    '_,
9485                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9486                    .map(|r| {
9487                        let r: proxiableUUIDReturn = r.into();
9488                        r._0
9489                    })
9490            }
9491            #[inline]
9492            fn abi_decode_returns_validate(
9493                data: &[u8],
9494            ) -> alloy_sol_types::Result<Self::Return> {
9495                <Self::ReturnTuple<
9496                    '_,
9497                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9498                    .map(|r| {
9499                        let r: proxiableUUIDReturn = r.into();
9500                        r._0
9501                    })
9502            }
9503        }
9504    };
9505    #[derive(serde::Serialize, serde::Deserialize)]
9506    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9507    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
9508```solidity
9509function renounceOwnership() external;
9510```*/
9511    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9512    #[derive(Clone)]
9513    pub struct renounceOwnershipCall;
9514    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
9515    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9516    #[derive(Clone)]
9517    pub struct renounceOwnershipReturn {}
9518    #[allow(
9519        non_camel_case_types,
9520        non_snake_case,
9521        clippy::pub_underscore_fields,
9522        clippy::style
9523    )]
9524    const _: () = {
9525        use alloy::sol_types as alloy_sol_types;
9526        {
9527            #[doc(hidden)]
9528            #[allow(dead_code)]
9529            type UnderlyingSolTuple<'a> = ();
9530            #[doc(hidden)]
9531            type UnderlyingRustTuple<'a> = ();
9532            #[cfg(test)]
9533            #[allow(dead_code, unreachable_patterns)]
9534            fn _type_assertion(
9535                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9536            ) {
9537                match _t {
9538                    alloy_sol_types::private::AssertTypeEq::<
9539                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9540                    >(_) => {}
9541                }
9542            }
9543            #[automatically_derived]
9544            #[doc(hidden)]
9545            impl ::core::convert::From<renounceOwnershipCall>
9546            for UnderlyingRustTuple<'_> {
9547                fn from(value: renounceOwnershipCall) -> Self {
9548                    ()
9549                }
9550            }
9551            #[automatically_derived]
9552            #[doc(hidden)]
9553            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9554            for renounceOwnershipCall {
9555                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9556                    Self
9557                }
9558            }
9559        }
9560        {
9561            #[doc(hidden)]
9562            #[allow(dead_code)]
9563            type UnderlyingSolTuple<'a> = ();
9564            #[doc(hidden)]
9565            type UnderlyingRustTuple<'a> = ();
9566            #[cfg(test)]
9567            #[allow(dead_code, unreachable_patterns)]
9568            fn _type_assertion(
9569                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9570            ) {
9571                match _t {
9572                    alloy_sol_types::private::AssertTypeEq::<
9573                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9574                    >(_) => {}
9575                }
9576            }
9577            #[automatically_derived]
9578            #[doc(hidden)]
9579            impl ::core::convert::From<renounceOwnershipReturn>
9580            for UnderlyingRustTuple<'_> {
9581                fn from(value: renounceOwnershipReturn) -> Self {
9582                    ()
9583                }
9584            }
9585            #[automatically_derived]
9586            #[doc(hidden)]
9587            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9588            for renounceOwnershipReturn {
9589                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9590                    Self {}
9591                }
9592            }
9593        }
9594        impl renounceOwnershipReturn {
9595            fn _tokenize(
9596                &self,
9597            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9598                ()
9599            }
9600        }
9601        #[automatically_derived]
9602        impl alloy_sol_types::SolCall for renounceOwnershipCall {
9603            type Parameters<'a> = ();
9604            type Token<'a> = <Self::Parameters<
9605                'a,
9606            > as alloy_sol_types::SolType>::Token<'a>;
9607            type Return = renounceOwnershipReturn;
9608            type ReturnTuple<'a> = ();
9609            type ReturnToken<'a> = <Self::ReturnTuple<
9610                'a,
9611            > as alloy_sol_types::SolType>::Token<'a>;
9612            const SIGNATURE: &'static str = "renounceOwnership()";
9613            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
9614            #[inline]
9615            fn new<'a>(
9616                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9617            ) -> Self {
9618                tuple.into()
9619            }
9620            #[inline]
9621            fn tokenize(&self) -> Self::Token<'_> {
9622                ()
9623            }
9624            #[inline]
9625            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9626                renounceOwnershipReturn::_tokenize(ret)
9627            }
9628            #[inline]
9629            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9630                <Self::ReturnTuple<
9631                    '_,
9632                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9633                    .map(Into::into)
9634            }
9635            #[inline]
9636            fn abi_decode_returns_validate(
9637                data: &[u8],
9638            ) -> alloy_sol_types::Result<Self::Return> {
9639                <Self::ReturnTuple<
9640                    '_,
9641                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9642                    .map(Into::into)
9643            }
9644        }
9645    };
9646    #[derive(serde::Serialize, serde::Deserialize)]
9647    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9648    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
9649```solidity
9650function setPermissionedProver(address prover) external;
9651```*/
9652    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9653    #[derive(Clone)]
9654    pub struct setPermissionedProverCall {
9655        #[allow(missing_docs)]
9656        pub prover: alloy::sol_types::private::Address,
9657    }
9658    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
9659    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9660    #[derive(Clone)]
9661    pub struct setPermissionedProverReturn {}
9662    #[allow(
9663        non_camel_case_types,
9664        non_snake_case,
9665        clippy::pub_underscore_fields,
9666        clippy::style
9667    )]
9668    const _: () = {
9669        use alloy::sol_types as alloy_sol_types;
9670        {
9671            #[doc(hidden)]
9672            #[allow(dead_code)]
9673            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9674            #[doc(hidden)]
9675            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9676            #[cfg(test)]
9677            #[allow(dead_code, unreachable_patterns)]
9678            fn _type_assertion(
9679                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9680            ) {
9681                match _t {
9682                    alloy_sol_types::private::AssertTypeEq::<
9683                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9684                    >(_) => {}
9685                }
9686            }
9687            #[automatically_derived]
9688            #[doc(hidden)]
9689            impl ::core::convert::From<setPermissionedProverCall>
9690            for UnderlyingRustTuple<'_> {
9691                fn from(value: setPermissionedProverCall) -> Self {
9692                    (value.prover,)
9693                }
9694            }
9695            #[automatically_derived]
9696            #[doc(hidden)]
9697            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9698            for setPermissionedProverCall {
9699                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9700                    Self { prover: tuple.0 }
9701                }
9702            }
9703        }
9704        {
9705            #[doc(hidden)]
9706            #[allow(dead_code)]
9707            type UnderlyingSolTuple<'a> = ();
9708            #[doc(hidden)]
9709            type UnderlyingRustTuple<'a> = ();
9710            #[cfg(test)]
9711            #[allow(dead_code, unreachable_patterns)]
9712            fn _type_assertion(
9713                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9714            ) {
9715                match _t {
9716                    alloy_sol_types::private::AssertTypeEq::<
9717                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9718                    >(_) => {}
9719                }
9720            }
9721            #[automatically_derived]
9722            #[doc(hidden)]
9723            impl ::core::convert::From<setPermissionedProverReturn>
9724            for UnderlyingRustTuple<'_> {
9725                fn from(value: setPermissionedProverReturn) -> Self {
9726                    ()
9727                }
9728            }
9729            #[automatically_derived]
9730            #[doc(hidden)]
9731            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9732            for setPermissionedProverReturn {
9733                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9734                    Self {}
9735                }
9736            }
9737        }
9738        impl setPermissionedProverReturn {
9739            fn _tokenize(
9740                &self,
9741            ) -> <setPermissionedProverCall as alloy_sol_types::SolCall>::ReturnToken<
9742                '_,
9743            > {
9744                ()
9745            }
9746        }
9747        #[automatically_derived]
9748        impl alloy_sol_types::SolCall for setPermissionedProverCall {
9749            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
9750            type Token<'a> = <Self::Parameters<
9751                'a,
9752            > as alloy_sol_types::SolType>::Token<'a>;
9753            type Return = setPermissionedProverReturn;
9754            type ReturnTuple<'a> = ();
9755            type ReturnToken<'a> = <Self::ReturnTuple<
9756                'a,
9757            > as alloy_sol_types::SolType>::Token<'a>;
9758            const SIGNATURE: &'static str = "setPermissionedProver(address)";
9759            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
9760            #[inline]
9761            fn new<'a>(
9762                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9763            ) -> Self {
9764                tuple.into()
9765            }
9766            #[inline]
9767            fn tokenize(&self) -> Self::Token<'_> {
9768                (
9769                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9770                        &self.prover,
9771                    ),
9772                )
9773            }
9774            #[inline]
9775            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9776                setPermissionedProverReturn::_tokenize(ret)
9777            }
9778            #[inline]
9779            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9780                <Self::ReturnTuple<
9781                    '_,
9782                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9783                    .map(Into::into)
9784            }
9785            #[inline]
9786            fn abi_decode_returns_validate(
9787                data: &[u8],
9788            ) -> alloy_sol_types::Result<Self::Return> {
9789                <Self::ReturnTuple<
9790                    '_,
9791                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9792                    .map(Into::into)
9793            }
9794        }
9795    };
9796    #[derive(serde::Serialize, serde::Deserialize)]
9797    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9798    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
9799```solidity
9800function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
9801```*/
9802    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9803    #[derive(Clone)]
9804    pub struct setstateHistoryRetentionPeriodCall {
9805        #[allow(missing_docs)]
9806        pub historySeconds: u32,
9807    }
9808    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
9809    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9810    #[derive(Clone)]
9811    pub struct setstateHistoryRetentionPeriodReturn {}
9812    #[allow(
9813        non_camel_case_types,
9814        non_snake_case,
9815        clippy::pub_underscore_fields,
9816        clippy::style
9817    )]
9818    const _: () = {
9819        use alloy::sol_types as alloy_sol_types;
9820        {
9821            #[doc(hidden)]
9822            #[allow(dead_code)]
9823            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
9824            #[doc(hidden)]
9825            type UnderlyingRustTuple<'a> = (u32,);
9826            #[cfg(test)]
9827            #[allow(dead_code, unreachable_patterns)]
9828            fn _type_assertion(
9829                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9830            ) {
9831                match _t {
9832                    alloy_sol_types::private::AssertTypeEq::<
9833                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9834                    >(_) => {}
9835                }
9836            }
9837            #[automatically_derived]
9838            #[doc(hidden)]
9839            impl ::core::convert::From<setstateHistoryRetentionPeriodCall>
9840            for UnderlyingRustTuple<'_> {
9841                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
9842                    (value.historySeconds,)
9843                }
9844            }
9845            #[automatically_derived]
9846            #[doc(hidden)]
9847            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9848            for setstateHistoryRetentionPeriodCall {
9849                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9850                    Self { historySeconds: tuple.0 }
9851                }
9852            }
9853        }
9854        {
9855            #[doc(hidden)]
9856            #[allow(dead_code)]
9857            type UnderlyingSolTuple<'a> = ();
9858            #[doc(hidden)]
9859            type UnderlyingRustTuple<'a> = ();
9860            #[cfg(test)]
9861            #[allow(dead_code, unreachable_patterns)]
9862            fn _type_assertion(
9863                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9864            ) {
9865                match _t {
9866                    alloy_sol_types::private::AssertTypeEq::<
9867                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9868                    >(_) => {}
9869                }
9870            }
9871            #[automatically_derived]
9872            #[doc(hidden)]
9873            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn>
9874            for UnderlyingRustTuple<'_> {
9875                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
9876                    ()
9877                }
9878            }
9879            #[automatically_derived]
9880            #[doc(hidden)]
9881            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9882            for setstateHistoryRetentionPeriodReturn {
9883                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9884                    Self {}
9885                }
9886            }
9887        }
9888        impl setstateHistoryRetentionPeriodReturn {
9889            fn _tokenize(
9890                &self,
9891            ) -> <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
9892                '_,
9893            > {
9894                ()
9895            }
9896        }
9897        #[automatically_derived]
9898        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
9899            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
9900            type Token<'a> = <Self::Parameters<
9901                'a,
9902            > as alloy_sol_types::SolType>::Token<'a>;
9903            type Return = setstateHistoryRetentionPeriodReturn;
9904            type ReturnTuple<'a> = ();
9905            type ReturnToken<'a> = <Self::ReturnTuple<
9906                'a,
9907            > as alloy_sol_types::SolType>::Token<'a>;
9908            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
9909            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
9910            #[inline]
9911            fn new<'a>(
9912                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9913            ) -> Self {
9914                tuple.into()
9915            }
9916            #[inline]
9917            fn tokenize(&self) -> Self::Token<'_> {
9918                (
9919                    <alloy::sol_types::sol_data::Uint<
9920                        32,
9921                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
9922                )
9923            }
9924            #[inline]
9925            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9926                setstateHistoryRetentionPeriodReturn::_tokenize(ret)
9927            }
9928            #[inline]
9929            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9930                <Self::ReturnTuple<
9931                    '_,
9932                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9933                    .map(Into::into)
9934            }
9935            #[inline]
9936            fn abi_decode_returns_validate(
9937                data: &[u8],
9938            ) -> alloy_sol_types::Result<Self::Return> {
9939                <Self::ReturnTuple<
9940                    '_,
9941                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9942                    .map(Into::into)
9943            }
9944        }
9945    };
9946    #[derive(serde::Serialize, serde::Deserialize)]
9947    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9948    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
9949```solidity
9950function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
9951```*/
9952    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9953    #[derive(Clone)]
9954    pub struct stateHistoryCommitmentsCall(
9955        pub alloy::sol_types::private::primitives::aliases::U256,
9956    );
9957    #[derive(serde::Serialize, serde::Deserialize)]
9958    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9959    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
9960    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9961    #[derive(Clone)]
9962    pub struct stateHistoryCommitmentsReturn {
9963        #[allow(missing_docs)]
9964        pub l1BlockHeight: u64,
9965        #[allow(missing_docs)]
9966        pub l1BlockTimestamp: u64,
9967        #[allow(missing_docs)]
9968        pub hotShotBlockHeight: u64,
9969        #[allow(missing_docs)]
9970        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9971    }
9972    #[allow(
9973        non_camel_case_types,
9974        non_snake_case,
9975        clippy::pub_underscore_fields,
9976        clippy::style
9977    )]
9978    const _: () = {
9979        use alloy::sol_types as alloy_sol_types;
9980        {
9981            #[doc(hidden)]
9982            #[allow(dead_code)]
9983            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9984            #[doc(hidden)]
9985            type UnderlyingRustTuple<'a> = (
9986                alloy::sol_types::private::primitives::aliases::U256,
9987            );
9988            #[cfg(test)]
9989            #[allow(dead_code, unreachable_patterns)]
9990            fn _type_assertion(
9991                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9992            ) {
9993                match _t {
9994                    alloy_sol_types::private::AssertTypeEq::<
9995                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9996                    >(_) => {}
9997                }
9998            }
9999            #[automatically_derived]
10000            #[doc(hidden)]
10001            impl ::core::convert::From<stateHistoryCommitmentsCall>
10002            for UnderlyingRustTuple<'_> {
10003                fn from(value: stateHistoryCommitmentsCall) -> Self {
10004                    (value.0,)
10005                }
10006            }
10007            #[automatically_derived]
10008            #[doc(hidden)]
10009            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10010            for stateHistoryCommitmentsCall {
10011                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10012                    Self(tuple.0)
10013                }
10014            }
10015        }
10016        {
10017            #[doc(hidden)]
10018            #[allow(dead_code)]
10019            type UnderlyingSolTuple<'a> = (
10020                alloy::sol_types::sol_data::Uint<64>,
10021                alloy::sol_types::sol_data::Uint<64>,
10022                alloy::sol_types::sol_data::Uint<64>,
10023                BN254::ScalarField,
10024            );
10025            #[doc(hidden)]
10026            type UnderlyingRustTuple<'a> = (
10027                u64,
10028                u64,
10029                u64,
10030                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10031            );
10032            #[cfg(test)]
10033            #[allow(dead_code, unreachable_patterns)]
10034            fn _type_assertion(
10035                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10036            ) {
10037                match _t {
10038                    alloy_sol_types::private::AssertTypeEq::<
10039                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10040                    >(_) => {}
10041                }
10042            }
10043            #[automatically_derived]
10044            #[doc(hidden)]
10045            impl ::core::convert::From<stateHistoryCommitmentsReturn>
10046            for UnderlyingRustTuple<'_> {
10047                fn from(value: stateHistoryCommitmentsReturn) -> Self {
10048                    (
10049                        value.l1BlockHeight,
10050                        value.l1BlockTimestamp,
10051                        value.hotShotBlockHeight,
10052                        value.hotShotBlockCommRoot,
10053                    )
10054                }
10055            }
10056            #[automatically_derived]
10057            #[doc(hidden)]
10058            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10059            for stateHistoryCommitmentsReturn {
10060                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10061                    Self {
10062                        l1BlockHeight: tuple.0,
10063                        l1BlockTimestamp: tuple.1,
10064                        hotShotBlockHeight: tuple.2,
10065                        hotShotBlockCommRoot: tuple.3,
10066                    }
10067                }
10068            }
10069        }
10070        impl stateHistoryCommitmentsReturn {
10071            fn _tokenize(
10072                &self,
10073            ) -> <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::ReturnToken<
10074                '_,
10075            > {
10076                (
10077                    <alloy::sol_types::sol_data::Uint<
10078                        64,
10079                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
10080                    <alloy::sol_types::sol_data::Uint<
10081                        64,
10082                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
10083                    <alloy::sol_types::sol_data::Uint<
10084                        64,
10085                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
10086                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
10087                        &self.hotShotBlockCommRoot,
10088                    ),
10089                )
10090            }
10091        }
10092        #[automatically_derived]
10093        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
10094            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10095            type Token<'a> = <Self::Parameters<
10096                'a,
10097            > as alloy_sol_types::SolType>::Token<'a>;
10098            type Return = stateHistoryCommitmentsReturn;
10099            type ReturnTuple<'a> = (
10100                alloy::sol_types::sol_data::Uint<64>,
10101                alloy::sol_types::sol_data::Uint<64>,
10102                alloy::sol_types::sol_data::Uint<64>,
10103                BN254::ScalarField,
10104            );
10105            type ReturnToken<'a> = <Self::ReturnTuple<
10106                'a,
10107            > as alloy_sol_types::SolType>::Token<'a>;
10108            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
10109            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
10110            #[inline]
10111            fn new<'a>(
10112                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10113            ) -> Self {
10114                tuple.into()
10115            }
10116            #[inline]
10117            fn tokenize(&self) -> Self::Token<'_> {
10118                (
10119                    <alloy::sol_types::sol_data::Uint<
10120                        256,
10121                    > as alloy_sol_types::SolType>::tokenize(&self.0),
10122                )
10123            }
10124            #[inline]
10125            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10126                stateHistoryCommitmentsReturn::_tokenize(ret)
10127            }
10128            #[inline]
10129            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10130                <Self::ReturnTuple<
10131                    '_,
10132                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10133                    .map(Into::into)
10134            }
10135            #[inline]
10136            fn abi_decode_returns_validate(
10137                data: &[u8],
10138            ) -> alloy_sol_types::Result<Self::Return> {
10139                <Self::ReturnTuple<
10140                    '_,
10141                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10142                    .map(Into::into)
10143            }
10144        }
10145    };
10146    #[derive(serde::Serialize, serde::Deserialize)]
10147    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10148    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
10149```solidity
10150function stateHistoryFirstIndex() external view returns (uint64);
10151```*/
10152    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10153    #[derive(Clone)]
10154    pub struct stateHistoryFirstIndexCall;
10155    #[derive(serde::Serialize, serde::Deserialize)]
10156    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10157    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
10158    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10159    #[derive(Clone)]
10160    pub struct stateHistoryFirstIndexReturn {
10161        #[allow(missing_docs)]
10162        pub _0: u64,
10163    }
10164    #[allow(
10165        non_camel_case_types,
10166        non_snake_case,
10167        clippy::pub_underscore_fields,
10168        clippy::style
10169    )]
10170    const _: () = {
10171        use alloy::sol_types as alloy_sol_types;
10172        {
10173            #[doc(hidden)]
10174            #[allow(dead_code)]
10175            type UnderlyingSolTuple<'a> = ();
10176            #[doc(hidden)]
10177            type UnderlyingRustTuple<'a> = ();
10178            #[cfg(test)]
10179            #[allow(dead_code, unreachable_patterns)]
10180            fn _type_assertion(
10181                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10182            ) {
10183                match _t {
10184                    alloy_sol_types::private::AssertTypeEq::<
10185                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10186                    >(_) => {}
10187                }
10188            }
10189            #[automatically_derived]
10190            #[doc(hidden)]
10191            impl ::core::convert::From<stateHistoryFirstIndexCall>
10192            for UnderlyingRustTuple<'_> {
10193                fn from(value: stateHistoryFirstIndexCall) -> Self {
10194                    ()
10195                }
10196            }
10197            #[automatically_derived]
10198            #[doc(hidden)]
10199            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10200            for stateHistoryFirstIndexCall {
10201                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10202                    Self
10203                }
10204            }
10205        }
10206        {
10207            #[doc(hidden)]
10208            #[allow(dead_code)]
10209            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10210            #[doc(hidden)]
10211            type UnderlyingRustTuple<'a> = (u64,);
10212            #[cfg(test)]
10213            #[allow(dead_code, unreachable_patterns)]
10214            fn _type_assertion(
10215                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10216            ) {
10217                match _t {
10218                    alloy_sol_types::private::AssertTypeEq::<
10219                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10220                    >(_) => {}
10221                }
10222            }
10223            #[automatically_derived]
10224            #[doc(hidden)]
10225            impl ::core::convert::From<stateHistoryFirstIndexReturn>
10226            for UnderlyingRustTuple<'_> {
10227                fn from(value: stateHistoryFirstIndexReturn) -> Self {
10228                    (value._0,)
10229                }
10230            }
10231            #[automatically_derived]
10232            #[doc(hidden)]
10233            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10234            for stateHistoryFirstIndexReturn {
10235                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10236                    Self { _0: tuple.0 }
10237                }
10238            }
10239        }
10240        #[automatically_derived]
10241        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
10242            type Parameters<'a> = ();
10243            type Token<'a> = <Self::Parameters<
10244                'a,
10245            > as alloy_sol_types::SolType>::Token<'a>;
10246            type Return = u64;
10247            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10248            type ReturnToken<'a> = <Self::ReturnTuple<
10249                'a,
10250            > as alloy_sol_types::SolType>::Token<'a>;
10251            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
10252            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
10253            #[inline]
10254            fn new<'a>(
10255                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10256            ) -> Self {
10257                tuple.into()
10258            }
10259            #[inline]
10260            fn tokenize(&self) -> Self::Token<'_> {
10261                ()
10262            }
10263            #[inline]
10264            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10265                (
10266                    <alloy::sol_types::sol_data::Uint<
10267                        64,
10268                    > as alloy_sol_types::SolType>::tokenize(ret),
10269                )
10270            }
10271            #[inline]
10272            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10273                <Self::ReturnTuple<
10274                    '_,
10275                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10276                    .map(|r| {
10277                        let r: stateHistoryFirstIndexReturn = r.into();
10278                        r._0
10279                    })
10280            }
10281            #[inline]
10282            fn abi_decode_returns_validate(
10283                data: &[u8],
10284            ) -> alloy_sol_types::Result<Self::Return> {
10285                <Self::ReturnTuple<
10286                    '_,
10287                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10288                    .map(|r| {
10289                        let r: stateHistoryFirstIndexReturn = r.into();
10290                        r._0
10291                    })
10292            }
10293        }
10294    };
10295    #[derive(serde::Serialize, serde::Deserialize)]
10296    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10297    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
10298```solidity
10299function stateHistoryRetentionPeriod() external view returns (uint32);
10300```*/
10301    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10302    #[derive(Clone)]
10303    pub struct stateHistoryRetentionPeriodCall;
10304    #[derive(serde::Serialize, serde::Deserialize)]
10305    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10306    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
10307    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10308    #[derive(Clone)]
10309    pub struct stateHistoryRetentionPeriodReturn {
10310        #[allow(missing_docs)]
10311        pub _0: u32,
10312    }
10313    #[allow(
10314        non_camel_case_types,
10315        non_snake_case,
10316        clippy::pub_underscore_fields,
10317        clippy::style
10318    )]
10319    const _: () = {
10320        use alloy::sol_types as alloy_sol_types;
10321        {
10322            #[doc(hidden)]
10323            #[allow(dead_code)]
10324            type UnderlyingSolTuple<'a> = ();
10325            #[doc(hidden)]
10326            type UnderlyingRustTuple<'a> = ();
10327            #[cfg(test)]
10328            #[allow(dead_code, unreachable_patterns)]
10329            fn _type_assertion(
10330                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10331            ) {
10332                match _t {
10333                    alloy_sol_types::private::AssertTypeEq::<
10334                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10335                    >(_) => {}
10336                }
10337            }
10338            #[automatically_derived]
10339            #[doc(hidden)]
10340            impl ::core::convert::From<stateHistoryRetentionPeriodCall>
10341            for UnderlyingRustTuple<'_> {
10342                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
10343                    ()
10344                }
10345            }
10346            #[automatically_derived]
10347            #[doc(hidden)]
10348            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10349            for stateHistoryRetentionPeriodCall {
10350                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10351                    Self
10352                }
10353            }
10354        }
10355        {
10356            #[doc(hidden)]
10357            #[allow(dead_code)]
10358            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
10359            #[doc(hidden)]
10360            type UnderlyingRustTuple<'a> = (u32,);
10361            #[cfg(test)]
10362            #[allow(dead_code, unreachable_patterns)]
10363            fn _type_assertion(
10364                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10365            ) {
10366                match _t {
10367                    alloy_sol_types::private::AssertTypeEq::<
10368                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10369                    >(_) => {}
10370                }
10371            }
10372            #[automatically_derived]
10373            #[doc(hidden)]
10374            impl ::core::convert::From<stateHistoryRetentionPeriodReturn>
10375            for UnderlyingRustTuple<'_> {
10376                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
10377                    (value._0,)
10378                }
10379            }
10380            #[automatically_derived]
10381            #[doc(hidden)]
10382            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10383            for stateHistoryRetentionPeriodReturn {
10384                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10385                    Self { _0: tuple.0 }
10386                }
10387            }
10388        }
10389        #[automatically_derived]
10390        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
10391            type Parameters<'a> = ();
10392            type Token<'a> = <Self::Parameters<
10393                'a,
10394            > as alloy_sol_types::SolType>::Token<'a>;
10395            type Return = u32;
10396            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
10397            type ReturnToken<'a> = <Self::ReturnTuple<
10398                'a,
10399            > as alloy_sol_types::SolType>::Token<'a>;
10400            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
10401            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
10402            #[inline]
10403            fn new<'a>(
10404                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10405            ) -> Self {
10406                tuple.into()
10407            }
10408            #[inline]
10409            fn tokenize(&self) -> Self::Token<'_> {
10410                ()
10411            }
10412            #[inline]
10413            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10414                (
10415                    <alloy::sol_types::sol_data::Uint<
10416                        32,
10417                    > as alloy_sol_types::SolType>::tokenize(ret),
10418                )
10419            }
10420            #[inline]
10421            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10422                <Self::ReturnTuple<
10423                    '_,
10424                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10425                    .map(|r| {
10426                        let r: stateHistoryRetentionPeriodReturn = r.into();
10427                        r._0
10428                    })
10429            }
10430            #[inline]
10431            fn abi_decode_returns_validate(
10432                data: &[u8],
10433            ) -> alloy_sol_types::Result<Self::Return> {
10434                <Self::ReturnTuple<
10435                    '_,
10436                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10437                    .map(|r| {
10438                        let r: stateHistoryRetentionPeriodReturn = r.into();
10439                        r._0
10440                    })
10441            }
10442        }
10443    };
10444    #[derive(serde::Serialize, serde::Deserialize)]
10445    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10446    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
10447```solidity
10448function transferOwnership(address newOwner) external;
10449```*/
10450    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10451    #[derive(Clone)]
10452    pub struct transferOwnershipCall {
10453        #[allow(missing_docs)]
10454        pub newOwner: alloy::sol_types::private::Address,
10455    }
10456    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
10457    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10458    #[derive(Clone)]
10459    pub struct transferOwnershipReturn {}
10460    #[allow(
10461        non_camel_case_types,
10462        non_snake_case,
10463        clippy::pub_underscore_fields,
10464        clippy::style
10465    )]
10466    const _: () = {
10467        use alloy::sol_types as alloy_sol_types;
10468        {
10469            #[doc(hidden)]
10470            #[allow(dead_code)]
10471            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10472            #[doc(hidden)]
10473            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10474            #[cfg(test)]
10475            #[allow(dead_code, unreachable_patterns)]
10476            fn _type_assertion(
10477                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10478            ) {
10479                match _t {
10480                    alloy_sol_types::private::AssertTypeEq::<
10481                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10482                    >(_) => {}
10483                }
10484            }
10485            #[automatically_derived]
10486            #[doc(hidden)]
10487            impl ::core::convert::From<transferOwnershipCall>
10488            for UnderlyingRustTuple<'_> {
10489                fn from(value: transferOwnershipCall) -> Self {
10490                    (value.newOwner,)
10491                }
10492            }
10493            #[automatically_derived]
10494            #[doc(hidden)]
10495            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10496            for transferOwnershipCall {
10497                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10498                    Self { newOwner: tuple.0 }
10499                }
10500            }
10501        }
10502        {
10503            #[doc(hidden)]
10504            #[allow(dead_code)]
10505            type UnderlyingSolTuple<'a> = ();
10506            #[doc(hidden)]
10507            type UnderlyingRustTuple<'a> = ();
10508            #[cfg(test)]
10509            #[allow(dead_code, unreachable_patterns)]
10510            fn _type_assertion(
10511                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10512            ) {
10513                match _t {
10514                    alloy_sol_types::private::AssertTypeEq::<
10515                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10516                    >(_) => {}
10517                }
10518            }
10519            #[automatically_derived]
10520            #[doc(hidden)]
10521            impl ::core::convert::From<transferOwnershipReturn>
10522            for UnderlyingRustTuple<'_> {
10523                fn from(value: transferOwnershipReturn) -> Self {
10524                    ()
10525                }
10526            }
10527            #[automatically_derived]
10528            #[doc(hidden)]
10529            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10530            for transferOwnershipReturn {
10531                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10532                    Self {}
10533                }
10534            }
10535        }
10536        impl transferOwnershipReturn {
10537            fn _tokenize(
10538                &self,
10539            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10540                ()
10541            }
10542        }
10543        #[automatically_derived]
10544        impl alloy_sol_types::SolCall for transferOwnershipCall {
10545            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
10546            type Token<'a> = <Self::Parameters<
10547                'a,
10548            > as alloy_sol_types::SolType>::Token<'a>;
10549            type Return = transferOwnershipReturn;
10550            type ReturnTuple<'a> = ();
10551            type ReturnToken<'a> = <Self::ReturnTuple<
10552                'a,
10553            > as alloy_sol_types::SolType>::Token<'a>;
10554            const SIGNATURE: &'static str = "transferOwnership(address)";
10555            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
10556            #[inline]
10557            fn new<'a>(
10558                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10559            ) -> Self {
10560                tuple.into()
10561            }
10562            #[inline]
10563            fn tokenize(&self) -> Self::Token<'_> {
10564                (
10565                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10566                        &self.newOwner,
10567                    ),
10568                )
10569            }
10570            #[inline]
10571            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10572                transferOwnershipReturn::_tokenize(ret)
10573            }
10574            #[inline]
10575            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10576                <Self::ReturnTuple<
10577                    '_,
10578                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10579                    .map(Into::into)
10580            }
10581            #[inline]
10582            fn abi_decode_returns_validate(
10583                data: &[u8],
10584            ) -> alloy_sol_types::Result<Self::Return> {
10585                <Self::ReturnTuple<
10586                    '_,
10587                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10588                    .map(Into::into)
10589            }
10590        }
10591    };
10592    #[derive(serde::Serialize, serde::Deserialize)]
10593    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10594    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
10595```solidity
10596function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
10597```*/
10598    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10599    #[derive(Clone)]
10600    pub struct upgradeToAndCallCall {
10601        #[allow(missing_docs)]
10602        pub newImplementation: alloy::sol_types::private::Address,
10603        #[allow(missing_docs)]
10604        pub data: alloy::sol_types::private::Bytes,
10605    }
10606    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
10607    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10608    #[derive(Clone)]
10609    pub struct upgradeToAndCallReturn {}
10610    #[allow(
10611        non_camel_case_types,
10612        non_snake_case,
10613        clippy::pub_underscore_fields,
10614        clippy::style
10615    )]
10616    const _: () = {
10617        use alloy::sol_types as alloy_sol_types;
10618        {
10619            #[doc(hidden)]
10620            #[allow(dead_code)]
10621            type UnderlyingSolTuple<'a> = (
10622                alloy::sol_types::sol_data::Address,
10623                alloy::sol_types::sol_data::Bytes,
10624            );
10625            #[doc(hidden)]
10626            type UnderlyingRustTuple<'a> = (
10627                alloy::sol_types::private::Address,
10628                alloy::sol_types::private::Bytes,
10629            );
10630            #[cfg(test)]
10631            #[allow(dead_code, unreachable_patterns)]
10632            fn _type_assertion(
10633                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10634            ) {
10635                match _t {
10636                    alloy_sol_types::private::AssertTypeEq::<
10637                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10638                    >(_) => {}
10639                }
10640            }
10641            #[automatically_derived]
10642            #[doc(hidden)]
10643            impl ::core::convert::From<upgradeToAndCallCall>
10644            for UnderlyingRustTuple<'_> {
10645                fn from(value: upgradeToAndCallCall) -> Self {
10646                    (value.newImplementation, value.data)
10647                }
10648            }
10649            #[automatically_derived]
10650            #[doc(hidden)]
10651            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10652            for upgradeToAndCallCall {
10653                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10654                    Self {
10655                        newImplementation: tuple.0,
10656                        data: tuple.1,
10657                    }
10658                }
10659            }
10660        }
10661        {
10662            #[doc(hidden)]
10663            #[allow(dead_code)]
10664            type UnderlyingSolTuple<'a> = ();
10665            #[doc(hidden)]
10666            type UnderlyingRustTuple<'a> = ();
10667            #[cfg(test)]
10668            #[allow(dead_code, unreachable_patterns)]
10669            fn _type_assertion(
10670                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10671            ) {
10672                match _t {
10673                    alloy_sol_types::private::AssertTypeEq::<
10674                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10675                    >(_) => {}
10676                }
10677            }
10678            #[automatically_derived]
10679            #[doc(hidden)]
10680            impl ::core::convert::From<upgradeToAndCallReturn>
10681            for UnderlyingRustTuple<'_> {
10682                fn from(value: upgradeToAndCallReturn) -> Self {
10683                    ()
10684                }
10685            }
10686            #[automatically_derived]
10687            #[doc(hidden)]
10688            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10689            for upgradeToAndCallReturn {
10690                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10691                    Self {}
10692                }
10693            }
10694        }
10695        impl upgradeToAndCallReturn {
10696            fn _tokenize(
10697                &self,
10698            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10699                ()
10700            }
10701        }
10702        #[automatically_derived]
10703        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
10704            type Parameters<'a> = (
10705                alloy::sol_types::sol_data::Address,
10706                alloy::sol_types::sol_data::Bytes,
10707            );
10708            type Token<'a> = <Self::Parameters<
10709                'a,
10710            > as alloy_sol_types::SolType>::Token<'a>;
10711            type Return = upgradeToAndCallReturn;
10712            type ReturnTuple<'a> = ();
10713            type ReturnToken<'a> = <Self::ReturnTuple<
10714                'a,
10715            > as alloy_sol_types::SolType>::Token<'a>;
10716            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
10717            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
10718            #[inline]
10719            fn new<'a>(
10720                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10721            ) -> Self {
10722                tuple.into()
10723            }
10724            #[inline]
10725            fn tokenize(&self) -> Self::Token<'_> {
10726                (
10727                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10728                        &self.newImplementation,
10729                    ),
10730                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
10731                        &self.data,
10732                    ),
10733                )
10734            }
10735            #[inline]
10736            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10737                upgradeToAndCallReturn::_tokenize(ret)
10738            }
10739            #[inline]
10740            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10741                <Self::ReturnTuple<
10742                    '_,
10743                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10744                    .map(Into::into)
10745            }
10746            #[inline]
10747            fn abi_decode_returns_validate(
10748                data: &[u8],
10749            ) -> alloy_sol_types::Result<Self::Return> {
10750                <Self::ReturnTuple<
10751                    '_,
10752                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10753                    .map(Into::into)
10754            }
10755        }
10756    };
10757    ///Container for all the [`LightClientArbitrum`](self) function calls.
10758    #[derive(serde::Serialize, serde::Deserialize)]
10759    #[derive()]
10760    pub enum LightClientArbitrumCalls {
10761        #[allow(missing_docs)]
10762        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
10763        #[allow(missing_docs)]
10764        _getVk(_getVkCall),
10765        #[allow(missing_docs)]
10766        currentBlockNumber(currentBlockNumberCall),
10767        #[allow(missing_docs)]
10768        disablePermissionedProverMode(disablePermissionedProverModeCall),
10769        #[allow(missing_docs)]
10770        finalizedState(finalizedStateCall),
10771        #[allow(missing_docs)]
10772        genesisStakeTableState(genesisStakeTableStateCall),
10773        #[allow(missing_docs)]
10774        genesisState(genesisStateCall),
10775        #[allow(missing_docs)]
10776        getHotShotCommitment(getHotShotCommitmentCall),
10777        #[allow(missing_docs)]
10778        getStateHistoryCount(getStateHistoryCountCall),
10779        #[allow(missing_docs)]
10780        getVersion(getVersionCall),
10781        #[allow(missing_docs)]
10782        initialize(initializeCall),
10783        #[allow(missing_docs)]
10784        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
10785        #[allow(missing_docs)]
10786        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
10787        #[allow(missing_docs)]
10788        newFinalizedState(newFinalizedStateCall),
10789        #[allow(missing_docs)]
10790        owner(ownerCall),
10791        #[allow(missing_docs)]
10792        permissionedProver(permissionedProverCall),
10793        #[allow(missing_docs)]
10794        proxiableUUID(proxiableUUIDCall),
10795        #[allow(missing_docs)]
10796        renounceOwnership(renounceOwnershipCall),
10797        #[allow(missing_docs)]
10798        setPermissionedProver(setPermissionedProverCall),
10799        #[allow(missing_docs)]
10800        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
10801        #[allow(missing_docs)]
10802        stateHistoryCommitments(stateHistoryCommitmentsCall),
10803        #[allow(missing_docs)]
10804        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
10805        #[allow(missing_docs)]
10806        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
10807        #[allow(missing_docs)]
10808        transferOwnership(transferOwnershipCall),
10809        #[allow(missing_docs)]
10810        upgradeToAndCall(upgradeToAndCallCall),
10811    }
10812    #[automatically_derived]
10813    impl LightClientArbitrumCalls {
10814        /// All the selectors of this enum.
10815        ///
10816        /// Note that the selectors might not be in the same order as the variants.
10817        /// No guarantees are made about the order of the selectors.
10818        ///
10819        /// Prefer using `SolInterface` methods instead.
10820        pub const SELECTORS: &'static [[u8; 4usize]] = &[
10821            [1u8, 63u8, 165u8, 252u8],
10822            [2u8, 181u8, 146u8, 243u8],
10823            [13u8, 142u8, 110u8, 44u8],
10824            [18u8, 23u8, 60u8, 44u8],
10825            [32u8, 99u8, 212u8, 247u8],
10826            [47u8, 121u8, 136u8, 157u8],
10827            [49u8, 61u8, 247u8, 177u8],
10828            [55u8, 142u8, 194u8, 59u8],
10829            [66u8, 109u8, 49u8, 148u8],
10830            [79u8, 30u8, 242u8, 134u8],
10831            [82u8, 209u8, 144u8, 45u8],
10832            [105u8, 204u8, 106u8, 4u8],
10833            [113u8, 80u8, 24u8, 166u8],
10834            [130u8, 110u8, 65u8, 252u8],
10835            [133u8, 132u8, 210u8, 63u8],
10836            [141u8, 165u8, 203u8, 91u8],
10837            [150u8, 193u8, 202u8, 97u8],
10838            [155u8, 170u8, 60u8, 201u8],
10839            [159u8, 219u8, 84u8, 167u8],
10840            [173u8, 60u8, 177u8, 204u8],
10841            [194u8, 59u8, 158u8, 158u8],
10842            [210u8, 77u8, 147u8, 61u8],
10843            [224u8, 48u8, 51u8, 1u8],
10844            [242u8, 253u8, 227u8, 139u8],
10845            [249u8, 229u8, 13u8, 25u8],
10846        ];
10847    }
10848    #[automatically_derived]
10849    impl alloy_sol_types::SolInterface for LightClientArbitrumCalls {
10850        const NAME: &'static str = "LightClientArbitrumCalls";
10851        const MIN_DATA_LENGTH: usize = 0usize;
10852        const COUNT: usize = 25usize;
10853        #[inline]
10854        fn selector(&self) -> [u8; 4] {
10855            match self {
10856                Self::UPGRADE_INTERFACE_VERSION(_) => {
10857                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
10858                }
10859                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
10860                Self::currentBlockNumber(_) => {
10861                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
10862                }
10863                Self::disablePermissionedProverMode(_) => {
10864                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
10865                }
10866                Self::finalizedState(_) => {
10867                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
10868                }
10869                Self::genesisStakeTableState(_) => {
10870                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
10871                }
10872                Self::genesisState(_) => {
10873                    <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR
10874                }
10875                Self::getHotShotCommitment(_) => {
10876                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
10877                }
10878                Self::getStateHistoryCount(_) => {
10879                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
10880                }
10881                Self::getVersion(_) => {
10882                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
10883                }
10884                Self::initialize(_) => {
10885                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
10886                }
10887                Self::isPermissionedProverEnabled(_) => {
10888                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
10889                }
10890                Self::lagOverEscapeHatchThreshold(_) => {
10891                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
10892                }
10893                Self::newFinalizedState(_) => {
10894                    <newFinalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
10895                }
10896                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
10897                Self::permissionedProver(_) => {
10898                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
10899                }
10900                Self::proxiableUUID(_) => {
10901                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
10902                }
10903                Self::renounceOwnership(_) => {
10904                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
10905                }
10906                Self::setPermissionedProver(_) => {
10907                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
10908                }
10909                Self::setstateHistoryRetentionPeriod(_) => {
10910                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
10911                }
10912                Self::stateHistoryCommitments(_) => {
10913                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
10914                }
10915                Self::stateHistoryFirstIndex(_) => {
10916                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
10917                }
10918                Self::stateHistoryRetentionPeriod(_) => {
10919                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
10920                }
10921                Self::transferOwnership(_) => {
10922                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
10923                }
10924                Self::upgradeToAndCall(_) => {
10925                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
10926                }
10927            }
10928        }
10929        #[inline]
10930        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
10931            Self::SELECTORS.get(i).copied()
10932        }
10933        #[inline]
10934        fn valid_selector(selector: [u8; 4]) -> bool {
10935            Self::SELECTORS.binary_search(&selector).is_ok()
10936        }
10937        #[inline]
10938        #[allow(non_snake_case)]
10939        fn abi_decode_raw(
10940            selector: [u8; 4],
10941            data: &[u8],
10942        ) -> alloy_sol_types::Result<Self> {
10943            static DECODE_SHIMS: &[fn(
10944                &[u8],
10945            ) -> alloy_sol_types::Result<LightClientArbitrumCalls>] = &[
10946                {
10947                    fn setPermissionedProver(
10948                        data: &[u8],
10949                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
10950                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
10951                                data,
10952                            )
10953                            .map(LightClientArbitrumCalls::setPermissionedProver)
10954                    }
10955                    setPermissionedProver
10956                },
10957                {
10958                    fn stateHistoryCommitments(
10959                        data: &[u8],
10960                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
10961                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
10962                                data,
10963                            )
10964                            .map(LightClientArbitrumCalls::stateHistoryCommitments)
10965                    }
10966                    stateHistoryCommitments
10967                },
10968                {
10969                    fn getVersion(
10970                        data: &[u8],
10971                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
10972                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
10973                                data,
10974                            )
10975                            .map(LightClientArbitrumCalls::getVersion)
10976                    }
10977                    getVersion
10978                },
10979                {
10980                    fn _getVk(
10981                        data: &[u8],
10982                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
10983                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
10984                            .map(LightClientArbitrumCalls::_getVk)
10985                    }
10986                    _getVk
10987                },
10988                {
10989                    fn newFinalizedState(
10990                        data: &[u8],
10991                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
10992                        <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
10993                                data,
10994                            )
10995                            .map(LightClientArbitrumCalls::newFinalizedState)
10996                    }
10997                    newFinalizedState
10998                },
10999                {
11000                    fn stateHistoryFirstIndex(
11001                        data: &[u8],
11002                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11003                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
11004                                data,
11005                            )
11006                            .map(LightClientArbitrumCalls::stateHistoryFirstIndex)
11007                    }
11008                    stateHistoryFirstIndex
11009                },
11010                {
11011                    fn permissionedProver(
11012                        data: &[u8],
11013                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11014                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
11015                                data,
11016                            )
11017                            .map(LightClientArbitrumCalls::permissionedProver)
11018                    }
11019                    permissionedProver
11020                },
11021                {
11022                    fn currentBlockNumber(
11023                        data: &[u8],
11024                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11025                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
11026                                data,
11027                            )
11028                            .map(LightClientArbitrumCalls::currentBlockNumber)
11029                    }
11030                    currentBlockNumber
11031                },
11032                {
11033                    fn genesisStakeTableState(
11034                        data: &[u8],
11035                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11036                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
11037                                data,
11038                            )
11039                            .map(LightClientArbitrumCalls::genesisStakeTableState)
11040                    }
11041                    genesisStakeTableState
11042                },
11043                {
11044                    fn upgradeToAndCall(
11045                        data: &[u8],
11046                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11047                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
11048                                data,
11049                            )
11050                            .map(LightClientArbitrumCalls::upgradeToAndCall)
11051                    }
11052                    upgradeToAndCall
11053                },
11054                {
11055                    fn proxiableUUID(
11056                        data: &[u8],
11057                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11058                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
11059                                data,
11060                            )
11061                            .map(LightClientArbitrumCalls::proxiableUUID)
11062                    }
11063                    proxiableUUID
11064                },
11065                {
11066                    fn disablePermissionedProverMode(
11067                        data: &[u8],
11068                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11069                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
11070                                data,
11071                            )
11072                            .map(LightClientArbitrumCalls::disablePermissionedProverMode)
11073                    }
11074                    disablePermissionedProverMode
11075                },
11076                {
11077                    fn renounceOwnership(
11078                        data: &[u8],
11079                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11080                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
11081                                data,
11082                            )
11083                            .map(LightClientArbitrumCalls::renounceOwnership)
11084                    }
11085                    renounceOwnership
11086                },
11087                {
11088                    fn isPermissionedProverEnabled(
11089                        data: &[u8],
11090                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11091                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
11092                                data,
11093                            )
11094                            .map(LightClientArbitrumCalls::isPermissionedProverEnabled)
11095                    }
11096                    isPermissionedProverEnabled
11097                },
11098                {
11099                    fn getHotShotCommitment(
11100                        data: &[u8],
11101                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11102                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
11103                                data,
11104                            )
11105                            .map(LightClientArbitrumCalls::getHotShotCommitment)
11106                    }
11107                    getHotShotCommitment
11108                },
11109                {
11110                    fn owner(
11111                        data: &[u8],
11112                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11113                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
11114                            .map(LightClientArbitrumCalls::owner)
11115                    }
11116                    owner
11117                },
11118                {
11119                    fn setstateHistoryRetentionPeriod(
11120                        data: &[u8],
11121                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11122                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
11123                                data,
11124                            )
11125                            .map(
11126                                LightClientArbitrumCalls::setstateHistoryRetentionPeriod,
11127                            )
11128                    }
11129                    setstateHistoryRetentionPeriod
11130                },
11131                {
11132                    fn initialize(
11133                        data: &[u8],
11134                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11135                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
11136                                data,
11137                            )
11138                            .map(LightClientArbitrumCalls::initialize)
11139                    }
11140                    initialize
11141                },
11142                {
11143                    fn finalizedState(
11144                        data: &[u8],
11145                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11146                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
11147                                data,
11148                            )
11149                            .map(LightClientArbitrumCalls::finalizedState)
11150                    }
11151                    finalizedState
11152                },
11153                {
11154                    fn UPGRADE_INTERFACE_VERSION(
11155                        data: &[u8],
11156                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11157                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
11158                                data,
11159                            )
11160                            .map(LightClientArbitrumCalls::UPGRADE_INTERFACE_VERSION)
11161                    }
11162                    UPGRADE_INTERFACE_VERSION
11163                },
11164                {
11165                    fn stateHistoryRetentionPeriod(
11166                        data: &[u8],
11167                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11168                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
11169                                data,
11170                            )
11171                            .map(LightClientArbitrumCalls::stateHistoryRetentionPeriod)
11172                    }
11173                    stateHistoryRetentionPeriod
11174                },
11175                {
11176                    fn genesisState(
11177                        data: &[u8],
11178                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11179                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
11180                                data,
11181                            )
11182                            .map(LightClientArbitrumCalls::genesisState)
11183                    }
11184                    genesisState
11185                },
11186                {
11187                    fn lagOverEscapeHatchThreshold(
11188                        data: &[u8],
11189                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11190                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
11191                                data,
11192                            )
11193                            .map(LightClientArbitrumCalls::lagOverEscapeHatchThreshold)
11194                    }
11195                    lagOverEscapeHatchThreshold
11196                },
11197                {
11198                    fn transferOwnership(
11199                        data: &[u8],
11200                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11201                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
11202                                data,
11203                            )
11204                            .map(LightClientArbitrumCalls::transferOwnership)
11205                    }
11206                    transferOwnership
11207                },
11208                {
11209                    fn getStateHistoryCount(
11210                        data: &[u8],
11211                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11212                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
11213                                data,
11214                            )
11215                            .map(LightClientArbitrumCalls::getStateHistoryCount)
11216                    }
11217                    getStateHistoryCount
11218                },
11219            ];
11220            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
11221                return Err(
11222                    alloy_sol_types::Error::unknown_selector(
11223                        <Self as alloy_sol_types::SolInterface>::NAME,
11224                        selector,
11225                    ),
11226                );
11227            };
11228            DECODE_SHIMS[idx](data)
11229        }
11230        #[inline]
11231        #[allow(non_snake_case)]
11232        fn abi_decode_raw_validate(
11233            selector: [u8; 4],
11234            data: &[u8],
11235        ) -> alloy_sol_types::Result<Self> {
11236            static DECODE_VALIDATE_SHIMS: &[fn(
11237                &[u8],
11238            ) -> alloy_sol_types::Result<LightClientArbitrumCalls>] = &[
11239                {
11240                    fn setPermissionedProver(
11241                        data: &[u8],
11242                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11243                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11244                                data,
11245                            )
11246                            .map(LightClientArbitrumCalls::setPermissionedProver)
11247                    }
11248                    setPermissionedProver
11249                },
11250                {
11251                    fn stateHistoryCommitments(
11252                        data: &[u8],
11253                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11254                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11255                                data,
11256                            )
11257                            .map(LightClientArbitrumCalls::stateHistoryCommitments)
11258                    }
11259                    stateHistoryCommitments
11260                },
11261                {
11262                    fn getVersion(
11263                        data: &[u8],
11264                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11265                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11266                                data,
11267                            )
11268                            .map(LightClientArbitrumCalls::getVersion)
11269                    }
11270                    getVersion
11271                },
11272                {
11273                    fn _getVk(
11274                        data: &[u8],
11275                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11276                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11277                                data,
11278                            )
11279                            .map(LightClientArbitrumCalls::_getVk)
11280                    }
11281                    _getVk
11282                },
11283                {
11284                    fn newFinalizedState(
11285                        data: &[u8],
11286                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11287                        <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11288                                data,
11289                            )
11290                            .map(LightClientArbitrumCalls::newFinalizedState)
11291                    }
11292                    newFinalizedState
11293                },
11294                {
11295                    fn stateHistoryFirstIndex(
11296                        data: &[u8],
11297                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11298                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11299                                data,
11300                            )
11301                            .map(LightClientArbitrumCalls::stateHistoryFirstIndex)
11302                    }
11303                    stateHistoryFirstIndex
11304                },
11305                {
11306                    fn permissionedProver(
11307                        data: &[u8],
11308                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11309                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11310                                data,
11311                            )
11312                            .map(LightClientArbitrumCalls::permissionedProver)
11313                    }
11314                    permissionedProver
11315                },
11316                {
11317                    fn currentBlockNumber(
11318                        data: &[u8],
11319                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11320                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11321                                data,
11322                            )
11323                            .map(LightClientArbitrumCalls::currentBlockNumber)
11324                    }
11325                    currentBlockNumber
11326                },
11327                {
11328                    fn genesisStakeTableState(
11329                        data: &[u8],
11330                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11331                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11332                                data,
11333                            )
11334                            .map(LightClientArbitrumCalls::genesisStakeTableState)
11335                    }
11336                    genesisStakeTableState
11337                },
11338                {
11339                    fn upgradeToAndCall(
11340                        data: &[u8],
11341                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11342                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11343                                data,
11344                            )
11345                            .map(LightClientArbitrumCalls::upgradeToAndCall)
11346                    }
11347                    upgradeToAndCall
11348                },
11349                {
11350                    fn proxiableUUID(
11351                        data: &[u8],
11352                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11353                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11354                                data,
11355                            )
11356                            .map(LightClientArbitrumCalls::proxiableUUID)
11357                    }
11358                    proxiableUUID
11359                },
11360                {
11361                    fn disablePermissionedProverMode(
11362                        data: &[u8],
11363                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11364                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11365                                data,
11366                            )
11367                            .map(LightClientArbitrumCalls::disablePermissionedProverMode)
11368                    }
11369                    disablePermissionedProverMode
11370                },
11371                {
11372                    fn renounceOwnership(
11373                        data: &[u8],
11374                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11375                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11376                                data,
11377                            )
11378                            .map(LightClientArbitrumCalls::renounceOwnership)
11379                    }
11380                    renounceOwnership
11381                },
11382                {
11383                    fn isPermissionedProverEnabled(
11384                        data: &[u8],
11385                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11386                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11387                                data,
11388                            )
11389                            .map(LightClientArbitrumCalls::isPermissionedProverEnabled)
11390                    }
11391                    isPermissionedProverEnabled
11392                },
11393                {
11394                    fn getHotShotCommitment(
11395                        data: &[u8],
11396                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11397                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11398                                data,
11399                            )
11400                            .map(LightClientArbitrumCalls::getHotShotCommitment)
11401                    }
11402                    getHotShotCommitment
11403                },
11404                {
11405                    fn owner(
11406                        data: &[u8],
11407                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11408                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11409                                data,
11410                            )
11411                            .map(LightClientArbitrumCalls::owner)
11412                    }
11413                    owner
11414                },
11415                {
11416                    fn setstateHistoryRetentionPeriod(
11417                        data: &[u8],
11418                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11419                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11420                                data,
11421                            )
11422                            .map(
11423                                LightClientArbitrumCalls::setstateHistoryRetentionPeriod,
11424                            )
11425                    }
11426                    setstateHistoryRetentionPeriod
11427                },
11428                {
11429                    fn initialize(
11430                        data: &[u8],
11431                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11432                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11433                                data,
11434                            )
11435                            .map(LightClientArbitrumCalls::initialize)
11436                    }
11437                    initialize
11438                },
11439                {
11440                    fn finalizedState(
11441                        data: &[u8],
11442                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11443                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11444                                data,
11445                            )
11446                            .map(LightClientArbitrumCalls::finalizedState)
11447                    }
11448                    finalizedState
11449                },
11450                {
11451                    fn UPGRADE_INTERFACE_VERSION(
11452                        data: &[u8],
11453                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11454                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11455                                data,
11456                            )
11457                            .map(LightClientArbitrumCalls::UPGRADE_INTERFACE_VERSION)
11458                    }
11459                    UPGRADE_INTERFACE_VERSION
11460                },
11461                {
11462                    fn stateHistoryRetentionPeriod(
11463                        data: &[u8],
11464                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11465                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11466                                data,
11467                            )
11468                            .map(LightClientArbitrumCalls::stateHistoryRetentionPeriod)
11469                    }
11470                    stateHistoryRetentionPeriod
11471                },
11472                {
11473                    fn genesisState(
11474                        data: &[u8],
11475                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11476                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11477                                data,
11478                            )
11479                            .map(LightClientArbitrumCalls::genesisState)
11480                    }
11481                    genesisState
11482                },
11483                {
11484                    fn lagOverEscapeHatchThreshold(
11485                        data: &[u8],
11486                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11487                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11488                                data,
11489                            )
11490                            .map(LightClientArbitrumCalls::lagOverEscapeHatchThreshold)
11491                    }
11492                    lagOverEscapeHatchThreshold
11493                },
11494                {
11495                    fn transferOwnership(
11496                        data: &[u8],
11497                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11498                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11499                                data,
11500                            )
11501                            .map(LightClientArbitrumCalls::transferOwnership)
11502                    }
11503                    transferOwnership
11504                },
11505                {
11506                    fn getStateHistoryCount(
11507                        data: &[u8],
11508                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11509                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11510                                data,
11511                            )
11512                            .map(LightClientArbitrumCalls::getStateHistoryCount)
11513                    }
11514                    getStateHistoryCount
11515                },
11516            ];
11517            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
11518                return Err(
11519                    alloy_sol_types::Error::unknown_selector(
11520                        <Self as alloy_sol_types::SolInterface>::NAME,
11521                        selector,
11522                    ),
11523                );
11524            };
11525            DECODE_VALIDATE_SHIMS[idx](data)
11526        }
11527        #[inline]
11528        fn abi_encoded_size(&self) -> usize {
11529            match self {
11530                Self::UPGRADE_INTERFACE_VERSION(inner) => {
11531                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
11532                        inner,
11533                    )
11534                }
11535                Self::_getVk(inner) => {
11536                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11537                }
11538                Self::currentBlockNumber(inner) => {
11539                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
11540                        inner,
11541                    )
11542                }
11543                Self::disablePermissionedProverMode(inner) => {
11544                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
11545                        inner,
11546                    )
11547                }
11548                Self::finalizedState(inner) => {
11549                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11550                        inner,
11551                    )
11552                }
11553                Self::genesisStakeTableState(inner) => {
11554                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11555                        inner,
11556                    )
11557                }
11558                Self::genesisState(inner) => {
11559                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11560                        inner,
11561                    )
11562                }
11563                Self::getHotShotCommitment(inner) => {
11564                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
11565                        inner,
11566                    )
11567                }
11568                Self::getStateHistoryCount(inner) => {
11569                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
11570                        inner,
11571                    )
11572                }
11573                Self::getVersion(inner) => {
11574                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11575                }
11576                Self::initialize(inner) => {
11577                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11578                }
11579                Self::isPermissionedProverEnabled(inner) => {
11580                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
11581                        inner,
11582                    )
11583                }
11584                Self::lagOverEscapeHatchThreshold(inner) => {
11585                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
11586                        inner,
11587                    )
11588                }
11589                Self::newFinalizedState(inner) => {
11590                    <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11591                        inner,
11592                    )
11593                }
11594                Self::owner(inner) => {
11595                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11596                }
11597                Self::permissionedProver(inner) => {
11598                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
11599                        inner,
11600                    )
11601                }
11602                Self::proxiableUUID(inner) => {
11603                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
11604                        inner,
11605                    )
11606                }
11607                Self::renounceOwnership(inner) => {
11608                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
11609                        inner,
11610                    )
11611                }
11612                Self::setPermissionedProver(inner) => {
11613                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
11614                        inner,
11615                    )
11616                }
11617                Self::setstateHistoryRetentionPeriod(inner) => {
11618                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
11619                        inner,
11620                    )
11621                }
11622                Self::stateHistoryCommitments(inner) => {
11623                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
11624                        inner,
11625                    )
11626                }
11627                Self::stateHistoryFirstIndex(inner) => {
11628                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
11629                        inner,
11630                    )
11631                }
11632                Self::stateHistoryRetentionPeriod(inner) => {
11633                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
11634                        inner,
11635                    )
11636                }
11637                Self::transferOwnership(inner) => {
11638                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
11639                        inner,
11640                    )
11641                }
11642                Self::upgradeToAndCall(inner) => {
11643                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
11644                        inner,
11645                    )
11646                }
11647            }
11648        }
11649        #[inline]
11650        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
11651            match self {
11652                Self::UPGRADE_INTERFACE_VERSION(inner) => {
11653                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
11654                        inner,
11655                        out,
11656                    )
11657                }
11658                Self::_getVk(inner) => {
11659                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
11660                }
11661                Self::currentBlockNumber(inner) => {
11662                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
11663                        inner,
11664                        out,
11665                    )
11666                }
11667                Self::disablePermissionedProverMode(inner) => {
11668                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
11669                        inner,
11670                        out,
11671                    )
11672                }
11673                Self::finalizedState(inner) => {
11674                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
11675                        inner,
11676                        out,
11677                    )
11678                }
11679                Self::genesisStakeTableState(inner) => {
11680                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
11681                        inner,
11682                        out,
11683                    )
11684                }
11685                Self::genesisState(inner) => {
11686                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
11687                        inner,
11688                        out,
11689                    )
11690                }
11691                Self::getHotShotCommitment(inner) => {
11692                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
11693                        inner,
11694                        out,
11695                    )
11696                }
11697                Self::getStateHistoryCount(inner) => {
11698                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
11699                        inner,
11700                        out,
11701                    )
11702                }
11703                Self::getVersion(inner) => {
11704                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
11705                        inner,
11706                        out,
11707                    )
11708                }
11709                Self::initialize(inner) => {
11710                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
11711                        inner,
11712                        out,
11713                    )
11714                }
11715                Self::isPermissionedProverEnabled(inner) => {
11716                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
11717                        inner,
11718                        out,
11719                    )
11720                }
11721                Self::lagOverEscapeHatchThreshold(inner) => {
11722                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
11723                        inner,
11724                        out,
11725                    )
11726                }
11727                Self::newFinalizedState(inner) => {
11728                    <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
11729                        inner,
11730                        out,
11731                    )
11732                }
11733                Self::owner(inner) => {
11734                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
11735                }
11736                Self::permissionedProver(inner) => {
11737                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
11738                        inner,
11739                        out,
11740                    )
11741                }
11742                Self::proxiableUUID(inner) => {
11743                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
11744                        inner,
11745                        out,
11746                    )
11747                }
11748                Self::renounceOwnership(inner) => {
11749                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
11750                        inner,
11751                        out,
11752                    )
11753                }
11754                Self::setPermissionedProver(inner) => {
11755                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
11756                        inner,
11757                        out,
11758                    )
11759                }
11760                Self::setstateHistoryRetentionPeriod(inner) => {
11761                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
11762                        inner,
11763                        out,
11764                    )
11765                }
11766                Self::stateHistoryCommitments(inner) => {
11767                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
11768                        inner,
11769                        out,
11770                    )
11771                }
11772                Self::stateHistoryFirstIndex(inner) => {
11773                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
11774                        inner,
11775                        out,
11776                    )
11777                }
11778                Self::stateHistoryRetentionPeriod(inner) => {
11779                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
11780                        inner,
11781                        out,
11782                    )
11783                }
11784                Self::transferOwnership(inner) => {
11785                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
11786                        inner,
11787                        out,
11788                    )
11789                }
11790                Self::upgradeToAndCall(inner) => {
11791                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
11792                        inner,
11793                        out,
11794                    )
11795                }
11796            }
11797        }
11798    }
11799    ///Container for all the [`LightClientArbitrum`](self) custom errors.
11800    #[derive(serde::Serialize, serde::Deserialize)]
11801    #[derive(Debug, PartialEq, Eq, Hash)]
11802    pub enum LightClientArbitrumErrors {
11803        #[allow(missing_docs)]
11804        AddressEmptyCode(AddressEmptyCode),
11805        #[allow(missing_docs)]
11806        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
11807        #[allow(missing_docs)]
11808        ERC1967NonPayable(ERC1967NonPayable),
11809        #[allow(missing_docs)]
11810        FailedInnerCall(FailedInnerCall),
11811        #[allow(missing_docs)]
11812        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
11813        #[allow(missing_docs)]
11814        InvalidAddress(InvalidAddress),
11815        #[allow(missing_docs)]
11816        InvalidArgs(InvalidArgs),
11817        #[allow(missing_docs)]
11818        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
11819        #[allow(missing_docs)]
11820        InvalidInitialization(InvalidInitialization),
11821        #[allow(missing_docs)]
11822        InvalidMaxStateHistory(InvalidMaxStateHistory),
11823        #[allow(missing_docs)]
11824        InvalidProof(InvalidProof),
11825        #[allow(missing_docs)]
11826        InvalidScalar(InvalidScalar),
11827        #[allow(missing_docs)]
11828        NoChangeRequired(NoChangeRequired),
11829        #[allow(missing_docs)]
11830        NotInitializing(NotInitializing),
11831        #[allow(missing_docs)]
11832        OutdatedState(OutdatedState),
11833        #[allow(missing_docs)]
11834        OwnableInvalidOwner(OwnableInvalidOwner),
11835        #[allow(missing_docs)]
11836        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
11837        #[allow(missing_docs)]
11838        ProverNotPermissioned(ProverNotPermissioned),
11839        #[allow(missing_docs)]
11840        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
11841        #[allow(missing_docs)]
11842        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
11843        #[allow(missing_docs)]
11844        WrongStakeTableUsed(WrongStakeTableUsed),
11845    }
11846    #[automatically_derived]
11847    impl LightClientArbitrumErrors {
11848        /// All the selectors of this enum.
11849        ///
11850        /// Note that the selectors might not be in the same order as the variants.
11851        /// No guarantees are made about the order of the selectors.
11852        ///
11853        /// Prefer using `SolInterface` methods instead.
11854        pub const SELECTORS: &'static [[u8; 4usize]] = &[
11855            [5u8, 28u8, 70u8, 239u8],
11856            [5u8, 176u8, 92u8, 204u8],
11857            [9u8, 189u8, 227u8, 57u8],
11858            [17u8, 140u8, 218u8, 167u8],
11859            [20u8, 37u8, 234u8, 66u8],
11860            [30u8, 79u8, 189u8, 247u8],
11861            [76u8, 156u8, 140u8, 227u8],
11862            [81u8, 97u8, 128u8, 137u8],
11863            [97u8, 90u8, 146u8, 100u8],
11864            [153u8, 150u8, 179u8, 21u8],
11865            [161u8, 186u8, 7u8, 238u8],
11866            [163u8, 166u8, 71u8, 128u8],
11867            [168u8, 99u8, 174u8, 201u8],
11868            [170u8, 29u8, 73u8, 164u8],
11869            [176u8, 180u8, 56u8, 119u8],
11870            [179u8, 152u8, 151u8, 159u8],
11871            [215u8, 230u8, 188u8, 248u8],
11872            [224u8, 124u8, 141u8, 186u8],
11873            [230u8, 196u8, 36u8, 123u8],
11874            [244u8, 160u8, 238u8, 224u8],
11875            [249u8, 46u8, 232u8, 169u8],
11876        ];
11877    }
11878    #[automatically_derived]
11879    impl alloy_sol_types::SolInterface for LightClientArbitrumErrors {
11880        const NAME: &'static str = "LightClientArbitrumErrors";
11881        const MIN_DATA_LENGTH: usize = 0usize;
11882        const COUNT: usize = 21usize;
11883        #[inline]
11884        fn selector(&self) -> [u8; 4] {
11885            match self {
11886                Self::AddressEmptyCode(_) => {
11887                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
11888                }
11889                Self::ERC1967InvalidImplementation(_) => {
11890                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
11891                }
11892                Self::ERC1967NonPayable(_) => {
11893                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
11894                }
11895                Self::FailedInnerCall(_) => {
11896                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
11897                }
11898                Self::InsufficientSnapshotHistory(_) => {
11899                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
11900                }
11901                Self::InvalidAddress(_) => {
11902                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
11903                }
11904                Self::InvalidArgs(_) => {
11905                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
11906                }
11907                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
11908                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
11909                }
11910                Self::InvalidInitialization(_) => {
11911                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
11912                }
11913                Self::InvalidMaxStateHistory(_) => {
11914                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
11915                }
11916                Self::InvalidProof(_) => {
11917                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
11918                }
11919                Self::InvalidScalar(_) => {
11920                    <InvalidScalar as alloy_sol_types::SolError>::SELECTOR
11921                }
11922                Self::NoChangeRequired(_) => {
11923                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
11924                }
11925                Self::NotInitializing(_) => {
11926                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
11927                }
11928                Self::OutdatedState(_) => {
11929                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
11930                }
11931                Self::OwnableInvalidOwner(_) => {
11932                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
11933                }
11934                Self::OwnableUnauthorizedAccount(_) => {
11935                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
11936                }
11937                Self::ProverNotPermissioned(_) => {
11938                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
11939                }
11940                Self::UUPSUnauthorizedCallContext(_) => {
11941                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
11942                }
11943                Self::UUPSUnsupportedProxiableUUID(_) => {
11944                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
11945                }
11946                Self::WrongStakeTableUsed(_) => {
11947                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
11948                }
11949            }
11950        }
11951        #[inline]
11952        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
11953            Self::SELECTORS.get(i).copied()
11954        }
11955        #[inline]
11956        fn valid_selector(selector: [u8; 4]) -> bool {
11957            Self::SELECTORS.binary_search(&selector).is_ok()
11958        }
11959        #[inline]
11960        #[allow(non_snake_case)]
11961        fn abi_decode_raw(
11962            selector: [u8; 4],
11963            data: &[u8],
11964        ) -> alloy_sol_types::Result<Self> {
11965            static DECODE_SHIMS: &[fn(
11966                &[u8],
11967            ) -> alloy_sol_types::Result<LightClientArbitrumErrors>] = &[
11968                {
11969                    fn OutdatedState(
11970                        data: &[u8],
11971                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
11972                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(
11973                                data,
11974                            )
11975                            .map(LightClientArbitrumErrors::OutdatedState)
11976                    }
11977                    OutdatedState
11978                },
11979                {
11980                    fn InvalidScalar(
11981                        data: &[u8],
11982                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
11983                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw(
11984                                data,
11985                            )
11986                            .map(LightClientArbitrumErrors::InvalidScalar)
11987                    }
11988                    InvalidScalar
11989                },
11990                {
11991                    fn InvalidProof(
11992                        data: &[u8],
11993                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
11994                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(data)
11995                            .map(LightClientArbitrumErrors::InvalidProof)
11996                    }
11997                    InvalidProof
11998                },
11999                {
12000                    fn OwnableUnauthorizedAccount(
12001                        data: &[u8],
12002                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12003                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
12004                                data,
12005                            )
12006                            .map(LightClientArbitrumErrors::OwnableUnauthorizedAccount)
12007                    }
12008                    OwnableUnauthorizedAccount
12009                },
12010                {
12011                    fn FailedInnerCall(
12012                        data: &[u8],
12013                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12014                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
12015                                data,
12016                            )
12017                            .map(LightClientArbitrumErrors::FailedInnerCall)
12018                    }
12019                    FailedInnerCall
12020                },
12021                {
12022                    fn OwnableInvalidOwner(
12023                        data: &[u8],
12024                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12025                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
12026                                data,
12027                            )
12028                            .map(LightClientArbitrumErrors::OwnableInvalidOwner)
12029                    }
12030                    OwnableInvalidOwner
12031                },
12032                {
12033                    fn ERC1967InvalidImplementation(
12034                        data: &[u8],
12035                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12036                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
12037                                data,
12038                            )
12039                            .map(LightClientArbitrumErrors::ERC1967InvalidImplementation)
12040                    }
12041                    ERC1967InvalidImplementation
12042                },
12043                {
12044                    fn WrongStakeTableUsed(
12045                        data: &[u8],
12046                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12047                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
12048                                data,
12049                            )
12050                            .map(LightClientArbitrumErrors::WrongStakeTableUsed)
12051                    }
12052                    WrongStakeTableUsed
12053                },
12054                {
12055                    fn InvalidHotShotBlockForCommitmentCheck(
12056                        data: &[u8],
12057                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12058                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
12059                                data,
12060                            )
12061                            .map(
12062                                LightClientArbitrumErrors::InvalidHotShotBlockForCommitmentCheck,
12063                            )
12064                    }
12065                    InvalidHotShotBlockForCommitmentCheck
12066                },
12067                {
12068                    fn AddressEmptyCode(
12069                        data: &[u8],
12070                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12071                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
12072                                data,
12073                            )
12074                            .map(LightClientArbitrumErrors::AddressEmptyCode)
12075                    }
12076                    AddressEmptyCode
12077                },
12078                {
12079                    fn InvalidArgs(
12080                        data: &[u8],
12081                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12082                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(data)
12083                            .map(LightClientArbitrumErrors::InvalidArgs)
12084                    }
12085                    InvalidArgs
12086                },
12087                {
12088                    fn ProverNotPermissioned(
12089                        data: &[u8],
12090                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12091                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
12092                                data,
12093                            )
12094                            .map(LightClientArbitrumErrors::ProverNotPermissioned)
12095                    }
12096                    ProverNotPermissioned
12097                },
12098                {
12099                    fn NoChangeRequired(
12100                        data: &[u8],
12101                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12102                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
12103                                data,
12104                            )
12105                            .map(LightClientArbitrumErrors::NoChangeRequired)
12106                    }
12107                    NoChangeRequired
12108                },
12109                {
12110                    fn UUPSUnsupportedProxiableUUID(
12111                        data: &[u8],
12112                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12113                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
12114                                data,
12115                            )
12116                            .map(LightClientArbitrumErrors::UUPSUnsupportedProxiableUUID)
12117                    }
12118                    UUPSUnsupportedProxiableUUID
12119                },
12120                {
12121                    fn InsufficientSnapshotHistory(
12122                        data: &[u8],
12123                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12124                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
12125                                data,
12126                            )
12127                            .map(LightClientArbitrumErrors::InsufficientSnapshotHistory)
12128                    }
12129                    InsufficientSnapshotHistory
12130                },
12131                {
12132                    fn ERC1967NonPayable(
12133                        data: &[u8],
12134                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12135                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
12136                                data,
12137                            )
12138                            .map(LightClientArbitrumErrors::ERC1967NonPayable)
12139                    }
12140                    ERC1967NonPayable
12141                },
12142                {
12143                    fn NotInitializing(
12144                        data: &[u8],
12145                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12146                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
12147                                data,
12148                            )
12149                            .map(LightClientArbitrumErrors::NotInitializing)
12150                    }
12151                    NotInitializing
12152                },
12153                {
12154                    fn UUPSUnauthorizedCallContext(
12155                        data: &[u8],
12156                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12157                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
12158                                data,
12159                            )
12160                            .map(LightClientArbitrumErrors::UUPSUnauthorizedCallContext)
12161                    }
12162                    UUPSUnauthorizedCallContext
12163                },
12164                {
12165                    fn InvalidAddress(
12166                        data: &[u8],
12167                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12168                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
12169                                data,
12170                            )
12171                            .map(LightClientArbitrumErrors::InvalidAddress)
12172                    }
12173                    InvalidAddress
12174                },
12175                {
12176                    fn InvalidMaxStateHistory(
12177                        data: &[u8],
12178                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12179                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
12180                                data,
12181                            )
12182                            .map(LightClientArbitrumErrors::InvalidMaxStateHistory)
12183                    }
12184                    InvalidMaxStateHistory
12185                },
12186                {
12187                    fn InvalidInitialization(
12188                        data: &[u8],
12189                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12190                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
12191                                data,
12192                            )
12193                            .map(LightClientArbitrumErrors::InvalidInitialization)
12194                    }
12195                    InvalidInitialization
12196                },
12197            ];
12198            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
12199                return Err(
12200                    alloy_sol_types::Error::unknown_selector(
12201                        <Self as alloy_sol_types::SolInterface>::NAME,
12202                        selector,
12203                    ),
12204                );
12205            };
12206            DECODE_SHIMS[idx](data)
12207        }
12208        #[inline]
12209        #[allow(non_snake_case)]
12210        fn abi_decode_raw_validate(
12211            selector: [u8; 4],
12212            data: &[u8],
12213        ) -> alloy_sol_types::Result<Self> {
12214            static DECODE_VALIDATE_SHIMS: &[fn(
12215                &[u8],
12216            ) -> alloy_sol_types::Result<LightClientArbitrumErrors>] = &[
12217                {
12218                    fn OutdatedState(
12219                        data: &[u8],
12220                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12221                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw_validate(
12222                                data,
12223                            )
12224                            .map(LightClientArbitrumErrors::OutdatedState)
12225                    }
12226                    OutdatedState
12227                },
12228                {
12229                    fn InvalidScalar(
12230                        data: &[u8],
12231                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12232                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw_validate(
12233                                data,
12234                            )
12235                            .map(LightClientArbitrumErrors::InvalidScalar)
12236                    }
12237                    InvalidScalar
12238                },
12239                {
12240                    fn InvalidProof(
12241                        data: &[u8],
12242                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12243                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw_validate(
12244                                data,
12245                            )
12246                            .map(LightClientArbitrumErrors::InvalidProof)
12247                    }
12248                    InvalidProof
12249                },
12250                {
12251                    fn OwnableUnauthorizedAccount(
12252                        data: &[u8],
12253                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12254                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
12255                                data,
12256                            )
12257                            .map(LightClientArbitrumErrors::OwnableUnauthorizedAccount)
12258                    }
12259                    OwnableUnauthorizedAccount
12260                },
12261                {
12262                    fn FailedInnerCall(
12263                        data: &[u8],
12264                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12265                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
12266                                data,
12267                            )
12268                            .map(LightClientArbitrumErrors::FailedInnerCall)
12269                    }
12270                    FailedInnerCall
12271                },
12272                {
12273                    fn OwnableInvalidOwner(
12274                        data: &[u8],
12275                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12276                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
12277                                data,
12278                            )
12279                            .map(LightClientArbitrumErrors::OwnableInvalidOwner)
12280                    }
12281                    OwnableInvalidOwner
12282                },
12283                {
12284                    fn ERC1967InvalidImplementation(
12285                        data: &[u8],
12286                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12287                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_validate(
12288                                data,
12289                            )
12290                            .map(LightClientArbitrumErrors::ERC1967InvalidImplementation)
12291                    }
12292                    ERC1967InvalidImplementation
12293                },
12294                {
12295                    fn WrongStakeTableUsed(
12296                        data: &[u8],
12297                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12298                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
12299                                data,
12300                            )
12301                            .map(LightClientArbitrumErrors::WrongStakeTableUsed)
12302                    }
12303                    WrongStakeTableUsed
12304                },
12305                {
12306                    fn InvalidHotShotBlockForCommitmentCheck(
12307                        data: &[u8],
12308                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12309                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw_validate(
12310                                data,
12311                            )
12312                            .map(
12313                                LightClientArbitrumErrors::InvalidHotShotBlockForCommitmentCheck,
12314                            )
12315                    }
12316                    InvalidHotShotBlockForCommitmentCheck
12317                },
12318                {
12319                    fn AddressEmptyCode(
12320                        data: &[u8],
12321                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12322                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_validate(
12323                                data,
12324                            )
12325                            .map(LightClientArbitrumErrors::AddressEmptyCode)
12326                    }
12327                    AddressEmptyCode
12328                },
12329                {
12330                    fn InvalidArgs(
12331                        data: &[u8],
12332                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12333                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw_validate(
12334                                data,
12335                            )
12336                            .map(LightClientArbitrumErrors::InvalidArgs)
12337                    }
12338                    InvalidArgs
12339                },
12340                {
12341                    fn ProverNotPermissioned(
12342                        data: &[u8],
12343                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12344                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw_validate(
12345                                data,
12346                            )
12347                            .map(LightClientArbitrumErrors::ProverNotPermissioned)
12348                    }
12349                    ProverNotPermissioned
12350                },
12351                {
12352                    fn NoChangeRequired(
12353                        data: &[u8],
12354                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12355                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw_validate(
12356                                data,
12357                            )
12358                            .map(LightClientArbitrumErrors::NoChangeRequired)
12359                    }
12360                    NoChangeRequired
12361                },
12362                {
12363                    fn UUPSUnsupportedProxiableUUID(
12364                        data: &[u8],
12365                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12366                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_validate(
12367                                data,
12368                            )
12369                            .map(LightClientArbitrumErrors::UUPSUnsupportedProxiableUUID)
12370                    }
12371                    UUPSUnsupportedProxiableUUID
12372                },
12373                {
12374                    fn InsufficientSnapshotHistory(
12375                        data: &[u8],
12376                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12377                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
12378                                data,
12379                            )
12380                            .map(LightClientArbitrumErrors::InsufficientSnapshotHistory)
12381                    }
12382                    InsufficientSnapshotHistory
12383                },
12384                {
12385                    fn ERC1967NonPayable(
12386                        data: &[u8],
12387                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12388                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_validate(
12389                                data,
12390                            )
12391                            .map(LightClientArbitrumErrors::ERC1967NonPayable)
12392                    }
12393                    ERC1967NonPayable
12394                },
12395                {
12396                    fn NotInitializing(
12397                        data: &[u8],
12398                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12399                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_validate(
12400                                data,
12401                            )
12402                            .map(LightClientArbitrumErrors::NotInitializing)
12403                    }
12404                    NotInitializing
12405                },
12406                {
12407                    fn UUPSUnauthorizedCallContext(
12408                        data: &[u8],
12409                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12410                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_validate(
12411                                data,
12412                            )
12413                            .map(LightClientArbitrumErrors::UUPSUnauthorizedCallContext)
12414                    }
12415                    UUPSUnauthorizedCallContext
12416                },
12417                {
12418                    fn InvalidAddress(
12419                        data: &[u8],
12420                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12421                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
12422                                data,
12423                            )
12424                            .map(LightClientArbitrumErrors::InvalidAddress)
12425                    }
12426                    InvalidAddress
12427                },
12428                {
12429                    fn InvalidMaxStateHistory(
12430                        data: &[u8],
12431                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12432                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
12433                                data,
12434                            )
12435                            .map(LightClientArbitrumErrors::InvalidMaxStateHistory)
12436                    }
12437                    InvalidMaxStateHistory
12438                },
12439                {
12440                    fn InvalidInitialization(
12441                        data: &[u8],
12442                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12443                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_validate(
12444                                data,
12445                            )
12446                            .map(LightClientArbitrumErrors::InvalidInitialization)
12447                    }
12448                    InvalidInitialization
12449                },
12450            ];
12451            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
12452                return Err(
12453                    alloy_sol_types::Error::unknown_selector(
12454                        <Self as alloy_sol_types::SolInterface>::NAME,
12455                        selector,
12456                    ),
12457                );
12458            };
12459            DECODE_VALIDATE_SHIMS[idx](data)
12460        }
12461        #[inline]
12462        fn abi_encoded_size(&self) -> usize {
12463            match self {
12464                Self::AddressEmptyCode(inner) => {
12465                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
12466                        inner,
12467                    )
12468                }
12469                Self::ERC1967InvalidImplementation(inner) => {
12470                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
12471                        inner,
12472                    )
12473                }
12474                Self::ERC1967NonPayable(inner) => {
12475                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
12476                        inner,
12477                    )
12478                }
12479                Self::FailedInnerCall(inner) => {
12480                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
12481                        inner,
12482                    )
12483                }
12484                Self::InsufficientSnapshotHistory(inner) => {
12485                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
12486                        inner,
12487                    )
12488                }
12489                Self::InvalidAddress(inner) => {
12490                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
12491                        inner,
12492                    )
12493                }
12494                Self::InvalidArgs(inner) => {
12495                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
12496                }
12497                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
12498                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
12499                        inner,
12500                    )
12501                }
12502                Self::InvalidInitialization(inner) => {
12503                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
12504                        inner,
12505                    )
12506                }
12507                Self::InvalidMaxStateHistory(inner) => {
12508                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
12509                        inner,
12510                    )
12511                }
12512                Self::InvalidProof(inner) => {
12513                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
12514                }
12515                Self::InvalidScalar(inner) => {
12516                    <InvalidScalar as alloy_sol_types::SolError>::abi_encoded_size(inner)
12517                }
12518                Self::NoChangeRequired(inner) => {
12519                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
12520                        inner,
12521                    )
12522                }
12523                Self::NotInitializing(inner) => {
12524                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
12525                        inner,
12526                    )
12527                }
12528                Self::OutdatedState(inner) => {
12529                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
12530                }
12531                Self::OwnableInvalidOwner(inner) => {
12532                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
12533                        inner,
12534                    )
12535                }
12536                Self::OwnableUnauthorizedAccount(inner) => {
12537                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
12538                        inner,
12539                    )
12540                }
12541                Self::ProverNotPermissioned(inner) => {
12542                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
12543                        inner,
12544                    )
12545                }
12546                Self::UUPSUnauthorizedCallContext(inner) => {
12547                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
12548                        inner,
12549                    )
12550                }
12551                Self::UUPSUnsupportedProxiableUUID(inner) => {
12552                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
12553                        inner,
12554                    )
12555                }
12556                Self::WrongStakeTableUsed(inner) => {
12557                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
12558                        inner,
12559                    )
12560                }
12561            }
12562        }
12563        #[inline]
12564        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
12565            match self {
12566                Self::AddressEmptyCode(inner) => {
12567                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
12568                        inner,
12569                        out,
12570                    )
12571                }
12572                Self::ERC1967InvalidImplementation(inner) => {
12573                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
12574                        inner,
12575                        out,
12576                    )
12577                }
12578                Self::ERC1967NonPayable(inner) => {
12579                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
12580                        inner,
12581                        out,
12582                    )
12583                }
12584                Self::FailedInnerCall(inner) => {
12585                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
12586                        inner,
12587                        out,
12588                    )
12589                }
12590                Self::InsufficientSnapshotHistory(inner) => {
12591                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
12592                        inner,
12593                        out,
12594                    )
12595                }
12596                Self::InvalidAddress(inner) => {
12597                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
12598                        inner,
12599                        out,
12600                    )
12601                }
12602                Self::InvalidArgs(inner) => {
12603                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
12604                        inner,
12605                        out,
12606                    )
12607                }
12608                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
12609                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
12610                        inner,
12611                        out,
12612                    )
12613                }
12614                Self::InvalidInitialization(inner) => {
12615                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
12616                        inner,
12617                        out,
12618                    )
12619                }
12620                Self::InvalidMaxStateHistory(inner) => {
12621                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
12622                        inner,
12623                        out,
12624                    )
12625                }
12626                Self::InvalidProof(inner) => {
12627                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
12628                        inner,
12629                        out,
12630                    )
12631                }
12632                Self::InvalidScalar(inner) => {
12633                    <InvalidScalar as alloy_sol_types::SolError>::abi_encode_raw(
12634                        inner,
12635                        out,
12636                    )
12637                }
12638                Self::NoChangeRequired(inner) => {
12639                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
12640                        inner,
12641                        out,
12642                    )
12643                }
12644                Self::NotInitializing(inner) => {
12645                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
12646                        inner,
12647                        out,
12648                    )
12649                }
12650                Self::OutdatedState(inner) => {
12651                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
12652                        inner,
12653                        out,
12654                    )
12655                }
12656                Self::OwnableInvalidOwner(inner) => {
12657                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
12658                        inner,
12659                        out,
12660                    )
12661                }
12662                Self::OwnableUnauthorizedAccount(inner) => {
12663                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
12664                        inner,
12665                        out,
12666                    )
12667                }
12668                Self::ProverNotPermissioned(inner) => {
12669                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
12670                        inner,
12671                        out,
12672                    )
12673                }
12674                Self::UUPSUnauthorizedCallContext(inner) => {
12675                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
12676                        inner,
12677                        out,
12678                    )
12679                }
12680                Self::UUPSUnsupportedProxiableUUID(inner) => {
12681                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
12682                        inner,
12683                        out,
12684                    )
12685                }
12686                Self::WrongStakeTableUsed(inner) => {
12687                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
12688                        inner,
12689                        out,
12690                    )
12691                }
12692            }
12693        }
12694    }
12695    ///Container for all the [`LightClientArbitrum`](self) events.
12696    #[derive(serde::Serialize, serde::Deserialize)]
12697    #[derive(Debug, PartialEq, Eq, Hash)]
12698    pub enum LightClientArbitrumEvents {
12699        #[allow(missing_docs)]
12700        Initialized(Initialized),
12701        #[allow(missing_docs)]
12702        NewState(NewState),
12703        #[allow(missing_docs)]
12704        OwnershipTransferred(OwnershipTransferred),
12705        #[allow(missing_docs)]
12706        PermissionedProverNotRequired(PermissionedProverNotRequired),
12707        #[allow(missing_docs)]
12708        PermissionedProverRequired(PermissionedProverRequired),
12709        #[allow(missing_docs)]
12710        Upgrade(Upgrade),
12711        #[allow(missing_docs)]
12712        Upgraded(Upgraded),
12713    }
12714    #[automatically_derived]
12715    impl LightClientArbitrumEvents {
12716        /// All the selectors of this enum.
12717        ///
12718        /// Note that the selectors might not be in the same order as the variants.
12719        /// No guarantees are made about the order of the selectors.
12720        ///
12721        /// Prefer using `SolInterface` methods instead.
12722        pub const SELECTORS: &'static [[u8; 32usize]] = &[
12723            [
12724                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
12725                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
12726                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
12727            ],
12728            [
12729                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
12730                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
12731                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
12732            ],
12733            [
12734                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
12735                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
12736                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
12737            ],
12738            [
12739                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
12740                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
12741                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
12742            ],
12743            [
12744                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
12745                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
12746                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
12747            ],
12748            [
12749                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
12750                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
12751                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
12752            ],
12753            [
12754                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
12755                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
12756                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
12757            ],
12758        ];
12759    }
12760    #[automatically_derived]
12761    impl alloy_sol_types::SolEventInterface for LightClientArbitrumEvents {
12762        const NAME: &'static str = "LightClientArbitrumEvents";
12763        const COUNT: usize = 7usize;
12764        fn decode_raw_log(
12765            topics: &[alloy_sol_types::Word],
12766            data: &[u8],
12767        ) -> alloy_sol_types::Result<Self> {
12768            match topics.first().copied() {
12769                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12770                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
12771                            topics,
12772                            data,
12773                        )
12774                        .map(Self::Initialized)
12775                }
12776                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12777                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
12778                        .map(Self::NewState)
12779                }
12780                Some(
12781                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12782                ) => {
12783                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
12784                            topics,
12785                            data,
12786                        )
12787                        .map(Self::OwnershipTransferred)
12788                }
12789                Some(
12790                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12791                ) => {
12792                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
12793                            topics,
12794                            data,
12795                        )
12796                        .map(Self::PermissionedProverNotRequired)
12797                }
12798                Some(
12799                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12800                ) => {
12801                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
12802                            topics,
12803                            data,
12804                        )
12805                        .map(Self::PermissionedProverRequired)
12806                }
12807                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12808                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
12809                        .map(Self::Upgrade)
12810                }
12811                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12812                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
12813                        .map(Self::Upgraded)
12814                }
12815                _ => {
12816                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
12817                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
12818                        log: alloy_sol_types::private::Box::new(
12819                            alloy_sol_types::private::LogData::new_unchecked(
12820                                topics.to_vec(),
12821                                data.to_vec().into(),
12822                            ),
12823                        ),
12824                    })
12825                }
12826            }
12827        }
12828    }
12829    #[automatically_derived]
12830    impl alloy_sol_types::private::IntoLogData for LightClientArbitrumEvents {
12831        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
12832            match self {
12833                Self::Initialized(inner) => {
12834                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12835                }
12836                Self::NewState(inner) => {
12837                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12838                }
12839                Self::OwnershipTransferred(inner) => {
12840                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12841                }
12842                Self::PermissionedProverNotRequired(inner) => {
12843                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12844                }
12845                Self::PermissionedProverRequired(inner) => {
12846                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12847                }
12848                Self::Upgrade(inner) => {
12849                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12850                }
12851                Self::Upgraded(inner) => {
12852                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12853                }
12854            }
12855        }
12856        fn into_log_data(self) -> alloy_sol_types::private::LogData {
12857            match self {
12858                Self::Initialized(inner) => {
12859                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12860                }
12861                Self::NewState(inner) => {
12862                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12863                }
12864                Self::OwnershipTransferred(inner) => {
12865                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12866                }
12867                Self::PermissionedProverNotRequired(inner) => {
12868                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12869                }
12870                Self::PermissionedProverRequired(inner) => {
12871                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12872                }
12873                Self::Upgrade(inner) => {
12874                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12875                }
12876                Self::Upgraded(inner) => {
12877                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12878                }
12879            }
12880        }
12881    }
12882    use alloy::contract as alloy_contract;
12883    /**Creates a new wrapper around an on-chain [`LightClientArbitrum`](self) contract instance.
12884
12885See the [wrapper's documentation](`LightClientArbitrumInstance`) for more details.*/
12886    #[inline]
12887    pub const fn new<
12888        P: alloy_contract::private::Provider<N>,
12889        N: alloy_contract::private::Network,
12890    >(
12891        address: alloy_sol_types::private::Address,
12892        __provider: P,
12893    ) -> LightClientArbitrumInstance<P, N> {
12894        LightClientArbitrumInstance::<P, N>::new(address, __provider)
12895    }
12896    /**Deploys this contract using the given `provider` and constructor arguments, if any.
12897
12898Returns a new instance of the contract, if the deployment was successful.
12899
12900For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
12901    #[inline]
12902    pub fn deploy<
12903        P: alloy_contract::private::Provider<N>,
12904        N: alloy_contract::private::Network,
12905    >(
12906        __provider: P,
12907    ) -> impl ::core::future::Future<
12908        Output = alloy_contract::Result<LightClientArbitrumInstance<P, N>>,
12909    > {
12910        LightClientArbitrumInstance::<P, N>::deploy(__provider)
12911    }
12912    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
12913and constructor arguments, if any.
12914
12915This is a simple wrapper around creating a `RawCallBuilder` with the data set to
12916the bytecode concatenated with the constructor's ABI-encoded arguments.*/
12917    #[inline]
12918    pub fn deploy_builder<
12919        P: alloy_contract::private::Provider<N>,
12920        N: alloy_contract::private::Network,
12921    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
12922        LightClientArbitrumInstance::<P, N>::deploy_builder(__provider)
12923    }
12924    /**A [`LightClientArbitrum`](self) instance.
12925
12926Contains type-safe methods for interacting with an on-chain instance of the
12927[`LightClientArbitrum`](self) contract located at a given `address`, using a given
12928provider `P`.
12929
12930If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
12931documentation on how to provide it), the `deploy` and `deploy_builder` methods can
12932be used to deploy a new instance of the contract.
12933
12934See the [module-level documentation](self) for all the available methods.*/
12935    #[derive(Clone)]
12936    pub struct LightClientArbitrumInstance<P, N = alloy_contract::private::Ethereum> {
12937        address: alloy_sol_types::private::Address,
12938        provider: P,
12939        _network: ::core::marker::PhantomData<N>,
12940    }
12941    #[automatically_derived]
12942    impl<P, N> ::core::fmt::Debug for LightClientArbitrumInstance<P, N> {
12943        #[inline]
12944        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
12945            f.debug_tuple("LightClientArbitrumInstance").field(&self.address).finish()
12946        }
12947    }
12948    /// Instantiation and getters/setters.
12949    #[automatically_derived]
12950    impl<
12951        P: alloy_contract::private::Provider<N>,
12952        N: alloy_contract::private::Network,
12953    > LightClientArbitrumInstance<P, N> {
12954        /**Creates a new wrapper around an on-chain [`LightClientArbitrum`](self) contract instance.
12955
12956See the [wrapper's documentation](`LightClientArbitrumInstance`) for more details.*/
12957        #[inline]
12958        pub const fn new(
12959            address: alloy_sol_types::private::Address,
12960            __provider: P,
12961        ) -> Self {
12962            Self {
12963                address,
12964                provider: __provider,
12965                _network: ::core::marker::PhantomData,
12966            }
12967        }
12968        /**Deploys this contract using the given `provider` and constructor arguments, if any.
12969
12970Returns a new instance of the contract, if the deployment was successful.
12971
12972For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
12973        #[inline]
12974        pub async fn deploy(
12975            __provider: P,
12976        ) -> alloy_contract::Result<LightClientArbitrumInstance<P, N>> {
12977            let call_builder = Self::deploy_builder(__provider);
12978            let contract_address = call_builder.deploy().await?;
12979            Ok(Self::new(contract_address, call_builder.provider))
12980        }
12981        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
12982and constructor arguments, if any.
12983
12984This is a simple wrapper around creating a `RawCallBuilder` with the data set to
12985the bytecode concatenated with the constructor's ABI-encoded arguments.*/
12986        #[inline]
12987        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
12988            alloy_contract::RawCallBuilder::new_raw_deploy(
12989                __provider,
12990                ::core::clone::Clone::clone(&BYTECODE),
12991            )
12992        }
12993        /// Returns a reference to the address.
12994        #[inline]
12995        pub const fn address(&self) -> &alloy_sol_types::private::Address {
12996            &self.address
12997        }
12998        /// Sets the address.
12999        #[inline]
13000        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
13001            self.address = address;
13002        }
13003        /// Sets the address and returns `self`.
13004        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
13005            self.set_address(address);
13006            self
13007        }
13008        /// Returns a reference to the provider.
13009        #[inline]
13010        pub const fn provider(&self) -> &P {
13011            &self.provider
13012        }
13013    }
13014    impl<P: ::core::clone::Clone, N> LightClientArbitrumInstance<&P, N> {
13015        /// Clones the provider and returns a new instance with the cloned provider.
13016        #[inline]
13017        pub fn with_cloned_provider(self) -> LightClientArbitrumInstance<P, N> {
13018            LightClientArbitrumInstance {
13019                address: self.address,
13020                provider: ::core::clone::Clone::clone(&self.provider),
13021                _network: ::core::marker::PhantomData,
13022            }
13023        }
13024    }
13025    /// Function calls.
13026    #[automatically_derived]
13027    impl<
13028        P: alloy_contract::private::Provider<N>,
13029        N: alloy_contract::private::Network,
13030    > LightClientArbitrumInstance<P, N> {
13031        /// Creates a new call builder using this contract instance's provider and address.
13032        ///
13033        /// Note that the call can be any function call, not just those defined in this
13034        /// contract. Prefer using the other methods for building type-safe contract calls.
13035        pub fn call_builder<C: alloy_sol_types::SolCall>(
13036            &self,
13037            call: &C,
13038        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
13039            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
13040        }
13041        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
13042        pub fn UPGRADE_INTERFACE_VERSION(
13043            &self,
13044        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
13045            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
13046        }
13047        ///Creates a new call builder for the [`_getVk`] function.
13048        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<&P, _getVkCall, N> {
13049            self.call_builder(&_getVkCall)
13050        }
13051        ///Creates a new call builder for the [`currentBlockNumber`] function.
13052        pub fn currentBlockNumber(
13053            &self,
13054        ) -> alloy_contract::SolCallBuilder<&P, currentBlockNumberCall, N> {
13055            self.call_builder(&currentBlockNumberCall)
13056        }
13057        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
13058        pub fn disablePermissionedProverMode(
13059            &self,
13060        ) -> alloy_contract::SolCallBuilder<&P, disablePermissionedProverModeCall, N> {
13061            self.call_builder(&disablePermissionedProverModeCall)
13062        }
13063        ///Creates a new call builder for the [`finalizedState`] function.
13064        pub fn finalizedState(
13065            &self,
13066        ) -> alloy_contract::SolCallBuilder<&P, finalizedStateCall, N> {
13067            self.call_builder(&finalizedStateCall)
13068        }
13069        ///Creates a new call builder for the [`genesisStakeTableState`] function.
13070        pub fn genesisStakeTableState(
13071            &self,
13072        ) -> alloy_contract::SolCallBuilder<&P, genesisStakeTableStateCall, N> {
13073            self.call_builder(&genesisStakeTableStateCall)
13074        }
13075        ///Creates a new call builder for the [`genesisState`] function.
13076        pub fn genesisState(
13077            &self,
13078        ) -> alloy_contract::SolCallBuilder<&P, genesisStateCall, N> {
13079            self.call_builder(&genesisStateCall)
13080        }
13081        ///Creates a new call builder for the [`getHotShotCommitment`] function.
13082        pub fn getHotShotCommitment(
13083            &self,
13084            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
13085        ) -> alloy_contract::SolCallBuilder<&P, getHotShotCommitmentCall, N> {
13086            self.call_builder(
13087                &getHotShotCommitmentCall {
13088                    hotShotBlockHeight,
13089                },
13090            )
13091        }
13092        ///Creates a new call builder for the [`getStateHistoryCount`] function.
13093        pub fn getStateHistoryCount(
13094            &self,
13095        ) -> alloy_contract::SolCallBuilder<&P, getStateHistoryCountCall, N> {
13096            self.call_builder(&getStateHistoryCountCall)
13097        }
13098        ///Creates a new call builder for the [`getVersion`] function.
13099        pub fn getVersion(
13100            &self,
13101        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
13102            self.call_builder(&getVersionCall)
13103        }
13104        ///Creates a new call builder for the [`initialize`] function.
13105        pub fn initialize(
13106            &self,
13107            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
13108            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
13109            _stateHistoryRetentionPeriod: u32,
13110            owner: alloy::sol_types::private::Address,
13111        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
13112            self.call_builder(
13113                &initializeCall {
13114                    _genesis,
13115                    _genesisStakeTableState,
13116                    _stateHistoryRetentionPeriod,
13117                    owner,
13118                },
13119            )
13120        }
13121        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
13122        pub fn isPermissionedProverEnabled(
13123            &self,
13124        ) -> alloy_contract::SolCallBuilder<&P, isPermissionedProverEnabledCall, N> {
13125            self.call_builder(&isPermissionedProverEnabledCall)
13126        }
13127        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
13128        pub fn lagOverEscapeHatchThreshold(
13129            &self,
13130            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
13131            blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
13132        ) -> alloy_contract::SolCallBuilder<&P, lagOverEscapeHatchThresholdCall, N> {
13133            self.call_builder(
13134                &lagOverEscapeHatchThresholdCall {
13135                    blockNumber,
13136                    blockThreshold,
13137                },
13138            )
13139        }
13140        ///Creates a new call builder for the [`newFinalizedState`] function.
13141        pub fn newFinalizedState(
13142            &self,
13143            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
13144            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
13145        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedStateCall, N> {
13146            self.call_builder(
13147                &newFinalizedStateCall {
13148                    newState,
13149                    proof,
13150                },
13151            )
13152        }
13153        ///Creates a new call builder for the [`owner`] function.
13154        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
13155            self.call_builder(&ownerCall)
13156        }
13157        ///Creates a new call builder for the [`permissionedProver`] function.
13158        pub fn permissionedProver(
13159            &self,
13160        ) -> alloy_contract::SolCallBuilder<&P, permissionedProverCall, N> {
13161            self.call_builder(&permissionedProverCall)
13162        }
13163        ///Creates a new call builder for the [`proxiableUUID`] function.
13164        pub fn proxiableUUID(
13165            &self,
13166        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
13167            self.call_builder(&proxiableUUIDCall)
13168        }
13169        ///Creates a new call builder for the [`renounceOwnership`] function.
13170        pub fn renounceOwnership(
13171            &self,
13172        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
13173            self.call_builder(&renounceOwnershipCall)
13174        }
13175        ///Creates a new call builder for the [`setPermissionedProver`] function.
13176        pub fn setPermissionedProver(
13177            &self,
13178            prover: alloy::sol_types::private::Address,
13179        ) -> alloy_contract::SolCallBuilder<&P, setPermissionedProverCall, N> {
13180            self.call_builder(
13181                &setPermissionedProverCall {
13182                    prover,
13183                },
13184            )
13185        }
13186        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
13187        pub fn setstateHistoryRetentionPeriod(
13188            &self,
13189            historySeconds: u32,
13190        ) -> alloy_contract::SolCallBuilder<&P, setstateHistoryRetentionPeriodCall, N> {
13191            self.call_builder(
13192                &setstateHistoryRetentionPeriodCall {
13193                    historySeconds,
13194                },
13195            )
13196        }
13197        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
13198        pub fn stateHistoryCommitments(
13199            &self,
13200            _0: alloy::sol_types::private::primitives::aliases::U256,
13201        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryCommitmentsCall, N> {
13202            self.call_builder(&stateHistoryCommitmentsCall(_0))
13203        }
13204        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
13205        pub fn stateHistoryFirstIndex(
13206            &self,
13207        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryFirstIndexCall, N> {
13208            self.call_builder(&stateHistoryFirstIndexCall)
13209        }
13210        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
13211        pub fn stateHistoryRetentionPeriod(
13212            &self,
13213        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryRetentionPeriodCall, N> {
13214            self.call_builder(&stateHistoryRetentionPeriodCall)
13215        }
13216        ///Creates a new call builder for the [`transferOwnership`] function.
13217        pub fn transferOwnership(
13218            &self,
13219            newOwner: alloy::sol_types::private::Address,
13220        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
13221            self.call_builder(&transferOwnershipCall { newOwner })
13222        }
13223        ///Creates a new call builder for the [`upgradeToAndCall`] function.
13224        pub fn upgradeToAndCall(
13225            &self,
13226            newImplementation: alloy::sol_types::private::Address,
13227            data: alloy::sol_types::private::Bytes,
13228        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
13229            self.call_builder(
13230                &upgradeToAndCallCall {
13231                    newImplementation,
13232                    data,
13233                },
13234            )
13235        }
13236    }
13237    /// Event filters.
13238    #[automatically_derived]
13239    impl<
13240        P: alloy_contract::private::Provider<N>,
13241        N: alloy_contract::private::Network,
13242    > LightClientArbitrumInstance<P, N> {
13243        /// Creates a new event filter using this contract instance's provider and address.
13244        ///
13245        /// Note that the type can be any event, not just those defined in this contract.
13246        /// Prefer using the other methods for building type-safe event filters.
13247        pub fn event_filter<E: alloy_sol_types::SolEvent>(
13248            &self,
13249        ) -> alloy_contract::Event<&P, E, N> {
13250            alloy_contract::Event::new_sol(&self.provider, &self.address)
13251        }
13252        ///Creates a new event filter for the [`Initialized`] event.
13253        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
13254            self.event_filter::<Initialized>()
13255        }
13256        ///Creates a new event filter for the [`NewState`] event.
13257        pub fn NewState_filter(&self) -> alloy_contract::Event<&P, NewState, N> {
13258            self.event_filter::<NewState>()
13259        }
13260        ///Creates a new event filter for the [`OwnershipTransferred`] event.
13261        pub fn OwnershipTransferred_filter(
13262            &self,
13263        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
13264            self.event_filter::<OwnershipTransferred>()
13265        }
13266        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
13267        pub fn PermissionedProverNotRequired_filter(
13268            &self,
13269        ) -> alloy_contract::Event<&P, PermissionedProverNotRequired, N> {
13270            self.event_filter::<PermissionedProverNotRequired>()
13271        }
13272        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
13273        pub fn PermissionedProverRequired_filter(
13274            &self,
13275        ) -> alloy_contract::Event<&P, PermissionedProverRequired, N> {
13276            self.event_filter::<PermissionedProverRequired>()
13277        }
13278        ///Creates a new event filter for the [`Upgrade`] event.
13279        pub fn Upgrade_filter(&self) -> alloy_contract::Event<&P, Upgrade, N> {
13280            self.event_filter::<Upgrade>()
13281        }
13282        ///Creates a new event filter for the [`Upgraded`] event.
13283        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
13284            self.event_filter::<Upgraded>()
13285        }
13286    }
13287}