Skip to main content

hotshot_contract_adapter/bindings/
light_client.rs

1///Module containing a contract's types and functions.
2/**
3
4```solidity
5library BN254 {
6    type BaseField is uint256;
7    type ScalarField is uint256;
8    struct G1Point { BaseField x; BaseField y; }
9}
10```*/
11#[allow(
12    non_camel_case_types,
13    non_snake_case,
14    clippy::pub_underscore_fields,
15    clippy::style,
16    clippy::empty_structs_with_brackets
17)]
18pub mod BN254 {
19    use super::*;
20    use alloy::sol_types as alloy_sol_types;
21    #[derive(serde::Serialize, serde::Deserialize)]
22    #[derive(Default, Debug, PartialEq, Eq, Hash)]
23    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
24    #[derive(Clone)]
25    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
26    const _: () = {
27        use alloy::sol_types as alloy_sol_types;
28        #[automatically_derived]
29        impl alloy_sol_types::private::SolTypeValue<BaseField>
30        for alloy::sol_types::private::primitives::aliases::U256 {
31            #[inline]
32            fn stv_to_tokens(
33                &self,
34            ) -> <alloy::sol_types::sol_data::Uint<
35                256,
36            > as alloy_sol_types::SolType>::Token<'_> {
37                alloy_sol_types::private::SolTypeValue::<
38                    alloy::sol_types::sol_data::Uint<256>,
39                >::stv_to_tokens(self)
40            }
41            #[inline]
42            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
43                <alloy::sol_types::sol_data::Uint<
44                    256,
45                > as alloy_sol_types::SolType>::tokenize(self)
46                    .0
47            }
48            #[inline]
49            fn stv_abi_encode_packed_to(
50                &self,
51                out: &mut alloy_sol_types::private::Vec<u8>,
52            ) {
53                <alloy::sol_types::sol_data::Uint<
54                    256,
55                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
56            }
57            #[inline]
58            fn stv_abi_packed_encoded_size(&self) -> usize {
59                <alloy::sol_types::sol_data::Uint<
60                    256,
61                > as alloy_sol_types::SolType>::abi_encoded_size(self)
62            }
63        }
64        impl BaseField {
65            /// The Solidity type name.
66            pub const NAME: &'static str = stringify!(BaseField);
67            /// Convert from the underlying value type.
68            #[inline]
69            pub const fn from_underlying(
70                value: alloy::sol_types::private::primitives::aliases::U256,
71            ) -> Self {
72                Self(value)
73            }
74            /// Return the underlying value.
75            #[inline]
76            pub const fn into_underlying(
77                self,
78            ) -> alloy::sol_types::private::primitives::aliases::U256 {
79                self.0
80            }
81            /// Return the single encoding of this value, delegating to the
82            /// underlying type.
83            #[inline]
84            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
85                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
86            }
87            /// Return the packed encoding of this value, delegating to the
88            /// underlying type.
89            #[inline]
90            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
91                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
92            }
93        }
94        #[automatically_derived]
95        impl From<alloy::sol_types::private::primitives::aliases::U256> for BaseField {
96            fn from(
97                value: alloy::sol_types::private::primitives::aliases::U256,
98            ) -> Self {
99                Self::from_underlying(value)
100            }
101        }
102        #[automatically_derived]
103        impl From<BaseField> for alloy::sol_types::private::primitives::aliases::U256 {
104            fn from(value: BaseField) -> Self {
105                value.into_underlying()
106            }
107        }
108        #[automatically_derived]
109        impl alloy_sol_types::SolType for BaseField {
110            type RustType = alloy::sol_types::private::primitives::aliases::U256;
111            type Token<'a> = <alloy::sol_types::sol_data::Uint<
112                256,
113            > as alloy_sol_types::SolType>::Token<'a>;
114            const SOL_NAME: &'static str = Self::NAME;
115            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
116                256,
117            > as alloy_sol_types::SolType>::ENCODED_SIZE;
118            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
119                256,
120            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
121            #[inline]
122            fn valid_token(token: &Self::Token<'_>) -> bool {
123                Self::type_check(token).is_ok()
124            }
125            #[inline]
126            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
127                <alloy::sol_types::sol_data::Uint<
128                    256,
129                > as alloy_sol_types::SolType>::type_check(token)
130            }
131            #[inline]
132            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
133                <alloy::sol_types::sol_data::Uint<
134                    256,
135                > as alloy_sol_types::SolType>::detokenize(token)
136            }
137        }
138        #[automatically_derived]
139        impl alloy_sol_types::EventTopic for BaseField {
140            #[inline]
141            fn topic_preimage_length(rust: &Self::RustType) -> usize {
142                <alloy::sol_types::sol_data::Uint<
143                    256,
144                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
145            }
146            #[inline]
147            fn encode_topic_preimage(
148                rust: &Self::RustType,
149                out: &mut alloy_sol_types::private::Vec<u8>,
150            ) {
151                <alloy::sol_types::sol_data::Uint<
152                    256,
153                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
154            }
155            #[inline]
156            fn encode_topic(
157                rust: &Self::RustType,
158            ) -> alloy_sol_types::abi::token::WordToken {
159                <alloy::sol_types::sol_data::Uint<
160                    256,
161                > as alloy_sol_types::EventTopic>::encode_topic(rust)
162            }
163        }
164    };
165    #[derive(serde::Serialize, serde::Deserialize)]
166    #[derive(Default, Debug, PartialEq, Eq, Hash)]
167    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
168    #[derive(Clone)]
169    pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
170    const _: () = {
171        use alloy::sol_types as alloy_sol_types;
172        #[automatically_derived]
173        impl alloy_sol_types::private::SolTypeValue<ScalarField>
174        for alloy::sol_types::private::primitives::aliases::U256 {
175            #[inline]
176            fn stv_to_tokens(
177                &self,
178            ) -> <alloy::sol_types::sol_data::Uint<
179                256,
180            > as alloy_sol_types::SolType>::Token<'_> {
181                alloy_sol_types::private::SolTypeValue::<
182                    alloy::sol_types::sol_data::Uint<256>,
183                >::stv_to_tokens(self)
184            }
185            #[inline]
186            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
187                <alloy::sol_types::sol_data::Uint<
188                    256,
189                > as alloy_sol_types::SolType>::tokenize(self)
190                    .0
191            }
192            #[inline]
193            fn stv_abi_encode_packed_to(
194                &self,
195                out: &mut alloy_sol_types::private::Vec<u8>,
196            ) {
197                <alloy::sol_types::sol_data::Uint<
198                    256,
199                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
200            }
201            #[inline]
202            fn stv_abi_packed_encoded_size(&self) -> usize {
203                <alloy::sol_types::sol_data::Uint<
204                    256,
205                > as alloy_sol_types::SolType>::abi_encoded_size(self)
206            }
207        }
208        impl ScalarField {
209            /// The Solidity type name.
210            pub const NAME: &'static str = stringify!(ScalarField);
211            /// Convert from the underlying value type.
212            #[inline]
213            pub const fn from_underlying(
214                value: alloy::sol_types::private::primitives::aliases::U256,
215            ) -> Self {
216                Self(value)
217            }
218            /// Return the underlying value.
219            #[inline]
220            pub const fn into_underlying(
221                self,
222            ) -> alloy::sol_types::private::primitives::aliases::U256 {
223                self.0
224            }
225            /// Return the single encoding of this value, delegating to the
226            /// underlying type.
227            #[inline]
228            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
229                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
230            }
231            /// Return the packed encoding of this value, delegating to the
232            /// underlying type.
233            #[inline]
234            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
235                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
236            }
237        }
238        #[automatically_derived]
239        impl From<alloy::sol_types::private::primitives::aliases::U256> for ScalarField {
240            fn from(
241                value: alloy::sol_types::private::primitives::aliases::U256,
242            ) -> Self {
243                Self::from_underlying(value)
244            }
245        }
246        #[automatically_derived]
247        impl From<ScalarField> for alloy::sol_types::private::primitives::aliases::U256 {
248            fn from(value: ScalarField) -> Self {
249                value.into_underlying()
250            }
251        }
252        #[automatically_derived]
253        impl alloy_sol_types::SolType for ScalarField {
254            type RustType = alloy::sol_types::private::primitives::aliases::U256;
255            type Token<'a> = <alloy::sol_types::sol_data::Uint<
256                256,
257            > as alloy_sol_types::SolType>::Token<'a>;
258            const SOL_NAME: &'static str = Self::NAME;
259            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
260                256,
261            > as alloy_sol_types::SolType>::ENCODED_SIZE;
262            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
263                256,
264            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
265            #[inline]
266            fn valid_token(token: &Self::Token<'_>) -> bool {
267                Self::type_check(token).is_ok()
268            }
269            #[inline]
270            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
271                <alloy::sol_types::sol_data::Uint<
272                    256,
273                > as alloy_sol_types::SolType>::type_check(token)
274            }
275            #[inline]
276            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
277                <alloy::sol_types::sol_data::Uint<
278                    256,
279                > as alloy_sol_types::SolType>::detokenize(token)
280            }
281        }
282        #[automatically_derived]
283        impl alloy_sol_types::EventTopic for ScalarField {
284            #[inline]
285            fn topic_preimage_length(rust: &Self::RustType) -> usize {
286                <alloy::sol_types::sol_data::Uint<
287                    256,
288                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
289            }
290            #[inline]
291            fn encode_topic_preimage(
292                rust: &Self::RustType,
293                out: &mut alloy_sol_types::private::Vec<u8>,
294            ) {
295                <alloy::sol_types::sol_data::Uint<
296                    256,
297                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
298            }
299            #[inline]
300            fn encode_topic(
301                rust: &Self::RustType,
302            ) -> alloy_sol_types::abi::token::WordToken {
303                <alloy::sol_types::sol_data::Uint<
304                    256,
305                > as alloy_sol_types::EventTopic>::encode_topic(rust)
306            }
307        }
308    };
309    #[derive(serde::Serialize, serde::Deserialize)]
310    #[derive(Default, Debug, PartialEq, Eq, Hash)]
311    /**```solidity
312struct G1Point { BaseField x; BaseField y; }
313```*/
314    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
315    #[derive(Clone)]
316    pub struct G1Point {
317        #[allow(missing_docs)]
318        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
319        #[allow(missing_docs)]
320        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
321    }
322    #[allow(
323        non_camel_case_types,
324        non_snake_case,
325        clippy::pub_underscore_fields,
326        clippy::style
327    )]
328    const _: () = {
329        use alloy::sol_types as alloy_sol_types;
330        #[doc(hidden)]
331        #[allow(dead_code)]
332        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
333        #[doc(hidden)]
334        type UnderlyingRustTuple<'a> = (
335            <BaseField as alloy::sol_types::SolType>::RustType,
336            <BaseField as alloy::sol_types::SolType>::RustType,
337        );
338        #[cfg(test)]
339        #[allow(dead_code, unreachable_patterns)]
340        fn _type_assertion(
341            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
342        ) {
343            match _t {
344                alloy_sol_types::private::AssertTypeEq::<
345                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
346                >(_) => {}
347            }
348        }
349        #[automatically_derived]
350        #[doc(hidden)]
351        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
352            fn from(value: G1Point) -> Self {
353                (value.x, value.y)
354            }
355        }
356        #[automatically_derived]
357        #[doc(hidden)]
358        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
359            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
360                Self { x: tuple.0, y: tuple.1 }
361            }
362        }
363        #[automatically_derived]
364        impl alloy_sol_types::SolValue for G1Point {
365            type SolType = Self;
366        }
367        #[automatically_derived]
368        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
369            #[inline]
370            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
371                (
372                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
373                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
374                )
375            }
376            #[inline]
377            fn stv_abi_encoded_size(&self) -> usize {
378                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
379                    return size;
380                }
381                let tuple = <UnderlyingRustTuple<
382                    '_,
383                > as ::core::convert::From<Self>>::from(self.clone());
384                <UnderlyingSolTuple<
385                    '_,
386                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
387            }
388            #[inline]
389            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
390                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
391            }
392            #[inline]
393            fn stv_abi_encode_packed_to(
394                &self,
395                out: &mut alloy_sol_types::private::Vec<u8>,
396            ) {
397                let tuple = <UnderlyingRustTuple<
398                    '_,
399                > as ::core::convert::From<Self>>::from(self.clone());
400                <UnderlyingSolTuple<
401                    '_,
402                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
403            }
404            #[inline]
405            fn stv_abi_packed_encoded_size(&self) -> usize {
406                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
407                    return size;
408                }
409                let tuple = <UnderlyingRustTuple<
410                    '_,
411                > as ::core::convert::From<Self>>::from(self.clone());
412                <UnderlyingSolTuple<
413                    '_,
414                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
415            }
416        }
417        #[automatically_derived]
418        impl alloy_sol_types::SolType for G1Point {
419            type RustType = Self;
420            type Token<'a> = <UnderlyingSolTuple<
421                'a,
422            > as alloy_sol_types::SolType>::Token<'a>;
423            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
424            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
425                '_,
426            > as alloy_sol_types::SolType>::ENCODED_SIZE;
427            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
428                '_,
429            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
430            #[inline]
431            fn valid_token(token: &Self::Token<'_>) -> bool {
432                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
433            }
434            #[inline]
435            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
436                let tuple = <UnderlyingSolTuple<
437                    '_,
438                > as alloy_sol_types::SolType>::detokenize(token);
439                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
440            }
441        }
442        #[automatically_derived]
443        impl alloy_sol_types::SolStruct for G1Point {
444            const NAME: &'static str = "G1Point";
445            #[inline]
446            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
447                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
448            }
449            #[inline]
450            fn eip712_components() -> alloy_sol_types::private::Vec<
451                alloy_sol_types::private::Cow<'static, str>,
452            > {
453                alloy_sol_types::private::Vec::new()
454            }
455            #[inline]
456            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
457                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
458            }
459            #[inline]
460            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
461                [
462                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
463                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
464                ]
465                    .concat()
466            }
467        }
468        #[automatically_derived]
469        impl alloy_sol_types::EventTopic for G1Point {
470            #[inline]
471            fn topic_preimage_length(rust: &Self::RustType) -> usize {
472                0usize
473                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
474                        &rust.x,
475                    )
476                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
477                        &rust.y,
478                    )
479            }
480            #[inline]
481            fn encode_topic_preimage(
482                rust: &Self::RustType,
483                out: &mut alloy_sol_types::private::Vec<u8>,
484            ) {
485                out.reserve(
486                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
487                );
488                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
489                    &rust.x,
490                    out,
491                );
492                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
493                    &rust.y,
494                    out,
495                );
496            }
497            #[inline]
498            fn encode_topic(
499                rust: &Self::RustType,
500            ) -> alloy_sol_types::abi::token::WordToken {
501                let mut out = alloy_sol_types::private::Vec::new();
502                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
503                    rust,
504                    &mut out,
505                );
506                alloy_sol_types::abi::token::WordToken(
507                    alloy_sol_types::private::keccak256(out),
508                )
509            }
510        }
511    };
512    use alloy::contract as alloy_contract;
513    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
514
515See the [wrapper's documentation](`BN254Instance`) for more details.*/
516    #[inline]
517    pub const fn new<
518        P: alloy_contract::private::Provider<N>,
519        N: alloy_contract::private::Network,
520    >(address: alloy_sol_types::private::Address, __provider: P) -> BN254Instance<P, N> {
521        BN254Instance::<P, N>::new(address, __provider)
522    }
523    /**A [`BN254`](self) instance.
524
525Contains type-safe methods for interacting with an on-chain instance of the
526[`BN254`](self) contract located at a given `address`, using a given
527provider `P`.
528
529If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
530documentation on how to provide it), the `deploy` and `deploy_builder` methods can
531be used to deploy a new instance of the contract.
532
533See the [module-level documentation](self) for all the available methods.*/
534    #[derive(Clone)]
535    pub struct BN254Instance<P, N = alloy_contract::private::Ethereum> {
536        address: alloy_sol_types::private::Address,
537        provider: P,
538        _network: ::core::marker::PhantomData<N>,
539    }
540    #[automatically_derived]
541    impl<P, N> ::core::fmt::Debug for BN254Instance<P, N> {
542        #[inline]
543        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
544            f.debug_tuple("BN254Instance").field(&self.address).finish()
545        }
546    }
547    /// Instantiation and getters/setters.
548    impl<
549        P: alloy_contract::private::Provider<N>,
550        N: alloy_contract::private::Network,
551    > BN254Instance<P, N> {
552        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
553
554See the [wrapper's documentation](`BN254Instance`) for more details.*/
555        #[inline]
556        pub const fn new(
557            address: alloy_sol_types::private::Address,
558            __provider: P,
559        ) -> Self {
560            Self {
561                address,
562                provider: __provider,
563                _network: ::core::marker::PhantomData,
564            }
565        }
566        /// Returns a reference to the address.
567        #[inline]
568        pub const fn address(&self) -> &alloy_sol_types::private::Address {
569            &self.address
570        }
571        /// Sets the address.
572        #[inline]
573        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
574            self.address = address;
575        }
576        /// Sets the address and returns `self`.
577        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
578            self.set_address(address);
579            self
580        }
581        /// Returns a reference to the provider.
582        #[inline]
583        pub const fn provider(&self) -> &P {
584            &self.provider
585        }
586    }
587    impl<P: ::core::clone::Clone, N> BN254Instance<&P, N> {
588        /// Clones the provider and returns a new instance with the cloned provider.
589        #[inline]
590        pub fn with_cloned_provider(self) -> BN254Instance<P, N> {
591            BN254Instance {
592                address: self.address,
593                provider: ::core::clone::Clone::clone(&self.provider),
594                _network: ::core::marker::PhantomData,
595            }
596        }
597    }
598    /// Function calls.
599    impl<
600        P: alloy_contract::private::Provider<N>,
601        N: alloy_contract::private::Network,
602    > BN254Instance<P, N> {
603        /// Creates a new call builder using this contract instance's provider and address.
604        ///
605        /// Note that the call can be any function call, not just those defined in this
606        /// contract. Prefer using the other methods for building type-safe contract calls.
607        pub fn call_builder<C: alloy_sol_types::SolCall>(
608            &self,
609            call: &C,
610        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
611            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
612        }
613    }
614    /// Event filters.
615    impl<
616        P: alloy_contract::private::Provider<N>,
617        N: alloy_contract::private::Network,
618    > BN254Instance<P, N> {
619        /// Creates a new event filter using this contract instance's provider and address.
620        ///
621        /// Note that the type can be any event, not just those defined in this contract.
622        /// Prefer using the other methods for building type-safe event filters.
623        pub fn event_filter<E: alloy_sol_types::SolEvent>(
624            &self,
625        ) -> alloy_contract::Event<&P, E, N> {
626            alloy_contract::Event::new_sol(&self.provider, &self.address)
627        }
628    }
629}
630///Module containing a contract's types and functions.
631/**
632
633```solidity
634library IPlonkVerifier {
635    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; }
636    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; }
637}
638```*/
639#[allow(
640    non_camel_case_types,
641    non_snake_case,
642    clippy::pub_underscore_fields,
643    clippy::style,
644    clippy::empty_structs_with_brackets
645)]
646pub mod IPlonkVerifier {
647    use super::*;
648    use alloy::sol_types as alloy_sol_types;
649    #[derive(serde::Serialize, serde::Deserialize)]
650    #[derive(Default, Debug, PartialEq, Eq, Hash)]
651    /**```solidity
652struct 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; }
653```*/
654    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
655    #[derive(Clone)]
656    pub struct PlonkProof {
657        #[allow(missing_docs)]
658        pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
659        #[allow(missing_docs)]
660        pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
661        #[allow(missing_docs)]
662        pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
663        #[allow(missing_docs)]
664        pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
665        #[allow(missing_docs)]
666        pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
667        #[allow(missing_docs)]
668        pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
669        #[allow(missing_docs)]
670        pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
671        #[allow(missing_docs)]
672        pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
673        #[allow(missing_docs)]
674        pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
675        #[allow(missing_docs)]
676        pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
677        #[allow(missing_docs)]
678        pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
679        #[allow(missing_docs)]
680        pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
681        #[allow(missing_docs)]
682        pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
683        #[allow(missing_docs)]
684        pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
685        #[allow(missing_docs)]
686        pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
687        #[allow(missing_docs)]
688        pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
689        #[allow(missing_docs)]
690        pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
691        #[allow(missing_docs)]
692        pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
693        #[allow(missing_docs)]
694        pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
695        #[allow(missing_docs)]
696        pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
697        #[allow(missing_docs)]
698        pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
699        #[allow(missing_docs)]
700        pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
701        #[allow(missing_docs)]
702        pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
703    }
704    #[allow(
705        non_camel_case_types,
706        non_snake_case,
707        clippy::pub_underscore_fields,
708        clippy::style
709    )]
710    const _: () = {
711        use alloy::sol_types as alloy_sol_types;
712        #[doc(hidden)]
713        #[allow(dead_code)]
714        type UnderlyingSolTuple<'a> = (
715            BN254::G1Point,
716            BN254::G1Point,
717            BN254::G1Point,
718            BN254::G1Point,
719            BN254::G1Point,
720            BN254::G1Point,
721            BN254::G1Point,
722            BN254::G1Point,
723            BN254::G1Point,
724            BN254::G1Point,
725            BN254::G1Point,
726            BN254::G1Point,
727            BN254::G1Point,
728            BN254::ScalarField,
729            BN254::ScalarField,
730            BN254::ScalarField,
731            BN254::ScalarField,
732            BN254::ScalarField,
733            BN254::ScalarField,
734            BN254::ScalarField,
735            BN254::ScalarField,
736            BN254::ScalarField,
737            BN254::ScalarField,
738        );
739        #[doc(hidden)]
740        type UnderlyingRustTuple<'a> = (
741            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
742            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
743            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
744            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
745            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
746            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
747            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
748            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
749            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
750            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
751            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
752            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
753            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
754            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
755            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
756            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
757            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
758            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
759            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
760            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
761            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
762            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
763            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
764        );
765        #[cfg(test)]
766        #[allow(dead_code, unreachable_patterns)]
767        fn _type_assertion(
768            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
769        ) {
770            match _t {
771                alloy_sol_types::private::AssertTypeEq::<
772                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
773                >(_) => {}
774            }
775        }
776        #[automatically_derived]
777        #[doc(hidden)]
778        impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
779            fn from(value: PlonkProof) -> Self {
780                (
781                    value.wire0,
782                    value.wire1,
783                    value.wire2,
784                    value.wire3,
785                    value.wire4,
786                    value.prodPerm,
787                    value.split0,
788                    value.split1,
789                    value.split2,
790                    value.split3,
791                    value.split4,
792                    value.zeta,
793                    value.zetaOmega,
794                    value.wireEval0,
795                    value.wireEval1,
796                    value.wireEval2,
797                    value.wireEval3,
798                    value.wireEval4,
799                    value.sigmaEval0,
800                    value.sigmaEval1,
801                    value.sigmaEval2,
802                    value.sigmaEval3,
803                    value.prodPermZetaOmegaEval,
804                )
805            }
806        }
807        #[automatically_derived]
808        #[doc(hidden)]
809        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
810            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
811                Self {
812                    wire0: tuple.0,
813                    wire1: tuple.1,
814                    wire2: tuple.2,
815                    wire3: tuple.3,
816                    wire4: tuple.4,
817                    prodPerm: tuple.5,
818                    split0: tuple.6,
819                    split1: tuple.7,
820                    split2: tuple.8,
821                    split3: tuple.9,
822                    split4: tuple.10,
823                    zeta: tuple.11,
824                    zetaOmega: tuple.12,
825                    wireEval0: tuple.13,
826                    wireEval1: tuple.14,
827                    wireEval2: tuple.15,
828                    wireEval3: tuple.16,
829                    wireEval4: tuple.17,
830                    sigmaEval0: tuple.18,
831                    sigmaEval1: tuple.19,
832                    sigmaEval2: tuple.20,
833                    sigmaEval3: tuple.21,
834                    prodPermZetaOmegaEval: tuple.22,
835                }
836            }
837        }
838        #[automatically_derived]
839        impl alloy_sol_types::SolValue for PlonkProof {
840            type SolType = Self;
841        }
842        #[automatically_derived]
843        impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
844            #[inline]
845            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
846                (
847                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
848                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
849                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
850                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
851                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
852                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
853                        &self.prodPerm,
854                    ),
855                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
856                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
857                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
858                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
859                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
860                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
861                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
862                        &self.zetaOmega,
863                    ),
864                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
865                        &self.wireEval0,
866                    ),
867                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
868                        &self.wireEval1,
869                    ),
870                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
871                        &self.wireEval2,
872                    ),
873                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
874                        &self.wireEval3,
875                    ),
876                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
877                        &self.wireEval4,
878                    ),
879                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
880                        &self.sigmaEval0,
881                    ),
882                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
883                        &self.sigmaEval1,
884                    ),
885                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
886                        &self.sigmaEval2,
887                    ),
888                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
889                        &self.sigmaEval3,
890                    ),
891                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
892                        &self.prodPermZetaOmegaEval,
893                    ),
894                )
895            }
896            #[inline]
897            fn stv_abi_encoded_size(&self) -> usize {
898                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
899                    return size;
900                }
901                let tuple = <UnderlyingRustTuple<
902                    '_,
903                > as ::core::convert::From<Self>>::from(self.clone());
904                <UnderlyingSolTuple<
905                    '_,
906                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
907            }
908            #[inline]
909            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
910                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
911            }
912            #[inline]
913            fn stv_abi_encode_packed_to(
914                &self,
915                out: &mut alloy_sol_types::private::Vec<u8>,
916            ) {
917                let tuple = <UnderlyingRustTuple<
918                    '_,
919                > as ::core::convert::From<Self>>::from(self.clone());
920                <UnderlyingSolTuple<
921                    '_,
922                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
923            }
924            #[inline]
925            fn stv_abi_packed_encoded_size(&self) -> usize {
926                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
927                    return size;
928                }
929                let tuple = <UnderlyingRustTuple<
930                    '_,
931                > as ::core::convert::From<Self>>::from(self.clone());
932                <UnderlyingSolTuple<
933                    '_,
934                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
935            }
936        }
937        #[automatically_derived]
938        impl alloy_sol_types::SolType for PlonkProof {
939            type RustType = Self;
940            type Token<'a> = <UnderlyingSolTuple<
941                'a,
942            > as alloy_sol_types::SolType>::Token<'a>;
943            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
944            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
945                '_,
946            > as alloy_sol_types::SolType>::ENCODED_SIZE;
947            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
948                '_,
949            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
950            #[inline]
951            fn valid_token(token: &Self::Token<'_>) -> bool {
952                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
953            }
954            #[inline]
955            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
956                let tuple = <UnderlyingSolTuple<
957                    '_,
958                > as alloy_sol_types::SolType>::detokenize(token);
959                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
960            }
961        }
962        #[automatically_derived]
963        impl alloy_sol_types::SolStruct for PlonkProof {
964            const NAME: &'static str = "PlonkProof";
965            #[inline]
966            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
967                alloy_sol_types::private::Cow::Borrowed(
968                    "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)",
969                )
970            }
971            #[inline]
972            fn eip712_components() -> alloy_sol_types::private::Vec<
973                alloy_sol_types::private::Cow<'static, str>,
974            > {
975                let mut components = alloy_sol_types::private::Vec::with_capacity(13);
976                components
977                    .push(
978                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
979                    );
980                components
981                    .extend(
982                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
983                    );
984                components
985                    .push(
986                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
987                    );
988                components
989                    .extend(
990                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
991                    );
992                components
993                    .push(
994                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
995                    );
996                components
997                    .extend(
998                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
999                    );
1000                components
1001                    .push(
1002                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1003                    );
1004                components
1005                    .extend(
1006                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1007                    );
1008                components
1009                    .push(
1010                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1011                    );
1012                components
1013                    .extend(
1014                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1015                    );
1016                components
1017                    .push(
1018                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1019                    );
1020                components
1021                    .extend(
1022                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1023                    );
1024                components
1025                    .push(
1026                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1027                    );
1028                components
1029                    .extend(
1030                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1031                    );
1032                components
1033                    .push(
1034                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1035                    );
1036                components
1037                    .extend(
1038                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1039                    );
1040                components
1041                    .push(
1042                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1043                    );
1044                components
1045                    .extend(
1046                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1047                    );
1048                components
1049                    .push(
1050                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1051                    );
1052                components
1053                    .extend(
1054                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1055                    );
1056                components
1057                    .push(
1058                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1059                    );
1060                components
1061                    .extend(
1062                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1063                    );
1064                components
1065                    .push(
1066                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1067                    );
1068                components
1069                    .extend(
1070                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1071                    );
1072                components
1073                    .push(
1074                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1075                    );
1076                components
1077                    .extend(
1078                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1079                    );
1080                components
1081            }
1082            #[inline]
1083            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1084                [
1085                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1086                            &self.wire0,
1087                        )
1088                        .0,
1089                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1090                            &self.wire1,
1091                        )
1092                        .0,
1093                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1094                            &self.wire2,
1095                        )
1096                        .0,
1097                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1098                            &self.wire3,
1099                        )
1100                        .0,
1101                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1102                            &self.wire4,
1103                        )
1104                        .0,
1105                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1106                            &self.prodPerm,
1107                        )
1108                        .0,
1109                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1110                            &self.split0,
1111                        )
1112                        .0,
1113                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1114                            &self.split1,
1115                        )
1116                        .0,
1117                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1118                            &self.split2,
1119                        )
1120                        .0,
1121                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1122                            &self.split3,
1123                        )
1124                        .0,
1125                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1126                            &self.split4,
1127                        )
1128                        .0,
1129                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1130                            &self.zeta,
1131                        )
1132                        .0,
1133                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1134                            &self.zetaOmega,
1135                        )
1136                        .0,
1137                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1138                            &self.wireEval0,
1139                        )
1140                        .0,
1141                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1142                            &self.wireEval1,
1143                        )
1144                        .0,
1145                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1146                            &self.wireEval2,
1147                        )
1148                        .0,
1149                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1150                            &self.wireEval3,
1151                        )
1152                        .0,
1153                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1154                            &self.wireEval4,
1155                        )
1156                        .0,
1157                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1158                            &self.sigmaEval0,
1159                        )
1160                        .0,
1161                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1162                            &self.sigmaEval1,
1163                        )
1164                        .0,
1165                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1166                            &self.sigmaEval2,
1167                        )
1168                        .0,
1169                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1170                            &self.sigmaEval3,
1171                        )
1172                        .0,
1173                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1174                            &self.prodPermZetaOmegaEval,
1175                        )
1176                        .0,
1177                ]
1178                    .concat()
1179            }
1180        }
1181        #[automatically_derived]
1182        impl alloy_sol_types::EventTopic for PlonkProof {
1183            #[inline]
1184            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1185                0usize
1186                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1187                        &rust.wire0,
1188                    )
1189                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1190                        &rust.wire1,
1191                    )
1192                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1193                        &rust.wire2,
1194                    )
1195                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1196                        &rust.wire3,
1197                    )
1198                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1199                        &rust.wire4,
1200                    )
1201                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1202                        &rust.prodPerm,
1203                    )
1204                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1205                        &rust.split0,
1206                    )
1207                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1208                        &rust.split1,
1209                    )
1210                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1211                        &rust.split2,
1212                    )
1213                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1214                        &rust.split3,
1215                    )
1216                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1217                        &rust.split4,
1218                    )
1219                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1220                        &rust.zeta,
1221                    )
1222                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1223                        &rust.zetaOmega,
1224                    )
1225                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1226                        &rust.wireEval0,
1227                    )
1228                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1229                        &rust.wireEval1,
1230                    )
1231                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1232                        &rust.wireEval2,
1233                    )
1234                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1235                        &rust.wireEval3,
1236                    )
1237                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1238                        &rust.wireEval4,
1239                    )
1240                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1241                        &rust.sigmaEval0,
1242                    )
1243                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1244                        &rust.sigmaEval1,
1245                    )
1246                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1247                        &rust.sigmaEval2,
1248                    )
1249                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1250                        &rust.sigmaEval3,
1251                    )
1252                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1253                        &rust.prodPermZetaOmegaEval,
1254                    )
1255            }
1256            #[inline]
1257            fn encode_topic_preimage(
1258                rust: &Self::RustType,
1259                out: &mut alloy_sol_types::private::Vec<u8>,
1260            ) {
1261                out.reserve(
1262                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1263                );
1264                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1265                    &rust.wire0,
1266                    out,
1267                );
1268                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1269                    &rust.wire1,
1270                    out,
1271                );
1272                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1273                    &rust.wire2,
1274                    out,
1275                );
1276                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1277                    &rust.wire3,
1278                    out,
1279                );
1280                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1281                    &rust.wire4,
1282                    out,
1283                );
1284                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1285                    &rust.prodPerm,
1286                    out,
1287                );
1288                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1289                    &rust.split0,
1290                    out,
1291                );
1292                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1293                    &rust.split1,
1294                    out,
1295                );
1296                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1297                    &rust.split2,
1298                    out,
1299                );
1300                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1301                    &rust.split3,
1302                    out,
1303                );
1304                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1305                    &rust.split4,
1306                    out,
1307                );
1308                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1309                    &rust.zeta,
1310                    out,
1311                );
1312                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1313                    &rust.zetaOmega,
1314                    out,
1315                );
1316                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1317                    &rust.wireEval0,
1318                    out,
1319                );
1320                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1321                    &rust.wireEval1,
1322                    out,
1323                );
1324                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1325                    &rust.wireEval2,
1326                    out,
1327                );
1328                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1329                    &rust.wireEval3,
1330                    out,
1331                );
1332                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1333                    &rust.wireEval4,
1334                    out,
1335                );
1336                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1337                    &rust.sigmaEval0,
1338                    out,
1339                );
1340                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1341                    &rust.sigmaEval1,
1342                    out,
1343                );
1344                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1345                    &rust.sigmaEval2,
1346                    out,
1347                );
1348                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1349                    &rust.sigmaEval3,
1350                    out,
1351                );
1352                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1353                    &rust.prodPermZetaOmegaEval,
1354                    out,
1355                );
1356            }
1357            #[inline]
1358            fn encode_topic(
1359                rust: &Self::RustType,
1360            ) -> alloy_sol_types::abi::token::WordToken {
1361                let mut out = alloy_sol_types::private::Vec::new();
1362                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1363                    rust,
1364                    &mut out,
1365                );
1366                alloy_sol_types::abi::token::WordToken(
1367                    alloy_sol_types::private::keccak256(out),
1368                )
1369            }
1370        }
1371    };
1372    #[derive(serde::Serialize, serde::Deserialize)]
1373    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1374    /**```solidity
1375struct 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; }
1376```*/
1377    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1378    #[derive(Clone)]
1379    pub struct VerifyingKey {
1380        #[allow(missing_docs)]
1381        pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1382        #[allow(missing_docs)]
1383        pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1384        #[allow(missing_docs)]
1385        pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1386        #[allow(missing_docs)]
1387        pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1388        #[allow(missing_docs)]
1389        pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1390        #[allow(missing_docs)]
1391        pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1392        #[allow(missing_docs)]
1393        pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1394        #[allow(missing_docs)]
1395        pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1396        #[allow(missing_docs)]
1397        pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1398        #[allow(missing_docs)]
1399        pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1400        #[allow(missing_docs)]
1401        pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1402        #[allow(missing_docs)]
1403        pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1404        #[allow(missing_docs)]
1405        pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1406        #[allow(missing_docs)]
1407        pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1408        #[allow(missing_docs)]
1409        pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1410        #[allow(missing_docs)]
1411        pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1412        #[allow(missing_docs)]
1413        pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1414        #[allow(missing_docs)]
1415        pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1416        #[allow(missing_docs)]
1417        pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1418        #[allow(missing_docs)]
1419        pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1420        #[allow(missing_docs)]
1421        pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1422        #[allow(missing_docs)]
1423        pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1424    }
1425    #[allow(
1426        non_camel_case_types,
1427        non_snake_case,
1428        clippy::pub_underscore_fields,
1429        clippy::style
1430    )]
1431    const _: () = {
1432        use alloy::sol_types as alloy_sol_types;
1433        #[doc(hidden)]
1434        #[allow(dead_code)]
1435        type UnderlyingSolTuple<'a> = (
1436            alloy::sol_types::sol_data::Uint<256>,
1437            alloy::sol_types::sol_data::Uint<256>,
1438            BN254::G1Point,
1439            BN254::G1Point,
1440            BN254::G1Point,
1441            BN254::G1Point,
1442            BN254::G1Point,
1443            BN254::G1Point,
1444            BN254::G1Point,
1445            BN254::G1Point,
1446            BN254::G1Point,
1447            BN254::G1Point,
1448            BN254::G1Point,
1449            BN254::G1Point,
1450            BN254::G1Point,
1451            BN254::G1Point,
1452            BN254::G1Point,
1453            BN254::G1Point,
1454            BN254::G1Point,
1455            BN254::G1Point,
1456            alloy::sol_types::sol_data::FixedBytes<32>,
1457            alloy::sol_types::sol_data::FixedBytes<32>,
1458        );
1459        #[doc(hidden)]
1460        type UnderlyingRustTuple<'a> = (
1461            alloy::sol_types::private::primitives::aliases::U256,
1462            alloy::sol_types::private::primitives::aliases::U256,
1463            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1464            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1465            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1466            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1467            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1468            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1469            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1470            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1471            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1472            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1473            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1474            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1475            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1476            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1477            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1478            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1479            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1480            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1481            alloy::sol_types::private::FixedBytes<32>,
1482            alloy::sol_types::private::FixedBytes<32>,
1483        );
1484        #[cfg(test)]
1485        #[allow(dead_code, unreachable_patterns)]
1486        fn _type_assertion(
1487            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1488        ) {
1489            match _t {
1490                alloy_sol_types::private::AssertTypeEq::<
1491                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1492                >(_) => {}
1493            }
1494        }
1495        #[automatically_derived]
1496        #[doc(hidden)]
1497        impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1498            fn from(value: VerifyingKey) -> Self {
1499                (
1500                    value.domainSize,
1501                    value.numInputs,
1502                    value.sigma0,
1503                    value.sigma1,
1504                    value.sigma2,
1505                    value.sigma3,
1506                    value.sigma4,
1507                    value.q1,
1508                    value.q2,
1509                    value.q3,
1510                    value.q4,
1511                    value.qM12,
1512                    value.qM34,
1513                    value.qO,
1514                    value.qC,
1515                    value.qH1,
1516                    value.qH2,
1517                    value.qH3,
1518                    value.qH4,
1519                    value.qEcc,
1520                    value.g2LSB,
1521                    value.g2MSB,
1522                )
1523            }
1524        }
1525        #[automatically_derived]
1526        #[doc(hidden)]
1527        impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1528            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1529                Self {
1530                    domainSize: tuple.0,
1531                    numInputs: tuple.1,
1532                    sigma0: tuple.2,
1533                    sigma1: tuple.3,
1534                    sigma2: tuple.4,
1535                    sigma3: tuple.5,
1536                    sigma4: tuple.6,
1537                    q1: tuple.7,
1538                    q2: tuple.8,
1539                    q3: tuple.9,
1540                    q4: tuple.10,
1541                    qM12: tuple.11,
1542                    qM34: tuple.12,
1543                    qO: tuple.13,
1544                    qC: tuple.14,
1545                    qH1: tuple.15,
1546                    qH2: tuple.16,
1547                    qH3: tuple.17,
1548                    qH4: tuple.18,
1549                    qEcc: tuple.19,
1550                    g2LSB: tuple.20,
1551                    g2MSB: tuple.21,
1552                }
1553            }
1554        }
1555        #[automatically_derived]
1556        impl alloy_sol_types::SolValue for VerifyingKey {
1557            type SolType = Self;
1558        }
1559        #[automatically_derived]
1560        impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1561            #[inline]
1562            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1563                (
1564                    <alloy::sol_types::sol_data::Uint<
1565                        256,
1566                    > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1567                    <alloy::sol_types::sol_data::Uint<
1568                        256,
1569                    > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1570                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1571                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1572                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1573                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1574                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1575                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1576                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1577                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1578                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1579                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1580                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1581                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1582                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1583                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1584                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1585                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1586                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1587                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1588                    <alloy::sol_types::sol_data::FixedBytes<
1589                        32,
1590                    > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1591                    <alloy::sol_types::sol_data::FixedBytes<
1592                        32,
1593                    > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1594                )
1595            }
1596            #[inline]
1597            fn stv_abi_encoded_size(&self) -> usize {
1598                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1599                    return size;
1600                }
1601                let tuple = <UnderlyingRustTuple<
1602                    '_,
1603                > as ::core::convert::From<Self>>::from(self.clone());
1604                <UnderlyingSolTuple<
1605                    '_,
1606                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1607            }
1608            #[inline]
1609            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1610                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1611            }
1612            #[inline]
1613            fn stv_abi_encode_packed_to(
1614                &self,
1615                out: &mut alloy_sol_types::private::Vec<u8>,
1616            ) {
1617                let tuple = <UnderlyingRustTuple<
1618                    '_,
1619                > as ::core::convert::From<Self>>::from(self.clone());
1620                <UnderlyingSolTuple<
1621                    '_,
1622                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1623            }
1624            #[inline]
1625            fn stv_abi_packed_encoded_size(&self) -> usize {
1626                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1627                    return size;
1628                }
1629                let tuple = <UnderlyingRustTuple<
1630                    '_,
1631                > as ::core::convert::From<Self>>::from(self.clone());
1632                <UnderlyingSolTuple<
1633                    '_,
1634                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1635            }
1636        }
1637        #[automatically_derived]
1638        impl alloy_sol_types::SolType for VerifyingKey {
1639            type RustType = Self;
1640            type Token<'a> = <UnderlyingSolTuple<
1641                'a,
1642            > as alloy_sol_types::SolType>::Token<'a>;
1643            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1644            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1645                '_,
1646            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1647            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1648                '_,
1649            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1650            #[inline]
1651            fn valid_token(token: &Self::Token<'_>) -> bool {
1652                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1653            }
1654            #[inline]
1655            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1656                let tuple = <UnderlyingSolTuple<
1657                    '_,
1658                > as alloy_sol_types::SolType>::detokenize(token);
1659                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1660            }
1661        }
1662        #[automatically_derived]
1663        impl alloy_sol_types::SolStruct for VerifyingKey {
1664            const NAME: &'static str = "VerifyingKey";
1665            #[inline]
1666            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1667                alloy_sol_types::private::Cow::Borrowed(
1668                    "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)",
1669                )
1670            }
1671            #[inline]
1672            fn eip712_components() -> alloy_sol_types::private::Vec<
1673                alloy_sol_types::private::Cow<'static, str>,
1674            > {
1675                let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1676                components
1677                    .push(
1678                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1679                    );
1680                components
1681                    .extend(
1682                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1683                    );
1684                components
1685                    .push(
1686                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1687                    );
1688                components
1689                    .extend(
1690                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1691                    );
1692                components
1693                    .push(
1694                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1695                    );
1696                components
1697                    .extend(
1698                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1699                    );
1700                components
1701                    .push(
1702                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1703                    );
1704                components
1705                    .extend(
1706                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1707                    );
1708                components
1709                    .push(
1710                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1711                    );
1712                components
1713                    .extend(
1714                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1715                    );
1716                components
1717                    .push(
1718                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1719                    );
1720                components
1721                    .extend(
1722                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1723                    );
1724                components
1725                    .push(
1726                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1727                    );
1728                components
1729                    .extend(
1730                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1731                    );
1732                components
1733                    .push(
1734                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1735                    );
1736                components
1737                    .extend(
1738                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1739                    );
1740                components
1741                    .push(
1742                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1743                    );
1744                components
1745                    .extend(
1746                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1747                    );
1748                components
1749                    .push(
1750                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1751                    );
1752                components
1753                    .extend(
1754                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1755                    );
1756                components
1757                    .push(
1758                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1759                    );
1760                components
1761                    .extend(
1762                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1763                    );
1764                components
1765                    .push(
1766                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1767                    );
1768                components
1769                    .extend(
1770                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1771                    );
1772                components
1773                    .push(
1774                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1775                    );
1776                components
1777                    .extend(
1778                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1779                    );
1780                components
1781                    .push(
1782                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1783                    );
1784                components
1785                    .extend(
1786                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1787                    );
1788                components
1789                    .push(
1790                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1791                    );
1792                components
1793                    .extend(
1794                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1795                    );
1796                components
1797                    .push(
1798                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1799                    );
1800                components
1801                    .extend(
1802                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1803                    );
1804                components
1805                    .push(
1806                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1807                    );
1808                components
1809                    .extend(
1810                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1811                    );
1812                components
1813                    .push(
1814                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1815                    );
1816                components
1817                    .extend(
1818                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1819                    );
1820                components
1821            }
1822            #[inline]
1823            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1824                [
1825                    <alloy::sol_types::sol_data::Uint<
1826                        256,
1827                    > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1828                        .0,
1829                    <alloy::sol_types::sol_data::Uint<
1830                        256,
1831                    > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1832                        .0,
1833                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1834                            &self.sigma0,
1835                        )
1836                        .0,
1837                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1838                            &self.sigma1,
1839                        )
1840                        .0,
1841                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1842                            &self.sigma2,
1843                        )
1844                        .0,
1845                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1846                            &self.sigma3,
1847                        )
1848                        .0,
1849                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1850                            &self.sigma4,
1851                        )
1852                        .0,
1853                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1854                            &self.q1,
1855                        )
1856                        .0,
1857                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1858                            &self.q2,
1859                        )
1860                        .0,
1861                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1862                            &self.q3,
1863                        )
1864                        .0,
1865                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1866                            &self.q4,
1867                        )
1868                        .0,
1869                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1870                            &self.qM12,
1871                        )
1872                        .0,
1873                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1874                            &self.qM34,
1875                        )
1876                        .0,
1877                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1878                            &self.qO,
1879                        )
1880                        .0,
1881                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1882                            &self.qC,
1883                        )
1884                        .0,
1885                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1886                            &self.qH1,
1887                        )
1888                        .0,
1889                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1890                            &self.qH2,
1891                        )
1892                        .0,
1893                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1894                            &self.qH3,
1895                        )
1896                        .0,
1897                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1898                            &self.qH4,
1899                        )
1900                        .0,
1901                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1902                            &self.qEcc,
1903                        )
1904                        .0,
1905                    <alloy::sol_types::sol_data::FixedBytes<
1906                        32,
1907                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1908                        .0,
1909                    <alloy::sol_types::sol_data::FixedBytes<
1910                        32,
1911                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1912                        .0,
1913                ]
1914                    .concat()
1915            }
1916        }
1917        #[automatically_derived]
1918        impl alloy_sol_types::EventTopic for VerifyingKey {
1919            #[inline]
1920            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1921                0usize
1922                    + <alloy::sol_types::sol_data::Uint<
1923                        256,
1924                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1925                        &rust.domainSize,
1926                    )
1927                    + <alloy::sol_types::sol_data::Uint<
1928                        256,
1929                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1930                        &rust.numInputs,
1931                    )
1932                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1933                        &rust.sigma0,
1934                    )
1935                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1936                        &rust.sigma1,
1937                    )
1938                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1939                        &rust.sigma2,
1940                    )
1941                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1942                        &rust.sigma3,
1943                    )
1944                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1945                        &rust.sigma4,
1946                    )
1947                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1948                        &rust.q1,
1949                    )
1950                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1951                        &rust.q2,
1952                    )
1953                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1954                        &rust.q3,
1955                    )
1956                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1957                        &rust.q4,
1958                    )
1959                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1960                        &rust.qM12,
1961                    )
1962                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1963                        &rust.qM34,
1964                    )
1965                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1966                        &rust.qO,
1967                    )
1968                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1969                        &rust.qC,
1970                    )
1971                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1972                        &rust.qH1,
1973                    )
1974                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1975                        &rust.qH2,
1976                    )
1977                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1978                        &rust.qH3,
1979                    )
1980                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1981                        &rust.qH4,
1982                    )
1983                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1984                        &rust.qEcc,
1985                    )
1986                    + <alloy::sol_types::sol_data::FixedBytes<
1987                        32,
1988                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1989                    + <alloy::sol_types::sol_data::FixedBytes<
1990                        32,
1991                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1992            }
1993            #[inline]
1994            fn encode_topic_preimage(
1995                rust: &Self::RustType,
1996                out: &mut alloy_sol_types::private::Vec<u8>,
1997            ) {
1998                out.reserve(
1999                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2000                );
2001                <alloy::sol_types::sol_data::Uint<
2002                    256,
2003                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2004                    &rust.domainSize,
2005                    out,
2006                );
2007                <alloy::sol_types::sol_data::Uint<
2008                    256,
2009                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2010                    &rust.numInputs,
2011                    out,
2012                );
2013                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2014                    &rust.sigma0,
2015                    out,
2016                );
2017                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2018                    &rust.sigma1,
2019                    out,
2020                );
2021                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2022                    &rust.sigma2,
2023                    out,
2024                );
2025                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2026                    &rust.sigma3,
2027                    out,
2028                );
2029                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2030                    &rust.sigma4,
2031                    out,
2032                );
2033                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2034                    &rust.q1,
2035                    out,
2036                );
2037                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2038                    &rust.q2,
2039                    out,
2040                );
2041                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2042                    &rust.q3,
2043                    out,
2044                );
2045                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2046                    &rust.q4,
2047                    out,
2048                );
2049                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2050                    &rust.qM12,
2051                    out,
2052                );
2053                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2054                    &rust.qM34,
2055                    out,
2056                );
2057                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2058                    &rust.qO,
2059                    out,
2060                );
2061                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2062                    &rust.qC,
2063                    out,
2064                );
2065                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2066                    &rust.qH1,
2067                    out,
2068                );
2069                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2070                    &rust.qH2,
2071                    out,
2072                );
2073                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2074                    &rust.qH3,
2075                    out,
2076                );
2077                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2078                    &rust.qH4,
2079                    out,
2080                );
2081                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2082                    &rust.qEcc,
2083                    out,
2084                );
2085                <alloy::sol_types::sol_data::FixedBytes<
2086                    32,
2087                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2088                    &rust.g2LSB,
2089                    out,
2090                );
2091                <alloy::sol_types::sol_data::FixedBytes<
2092                    32,
2093                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2094                    &rust.g2MSB,
2095                    out,
2096                );
2097            }
2098            #[inline]
2099            fn encode_topic(
2100                rust: &Self::RustType,
2101            ) -> alloy_sol_types::abi::token::WordToken {
2102                let mut out = alloy_sol_types::private::Vec::new();
2103                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2104                    rust,
2105                    &mut out,
2106                );
2107                alloy_sol_types::abi::token::WordToken(
2108                    alloy_sol_types::private::keccak256(out),
2109                )
2110            }
2111        }
2112    };
2113    use alloy::contract as alloy_contract;
2114    /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2115
2116See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2117    #[inline]
2118    pub const fn new<
2119        P: alloy_contract::private::Provider<N>,
2120        N: alloy_contract::private::Network,
2121    >(
2122        address: alloy_sol_types::private::Address,
2123        __provider: P,
2124    ) -> IPlonkVerifierInstance<P, N> {
2125        IPlonkVerifierInstance::<P, N>::new(address, __provider)
2126    }
2127    /**A [`IPlonkVerifier`](self) instance.
2128
2129Contains type-safe methods for interacting with an on-chain instance of the
2130[`IPlonkVerifier`](self) contract located at a given `address`, using a given
2131provider `P`.
2132
2133If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2134documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2135be used to deploy a new instance of the contract.
2136
2137See the [module-level documentation](self) for all the available methods.*/
2138    #[derive(Clone)]
2139    pub struct IPlonkVerifierInstance<P, N = alloy_contract::private::Ethereum> {
2140        address: alloy_sol_types::private::Address,
2141        provider: P,
2142        _network: ::core::marker::PhantomData<N>,
2143    }
2144    #[automatically_derived]
2145    impl<P, N> ::core::fmt::Debug for IPlonkVerifierInstance<P, N> {
2146        #[inline]
2147        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2148            f.debug_tuple("IPlonkVerifierInstance").field(&self.address).finish()
2149        }
2150    }
2151    /// Instantiation and getters/setters.
2152    impl<
2153        P: alloy_contract::private::Provider<N>,
2154        N: alloy_contract::private::Network,
2155    > IPlonkVerifierInstance<P, N> {
2156        /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2157
2158See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2159        #[inline]
2160        pub const fn new(
2161            address: alloy_sol_types::private::Address,
2162            __provider: P,
2163        ) -> Self {
2164            Self {
2165                address,
2166                provider: __provider,
2167                _network: ::core::marker::PhantomData,
2168            }
2169        }
2170        /// Returns a reference to the address.
2171        #[inline]
2172        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2173            &self.address
2174        }
2175        /// Sets the address.
2176        #[inline]
2177        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2178            self.address = address;
2179        }
2180        /// Sets the address and returns `self`.
2181        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2182            self.set_address(address);
2183            self
2184        }
2185        /// Returns a reference to the provider.
2186        #[inline]
2187        pub const fn provider(&self) -> &P {
2188            &self.provider
2189        }
2190    }
2191    impl<P: ::core::clone::Clone, N> IPlonkVerifierInstance<&P, N> {
2192        /// Clones the provider and returns a new instance with the cloned provider.
2193        #[inline]
2194        pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<P, N> {
2195            IPlonkVerifierInstance {
2196                address: self.address,
2197                provider: ::core::clone::Clone::clone(&self.provider),
2198                _network: ::core::marker::PhantomData,
2199            }
2200        }
2201    }
2202    /// Function calls.
2203    impl<
2204        P: alloy_contract::private::Provider<N>,
2205        N: alloy_contract::private::Network,
2206    > IPlonkVerifierInstance<P, N> {
2207        /// Creates a new call builder using this contract instance's provider and address.
2208        ///
2209        /// Note that the call can be any function call, not just those defined in this
2210        /// contract. Prefer using the other methods for building type-safe contract calls.
2211        pub fn call_builder<C: alloy_sol_types::SolCall>(
2212            &self,
2213            call: &C,
2214        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2215            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2216        }
2217    }
2218    /// Event filters.
2219    impl<
2220        P: alloy_contract::private::Provider<N>,
2221        N: alloy_contract::private::Network,
2222    > IPlonkVerifierInstance<P, N> {
2223        /// Creates a new event filter using this contract instance's provider and address.
2224        ///
2225        /// Note that the type can be any event, not just those defined in this contract.
2226        /// Prefer using the other methods for building type-safe event filters.
2227        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2228            &self,
2229        ) -> alloy_contract::Event<&P, E, N> {
2230            alloy_contract::Event::new_sol(&self.provider, &self.address)
2231        }
2232    }
2233}
2234/**
2235
2236Generated by the following Solidity interface...
2237```solidity
2238library BN254 {
2239    type BaseField is uint256;
2240    type ScalarField is uint256;
2241    struct G1Point {
2242        BaseField x;
2243        BaseField y;
2244    }
2245}
2246
2247library IPlonkVerifier {
2248    struct PlonkProof {
2249        BN254.G1Point wire0;
2250        BN254.G1Point wire1;
2251        BN254.G1Point wire2;
2252        BN254.G1Point wire3;
2253        BN254.G1Point wire4;
2254        BN254.G1Point prodPerm;
2255        BN254.G1Point split0;
2256        BN254.G1Point split1;
2257        BN254.G1Point split2;
2258        BN254.G1Point split3;
2259        BN254.G1Point split4;
2260        BN254.G1Point zeta;
2261        BN254.G1Point zetaOmega;
2262        BN254.ScalarField wireEval0;
2263        BN254.ScalarField wireEval1;
2264        BN254.ScalarField wireEval2;
2265        BN254.ScalarField wireEval3;
2266        BN254.ScalarField wireEval4;
2267        BN254.ScalarField sigmaEval0;
2268        BN254.ScalarField sigmaEval1;
2269        BN254.ScalarField sigmaEval2;
2270        BN254.ScalarField sigmaEval3;
2271        BN254.ScalarField prodPermZetaOmegaEval;
2272    }
2273    struct VerifyingKey {
2274        uint256 domainSize;
2275        uint256 numInputs;
2276        BN254.G1Point sigma0;
2277        BN254.G1Point sigma1;
2278        BN254.G1Point sigma2;
2279        BN254.G1Point sigma3;
2280        BN254.G1Point sigma4;
2281        BN254.G1Point q1;
2282        BN254.G1Point q2;
2283        BN254.G1Point q3;
2284        BN254.G1Point q4;
2285        BN254.G1Point qM12;
2286        BN254.G1Point qM34;
2287        BN254.G1Point qO;
2288        BN254.G1Point qC;
2289        BN254.G1Point qH1;
2290        BN254.G1Point qH2;
2291        BN254.G1Point qH3;
2292        BN254.G1Point qH4;
2293        BN254.G1Point qEcc;
2294        bytes32 g2LSB;
2295        bytes32 g2MSB;
2296    }
2297}
2298
2299interface LightClient {
2300    struct LightClientState {
2301        uint64 viewNum;
2302        uint64 blockHeight;
2303        BN254.ScalarField blockCommRoot;
2304    }
2305    struct StakeTableState {
2306        uint256 threshold;
2307        BN254.ScalarField blsKeyComm;
2308        BN254.ScalarField schnorrKeyComm;
2309        BN254.ScalarField amountComm;
2310    }
2311
2312    error AddressEmptyCode(address target);
2313    error ERC1967InvalidImplementation(address implementation);
2314    error ERC1967NonPayable();
2315    error FailedInnerCall();
2316    error InsufficientSnapshotHistory();
2317    error InvalidAddress();
2318    error InvalidArgs();
2319    error InvalidHotShotBlockForCommitmentCheck();
2320    error InvalidInitialization();
2321    error InvalidMaxStateHistory();
2322    error InvalidProof();
2323    error InvalidScalar();
2324    error NoChangeRequired();
2325    error NotInitializing();
2326    error OutdatedState();
2327    error OwnableInvalidOwner(address owner);
2328    error OwnableUnauthorizedAccount(address account);
2329    error OwnershipCannotBeRenounced();
2330    error ProverNotPermissioned();
2331    error UUPSUnauthorizedCallContext();
2332    error UUPSUnsupportedProxiableUUID(bytes32 slot);
2333    error WrongStakeTableUsed();
2334
2335    event Initialized(uint64 version);
2336    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
2337    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
2338    event PermissionedProverNotRequired();
2339    event PermissionedProverRequired(address permissionedProver);
2340    event Upgrade(address implementation);
2341    event Upgraded(address indexed implementation);
2342
2343    constructor();
2344
2345    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
2346    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
2347    function currentBlockNumber() external view returns (uint256);
2348    function disablePermissionedProverMode() external;
2349    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
2350    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
2351    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
2352    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
2353    function getStateHistoryCount() external view returns (uint256);
2354    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
2355    function initialize(LightClientState memory _genesis, StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
2356    function isPermissionedProverEnabled() external view returns (bool);
2357    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
2358    function newFinalizedState(LightClientState memory newState, IPlonkVerifier.PlonkProof memory proof) external;
2359    function owner() external view returns (address);
2360    function permissionedProver() external view returns (address);
2361    function proxiableUUID() external view returns (bytes32);
2362    function renounceOwnership() external;
2363    function setPermissionedProver(address prover) external;
2364    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
2365    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
2366    function stateHistoryFirstIndex() external view returns (uint64);
2367    function stateHistoryRetentionPeriod() external view returns (uint32);
2368    function transferOwnership(address newOwner) external;
2369    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
2370}
2371```
2372
2373...which was generated by the following JSON ABI:
2374```json
2375[
2376  {
2377    "type": "constructor",
2378    "inputs": [],
2379    "stateMutability": "nonpayable"
2380  },
2381  {
2382    "type": "function",
2383    "name": "UPGRADE_INTERFACE_VERSION",
2384    "inputs": [],
2385    "outputs": [
2386      {
2387        "name": "",
2388        "type": "string",
2389        "internalType": "string"
2390      }
2391    ],
2392    "stateMutability": "view"
2393  },
2394  {
2395    "type": "function",
2396    "name": "_getVk",
2397    "inputs": [],
2398    "outputs": [
2399      {
2400        "name": "vk",
2401        "type": "tuple",
2402        "internalType": "struct IPlonkVerifier.VerifyingKey",
2403        "components": [
2404          {
2405            "name": "domainSize",
2406            "type": "uint256",
2407            "internalType": "uint256"
2408          },
2409          {
2410            "name": "numInputs",
2411            "type": "uint256",
2412            "internalType": "uint256"
2413          },
2414          {
2415            "name": "sigma0",
2416            "type": "tuple",
2417            "internalType": "struct BN254.G1Point",
2418            "components": [
2419              {
2420                "name": "x",
2421                "type": "uint256",
2422                "internalType": "BN254.BaseField"
2423              },
2424              {
2425                "name": "y",
2426                "type": "uint256",
2427                "internalType": "BN254.BaseField"
2428              }
2429            ]
2430          },
2431          {
2432            "name": "sigma1",
2433            "type": "tuple",
2434            "internalType": "struct BN254.G1Point",
2435            "components": [
2436              {
2437                "name": "x",
2438                "type": "uint256",
2439                "internalType": "BN254.BaseField"
2440              },
2441              {
2442                "name": "y",
2443                "type": "uint256",
2444                "internalType": "BN254.BaseField"
2445              }
2446            ]
2447          },
2448          {
2449            "name": "sigma2",
2450            "type": "tuple",
2451            "internalType": "struct BN254.G1Point",
2452            "components": [
2453              {
2454                "name": "x",
2455                "type": "uint256",
2456                "internalType": "BN254.BaseField"
2457              },
2458              {
2459                "name": "y",
2460                "type": "uint256",
2461                "internalType": "BN254.BaseField"
2462              }
2463            ]
2464          },
2465          {
2466            "name": "sigma3",
2467            "type": "tuple",
2468            "internalType": "struct BN254.G1Point",
2469            "components": [
2470              {
2471                "name": "x",
2472                "type": "uint256",
2473                "internalType": "BN254.BaseField"
2474              },
2475              {
2476                "name": "y",
2477                "type": "uint256",
2478                "internalType": "BN254.BaseField"
2479              }
2480            ]
2481          },
2482          {
2483            "name": "sigma4",
2484            "type": "tuple",
2485            "internalType": "struct BN254.G1Point",
2486            "components": [
2487              {
2488                "name": "x",
2489                "type": "uint256",
2490                "internalType": "BN254.BaseField"
2491              },
2492              {
2493                "name": "y",
2494                "type": "uint256",
2495                "internalType": "BN254.BaseField"
2496              }
2497            ]
2498          },
2499          {
2500            "name": "q1",
2501            "type": "tuple",
2502            "internalType": "struct BN254.G1Point",
2503            "components": [
2504              {
2505                "name": "x",
2506                "type": "uint256",
2507                "internalType": "BN254.BaseField"
2508              },
2509              {
2510                "name": "y",
2511                "type": "uint256",
2512                "internalType": "BN254.BaseField"
2513              }
2514            ]
2515          },
2516          {
2517            "name": "q2",
2518            "type": "tuple",
2519            "internalType": "struct BN254.G1Point",
2520            "components": [
2521              {
2522                "name": "x",
2523                "type": "uint256",
2524                "internalType": "BN254.BaseField"
2525              },
2526              {
2527                "name": "y",
2528                "type": "uint256",
2529                "internalType": "BN254.BaseField"
2530              }
2531            ]
2532          },
2533          {
2534            "name": "q3",
2535            "type": "tuple",
2536            "internalType": "struct BN254.G1Point",
2537            "components": [
2538              {
2539                "name": "x",
2540                "type": "uint256",
2541                "internalType": "BN254.BaseField"
2542              },
2543              {
2544                "name": "y",
2545                "type": "uint256",
2546                "internalType": "BN254.BaseField"
2547              }
2548            ]
2549          },
2550          {
2551            "name": "q4",
2552            "type": "tuple",
2553            "internalType": "struct BN254.G1Point",
2554            "components": [
2555              {
2556                "name": "x",
2557                "type": "uint256",
2558                "internalType": "BN254.BaseField"
2559              },
2560              {
2561                "name": "y",
2562                "type": "uint256",
2563                "internalType": "BN254.BaseField"
2564              }
2565            ]
2566          },
2567          {
2568            "name": "qM12",
2569            "type": "tuple",
2570            "internalType": "struct BN254.G1Point",
2571            "components": [
2572              {
2573                "name": "x",
2574                "type": "uint256",
2575                "internalType": "BN254.BaseField"
2576              },
2577              {
2578                "name": "y",
2579                "type": "uint256",
2580                "internalType": "BN254.BaseField"
2581              }
2582            ]
2583          },
2584          {
2585            "name": "qM34",
2586            "type": "tuple",
2587            "internalType": "struct BN254.G1Point",
2588            "components": [
2589              {
2590                "name": "x",
2591                "type": "uint256",
2592                "internalType": "BN254.BaseField"
2593              },
2594              {
2595                "name": "y",
2596                "type": "uint256",
2597                "internalType": "BN254.BaseField"
2598              }
2599            ]
2600          },
2601          {
2602            "name": "qO",
2603            "type": "tuple",
2604            "internalType": "struct BN254.G1Point",
2605            "components": [
2606              {
2607                "name": "x",
2608                "type": "uint256",
2609                "internalType": "BN254.BaseField"
2610              },
2611              {
2612                "name": "y",
2613                "type": "uint256",
2614                "internalType": "BN254.BaseField"
2615              }
2616            ]
2617          },
2618          {
2619            "name": "qC",
2620            "type": "tuple",
2621            "internalType": "struct BN254.G1Point",
2622            "components": [
2623              {
2624                "name": "x",
2625                "type": "uint256",
2626                "internalType": "BN254.BaseField"
2627              },
2628              {
2629                "name": "y",
2630                "type": "uint256",
2631                "internalType": "BN254.BaseField"
2632              }
2633            ]
2634          },
2635          {
2636            "name": "qH1",
2637            "type": "tuple",
2638            "internalType": "struct BN254.G1Point",
2639            "components": [
2640              {
2641                "name": "x",
2642                "type": "uint256",
2643                "internalType": "BN254.BaseField"
2644              },
2645              {
2646                "name": "y",
2647                "type": "uint256",
2648                "internalType": "BN254.BaseField"
2649              }
2650            ]
2651          },
2652          {
2653            "name": "qH2",
2654            "type": "tuple",
2655            "internalType": "struct BN254.G1Point",
2656            "components": [
2657              {
2658                "name": "x",
2659                "type": "uint256",
2660                "internalType": "BN254.BaseField"
2661              },
2662              {
2663                "name": "y",
2664                "type": "uint256",
2665                "internalType": "BN254.BaseField"
2666              }
2667            ]
2668          },
2669          {
2670            "name": "qH3",
2671            "type": "tuple",
2672            "internalType": "struct BN254.G1Point",
2673            "components": [
2674              {
2675                "name": "x",
2676                "type": "uint256",
2677                "internalType": "BN254.BaseField"
2678              },
2679              {
2680                "name": "y",
2681                "type": "uint256",
2682                "internalType": "BN254.BaseField"
2683              }
2684            ]
2685          },
2686          {
2687            "name": "qH4",
2688            "type": "tuple",
2689            "internalType": "struct BN254.G1Point",
2690            "components": [
2691              {
2692                "name": "x",
2693                "type": "uint256",
2694                "internalType": "BN254.BaseField"
2695              },
2696              {
2697                "name": "y",
2698                "type": "uint256",
2699                "internalType": "BN254.BaseField"
2700              }
2701            ]
2702          },
2703          {
2704            "name": "qEcc",
2705            "type": "tuple",
2706            "internalType": "struct BN254.G1Point",
2707            "components": [
2708              {
2709                "name": "x",
2710                "type": "uint256",
2711                "internalType": "BN254.BaseField"
2712              },
2713              {
2714                "name": "y",
2715                "type": "uint256",
2716                "internalType": "BN254.BaseField"
2717              }
2718            ]
2719          },
2720          {
2721            "name": "g2LSB",
2722            "type": "bytes32",
2723            "internalType": "bytes32"
2724          },
2725          {
2726            "name": "g2MSB",
2727            "type": "bytes32",
2728            "internalType": "bytes32"
2729          }
2730        ]
2731      }
2732    ],
2733    "stateMutability": "pure"
2734  },
2735  {
2736    "type": "function",
2737    "name": "currentBlockNumber",
2738    "inputs": [],
2739    "outputs": [
2740      {
2741        "name": "",
2742        "type": "uint256",
2743        "internalType": "uint256"
2744      }
2745    ],
2746    "stateMutability": "view"
2747  },
2748  {
2749    "type": "function",
2750    "name": "disablePermissionedProverMode",
2751    "inputs": [],
2752    "outputs": [],
2753    "stateMutability": "nonpayable"
2754  },
2755  {
2756    "type": "function",
2757    "name": "finalizedState",
2758    "inputs": [],
2759    "outputs": [
2760      {
2761        "name": "viewNum",
2762        "type": "uint64",
2763        "internalType": "uint64"
2764      },
2765      {
2766        "name": "blockHeight",
2767        "type": "uint64",
2768        "internalType": "uint64"
2769      },
2770      {
2771        "name": "blockCommRoot",
2772        "type": "uint256",
2773        "internalType": "BN254.ScalarField"
2774      }
2775    ],
2776    "stateMutability": "view"
2777  },
2778  {
2779    "type": "function",
2780    "name": "genesisStakeTableState",
2781    "inputs": [],
2782    "outputs": [
2783      {
2784        "name": "threshold",
2785        "type": "uint256",
2786        "internalType": "uint256"
2787      },
2788      {
2789        "name": "blsKeyComm",
2790        "type": "uint256",
2791        "internalType": "BN254.ScalarField"
2792      },
2793      {
2794        "name": "schnorrKeyComm",
2795        "type": "uint256",
2796        "internalType": "BN254.ScalarField"
2797      },
2798      {
2799        "name": "amountComm",
2800        "type": "uint256",
2801        "internalType": "BN254.ScalarField"
2802      }
2803    ],
2804    "stateMutability": "view"
2805  },
2806  {
2807    "type": "function",
2808    "name": "genesisState",
2809    "inputs": [],
2810    "outputs": [
2811      {
2812        "name": "viewNum",
2813        "type": "uint64",
2814        "internalType": "uint64"
2815      },
2816      {
2817        "name": "blockHeight",
2818        "type": "uint64",
2819        "internalType": "uint64"
2820      },
2821      {
2822        "name": "blockCommRoot",
2823        "type": "uint256",
2824        "internalType": "BN254.ScalarField"
2825      }
2826    ],
2827    "stateMutability": "view"
2828  },
2829  {
2830    "type": "function",
2831    "name": "getHotShotCommitment",
2832    "inputs": [
2833      {
2834        "name": "hotShotBlockHeight",
2835        "type": "uint256",
2836        "internalType": "uint256"
2837      }
2838    ],
2839    "outputs": [
2840      {
2841        "name": "hotShotBlockCommRoot",
2842        "type": "uint256",
2843        "internalType": "BN254.ScalarField"
2844      },
2845      {
2846        "name": "hotshotBlockHeight",
2847        "type": "uint64",
2848        "internalType": "uint64"
2849      }
2850    ],
2851    "stateMutability": "view"
2852  },
2853  {
2854    "type": "function",
2855    "name": "getStateHistoryCount",
2856    "inputs": [],
2857    "outputs": [
2858      {
2859        "name": "",
2860        "type": "uint256",
2861        "internalType": "uint256"
2862      }
2863    ],
2864    "stateMutability": "view"
2865  },
2866  {
2867    "type": "function",
2868    "name": "getVersion",
2869    "inputs": [],
2870    "outputs": [
2871      {
2872        "name": "majorVersion",
2873        "type": "uint8",
2874        "internalType": "uint8"
2875      },
2876      {
2877        "name": "minorVersion",
2878        "type": "uint8",
2879        "internalType": "uint8"
2880      },
2881      {
2882        "name": "patchVersion",
2883        "type": "uint8",
2884        "internalType": "uint8"
2885      }
2886    ],
2887    "stateMutability": "pure"
2888  },
2889  {
2890    "type": "function",
2891    "name": "initialize",
2892    "inputs": [
2893      {
2894        "name": "_genesis",
2895        "type": "tuple",
2896        "internalType": "struct LightClient.LightClientState",
2897        "components": [
2898          {
2899            "name": "viewNum",
2900            "type": "uint64",
2901            "internalType": "uint64"
2902          },
2903          {
2904            "name": "blockHeight",
2905            "type": "uint64",
2906            "internalType": "uint64"
2907          },
2908          {
2909            "name": "blockCommRoot",
2910            "type": "uint256",
2911            "internalType": "BN254.ScalarField"
2912          }
2913        ]
2914      },
2915      {
2916        "name": "_genesisStakeTableState",
2917        "type": "tuple",
2918        "internalType": "struct LightClient.StakeTableState",
2919        "components": [
2920          {
2921            "name": "threshold",
2922            "type": "uint256",
2923            "internalType": "uint256"
2924          },
2925          {
2926            "name": "blsKeyComm",
2927            "type": "uint256",
2928            "internalType": "BN254.ScalarField"
2929          },
2930          {
2931            "name": "schnorrKeyComm",
2932            "type": "uint256",
2933            "internalType": "BN254.ScalarField"
2934          },
2935          {
2936            "name": "amountComm",
2937            "type": "uint256",
2938            "internalType": "BN254.ScalarField"
2939          }
2940        ]
2941      },
2942      {
2943        "name": "_stateHistoryRetentionPeriod",
2944        "type": "uint32",
2945        "internalType": "uint32"
2946      },
2947      {
2948        "name": "owner",
2949        "type": "address",
2950        "internalType": "address"
2951      }
2952    ],
2953    "outputs": [],
2954    "stateMutability": "nonpayable"
2955  },
2956  {
2957    "type": "function",
2958    "name": "isPermissionedProverEnabled",
2959    "inputs": [],
2960    "outputs": [
2961      {
2962        "name": "",
2963        "type": "bool",
2964        "internalType": "bool"
2965      }
2966    ],
2967    "stateMutability": "view"
2968  },
2969  {
2970    "type": "function",
2971    "name": "lagOverEscapeHatchThreshold",
2972    "inputs": [
2973      {
2974        "name": "blockNumber",
2975        "type": "uint256",
2976        "internalType": "uint256"
2977      },
2978      {
2979        "name": "blockThreshold",
2980        "type": "uint256",
2981        "internalType": "uint256"
2982      }
2983    ],
2984    "outputs": [
2985      {
2986        "name": "",
2987        "type": "bool",
2988        "internalType": "bool"
2989      }
2990    ],
2991    "stateMutability": "view"
2992  },
2993  {
2994    "type": "function",
2995    "name": "newFinalizedState",
2996    "inputs": [
2997      {
2998        "name": "newState",
2999        "type": "tuple",
3000        "internalType": "struct LightClient.LightClientState",
3001        "components": [
3002          {
3003            "name": "viewNum",
3004            "type": "uint64",
3005            "internalType": "uint64"
3006          },
3007          {
3008            "name": "blockHeight",
3009            "type": "uint64",
3010            "internalType": "uint64"
3011          },
3012          {
3013            "name": "blockCommRoot",
3014            "type": "uint256",
3015            "internalType": "BN254.ScalarField"
3016          }
3017        ]
3018      },
3019      {
3020        "name": "proof",
3021        "type": "tuple",
3022        "internalType": "struct IPlonkVerifier.PlonkProof",
3023        "components": [
3024          {
3025            "name": "wire0",
3026            "type": "tuple",
3027            "internalType": "struct BN254.G1Point",
3028            "components": [
3029              {
3030                "name": "x",
3031                "type": "uint256",
3032                "internalType": "BN254.BaseField"
3033              },
3034              {
3035                "name": "y",
3036                "type": "uint256",
3037                "internalType": "BN254.BaseField"
3038              }
3039            ]
3040          },
3041          {
3042            "name": "wire1",
3043            "type": "tuple",
3044            "internalType": "struct BN254.G1Point",
3045            "components": [
3046              {
3047                "name": "x",
3048                "type": "uint256",
3049                "internalType": "BN254.BaseField"
3050              },
3051              {
3052                "name": "y",
3053                "type": "uint256",
3054                "internalType": "BN254.BaseField"
3055              }
3056            ]
3057          },
3058          {
3059            "name": "wire2",
3060            "type": "tuple",
3061            "internalType": "struct BN254.G1Point",
3062            "components": [
3063              {
3064                "name": "x",
3065                "type": "uint256",
3066                "internalType": "BN254.BaseField"
3067              },
3068              {
3069                "name": "y",
3070                "type": "uint256",
3071                "internalType": "BN254.BaseField"
3072              }
3073            ]
3074          },
3075          {
3076            "name": "wire3",
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": "wire4",
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": "prodPerm",
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": "split0",
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": "split1",
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": "split2",
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": "split3",
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": "split4",
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": "zeta",
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": "zetaOmega",
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": "wireEval0",
3247            "type": "uint256",
3248            "internalType": "BN254.ScalarField"
3249          },
3250          {
3251            "name": "wireEval1",
3252            "type": "uint256",
3253            "internalType": "BN254.ScalarField"
3254          },
3255          {
3256            "name": "wireEval2",
3257            "type": "uint256",
3258            "internalType": "BN254.ScalarField"
3259          },
3260          {
3261            "name": "wireEval3",
3262            "type": "uint256",
3263            "internalType": "BN254.ScalarField"
3264          },
3265          {
3266            "name": "wireEval4",
3267            "type": "uint256",
3268            "internalType": "BN254.ScalarField"
3269          },
3270          {
3271            "name": "sigmaEval0",
3272            "type": "uint256",
3273            "internalType": "BN254.ScalarField"
3274          },
3275          {
3276            "name": "sigmaEval1",
3277            "type": "uint256",
3278            "internalType": "BN254.ScalarField"
3279          },
3280          {
3281            "name": "sigmaEval2",
3282            "type": "uint256",
3283            "internalType": "BN254.ScalarField"
3284          },
3285          {
3286            "name": "sigmaEval3",
3287            "type": "uint256",
3288            "internalType": "BN254.ScalarField"
3289          },
3290          {
3291            "name": "prodPermZetaOmegaEval",
3292            "type": "uint256",
3293            "internalType": "BN254.ScalarField"
3294          }
3295        ]
3296      }
3297    ],
3298    "outputs": [],
3299    "stateMutability": "nonpayable"
3300  },
3301  {
3302    "type": "function",
3303    "name": "owner",
3304    "inputs": [],
3305    "outputs": [
3306      {
3307        "name": "",
3308        "type": "address",
3309        "internalType": "address"
3310      }
3311    ],
3312    "stateMutability": "view"
3313  },
3314  {
3315    "type": "function",
3316    "name": "permissionedProver",
3317    "inputs": [],
3318    "outputs": [
3319      {
3320        "name": "",
3321        "type": "address",
3322        "internalType": "address"
3323      }
3324    ],
3325    "stateMutability": "view"
3326  },
3327  {
3328    "type": "function",
3329    "name": "proxiableUUID",
3330    "inputs": [],
3331    "outputs": [
3332      {
3333        "name": "",
3334        "type": "bytes32",
3335        "internalType": "bytes32"
3336      }
3337    ],
3338    "stateMutability": "view"
3339  },
3340  {
3341    "type": "function",
3342    "name": "renounceOwnership",
3343    "inputs": [],
3344    "outputs": [],
3345    "stateMutability": "nonpayable"
3346  },
3347  {
3348    "type": "function",
3349    "name": "setPermissionedProver",
3350    "inputs": [
3351      {
3352        "name": "prover",
3353        "type": "address",
3354        "internalType": "address"
3355      }
3356    ],
3357    "outputs": [],
3358    "stateMutability": "nonpayable"
3359  },
3360  {
3361    "type": "function",
3362    "name": "setstateHistoryRetentionPeriod",
3363    "inputs": [
3364      {
3365        "name": "historySeconds",
3366        "type": "uint32",
3367        "internalType": "uint32"
3368      }
3369    ],
3370    "outputs": [],
3371    "stateMutability": "nonpayable"
3372  },
3373  {
3374    "type": "function",
3375    "name": "stateHistoryCommitments",
3376    "inputs": [
3377      {
3378        "name": "",
3379        "type": "uint256",
3380        "internalType": "uint256"
3381      }
3382    ],
3383    "outputs": [
3384      {
3385        "name": "l1BlockHeight",
3386        "type": "uint64",
3387        "internalType": "uint64"
3388      },
3389      {
3390        "name": "l1BlockTimestamp",
3391        "type": "uint64",
3392        "internalType": "uint64"
3393      },
3394      {
3395        "name": "hotShotBlockHeight",
3396        "type": "uint64",
3397        "internalType": "uint64"
3398      },
3399      {
3400        "name": "hotShotBlockCommRoot",
3401        "type": "uint256",
3402        "internalType": "BN254.ScalarField"
3403      }
3404    ],
3405    "stateMutability": "view"
3406  },
3407  {
3408    "type": "function",
3409    "name": "stateHistoryFirstIndex",
3410    "inputs": [],
3411    "outputs": [
3412      {
3413        "name": "",
3414        "type": "uint64",
3415        "internalType": "uint64"
3416      }
3417    ],
3418    "stateMutability": "view"
3419  },
3420  {
3421    "type": "function",
3422    "name": "stateHistoryRetentionPeriod",
3423    "inputs": [],
3424    "outputs": [
3425      {
3426        "name": "",
3427        "type": "uint32",
3428        "internalType": "uint32"
3429      }
3430    ],
3431    "stateMutability": "view"
3432  },
3433  {
3434    "type": "function",
3435    "name": "transferOwnership",
3436    "inputs": [
3437      {
3438        "name": "newOwner",
3439        "type": "address",
3440        "internalType": "address"
3441      }
3442    ],
3443    "outputs": [],
3444    "stateMutability": "nonpayable"
3445  },
3446  {
3447    "type": "function",
3448    "name": "upgradeToAndCall",
3449    "inputs": [
3450      {
3451        "name": "newImplementation",
3452        "type": "address",
3453        "internalType": "address"
3454      },
3455      {
3456        "name": "data",
3457        "type": "bytes",
3458        "internalType": "bytes"
3459      }
3460    ],
3461    "outputs": [],
3462    "stateMutability": "payable"
3463  },
3464  {
3465    "type": "event",
3466    "name": "Initialized",
3467    "inputs": [
3468      {
3469        "name": "version",
3470        "type": "uint64",
3471        "indexed": false,
3472        "internalType": "uint64"
3473      }
3474    ],
3475    "anonymous": false
3476  },
3477  {
3478    "type": "event",
3479    "name": "NewState",
3480    "inputs": [
3481      {
3482        "name": "viewNum",
3483        "type": "uint64",
3484        "indexed": true,
3485        "internalType": "uint64"
3486      },
3487      {
3488        "name": "blockHeight",
3489        "type": "uint64",
3490        "indexed": true,
3491        "internalType": "uint64"
3492      },
3493      {
3494        "name": "blockCommRoot",
3495        "type": "uint256",
3496        "indexed": false,
3497        "internalType": "BN254.ScalarField"
3498      }
3499    ],
3500    "anonymous": false
3501  },
3502  {
3503    "type": "event",
3504    "name": "OwnershipTransferred",
3505    "inputs": [
3506      {
3507        "name": "previousOwner",
3508        "type": "address",
3509        "indexed": true,
3510        "internalType": "address"
3511      },
3512      {
3513        "name": "newOwner",
3514        "type": "address",
3515        "indexed": true,
3516        "internalType": "address"
3517      }
3518    ],
3519    "anonymous": false
3520  },
3521  {
3522    "type": "event",
3523    "name": "PermissionedProverNotRequired",
3524    "inputs": [],
3525    "anonymous": false
3526  },
3527  {
3528    "type": "event",
3529    "name": "PermissionedProverRequired",
3530    "inputs": [
3531      {
3532        "name": "permissionedProver",
3533        "type": "address",
3534        "indexed": false,
3535        "internalType": "address"
3536      }
3537    ],
3538    "anonymous": false
3539  },
3540  {
3541    "type": "event",
3542    "name": "Upgrade",
3543    "inputs": [
3544      {
3545        "name": "implementation",
3546        "type": "address",
3547        "indexed": false,
3548        "internalType": "address"
3549      }
3550    ],
3551    "anonymous": false
3552  },
3553  {
3554    "type": "event",
3555    "name": "Upgraded",
3556    "inputs": [
3557      {
3558        "name": "implementation",
3559        "type": "address",
3560        "indexed": true,
3561        "internalType": "address"
3562      }
3563    ],
3564    "anonymous": false
3565  },
3566  {
3567    "type": "error",
3568    "name": "AddressEmptyCode",
3569    "inputs": [
3570      {
3571        "name": "target",
3572        "type": "address",
3573        "internalType": "address"
3574      }
3575    ]
3576  },
3577  {
3578    "type": "error",
3579    "name": "ERC1967InvalidImplementation",
3580    "inputs": [
3581      {
3582        "name": "implementation",
3583        "type": "address",
3584        "internalType": "address"
3585      }
3586    ]
3587  },
3588  {
3589    "type": "error",
3590    "name": "ERC1967NonPayable",
3591    "inputs": []
3592  },
3593  {
3594    "type": "error",
3595    "name": "FailedInnerCall",
3596    "inputs": []
3597  },
3598  {
3599    "type": "error",
3600    "name": "InsufficientSnapshotHistory",
3601    "inputs": []
3602  },
3603  {
3604    "type": "error",
3605    "name": "InvalidAddress",
3606    "inputs": []
3607  },
3608  {
3609    "type": "error",
3610    "name": "InvalidArgs",
3611    "inputs": []
3612  },
3613  {
3614    "type": "error",
3615    "name": "InvalidHotShotBlockForCommitmentCheck",
3616    "inputs": []
3617  },
3618  {
3619    "type": "error",
3620    "name": "InvalidInitialization",
3621    "inputs": []
3622  },
3623  {
3624    "type": "error",
3625    "name": "InvalidMaxStateHistory",
3626    "inputs": []
3627  },
3628  {
3629    "type": "error",
3630    "name": "InvalidProof",
3631    "inputs": []
3632  },
3633  {
3634    "type": "error",
3635    "name": "InvalidScalar",
3636    "inputs": []
3637  },
3638  {
3639    "type": "error",
3640    "name": "NoChangeRequired",
3641    "inputs": []
3642  },
3643  {
3644    "type": "error",
3645    "name": "NotInitializing",
3646    "inputs": []
3647  },
3648  {
3649    "type": "error",
3650    "name": "OutdatedState",
3651    "inputs": []
3652  },
3653  {
3654    "type": "error",
3655    "name": "OwnableInvalidOwner",
3656    "inputs": [
3657      {
3658        "name": "owner",
3659        "type": "address",
3660        "internalType": "address"
3661      }
3662    ]
3663  },
3664  {
3665    "type": "error",
3666    "name": "OwnableUnauthorizedAccount",
3667    "inputs": [
3668      {
3669        "name": "account",
3670        "type": "address",
3671        "internalType": "address"
3672      }
3673    ]
3674  },
3675  {
3676    "type": "error",
3677    "name": "OwnershipCannotBeRenounced",
3678    "inputs": []
3679  },
3680  {
3681    "type": "error",
3682    "name": "ProverNotPermissioned",
3683    "inputs": []
3684  },
3685  {
3686    "type": "error",
3687    "name": "UUPSUnauthorizedCallContext",
3688    "inputs": []
3689  },
3690  {
3691    "type": "error",
3692    "name": "UUPSUnsupportedProxiableUUID",
3693    "inputs": [
3694      {
3695        "name": "slot",
3696        "type": "bytes32",
3697        "internalType": "bytes32"
3698      }
3699    ]
3700  },
3701  {
3702    "type": "error",
3703    "name": "WrongStakeTableUsed",
3704    "inputs": []
3705  }
3706]
3707```*/
3708#[allow(
3709    non_camel_case_types,
3710    non_snake_case,
3711    clippy::pub_underscore_fields,
3712    clippy::style,
3713    clippy::empty_structs_with_brackets
3714)]
3715pub mod LightClient {
3716    use super::*;
3717    use alloy::sol_types as alloy_sol_types;
3718    /// The creation / init bytecode of the contract.
3719    ///
3720    /// ```text
3721    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612b3d6100f95f395f81816116f40152818161171d015261189a0152612b3d5ff3fe608060405260043610610161575f3560e01c8063715018a6116100cd5780639fdb54a711610087578063d24d933d11610062578063d24d933d1461051a578063e030330114610549578063f2fde38b14610568578063f9e50d1914610587575f5ffd5b80639fdb54a714610450578063ad3cb1cc146104a5578063c23b9e9e146104e2575f5ffd5b8063715018a61461035b578063826e41fc1461036f5780638584d23f1461039a5780638da5cb5b146103d657806396c1ca61146104125780639baa3cc914610431575f5ffd5b8063313df7b11161011e578063313df7b11461028c578063378ec23b146102c3578063426d3194146102df5780634f1ef2861461032057806352d1902d1461033357806369cc6a0414610347575f5ffd5b8063013fa5fc1461016557806302b592f3146101865780630d8e6e2c146101e357806312173c2c1461020e5780632063d4f71461022f5780632f79889d1461024e575b5f5ffd5b348015610170575f5ffd5b5061018461017f366004611f4d565b61059b565b005b348015610191575f5ffd5b506101a56101a0366004611f66565b61064e565b6040516101da94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156101ee575f5ffd5b5060408051600181525f60208201819052918101919091526060016101da565b348015610219575f5ffd5b50610222610697565b6040516101da9190611f7d565b34801561023a575f5ffd5b506101846102493660046122b2565b6106ac565b348015610259575f5ffd5b5060085461027490600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016101da565b348015610297575f5ffd5b506008546102ab906001600160a01b031681565b6040516001600160a01b0390911681526020016101da565b3480156102ce575f5ffd5b50435b6040519081526020016101da565b3480156102ea575f5ffd5b505f546001546002546003546103009392919084565b6040805194855260208501939093529183015260608201526080016101da565b61018461032e366004612462565b610806565b34801561033e575f5ffd5b506102d1610825565b348015610352575f5ffd5b50610184610840565b348015610366575f5ffd5b506101846108ae565b34801561037a575f5ffd5b506008546001600160a01b031615155b60405190151581526020016101da565b3480156103a5575f5ffd5b506103b96103b4366004611f66565b6108cf565b604080519283526001600160401b039091166020830152016101da565b3480156103e1575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166102ab565b34801561041d575f5ffd5b5061018461042c366004612518565b6109fa565b34801561043c575f5ffd5b5061018461044b366004612531565b610a83565b34801561045b575f5ffd5b5060065460075461047f916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016101da565b3480156104b0575f5ffd5b506104d5604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101da91906125da565b3480156104ed575f5ffd5b5060085461050590600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016101da565b348015610525575f5ffd5b5060045460055461047f916001600160401b0380821692600160401b909204169083565b348015610554575f5ffd5b5061038a61056336600461260f565b610ba5565b348015610573575f5ffd5b50610184610582366004611f4d565b610cff565b348015610592575f5ffd5b506009546102d1565b6105a3610d41565b6001600160a01b0381166105ca5760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036105f95760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b6009818154811061065d575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b61069f611caf565b6106a7610d9c565b905090565b6008546001600160a01b0316151580156106d157506008546001600160a01b03163314155b156106ef576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b039182169116111580610728575060065460208301516001600160401b03600160401b9092048216911611155b156107465760405163051c46ef60e01b815260040160405180910390fd5b61075382604001516113cb565b61075d828261140c565b81516006805460208501516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408201516007556107aa6107a34390565b4284611500565b81602001516001600160401b0316825f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae684604001516040516107fa91815260200190565b60405180910390a35050565b61080e6116e9565b6108178261178d565b61082182826117ce565b5050565b5f61082e61188f565b505f516020612b115f395f51905f5290565b610848610d41565b6008546001600160a01b03161561089357600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b6108b6610d41565b6040516317d5c96560e11b815260040160405180910390fd5b600980545f918291906108e3600183612643565b815481106108f3576108f3612656565b5f918252602090912060029091020154600160801b90046001600160401b0316841061093257604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b818110156109f357846009828154811061096257610962612656565b5f918252602090912060029091020154600160801b90046001600160401b031611156109eb576009818154811061099b5761099b612656565b905f5260205f20906002020160010154600982815481106109be576109be612656565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610946565b5050915091565b610a02610d41565b610e108163ffffffff161080610a2157506301e133808163ffffffff16115b80610a3f575060085463ffffffff600160a01b909104811690821611155b15610a5d576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610ac75750825b90505f826001600160401b03166001148015610ae25750303b155b905081158015610af0575080155b15610b0e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610b3857845460ff60401b1916600160401b1785555b610b41866118d8565b610b496118e9565b610b548989896118f1565b8315610b9a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6009545f9043841180610bb6575080155b80610c005750600854600980549091600160c01b90046001600160401b0316908110610be457610be4612656565b5f9182526020909120600290910201546001600160401b031684105b15610c1e5760405163b0b4387760e01b815260040160405180910390fd5b5f8080610c2c600185612643565b90505b81610cc857600854600160c01b90046001600160401b03168110610cc8578660098281548110610c6157610c61612656565b5f9182526020909120600290910201546001600160401b031611610cb6576001915060098181548110610c9657610c96612656565b5f9182526020909120600290910201546001600160401b03169250610cc8565b80610cc08161266a565b915050610c2f565b81610ce65760405163b0b4387760e01b815260040160405180910390fd5b85610cf18489612643565b119450505050505b92915050565b610d07610d41565b6001600160a01b038116610d3557604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610d3e81611a1d565b50565b33610d737f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146108ac5760405163118cdaa760e01b8152336004820152602401610d2c565b610da4611caf565b621000008152600760208201527f23783d0e9777b7af65fbf849da7edb75e74b1eaf503e025d7f2f7f80991befa26040820151527f2a4e2fe8adfa53f468525582d5184c4c70bbdb946c21f216418a9879705e54a76020604083015101527f0624b2c1e77f24afceaf39451743b9fa80d5853fca7ba00389c675650774009b6060820151527f250d7719e94ca2df00dfe327938f5a8d4d837779b99837ca777a53d39127b1796020606083015101527f0dc09515152eaea66d0db2f571cc995e369d26fe647394f10db5398c917519dc6080820151527f1273144d6cec2c4a68b24a149379c0f5592bb7fbddbe32fa171919950ca404cb6020608083015101527f119521bb68caec216e2f05eeb466fb3abfe1f39baf7fe7cb392ea057b6a2d9bf60a0820151527f2d52adeaba8045e53ab526fe9982d0ea452def6b3ea0253d27a19ef3b46e8428602060a083015101527f16c3b5b217d302975a920d13374524d7a52e4a50fd7fb930842271ebf4a84efd60c0820151527f200788916b907b196972bde304318e885a2521514b2db5e4a11899c51204f089602060c083015101527f1127581afe753defca9aef12e7332db9978a200b1699ce3888c0f3aea6111dc360e0820151527f0881e13f00723be1a04872ed02b2d078c31e80feaf27724e262ce97c2cb0bb1d602060e083015101527f1482a3a6bb91d6483d153683e2404f2f5546e0e895530fdf132091498406e3de610100820151527efa52db3d52d905ead1248102f3a80a43a90d8400c68f60a62c543c417b2f4b602061010083015101527f0a57dadd4a55199525ac6ac6fabc87a4cccfdc98142bcef9dbf47de00ecc5164610120820151527f18d95abd9b8e12c36936aa218cfff582548a6bbff25c338c2006eaeb1fe5b696602061012083015101527f2bc40e91dd169b8bc143a02952a1b6c6e627bfeb7a2bbe5078e14123f3c54c1c610140820151527f108d65a20c579b6d9883275eb6889fc3f5fc79735ca9f611a13b67daa2fbc8d0602061014083015101527f21bc1f86d0608e5f0626b467ee6f8282b619223f60a7acb0fc63ba7bdaf783be610160820151527f05ef3282f8eef01515fb9a8a7d6ca06b8b007d1d512403efb268fb03ce5f09e9602061016083015101527f2cab66c1cb5a83869e73ac34fbe467486999babd541d9010ee9a804806eee4ef610180820151527f2db1982419c5a4a17593acff9535fa967683d75c8aec01319b64b84aada2ad84602061018083015101527f2c38667c6c7eb868bdd30c34dd3f4b84d9b9b1a27d7867b364c8b7831423e9086101a0820151527f2b2cb4044dd51165c48138219d51cf8d1689f91ed3eeefead6e055eb488a2ce260206101a083015101527f2d48e54703011df2c74a14dafde3af4fd83ec71875d8ddc3554658640cc955016101c0820151527f243a99d80d32eb5408b59d5b08302bede070d3fb0a8efe2f2262f865bffb4d0d60206101c083015101527f0455d2325bf6269a66f07d838f55f36947a3cd9b87edd8480bced95cbb45cc116101e0820151527f0f66d9085a6ed60b838179987e240992bff4c0516ccf6ccde4a1ca94ce8b986460206101e083015101527f2bac0d23c8585d1487ec611b5effc97e5852fea43a7cba36ccdd2c207931f394610200820151527f1860b54e01a06aea5adb4b13bf5baebab92b736807a3a89ff2040992b06ee6ec602061020083015101527f0c0bfa1c2fc6f8ed01233d5168db1e1dfe725504f032f669f50a92ae77c72906610220820151527f0d741e124c7d1069b8a400cbcdcfd90128a533901ad4de1e037fe72984dc34cf602061022083015101527f01cfed30085c9efce04668205794aa39b1a8ee591234b4c77a22f8c26d899e05610240820151527f2ab68ac82d36cedb647d14a5b0035e8c9a0be84780b7bae1133a27a880966ed1602061024083015101527f072e1d50f8b5cf8d574b3847276477d95bbd5116351000841f728da44f4043b5610260820151527f23f8ea6eacd0876d57220f57eabacbe76a2323411663731a251d5dca36f1b59f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806108215760405163016c173360e21b815260040160405180910390fd5b5f611415610697565b905061141f611f14565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a08301525f5460c08301525163ce537a7760e01b815273ffffffffffffffffffffffffffffffffffffffff9063ce537a779061149e9085908590889060040161285b565b602060405180830381865af41580156114b9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114dd9190612a7b565b6114fa576040516309bde33960e01b815260040160405180910390fd5b50505050565b60095415801590611575575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b031690811061154057611540612656565b5f91825260209091206002909102015461156a90600160401b90046001600160401b031684612a9a565b6001600160401b0316115b1561160857600854600980549091600160c01b90046001600160401b03169081106115a2576115a2612656565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b03169060186115e283612ab9565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061176f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166117635f516020612b115f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156108ac5760405163703e46dd60e11b815260040160405180910390fd5b611795610d41565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610643565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611828575060408051601f3d908101601f1916820190925261182591810190612ae3565b60015b61185057604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d2c565b5f516020612b115f395f51905f52811461188057604051632a87526960e21b815260048101829052602401610d2c565b61188a8383611a8d565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108ac5760405163703e46dd60e11b815260040160405180910390fd5b6118e0611ae2565b610d3e81611b2b565b6108ac611ae2565b82516001600160401b0316151580611915575060208301516001600160401b031615155b8061192257506020820151155b8061192f57506040820151155b8061193c57506060820151155b8061194657508151155b806119585750610e108163ffffffff16105b8061196c57506301e133808163ffffffff16115b1561198a576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611a9682611b33565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611ada5761188a8282611b96565b610821611c08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166108ac57604051631afcd79f60e31b815260040160405180910390fd5b610d07611ae2565b806001600160a01b03163b5f03611b6857604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d2c565b5f516020612b115f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611bb29190612afa565b5f60405180830381855af49150503d805f8114611bea576040519150601f19603f3d011682016040523d82523d5f602084013e611bef565b606091505b5091509150611bff858383611c27565b95945050505050565b34156108ac5760405163b398979f60e01b815260040160405180910390fd5b606082611c3c57611c3782611c86565b611c7f565b8151158015611c5357506001600160a01b0384163b155b15611c7c57604051639996b31560e01b81526001600160a01b0385166004820152602401610d2c565b50805b9392505050565b805115611c965780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f8152602001611ce260405180604001604052805f81526020015f81525090565b8152602001611d0260405180604001604052805f81526020015f81525090565b8152602001611d2260405180604001604052805f81526020015f81525090565b8152602001611d4260405180604001604052805f81526020015f81525090565b8152602001611d6260405180604001604052805f81526020015f81525090565b8152602001611d8260405180604001604052805f81526020015f81525090565b8152602001611da260405180604001604052805f81526020015f81525090565b8152602001611dc260405180604001604052805f81526020015f81525090565b8152602001611de260405180604001604052805f81526020015f81525090565b8152602001611e0260405180604001604052805f81526020015f81525090565b8152602001611e2260405180604001604052805f81526020015f81525090565b8152602001611e4260405180604001604052805f81526020015f81525090565b8152602001611e6260405180604001604052805f81526020015f81525090565b8152602001611e8260405180604001604052805f81526020015f81525090565b8152602001611ea260405180604001604052805f81526020015f81525090565b8152602001611ec260405180604001604052805f81526020015f81525090565b8152602001611ee260405180604001604052805f81526020015f81525090565b8152602001611f0260405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b6040518060e001604052806007906020820280368337509192915050565b80356001600160a01b0381168114611f48575f5ffd5b919050565b5f60208284031215611f5d575f5ffd5b611c7f82611f32565b5f60208284031215611f76575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151611faf604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b03811182821017156121b5576121b561217e565b60405290565b604051601f8201601f191681016001600160401b03811182821017156121e3576121e361217e565b604052919050565b80356001600160401b0381168114611f48575f5ffd5b5f60608284031215612211575f5ffd5b604051606081016001600160401b03811182821017156122335761223361217e565b604052905080612242836121eb565b8152612250602084016121eb565b6020820152604092830135920191909152919050565b5f60408284031215612276575f5ffd5b604080519081016001600160401b03811182821017156122985761229861217e565b604052823581526020928301359281019290925250919050565b5f5f8284036104e08112156122c5575f5ffd5b6122cf8585612201565b9250610480605f19820112156122e3575f5ffd5b506122ec612192565b6122f98560608601612266565b81526123088560a08601612266565b602082015261231a8560e08601612266565b604082015261232d856101208601612266565b6060820152612340856101608601612266565b6080820152612353856101a08601612266565b60a0820152612366856101e08601612266565b60c0820152612379856102208601612266565b60e082015261238c856102608601612266565b6101008201526123a0856102a08601612266565b6101208201526123b4856102e08601612266565b6101408201526123c8856103208601612266565b6101608201526123dc856103608601612266565b6101808201526103a08401356101a08201526103c08401356101c08201526103e08401356101e08201526104008401356102008201526104208401356102208201526104408401356102408201526104608401356102608201526104808401356102808201526104a08401356102a08201526104c0909301356102c08401525092909150565b5f5f60408385031215612473575f5ffd5b61247c83611f32565b915060208301356001600160401b03811115612496575f5ffd5b8301601f810185136124a6575f5ffd5b80356001600160401b038111156124bf576124bf61217e565b6124d2601f8201601f19166020016121bb565b8181528660208385010111156124e6575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff81168114611f48575f5ffd5b5f60208284031215612528575f5ffd5b611c7f82612505565b5f5f5f5f848603610120811215612546575f5ffd5b6125508787612201565b94506080605f1982011215612563575f5ffd5b50604051608081016001600160401b03811182821017156125865761258661217e565b604090815260608781013583526080880135602084015260a08801359183019190915260c08701359082015292506125c060e08601612505565b91506125cf6101008601611f32565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215612620575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610cf957610cf961262f565b634e487b7160e01b5f52603260045260245ffd5b5f816126785761267861262f565b505f190190565b805f5b60078110156114fa578151845260209384019390910190600101612682565b6126b682825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a60820190508451825260208501516020830152604085015161288d604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152612a6561050083018561267f565b612a736105e08301846126a1565b949350505050565b5f60208284031215612a8b575f5ffd5b81518015158114611c7f575f5ffd5b6001600160401b038281168282160390811115610cf957610cf961262f565b5f6001600160401b0382166001600160401b038103612ada57612ada61262f565b60010192915050565b5f60208284031215612af3575f5ffd5b5051919050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c6343000823000a
3722    /// ```
3723    #[rustfmt::skip]
3724    #[allow(clippy::all)]
3725    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3726        b"`\xA0`@R0`\x80R4\x80\x15a\0\x13W__\xFD[Pa\0\x1Ca\0!V[a\0\xD3V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80Th\x01\0\0\0\0\0\0\0\0\x90\x04`\xFF\x16\x15a\0qW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80T`\x01`\x01`@\x1B\x03\x90\x81\x16\x14a\0\xD0W\x80T`\x01`\x01`@\x1B\x03\x19\x16`\x01`\x01`@\x1B\x03\x90\x81\x17\x82U`@Q\x90\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PV[`\x80Qa+=a\0\xF9_9_\x81\x81a\x16\xF4\x01R\x81\x81a\x17\x1D\x01Ra\x18\x9A\x01Ra+=_\xF3\xFE`\x80`@R`\x046\x10a\x01aW_5`\xE0\x1C\x80cqP\x18\xA6\x11a\0\xCDW\x80c\x9F\xDBT\xA7\x11a\0\x87W\x80c\xD2M\x93=\x11a\0bW\x80c\xD2M\x93=\x14a\x05\x1AW\x80c\xE003\x01\x14a\x05IW\x80c\xF2\xFD\xE3\x8B\x14a\x05hW\x80c\xF9\xE5\r\x19\x14a\x05\x87W__\xFD[\x80c\x9F\xDBT\xA7\x14a\x04PW\x80c\xAD<\xB1\xCC\x14a\x04\xA5W\x80c\xC2;\x9E\x9E\x14a\x04\xE2W__\xFD[\x80cqP\x18\xA6\x14a\x03[W\x80c\x82nA\xFC\x14a\x03oW\x80c\x85\x84\xD2?\x14a\x03\x9AW\x80c\x8D\xA5\xCB[\x14a\x03\xD6W\x80c\x96\xC1\xCAa\x14a\x04\x12W\x80c\x9B\xAA<\xC9\x14a\x041W__\xFD[\x80c1=\xF7\xB1\x11a\x01\x1EW\x80c1=\xF7\xB1\x14a\x02\x8CW\x80c7\x8E\xC2;\x14a\x02\xC3W\x80cBm1\x94\x14a\x02\xDFW\x80cO\x1E\xF2\x86\x14a\x03 W\x80cR\xD1\x90-\x14a\x033W\x80ci\xCCj\x04\x14a\x03GW__\xFD[\x80c\x01?\xA5\xFC\x14a\x01eW\x80c\x02\xB5\x92\xF3\x14a\x01\x86W\x80c\r\x8En,\x14a\x01\xE3W\x80c\x12\x17<,\x14a\x02\x0EW\x80c c\xD4\xF7\x14a\x02/W\x80c/y\x88\x9D\x14a\x02NW[__\xFD[4\x80\x15a\x01pW__\xFD[Pa\x01\x84a\x01\x7F6`\x04a\x1FMV[a\x05\x9BV[\0[4\x80\x15a\x01\x91W__\xFD[Pa\x01\xA5a\x01\xA06`\x04a\x1FfV[a\x06NV[`@Qa\x01\xDA\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xEEW__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x01\xDAV[4\x80\x15a\x02\x19W__\xFD[Pa\x02\"a\x06\x97V[`@Qa\x01\xDA\x91\x90a\x1F}V[4\x80\x15a\x02:W__\xFD[Pa\x01\x84a\x02I6`\x04a\"\xB2V[a\x06\xACV[4\x80\x15a\x02YW__\xFD[P`\x08Ta\x02t\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\x97W__\xFD[P`\x08Ta\x02\xAB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xCEW__\xFD[PC[`@Q\x90\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xEAW__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\0\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x01\xDAV[a\x01\x84a\x03.6`\x04a$bV[a\x08\x06V[4\x80\x15a\x03>W__\xFD[Pa\x02\xD1a\x08%V[4\x80\x15a\x03RW__\xFD[Pa\x01\x84a\x08@V[4\x80\x15a\x03fW__\xFD[Pa\x01\x84a\x08\xAEV[4\x80\x15a\x03zW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15[`@Q\x90\x15\x15\x81R` \x01a\x01\xDAV[4\x80\x15a\x03\xA5W__\xFD[Pa\x03\xB9a\x03\xB46`\x04a\x1FfV[a\x08\xCFV[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x01\xDAV[4\x80\x15a\x03\xE1W__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16a\x02\xABV[4\x80\x15a\x04\x1DW__\xFD[Pa\x01\x84a\x04,6`\x04a%\x18V[a\t\xFAV[4\x80\x15a\x04<W__\xFD[Pa\x01\x84a\x04K6`\x04a%1V[a\n\x83V[4\x80\x15a\x04[W__\xFD[P`\x06T`\x07Ta\x04\x7F\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x01\xDAV[4\x80\x15a\x04\xB0W__\xFD[Pa\x04\xD5`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x01\xDA\x91\x90a%\xDAV[4\x80\x15a\x04\xEDW__\xFD[P`\x08Ta\x05\x05\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x05%W__\xFD[P`\x04T`\x05Ta\x04\x7F\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x05TW__\xFD[Pa\x03\x8Aa\x05c6`\x04a&\x0FV[a\x0B\xA5V[4\x80\x15a\x05sW__\xFD[Pa\x01\x84a\x05\x826`\x04a\x1FMV[a\x0C\xFFV[4\x80\x15a\x05\x92W__\xFD[P`\tTa\x02\xD1V[a\x05\xA3a\rAV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x05\xCAW`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x05\xF9W`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x80\x17\xBB\x88\x7F\xDF\x8F\xCAC\x14\xA9\xD4\x0Fns\xB3\xB8\x10\x02\xD6~\\\xFA\x85\xD8\x81s\xAFj\xA4`r\x90` \x01[`@Q\x80\x91\x03\x90\xA1PV[`\t\x81\x81T\x81\x10a\x06]W_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\x06\x9Fa\x1C\xAFV[a\x06\xA7a\r\x9CV[\x90P\x90V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x06\xD1WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x06\xEFW`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x82Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x07(WP`\x06T` \x83\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x07FW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x07S\x82`@\x01Qa\x13\xCBV[a\x07]\x82\x82a\x14\x0CV[\x81Q`\x06\x80T` \x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x82\x01Q`\x07Ua\x07\xAAa\x07\xA3C\x90V[B\x84a\x15\0V[\x81` \x01Q`\x01`\x01`@\x1B\x03\x16\x82_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x84`@\x01Q`@Qa\x07\xFA\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPV[a\x08\x0Ea\x16\xE9V[a\x08\x17\x82a\x17\x8DV[a\x08!\x82\x82a\x17\xCEV[PPV[_a\x08.a\x18\x8FV[P_Q` a+\x11_9_Q\x90_R\x90V[a\x08Ha\rAV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x08\x93W`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`@Q\x7F\x9A_W\xDE\x85m\xD6h\xC5M\xD9^\\U\xDF\x93C!q\xCB\xCAI\xA8wmV \xEAY\xC0$P\x90_\x90\xA1V[`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\x08\xB6a\rAV[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\t\x80T_\x91\x82\x91\x90a\x08\xE3`\x01\x83a&CV[\x81T\x81\x10a\x08\xF3Wa\x08\xF3a&VV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\t2W`@Qc\x18V\xA4\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16[\x81\x81\x10\x15a\t\xF3W\x84`\t\x82\x81T\x81\x10a\tbWa\tba&VV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\t\xEBW`\t\x81\x81T\x81\x10a\t\x9BWa\t\x9Ba&VV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\t\xBEWa\t\xBEa&VV[\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\tFV[PP\x91P\x91V[a\n\x02a\rAV[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\n!WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\n?WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\n]W`@Qc\x07\xA5\x07w`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\n\xC7WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\n\xE2WP0;\x15[\x90P\x81\x15\x80\x15a\n\xF0WP\x80\x15[\x15a\x0B\x0EW`@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\x0B8W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0BA\x86a\x18\xD8V[a\x0BIa\x18\xE9V[a\x0BT\x89\x89\x89a\x18\xF1V[\x83\x15a\x0B\x9AW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[`\tT_\x90C\x84\x11\x80a\x0B\xB6WP\x80\x15[\x80a\x0C\0WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x0B\xE4Wa\x0B\xE4a&VV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x0C\x1EW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x0C,`\x01\x85a&CV[\x90P[\x81a\x0C\xC8W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x0C\xC8W\x86`\t\x82\x81T\x81\x10a\x0CaWa\x0Caa&VV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x0C\xB6W`\x01\x91P`\t\x81\x81T\x81\x10a\x0C\x96Wa\x0C\x96a&VV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x0C\xC8V[\x80a\x0C\xC0\x81a&jV[\x91PPa\x0C/V[\x81a\x0C\xE6W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x0C\xF1\x84\x89a&CV[\x11\x94PPPPP[\x92\x91PPV[a\r\x07a\rAV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r5W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\r>\x81a\x1A\x1DV[PV[3a\rs\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x08\xACW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r,V[a\r\xA4a\x1C\xAFV[b\x10\0\0\x81R`\x07` \x82\x01R\x7F#x=\x0E\x97w\xB7\xAFe\xFB\xF8I\xDA~\xDBu\xE7K\x1E\xAFP>\x02]\x7F/\x7F\x80\x99\x1B\xEF\xA2`@\x82\x01QR\x7F*N/\xE8\xAD\xFAS\xF4hRU\x82\xD5\x18LLp\xBB\xDB\x94l!\xF2\x16A\x8A\x98yp^T\xA7` `@\x83\x01Q\x01R\x7F\x06$\xB2\xC1\xE7\x7F$\xAF\xCE\xAF9E\x17C\xB9\xFA\x80\xD5\x85?\xCA{\xA0\x03\x89\xC6ue\x07t\0\x9B``\x82\x01QR\x7F%\rw\x19\xE9L\xA2\xDF\0\xDF\xE3'\x93\x8FZ\x8DM\x83wy\xB9\x987\xCAwzS\xD3\x91'\xB1y` ``\x83\x01Q\x01R\x7F\r\xC0\x95\x15\x15.\xAE\xA6m\r\xB2\xF5q\xCC\x99^6\x9D&\xFEds\x94\xF1\r\xB59\x8C\x91u\x19\xDC`\x80\x82\x01QR\x7F\x12s\x14Ml\xEC,Jh\xB2J\x14\x93y\xC0\xF5Y+\xB7\xFB\xDD\xBE2\xFA\x17\x19\x19\x95\x0C\xA4\x04\xCB` `\x80\x83\x01Q\x01R\x7F\x11\x95!\xBBh\xCA\xEC!n/\x05\xEE\xB4f\xFB:\xBF\xE1\xF3\x9B\xAF\x7F\xE7\xCB9.\xA0W\xB6\xA2\xD9\xBF`\xA0\x82\x01QR\x7F-R\xAD\xEA\xBA\x80E\xE5:\xB5&\xFE\x99\x82\xD0\xEAE-\xEFk>\xA0%='\xA1\x9E\xF3\xB4n\x84(` `\xA0\x83\x01Q\x01R\x7F\x16\xC3\xB5\xB2\x17\xD3\x02\x97Z\x92\r\x137E$\xD7\xA5.JP\xFD\x7F\xB90\x84\"q\xEB\xF4\xA8N\xFD`\xC0\x82\x01QR\x7F \x07\x88\x91k\x90{\x19ir\xBD\xE3\x041\x8E\x88Z%!QK-\xB5\xE4\xA1\x18\x99\xC5\x12\x04\xF0\x89` `\xC0\x83\x01Q\x01R\x7F\x11'X\x1A\xFEu=\xEF\xCA\x9A\xEF\x12\xE73-\xB9\x97\x8A \x0B\x16\x99\xCE8\x88\xC0\xF3\xAE\xA6\x11\x1D\xC3`\xE0\x82\x01QR\x7F\x08\x81\xE1?\0r;\xE1\xA0Hr\xED\x02\xB2\xD0x\xC3\x1E\x80\xFE\xAF'rN&,\xE9|,\xB0\xBB\x1D` `\xE0\x83\x01Q\x01R\x7F\x14\x82\xA3\xA6\xBB\x91\xD6H=\x156\x83\xE2@O/UF\xE0\xE8\x95S\x0F\xDF\x13 \x91I\x84\x06\xE3\xDEa\x01\0\x82\x01QR~\xFAR\xDB=R\xD9\x05\xEA\xD1$\x81\x02\xF3\xA8\nC\xA9\r\x84\0\xC6\x8F`\xA6,T<A{/K` a\x01\0\x83\x01Q\x01R\x7F\nW\xDA\xDDJU\x19\x95%\xACj\xC6\xFA\xBC\x87\xA4\xCC\xCF\xDC\x98\x14+\xCE\xF9\xDB\xF4}\xE0\x0E\xCCQda\x01 \x82\x01QR\x7F\x18\xD9Z\xBD\x9B\x8E\x12\xC3i6\xAA!\x8C\xFF\xF5\x82T\x8Ak\xBF\xF2\\3\x8C \x06\xEA\xEB\x1F\xE5\xB6\x96` a\x01 \x83\x01Q\x01R\x7F+\xC4\x0E\x91\xDD\x16\x9B\x8B\xC1C\xA0)R\xA1\xB6\xC6\xE6'\xBF\xEBz+\xBEPx\xE1A#\xF3\xC5L\x1Ca\x01@\x82\x01QR\x7F\x10\x8De\xA2\x0CW\x9Bm\x98\x83'^\xB6\x88\x9F\xC3\xF5\xFCys\\\xA9\xF6\x11\xA1;g\xDA\xA2\xFB\xC8\xD0` a\x01@\x83\x01Q\x01R\x7F!\xBC\x1F\x86\xD0`\x8E_\x06&\xB4g\xEEo\x82\x82\xB6\x19\"?`\xA7\xAC\xB0\xFCc\xBA{\xDA\xF7\x83\xBEa\x01`\x82\x01QR\x7F\x05\xEF2\x82\xF8\xEE\xF0\x15\x15\xFB\x9A\x8A}l\xA0k\x8B\0}\x1DQ$\x03\xEF\xB2h\xFB\x03\xCE_\t\xE9` a\x01`\x83\x01Q\x01R\x7F,\xABf\xC1\xCBZ\x83\x86\x9Es\xAC4\xFB\xE4gHi\x99\xBA\xBDT\x1D\x90\x10\xEE\x9A\x80H\x06\xEE\xE4\xEFa\x01\x80\x82\x01QR\x7F-\xB1\x98$\x19\xC5\xA4\xA1u\x93\xAC\xFF\x955\xFA\x96v\x83\xD7\\\x8A\xEC\x011\x9Bd\xB8J\xAD\xA2\xAD\x84` a\x01\x80\x83\x01Q\x01R\x7F,8f|l~\xB8h\xBD\xD3\x0C4\xDD?K\x84\xD9\xB9\xB1\xA2}xg\xB3d\xC8\xB7\x83\x14#\xE9\x08a\x01\xA0\x82\x01QR\x7F+,\xB4\x04M\xD5\x11e\xC4\x818!\x9DQ\xCF\x8D\x16\x89\xF9\x1E\xD3\xEE\xEF\xEA\xD6\xE0U\xEBH\x8A,\xE2` a\x01\xA0\x83\x01Q\x01R\x7F-H\xE5G\x03\x01\x1D\xF2\xC7J\x14\xDA\xFD\xE3\xAFO\xD8>\xC7\x18u\xD8\xDD\xC3UFXd\x0C\xC9U\x01a\x01\xC0\x82\x01QR\x7F$:\x99\xD8\r2\xEBT\x08\xB5\x9D[\x080+\xED\xE0p\xD3\xFB\n\x8E\xFE/\"b\xF8e\xBF\xFBM\r` a\x01\xC0\x83\x01Q\x01R\x7F\x04U\xD22[\xF6&\x9Af\xF0}\x83\x8FU\xF3iG\xA3\xCD\x9B\x87\xED\xD8H\x0B\xCE\xD9\\\xBBE\xCC\x11a\x01\xE0\x82\x01QR\x7F\x0Ff\xD9\x08Zn\xD6\x0B\x83\x81y\x98~$\t\x92\xBF\xF4\xC0Ql\xCFl\xCD\xE4\xA1\xCA\x94\xCE\x8B\x98d` a\x01\xE0\x83\x01Q\x01R\x7F+\xAC\r#\xC8X]\x14\x87\xECa\x1B^\xFF\xC9~XR\xFE\xA4:|\xBA6\xCC\xDD, y1\xF3\x94a\x02\0\x82\x01QR\x7F\x18`\xB5N\x01\xA0j\xEAZ\xDBK\x13\xBF[\xAE\xBA\xB9+sh\x07\xA3\xA8\x9F\xF2\x04\t\x92\xB0n\xE6\xEC` a\x02\0\x83\x01Q\x01R\x7F\x0C\x0B\xFA\x1C/\xC6\xF8\xED\x01#=Qh\xDB\x1E\x1D\xFErU\x04\xF02\xF6i\xF5\n\x92\xAEw\xC7)\x06a\x02 \x82\x01QR\x7F\rt\x1E\x12L}\x10i\xB8\xA4\0\xCB\xCD\xCF\xD9\x01(\xA53\x90\x1A\xD4\xDE\x1E\x03\x7F\xE7)\x84\xDC4\xCF` a\x02 \x83\x01Q\x01R\x7F\x01\xCF\xED0\x08\\\x9E\xFC\xE0Fh W\x94\xAA9\xB1\xA8\xEEY\x124\xB4\xC7z\"\xF8\xC2m\x89\x9E\x05a\x02@\x82\x01QR\x7F*\xB6\x8A\xC8-6\xCE\xDBd}\x14\xA5\xB0\x03^\x8C\x9A\x0B\xE8G\x80\xB7\xBA\xE1\x13:'\xA8\x80\x96n\xD1` a\x02@\x83\x01Q\x01R\x7F\x07.\x1DP\xF8\xB5\xCF\x8DWK8G'dw\xD9[\xBDQ\x165\x10\0\x84\x1Fr\x8D\xA4O@C\xB5a\x02`\x82\x01QR\x7F#\xF8\xEAn\xAC\xD0\x87mW\"\x0FW\xEA\xBA\xCB\xE7j##A\x16cs\x1A%\x1D]\xCA6\xF1\xB5\x9F` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\x08!W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x14\x15a\x06\x97V[\x90Pa\x14\x1Fa\x1F\x14V[\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\x9E\x90\x85\x90\x85\x90\x88\x90`\x04\x01a([V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x14\xB9W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x14\xDD\x91\x90a*{V[a\x14\xFAW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[`\tT\x15\x80\x15\x90a\x15uWP`\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@Wa\x15@a&VV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x15j\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a*\x9AV[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x16\x08W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x15\xA2Wa\x15\xA2a&VV[_\x91\x82R` \x82 `\x02\x90\x91\x02\x01\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U`\x01\x01U`\x08\x80T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90`\x18a\x15\xE2\x83a*\xB9V[\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\x17oWP\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\x17c_Q` a+\x11_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x08\xACW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x17\x95a\rAV[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x81R\x7F\xF7\x87!\"n\xFE\x9A\x1B\xB6x\x18\x9A\x16\xD1UI(\xB9\xF2\x19.,\xB9>\xED\xA8;y\xFA@\0}\x90` \x01a\x06CV[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x18(WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18%\x91\x81\x01\x90a*\xE3V[`\x01[a\x18PW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r,V[_Q` a+\x11_9_Q\x90_R\x81\x14a\x18\x80W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r,V[a\x18\x8A\x83\x83a\x1A\x8DV[PPPV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x08\xACW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x18\xE0a\x1A\xE2V[a\r>\x81a\x1B+V[a\x08\xACa\x1A\xE2V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x19\x15WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x19\"WP` \x82\x01Q\x15[\x80a\x19/WP`@\x82\x01Q\x15[\x80a\x19<WP``\x82\x01Q\x15[\x80a\x19FWP\x81Q\x15[\x80a\x19XWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x19lWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x19\x8AW`@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[\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\x1A\x96\x82a\x1B3V[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a\x1A\xDAWa\x18\x8A\x82\x82a\x1B\x96V[a\x08!a\x1C\x08V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0T`\x01`@\x1B\x90\x04`\xFF\x16a\x08\xACW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\r\x07a\x1A\xE2V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1BhW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r,V[_Q` a+\x11_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa\x1B\xB2\x91\x90a*\xFAV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1B\xEAW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1B\xEFV[``\x91P[P\x91P\x91Pa\x1B\xFF\x85\x83\x83a\x1C'V[\x95\x94PPPPPV[4\x15a\x08\xACW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a\x1C<Wa\x1C7\x82a\x1C\x86V[a\x1C\x7FV[\x81Q\x15\x80\x15a\x1CSWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x1C|W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r,V[P\x80[\x93\x92PPPV[\x80Q\x15a\x1C\x96W\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x80a\x02\xC0\x01`@R\x80_\x81R` \x01_\x81R` \x01a\x1C\xE2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\x02`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\"`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\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` \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\x1FHW__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\x1F]W__\xFD[a\x1C\x7F\x82a\x1F2V[_` \x82\x84\x03\x12\x15a\x1FvW__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa\x1F\xAF`@\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!\xB5Wa!\xB5a!~V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a!\xE3Wa!\xE3a!~V[`@R\x91\x90PV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x1FHW__\xFD[_``\x82\x84\x03\x12\x15a\"\x11W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"3Wa\"3a!~V[`@R\x90P\x80a\"B\x83a!\xEBV[\x81Ra\"P` \x84\x01a!\xEBV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a\"vW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"\x98Wa\"\x98a!~V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[__\x82\x84\x03a\x04\xE0\x81\x12\x15a\"\xC5W__\xFD[a\"\xCF\x85\x85a\"\x01V[\x92Pa\x04\x80`_\x19\x82\x01\x12\x15a\"\xE3W__\xFD[Pa\"\xECa!\x92V[a\"\xF9\x85``\x86\x01a\"fV[\x81Ra#\x08\x85`\xA0\x86\x01a\"fV[` \x82\x01Ra#\x1A\x85`\xE0\x86\x01a\"fV[`@\x82\x01Ra#-\x85a\x01 \x86\x01a\"fV[``\x82\x01Ra#@\x85a\x01`\x86\x01a\"fV[`\x80\x82\x01Ra#S\x85a\x01\xA0\x86\x01a\"fV[`\xA0\x82\x01Ra#f\x85a\x01\xE0\x86\x01a\"fV[`\xC0\x82\x01Ra#y\x85a\x02 \x86\x01a\"fV[`\xE0\x82\x01Ra#\x8C\x85a\x02`\x86\x01a\"fV[a\x01\0\x82\x01Ra#\xA0\x85a\x02\xA0\x86\x01a\"fV[a\x01 \x82\x01Ra#\xB4\x85a\x02\xE0\x86\x01a\"fV[a\x01@\x82\x01Ra#\xC8\x85a\x03 \x86\x01a\"fV[a\x01`\x82\x01Ra#\xDC\x85a\x03`\x86\x01a\"fV[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$sW__\xFD[a$|\x83a\x1F2V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a$\x96W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a$\xA6W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a$\xBFWa$\xBFa!~V[a$\xD2`\x1F\x82\x01`\x1F\x19\x16` \x01a!\xBBV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a$\xE6W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1FHW__\xFD[_` \x82\x84\x03\x12\x15a%(W__\xFD[a\x1C\x7F\x82a%\x05V[____\x84\x86\x03a\x01 \x81\x12\x15a%FW__\xFD[a%P\x87\x87a\"\x01V[\x94P`\x80`_\x19\x82\x01\x12\x15a%cW__\xFD[P`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a%\x86Wa%\x86a!~V[`@\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%\xC0`\xE0\x86\x01a%\x05V[\x91Pa%\xCFa\x01\0\x86\x01a\x1F2V[\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& W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x0C\xF9Wa\x0C\xF9a&/V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x81a&xWa&xa&/V[P_\x19\x01\x90V[\x80_[`\x07\x81\x10\x15a\x14\xFAW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a&\x82V[a&\xB6\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(\x8D`@\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*ea\x05\0\x83\x01\x85a&\x7FV[a*sa\x05\xE0\x83\x01\x84a&\xA1V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a*\x8BW__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1C\x7FW__\xFD[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x0C\xF9Wa\x0C\xF9a&/V[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a*\xDAWa*\xDAa&/V[`\x01\x01\x92\x91PPV[_` \x82\x84\x03\x12\x15a*\xF3W__\xFD[PQ\x91\x90PV[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08#\0\n",
3727    );
3728    /// The runtime bytecode of the contract, as deployed on the network.
3729    ///
3730    /// ```text
3731    ///0x608060405260043610610161575f3560e01c8063715018a6116100cd5780639fdb54a711610087578063d24d933d11610062578063d24d933d1461051a578063e030330114610549578063f2fde38b14610568578063f9e50d1914610587575f5ffd5b80639fdb54a714610450578063ad3cb1cc146104a5578063c23b9e9e146104e2575f5ffd5b8063715018a61461035b578063826e41fc1461036f5780638584d23f1461039a5780638da5cb5b146103d657806396c1ca61146104125780639baa3cc914610431575f5ffd5b8063313df7b11161011e578063313df7b11461028c578063378ec23b146102c3578063426d3194146102df5780634f1ef2861461032057806352d1902d1461033357806369cc6a0414610347575f5ffd5b8063013fa5fc1461016557806302b592f3146101865780630d8e6e2c146101e357806312173c2c1461020e5780632063d4f71461022f5780632f79889d1461024e575b5f5ffd5b348015610170575f5ffd5b5061018461017f366004611f4d565b61059b565b005b348015610191575f5ffd5b506101a56101a0366004611f66565b61064e565b6040516101da94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156101ee575f5ffd5b5060408051600181525f60208201819052918101919091526060016101da565b348015610219575f5ffd5b50610222610697565b6040516101da9190611f7d565b34801561023a575f5ffd5b506101846102493660046122b2565b6106ac565b348015610259575f5ffd5b5060085461027490600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016101da565b348015610297575f5ffd5b506008546102ab906001600160a01b031681565b6040516001600160a01b0390911681526020016101da565b3480156102ce575f5ffd5b50435b6040519081526020016101da565b3480156102ea575f5ffd5b505f546001546002546003546103009392919084565b6040805194855260208501939093529183015260608201526080016101da565b61018461032e366004612462565b610806565b34801561033e575f5ffd5b506102d1610825565b348015610352575f5ffd5b50610184610840565b348015610366575f5ffd5b506101846108ae565b34801561037a575f5ffd5b506008546001600160a01b031615155b60405190151581526020016101da565b3480156103a5575f5ffd5b506103b96103b4366004611f66565b6108cf565b604080519283526001600160401b039091166020830152016101da565b3480156103e1575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166102ab565b34801561041d575f5ffd5b5061018461042c366004612518565b6109fa565b34801561043c575f5ffd5b5061018461044b366004612531565b610a83565b34801561045b575f5ffd5b5060065460075461047f916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016101da565b3480156104b0575f5ffd5b506104d5604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101da91906125da565b3480156104ed575f5ffd5b5060085461050590600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016101da565b348015610525575f5ffd5b5060045460055461047f916001600160401b0380821692600160401b909204169083565b348015610554575f5ffd5b5061038a61056336600461260f565b610ba5565b348015610573575f5ffd5b50610184610582366004611f4d565b610cff565b348015610592575f5ffd5b506009546102d1565b6105a3610d41565b6001600160a01b0381166105ca5760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036105f95760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b6009818154811061065d575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b61069f611caf565b6106a7610d9c565b905090565b6008546001600160a01b0316151580156106d157506008546001600160a01b03163314155b156106ef576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b039182169116111580610728575060065460208301516001600160401b03600160401b9092048216911611155b156107465760405163051c46ef60e01b815260040160405180910390fd5b61075382604001516113cb565b61075d828261140c565b81516006805460208501516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408201516007556107aa6107a34390565b4284611500565b81602001516001600160401b0316825f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae684604001516040516107fa91815260200190565b60405180910390a35050565b61080e6116e9565b6108178261178d565b61082182826117ce565b5050565b5f61082e61188f565b505f516020612b115f395f51905f5290565b610848610d41565b6008546001600160a01b03161561089357600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b6108b6610d41565b6040516317d5c96560e11b815260040160405180910390fd5b600980545f918291906108e3600183612643565b815481106108f3576108f3612656565b5f918252602090912060029091020154600160801b90046001600160401b0316841061093257604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b818110156109f357846009828154811061096257610962612656565b5f918252602090912060029091020154600160801b90046001600160401b031611156109eb576009818154811061099b5761099b612656565b905f5260205f20906002020160010154600982815481106109be576109be612656565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610946565b5050915091565b610a02610d41565b610e108163ffffffff161080610a2157506301e133808163ffffffff16115b80610a3f575060085463ffffffff600160a01b909104811690821611155b15610a5d576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610ac75750825b90505f826001600160401b03166001148015610ae25750303b155b905081158015610af0575080155b15610b0e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610b3857845460ff60401b1916600160401b1785555b610b41866118d8565b610b496118e9565b610b548989896118f1565b8315610b9a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6009545f9043841180610bb6575080155b80610c005750600854600980549091600160c01b90046001600160401b0316908110610be457610be4612656565b5f9182526020909120600290910201546001600160401b031684105b15610c1e5760405163b0b4387760e01b815260040160405180910390fd5b5f8080610c2c600185612643565b90505b81610cc857600854600160c01b90046001600160401b03168110610cc8578660098281548110610c6157610c61612656565b5f9182526020909120600290910201546001600160401b031611610cb6576001915060098181548110610c9657610c96612656565b5f9182526020909120600290910201546001600160401b03169250610cc8565b80610cc08161266a565b915050610c2f565b81610ce65760405163b0b4387760e01b815260040160405180910390fd5b85610cf18489612643565b119450505050505b92915050565b610d07610d41565b6001600160a01b038116610d3557604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610d3e81611a1d565b50565b33610d737f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146108ac5760405163118cdaa760e01b8152336004820152602401610d2c565b610da4611caf565b621000008152600760208201527f23783d0e9777b7af65fbf849da7edb75e74b1eaf503e025d7f2f7f80991befa26040820151527f2a4e2fe8adfa53f468525582d5184c4c70bbdb946c21f216418a9879705e54a76020604083015101527f0624b2c1e77f24afceaf39451743b9fa80d5853fca7ba00389c675650774009b6060820151527f250d7719e94ca2df00dfe327938f5a8d4d837779b99837ca777a53d39127b1796020606083015101527f0dc09515152eaea66d0db2f571cc995e369d26fe647394f10db5398c917519dc6080820151527f1273144d6cec2c4a68b24a149379c0f5592bb7fbddbe32fa171919950ca404cb6020608083015101527f119521bb68caec216e2f05eeb466fb3abfe1f39baf7fe7cb392ea057b6a2d9bf60a0820151527f2d52adeaba8045e53ab526fe9982d0ea452def6b3ea0253d27a19ef3b46e8428602060a083015101527f16c3b5b217d302975a920d13374524d7a52e4a50fd7fb930842271ebf4a84efd60c0820151527f200788916b907b196972bde304318e885a2521514b2db5e4a11899c51204f089602060c083015101527f1127581afe753defca9aef12e7332db9978a200b1699ce3888c0f3aea6111dc360e0820151527f0881e13f00723be1a04872ed02b2d078c31e80feaf27724e262ce97c2cb0bb1d602060e083015101527f1482a3a6bb91d6483d153683e2404f2f5546e0e895530fdf132091498406e3de610100820151527efa52db3d52d905ead1248102f3a80a43a90d8400c68f60a62c543c417b2f4b602061010083015101527f0a57dadd4a55199525ac6ac6fabc87a4cccfdc98142bcef9dbf47de00ecc5164610120820151527f18d95abd9b8e12c36936aa218cfff582548a6bbff25c338c2006eaeb1fe5b696602061012083015101527f2bc40e91dd169b8bc143a02952a1b6c6e627bfeb7a2bbe5078e14123f3c54c1c610140820151527f108d65a20c579b6d9883275eb6889fc3f5fc79735ca9f611a13b67daa2fbc8d0602061014083015101527f21bc1f86d0608e5f0626b467ee6f8282b619223f60a7acb0fc63ba7bdaf783be610160820151527f05ef3282f8eef01515fb9a8a7d6ca06b8b007d1d512403efb268fb03ce5f09e9602061016083015101527f2cab66c1cb5a83869e73ac34fbe467486999babd541d9010ee9a804806eee4ef610180820151527f2db1982419c5a4a17593acff9535fa967683d75c8aec01319b64b84aada2ad84602061018083015101527f2c38667c6c7eb868bdd30c34dd3f4b84d9b9b1a27d7867b364c8b7831423e9086101a0820151527f2b2cb4044dd51165c48138219d51cf8d1689f91ed3eeefead6e055eb488a2ce260206101a083015101527f2d48e54703011df2c74a14dafde3af4fd83ec71875d8ddc3554658640cc955016101c0820151527f243a99d80d32eb5408b59d5b08302bede070d3fb0a8efe2f2262f865bffb4d0d60206101c083015101527f0455d2325bf6269a66f07d838f55f36947a3cd9b87edd8480bced95cbb45cc116101e0820151527f0f66d9085a6ed60b838179987e240992bff4c0516ccf6ccde4a1ca94ce8b986460206101e083015101527f2bac0d23c8585d1487ec611b5effc97e5852fea43a7cba36ccdd2c207931f394610200820151527f1860b54e01a06aea5adb4b13bf5baebab92b736807a3a89ff2040992b06ee6ec602061020083015101527f0c0bfa1c2fc6f8ed01233d5168db1e1dfe725504f032f669f50a92ae77c72906610220820151527f0d741e124c7d1069b8a400cbcdcfd90128a533901ad4de1e037fe72984dc34cf602061022083015101527f01cfed30085c9efce04668205794aa39b1a8ee591234b4c77a22f8c26d899e05610240820151527f2ab68ac82d36cedb647d14a5b0035e8c9a0be84780b7bae1133a27a880966ed1602061024083015101527f072e1d50f8b5cf8d574b3847276477d95bbd5116351000841f728da44f4043b5610260820151527f23f8ea6eacd0876d57220f57eabacbe76a2323411663731a251d5dca36f1b59f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806108215760405163016c173360e21b815260040160405180910390fd5b5f611415610697565b905061141f611f14565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a08301525f5460c08301525163ce537a7760e01b815273ffffffffffffffffffffffffffffffffffffffff9063ce537a779061149e9085908590889060040161285b565b602060405180830381865af41580156114b9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114dd9190612a7b565b6114fa576040516309bde33960e01b815260040160405180910390fd5b50505050565b60095415801590611575575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b031690811061154057611540612656565b5f91825260209091206002909102015461156a90600160401b90046001600160401b031684612a9a565b6001600160401b0316115b1561160857600854600980549091600160c01b90046001600160401b03169081106115a2576115a2612656565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b03169060186115e283612ab9565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061176f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166117635f516020612b115f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156108ac5760405163703e46dd60e11b815260040160405180910390fd5b611795610d41565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610643565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611828575060408051601f3d908101601f1916820190925261182591810190612ae3565b60015b61185057604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d2c565b5f516020612b115f395f51905f52811461188057604051632a87526960e21b815260048101829052602401610d2c565b61188a8383611a8d565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108ac5760405163703e46dd60e11b815260040160405180910390fd5b6118e0611ae2565b610d3e81611b2b565b6108ac611ae2565b82516001600160401b0316151580611915575060208301516001600160401b031615155b8061192257506020820151155b8061192f57506040820151155b8061193c57506060820151155b8061194657508151155b806119585750610e108163ffffffff16105b8061196c57506301e133808163ffffffff16115b1561198a576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611a9682611b33565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611ada5761188a8282611b96565b610821611c08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166108ac57604051631afcd79f60e31b815260040160405180910390fd5b610d07611ae2565b806001600160a01b03163b5f03611b6857604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d2c565b5f516020612b115f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611bb29190612afa565b5f60405180830381855af49150503d805f8114611bea576040519150601f19603f3d011682016040523d82523d5f602084013e611bef565b606091505b5091509150611bff858383611c27565b95945050505050565b34156108ac5760405163b398979f60e01b815260040160405180910390fd5b606082611c3c57611c3782611c86565b611c7f565b8151158015611c5357506001600160a01b0384163b155b15611c7c57604051639996b31560e01b81526001600160a01b0385166004820152602401610d2c565b50805b9392505050565b805115611c965780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f8152602001611ce260405180604001604052805f81526020015f81525090565b8152602001611d0260405180604001604052805f81526020015f81525090565b8152602001611d2260405180604001604052805f81526020015f81525090565b8152602001611d4260405180604001604052805f81526020015f81525090565b8152602001611d6260405180604001604052805f81526020015f81525090565b8152602001611d8260405180604001604052805f81526020015f81525090565b8152602001611da260405180604001604052805f81526020015f81525090565b8152602001611dc260405180604001604052805f81526020015f81525090565b8152602001611de260405180604001604052805f81526020015f81525090565b8152602001611e0260405180604001604052805f81526020015f81525090565b8152602001611e2260405180604001604052805f81526020015f81525090565b8152602001611e4260405180604001604052805f81526020015f81525090565b8152602001611e6260405180604001604052805f81526020015f81525090565b8152602001611e8260405180604001604052805f81526020015f81525090565b8152602001611ea260405180604001604052805f81526020015f81525090565b8152602001611ec260405180604001604052805f81526020015f81525090565b8152602001611ee260405180604001604052805f81526020015f81525090565b8152602001611f0260405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b6040518060e001604052806007906020820280368337509192915050565b80356001600160a01b0381168114611f48575f5ffd5b919050565b5f60208284031215611f5d575f5ffd5b611c7f82611f32565b5f60208284031215611f76575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151611faf604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b03811182821017156121b5576121b561217e565b60405290565b604051601f8201601f191681016001600160401b03811182821017156121e3576121e361217e565b604052919050565b80356001600160401b0381168114611f48575f5ffd5b5f60608284031215612211575f5ffd5b604051606081016001600160401b03811182821017156122335761223361217e565b604052905080612242836121eb565b8152612250602084016121eb565b6020820152604092830135920191909152919050565b5f60408284031215612276575f5ffd5b604080519081016001600160401b03811182821017156122985761229861217e565b604052823581526020928301359281019290925250919050565b5f5f8284036104e08112156122c5575f5ffd5b6122cf8585612201565b9250610480605f19820112156122e3575f5ffd5b506122ec612192565b6122f98560608601612266565b81526123088560a08601612266565b602082015261231a8560e08601612266565b604082015261232d856101208601612266565b6060820152612340856101608601612266565b6080820152612353856101a08601612266565b60a0820152612366856101e08601612266565b60c0820152612379856102208601612266565b60e082015261238c856102608601612266565b6101008201526123a0856102a08601612266565b6101208201526123b4856102e08601612266565b6101408201526123c8856103208601612266565b6101608201526123dc856103608601612266565b6101808201526103a08401356101a08201526103c08401356101c08201526103e08401356101e08201526104008401356102008201526104208401356102208201526104408401356102408201526104608401356102608201526104808401356102808201526104a08401356102a08201526104c0909301356102c08401525092909150565b5f5f60408385031215612473575f5ffd5b61247c83611f32565b915060208301356001600160401b03811115612496575f5ffd5b8301601f810185136124a6575f5ffd5b80356001600160401b038111156124bf576124bf61217e565b6124d2601f8201601f19166020016121bb565b8181528660208385010111156124e6575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff81168114611f48575f5ffd5b5f60208284031215612528575f5ffd5b611c7f82612505565b5f5f5f5f848603610120811215612546575f5ffd5b6125508787612201565b94506080605f1982011215612563575f5ffd5b50604051608081016001600160401b03811182821017156125865761258661217e565b604090815260608781013583526080880135602084015260a08801359183019190915260c08701359082015292506125c060e08601612505565b91506125cf6101008601611f32565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215612620575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610cf957610cf961262f565b634e487b7160e01b5f52603260045260245ffd5b5f816126785761267861262f565b505f190190565b805f5b60078110156114fa578151845260209384019390910190600101612682565b6126b682825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a60820190508451825260208501516020830152604085015161288d604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152612a6561050083018561267f565b612a736105e08301846126a1565b949350505050565b5f60208284031215612a8b575f5ffd5b81518015158114611c7f575f5ffd5b6001600160401b038281168282160390811115610cf957610cf961262f565b5f6001600160401b0382166001600160401b038103612ada57612ada61262f565b60010192915050565b5f60208284031215612af3575f5ffd5b5051919050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c6343000823000a
3732    /// ```
3733    #[rustfmt::skip]
3734    #[allow(clippy::all)]
3735    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3736        b"`\x80`@R`\x046\x10a\x01aW_5`\xE0\x1C\x80cqP\x18\xA6\x11a\0\xCDW\x80c\x9F\xDBT\xA7\x11a\0\x87W\x80c\xD2M\x93=\x11a\0bW\x80c\xD2M\x93=\x14a\x05\x1AW\x80c\xE003\x01\x14a\x05IW\x80c\xF2\xFD\xE3\x8B\x14a\x05hW\x80c\xF9\xE5\r\x19\x14a\x05\x87W__\xFD[\x80c\x9F\xDBT\xA7\x14a\x04PW\x80c\xAD<\xB1\xCC\x14a\x04\xA5W\x80c\xC2;\x9E\x9E\x14a\x04\xE2W__\xFD[\x80cqP\x18\xA6\x14a\x03[W\x80c\x82nA\xFC\x14a\x03oW\x80c\x85\x84\xD2?\x14a\x03\x9AW\x80c\x8D\xA5\xCB[\x14a\x03\xD6W\x80c\x96\xC1\xCAa\x14a\x04\x12W\x80c\x9B\xAA<\xC9\x14a\x041W__\xFD[\x80c1=\xF7\xB1\x11a\x01\x1EW\x80c1=\xF7\xB1\x14a\x02\x8CW\x80c7\x8E\xC2;\x14a\x02\xC3W\x80cBm1\x94\x14a\x02\xDFW\x80cO\x1E\xF2\x86\x14a\x03 W\x80cR\xD1\x90-\x14a\x033W\x80ci\xCCj\x04\x14a\x03GW__\xFD[\x80c\x01?\xA5\xFC\x14a\x01eW\x80c\x02\xB5\x92\xF3\x14a\x01\x86W\x80c\r\x8En,\x14a\x01\xE3W\x80c\x12\x17<,\x14a\x02\x0EW\x80c c\xD4\xF7\x14a\x02/W\x80c/y\x88\x9D\x14a\x02NW[__\xFD[4\x80\x15a\x01pW__\xFD[Pa\x01\x84a\x01\x7F6`\x04a\x1FMV[a\x05\x9BV[\0[4\x80\x15a\x01\x91W__\xFD[Pa\x01\xA5a\x01\xA06`\x04a\x1FfV[a\x06NV[`@Qa\x01\xDA\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xEEW__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x01\xDAV[4\x80\x15a\x02\x19W__\xFD[Pa\x02\"a\x06\x97V[`@Qa\x01\xDA\x91\x90a\x1F}V[4\x80\x15a\x02:W__\xFD[Pa\x01\x84a\x02I6`\x04a\"\xB2V[a\x06\xACV[4\x80\x15a\x02YW__\xFD[P`\x08Ta\x02t\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\x97W__\xFD[P`\x08Ta\x02\xAB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xCEW__\xFD[PC[`@Q\x90\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xEAW__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\0\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x01\xDAV[a\x01\x84a\x03.6`\x04a$bV[a\x08\x06V[4\x80\x15a\x03>W__\xFD[Pa\x02\xD1a\x08%V[4\x80\x15a\x03RW__\xFD[Pa\x01\x84a\x08@V[4\x80\x15a\x03fW__\xFD[Pa\x01\x84a\x08\xAEV[4\x80\x15a\x03zW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15[`@Q\x90\x15\x15\x81R` \x01a\x01\xDAV[4\x80\x15a\x03\xA5W__\xFD[Pa\x03\xB9a\x03\xB46`\x04a\x1FfV[a\x08\xCFV[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x01\xDAV[4\x80\x15a\x03\xE1W__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16a\x02\xABV[4\x80\x15a\x04\x1DW__\xFD[Pa\x01\x84a\x04,6`\x04a%\x18V[a\t\xFAV[4\x80\x15a\x04<W__\xFD[Pa\x01\x84a\x04K6`\x04a%1V[a\n\x83V[4\x80\x15a\x04[W__\xFD[P`\x06T`\x07Ta\x04\x7F\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x01\xDAV[4\x80\x15a\x04\xB0W__\xFD[Pa\x04\xD5`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x01\xDA\x91\x90a%\xDAV[4\x80\x15a\x04\xEDW__\xFD[P`\x08Ta\x05\x05\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x05%W__\xFD[P`\x04T`\x05Ta\x04\x7F\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x05TW__\xFD[Pa\x03\x8Aa\x05c6`\x04a&\x0FV[a\x0B\xA5V[4\x80\x15a\x05sW__\xFD[Pa\x01\x84a\x05\x826`\x04a\x1FMV[a\x0C\xFFV[4\x80\x15a\x05\x92W__\xFD[P`\tTa\x02\xD1V[a\x05\xA3a\rAV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x05\xCAW`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x05\xF9W`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x80\x17\xBB\x88\x7F\xDF\x8F\xCAC\x14\xA9\xD4\x0Fns\xB3\xB8\x10\x02\xD6~\\\xFA\x85\xD8\x81s\xAFj\xA4`r\x90` \x01[`@Q\x80\x91\x03\x90\xA1PV[`\t\x81\x81T\x81\x10a\x06]W_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\x06\x9Fa\x1C\xAFV[a\x06\xA7a\r\x9CV[\x90P\x90V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x06\xD1WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x06\xEFW`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x82Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x07(WP`\x06T` \x83\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x07FW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x07S\x82`@\x01Qa\x13\xCBV[a\x07]\x82\x82a\x14\x0CV[\x81Q`\x06\x80T` \x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x82\x01Q`\x07Ua\x07\xAAa\x07\xA3C\x90V[B\x84a\x15\0V[\x81` \x01Q`\x01`\x01`@\x1B\x03\x16\x82_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x84`@\x01Q`@Qa\x07\xFA\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPV[a\x08\x0Ea\x16\xE9V[a\x08\x17\x82a\x17\x8DV[a\x08!\x82\x82a\x17\xCEV[PPV[_a\x08.a\x18\x8FV[P_Q` a+\x11_9_Q\x90_R\x90V[a\x08Ha\rAV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x08\x93W`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`@Q\x7F\x9A_W\xDE\x85m\xD6h\xC5M\xD9^\\U\xDF\x93C!q\xCB\xCAI\xA8wmV \xEAY\xC0$P\x90_\x90\xA1V[`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\x08\xB6a\rAV[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\t\x80T_\x91\x82\x91\x90a\x08\xE3`\x01\x83a&CV[\x81T\x81\x10a\x08\xF3Wa\x08\xF3a&VV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\t2W`@Qc\x18V\xA4\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16[\x81\x81\x10\x15a\t\xF3W\x84`\t\x82\x81T\x81\x10a\tbWa\tba&VV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\t\xEBW`\t\x81\x81T\x81\x10a\t\x9BWa\t\x9Ba&VV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\t\xBEWa\t\xBEa&VV[\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\tFV[PP\x91P\x91V[a\n\x02a\rAV[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\n!WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\n?WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\n]W`@Qc\x07\xA5\x07w`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\n\xC7WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\n\xE2WP0;\x15[\x90P\x81\x15\x80\x15a\n\xF0WP\x80\x15[\x15a\x0B\x0EW`@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\x0B8W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0BA\x86a\x18\xD8V[a\x0BIa\x18\xE9V[a\x0BT\x89\x89\x89a\x18\xF1V[\x83\x15a\x0B\x9AW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[`\tT_\x90C\x84\x11\x80a\x0B\xB6WP\x80\x15[\x80a\x0C\0WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x0B\xE4Wa\x0B\xE4a&VV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x0C\x1EW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x0C,`\x01\x85a&CV[\x90P[\x81a\x0C\xC8W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x0C\xC8W\x86`\t\x82\x81T\x81\x10a\x0CaWa\x0Caa&VV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x0C\xB6W`\x01\x91P`\t\x81\x81T\x81\x10a\x0C\x96Wa\x0C\x96a&VV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x0C\xC8V[\x80a\x0C\xC0\x81a&jV[\x91PPa\x0C/V[\x81a\x0C\xE6W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x0C\xF1\x84\x89a&CV[\x11\x94PPPPP[\x92\x91PPV[a\r\x07a\rAV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r5W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\r>\x81a\x1A\x1DV[PV[3a\rs\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x08\xACW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r,V[a\r\xA4a\x1C\xAFV[b\x10\0\0\x81R`\x07` \x82\x01R\x7F#x=\x0E\x97w\xB7\xAFe\xFB\xF8I\xDA~\xDBu\xE7K\x1E\xAFP>\x02]\x7F/\x7F\x80\x99\x1B\xEF\xA2`@\x82\x01QR\x7F*N/\xE8\xAD\xFAS\xF4hRU\x82\xD5\x18LLp\xBB\xDB\x94l!\xF2\x16A\x8A\x98yp^T\xA7` `@\x83\x01Q\x01R\x7F\x06$\xB2\xC1\xE7\x7F$\xAF\xCE\xAF9E\x17C\xB9\xFA\x80\xD5\x85?\xCA{\xA0\x03\x89\xC6ue\x07t\0\x9B``\x82\x01QR\x7F%\rw\x19\xE9L\xA2\xDF\0\xDF\xE3'\x93\x8FZ\x8DM\x83wy\xB9\x987\xCAwzS\xD3\x91'\xB1y` ``\x83\x01Q\x01R\x7F\r\xC0\x95\x15\x15.\xAE\xA6m\r\xB2\xF5q\xCC\x99^6\x9D&\xFEds\x94\xF1\r\xB59\x8C\x91u\x19\xDC`\x80\x82\x01QR\x7F\x12s\x14Ml\xEC,Jh\xB2J\x14\x93y\xC0\xF5Y+\xB7\xFB\xDD\xBE2\xFA\x17\x19\x19\x95\x0C\xA4\x04\xCB` `\x80\x83\x01Q\x01R\x7F\x11\x95!\xBBh\xCA\xEC!n/\x05\xEE\xB4f\xFB:\xBF\xE1\xF3\x9B\xAF\x7F\xE7\xCB9.\xA0W\xB6\xA2\xD9\xBF`\xA0\x82\x01QR\x7F-R\xAD\xEA\xBA\x80E\xE5:\xB5&\xFE\x99\x82\xD0\xEAE-\xEFk>\xA0%='\xA1\x9E\xF3\xB4n\x84(` `\xA0\x83\x01Q\x01R\x7F\x16\xC3\xB5\xB2\x17\xD3\x02\x97Z\x92\r\x137E$\xD7\xA5.JP\xFD\x7F\xB90\x84\"q\xEB\xF4\xA8N\xFD`\xC0\x82\x01QR\x7F \x07\x88\x91k\x90{\x19ir\xBD\xE3\x041\x8E\x88Z%!QK-\xB5\xE4\xA1\x18\x99\xC5\x12\x04\xF0\x89` `\xC0\x83\x01Q\x01R\x7F\x11'X\x1A\xFEu=\xEF\xCA\x9A\xEF\x12\xE73-\xB9\x97\x8A \x0B\x16\x99\xCE8\x88\xC0\xF3\xAE\xA6\x11\x1D\xC3`\xE0\x82\x01QR\x7F\x08\x81\xE1?\0r;\xE1\xA0Hr\xED\x02\xB2\xD0x\xC3\x1E\x80\xFE\xAF'rN&,\xE9|,\xB0\xBB\x1D` `\xE0\x83\x01Q\x01R\x7F\x14\x82\xA3\xA6\xBB\x91\xD6H=\x156\x83\xE2@O/UF\xE0\xE8\x95S\x0F\xDF\x13 \x91I\x84\x06\xE3\xDEa\x01\0\x82\x01QR~\xFAR\xDB=R\xD9\x05\xEA\xD1$\x81\x02\xF3\xA8\nC\xA9\r\x84\0\xC6\x8F`\xA6,T<A{/K` a\x01\0\x83\x01Q\x01R\x7F\nW\xDA\xDDJU\x19\x95%\xACj\xC6\xFA\xBC\x87\xA4\xCC\xCF\xDC\x98\x14+\xCE\xF9\xDB\xF4}\xE0\x0E\xCCQda\x01 \x82\x01QR\x7F\x18\xD9Z\xBD\x9B\x8E\x12\xC3i6\xAA!\x8C\xFF\xF5\x82T\x8Ak\xBF\xF2\\3\x8C \x06\xEA\xEB\x1F\xE5\xB6\x96` a\x01 \x83\x01Q\x01R\x7F+\xC4\x0E\x91\xDD\x16\x9B\x8B\xC1C\xA0)R\xA1\xB6\xC6\xE6'\xBF\xEBz+\xBEPx\xE1A#\xF3\xC5L\x1Ca\x01@\x82\x01QR\x7F\x10\x8De\xA2\x0CW\x9Bm\x98\x83'^\xB6\x88\x9F\xC3\xF5\xFCys\\\xA9\xF6\x11\xA1;g\xDA\xA2\xFB\xC8\xD0` a\x01@\x83\x01Q\x01R\x7F!\xBC\x1F\x86\xD0`\x8E_\x06&\xB4g\xEEo\x82\x82\xB6\x19\"?`\xA7\xAC\xB0\xFCc\xBA{\xDA\xF7\x83\xBEa\x01`\x82\x01QR\x7F\x05\xEF2\x82\xF8\xEE\xF0\x15\x15\xFB\x9A\x8A}l\xA0k\x8B\0}\x1DQ$\x03\xEF\xB2h\xFB\x03\xCE_\t\xE9` a\x01`\x83\x01Q\x01R\x7F,\xABf\xC1\xCBZ\x83\x86\x9Es\xAC4\xFB\xE4gHi\x99\xBA\xBDT\x1D\x90\x10\xEE\x9A\x80H\x06\xEE\xE4\xEFa\x01\x80\x82\x01QR\x7F-\xB1\x98$\x19\xC5\xA4\xA1u\x93\xAC\xFF\x955\xFA\x96v\x83\xD7\\\x8A\xEC\x011\x9Bd\xB8J\xAD\xA2\xAD\x84` a\x01\x80\x83\x01Q\x01R\x7F,8f|l~\xB8h\xBD\xD3\x0C4\xDD?K\x84\xD9\xB9\xB1\xA2}xg\xB3d\xC8\xB7\x83\x14#\xE9\x08a\x01\xA0\x82\x01QR\x7F+,\xB4\x04M\xD5\x11e\xC4\x818!\x9DQ\xCF\x8D\x16\x89\xF9\x1E\xD3\xEE\xEF\xEA\xD6\xE0U\xEBH\x8A,\xE2` a\x01\xA0\x83\x01Q\x01R\x7F-H\xE5G\x03\x01\x1D\xF2\xC7J\x14\xDA\xFD\xE3\xAFO\xD8>\xC7\x18u\xD8\xDD\xC3UFXd\x0C\xC9U\x01a\x01\xC0\x82\x01QR\x7F$:\x99\xD8\r2\xEBT\x08\xB5\x9D[\x080+\xED\xE0p\xD3\xFB\n\x8E\xFE/\"b\xF8e\xBF\xFBM\r` a\x01\xC0\x83\x01Q\x01R\x7F\x04U\xD22[\xF6&\x9Af\xF0}\x83\x8FU\xF3iG\xA3\xCD\x9B\x87\xED\xD8H\x0B\xCE\xD9\\\xBBE\xCC\x11a\x01\xE0\x82\x01QR\x7F\x0Ff\xD9\x08Zn\xD6\x0B\x83\x81y\x98~$\t\x92\xBF\xF4\xC0Ql\xCFl\xCD\xE4\xA1\xCA\x94\xCE\x8B\x98d` a\x01\xE0\x83\x01Q\x01R\x7F+\xAC\r#\xC8X]\x14\x87\xECa\x1B^\xFF\xC9~XR\xFE\xA4:|\xBA6\xCC\xDD, y1\xF3\x94a\x02\0\x82\x01QR\x7F\x18`\xB5N\x01\xA0j\xEAZ\xDBK\x13\xBF[\xAE\xBA\xB9+sh\x07\xA3\xA8\x9F\xF2\x04\t\x92\xB0n\xE6\xEC` a\x02\0\x83\x01Q\x01R\x7F\x0C\x0B\xFA\x1C/\xC6\xF8\xED\x01#=Qh\xDB\x1E\x1D\xFErU\x04\xF02\xF6i\xF5\n\x92\xAEw\xC7)\x06a\x02 \x82\x01QR\x7F\rt\x1E\x12L}\x10i\xB8\xA4\0\xCB\xCD\xCF\xD9\x01(\xA53\x90\x1A\xD4\xDE\x1E\x03\x7F\xE7)\x84\xDC4\xCF` a\x02 \x83\x01Q\x01R\x7F\x01\xCF\xED0\x08\\\x9E\xFC\xE0Fh W\x94\xAA9\xB1\xA8\xEEY\x124\xB4\xC7z\"\xF8\xC2m\x89\x9E\x05a\x02@\x82\x01QR\x7F*\xB6\x8A\xC8-6\xCE\xDBd}\x14\xA5\xB0\x03^\x8C\x9A\x0B\xE8G\x80\xB7\xBA\xE1\x13:'\xA8\x80\x96n\xD1` a\x02@\x83\x01Q\x01R\x7F\x07.\x1DP\xF8\xB5\xCF\x8DWK8G'dw\xD9[\xBDQ\x165\x10\0\x84\x1Fr\x8D\xA4O@C\xB5a\x02`\x82\x01QR\x7F#\xF8\xEAn\xAC\xD0\x87mW\"\x0FW\xEA\xBA\xCB\xE7j##A\x16cs\x1A%\x1D]\xCA6\xF1\xB5\x9F` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\x08!W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x14\x15a\x06\x97V[\x90Pa\x14\x1Fa\x1F\x14V[\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\x9E\x90\x85\x90\x85\x90\x88\x90`\x04\x01a([V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x14\xB9W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x14\xDD\x91\x90a*{V[a\x14\xFAW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[`\tT\x15\x80\x15\x90a\x15uWP`\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@Wa\x15@a&VV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x15j\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a*\x9AV[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x16\x08W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x15\xA2Wa\x15\xA2a&VV[_\x91\x82R` \x82 `\x02\x90\x91\x02\x01\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U`\x01\x01U`\x08\x80T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90`\x18a\x15\xE2\x83a*\xB9V[\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\x17oWP\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\x17c_Q` a+\x11_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x08\xACW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x17\x95a\rAV[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x81R\x7F\xF7\x87!\"n\xFE\x9A\x1B\xB6x\x18\x9A\x16\xD1UI(\xB9\xF2\x19.,\xB9>\xED\xA8;y\xFA@\0}\x90` \x01a\x06CV[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x18(WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18%\x91\x81\x01\x90a*\xE3V[`\x01[a\x18PW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r,V[_Q` a+\x11_9_Q\x90_R\x81\x14a\x18\x80W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r,V[a\x18\x8A\x83\x83a\x1A\x8DV[PPPV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x08\xACW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x18\xE0a\x1A\xE2V[a\r>\x81a\x1B+V[a\x08\xACa\x1A\xE2V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x19\x15WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x19\"WP` \x82\x01Q\x15[\x80a\x19/WP`@\x82\x01Q\x15[\x80a\x19<WP``\x82\x01Q\x15[\x80a\x19FWP\x81Q\x15[\x80a\x19XWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x19lWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x19\x8AW`@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[\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\x1A\x96\x82a\x1B3V[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a\x1A\xDAWa\x18\x8A\x82\x82a\x1B\x96V[a\x08!a\x1C\x08V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0T`\x01`@\x1B\x90\x04`\xFF\x16a\x08\xACW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\r\x07a\x1A\xE2V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1BhW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r,V[_Q` a+\x11_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa\x1B\xB2\x91\x90a*\xFAV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1B\xEAW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1B\xEFV[``\x91P[P\x91P\x91Pa\x1B\xFF\x85\x83\x83a\x1C'V[\x95\x94PPPPPV[4\x15a\x08\xACW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a\x1C<Wa\x1C7\x82a\x1C\x86V[a\x1C\x7FV[\x81Q\x15\x80\x15a\x1CSWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x1C|W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r,V[P\x80[\x93\x92PPPV[\x80Q\x15a\x1C\x96W\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x80a\x02\xC0\x01`@R\x80_\x81R` \x01_\x81R` \x01a\x1C\xE2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\x02`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\"`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\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` \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\x1FHW__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\x1F]W__\xFD[a\x1C\x7F\x82a\x1F2V[_` \x82\x84\x03\x12\x15a\x1FvW__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa\x1F\xAF`@\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!\xB5Wa!\xB5a!~V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a!\xE3Wa!\xE3a!~V[`@R\x91\x90PV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x1FHW__\xFD[_``\x82\x84\x03\x12\x15a\"\x11W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"3Wa\"3a!~V[`@R\x90P\x80a\"B\x83a!\xEBV[\x81Ra\"P` \x84\x01a!\xEBV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a\"vW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"\x98Wa\"\x98a!~V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[__\x82\x84\x03a\x04\xE0\x81\x12\x15a\"\xC5W__\xFD[a\"\xCF\x85\x85a\"\x01V[\x92Pa\x04\x80`_\x19\x82\x01\x12\x15a\"\xE3W__\xFD[Pa\"\xECa!\x92V[a\"\xF9\x85``\x86\x01a\"fV[\x81Ra#\x08\x85`\xA0\x86\x01a\"fV[` \x82\x01Ra#\x1A\x85`\xE0\x86\x01a\"fV[`@\x82\x01Ra#-\x85a\x01 \x86\x01a\"fV[``\x82\x01Ra#@\x85a\x01`\x86\x01a\"fV[`\x80\x82\x01Ra#S\x85a\x01\xA0\x86\x01a\"fV[`\xA0\x82\x01Ra#f\x85a\x01\xE0\x86\x01a\"fV[`\xC0\x82\x01Ra#y\x85a\x02 \x86\x01a\"fV[`\xE0\x82\x01Ra#\x8C\x85a\x02`\x86\x01a\"fV[a\x01\0\x82\x01Ra#\xA0\x85a\x02\xA0\x86\x01a\"fV[a\x01 \x82\x01Ra#\xB4\x85a\x02\xE0\x86\x01a\"fV[a\x01@\x82\x01Ra#\xC8\x85a\x03 \x86\x01a\"fV[a\x01`\x82\x01Ra#\xDC\x85a\x03`\x86\x01a\"fV[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$sW__\xFD[a$|\x83a\x1F2V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a$\x96W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a$\xA6W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a$\xBFWa$\xBFa!~V[a$\xD2`\x1F\x82\x01`\x1F\x19\x16` \x01a!\xBBV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a$\xE6W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1FHW__\xFD[_` \x82\x84\x03\x12\x15a%(W__\xFD[a\x1C\x7F\x82a%\x05V[____\x84\x86\x03a\x01 \x81\x12\x15a%FW__\xFD[a%P\x87\x87a\"\x01V[\x94P`\x80`_\x19\x82\x01\x12\x15a%cW__\xFD[P`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a%\x86Wa%\x86a!~V[`@\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%\xC0`\xE0\x86\x01a%\x05V[\x91Pa%\xCFa\x01\0\x86\x01a\x1F2V[\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& W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x0C\xF9Wa\x0C\xF9a&/V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x81a&xWa&xa&/V[P_\x19\x01\x90V[\x80_[`\x07\x81\x10\x15a\x14\xFAW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a&\x82V[a&\xB6\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(\x8D`@\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*ea\x05\0\x83\x01\x85a&\x7FV[a*sa\x05\xE0\x83\x01\x84a&\xA1V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a*\x8BW__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1C\x7FW__\xFD[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x0C\xF9Wa\x0C\xF9a&/V[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a*\xDAWa*\xDAa&/V[`\x01\x01\x92\x91PPV[_` \x82\x84\x03\x12\x15a*\xF3W__\xFD[PQ\x91\x90PV[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08#\0\n",
3737    );
3738    #[derive(serde::Serialize, serde::Deserialize)]
3739    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3740    /**```solidity
3741struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
3742```*/
3743    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3744    #[derive(Clone)]
3745    pub struct LightClientState {
3746        #[allow(missing_docs)]
3747        pub viewNum: u64,
3748        #[allow(missing_docs)]
3749        pub blockHeight: u64,
3750        #[allow(missing_docs)]
3751        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
3752    }
3753    #[allow(
3754        non_camel_case_types,
3755        non_snake_case,
3756        clippy::pub_underscore_fields,
3757        clippy::style
3758    )]
3759    const _: () = {
3760        use alloy::sol_types as alloy_sol_types;
3761        #[doc(hidden)]
3762        #[allow(dead_code)]
3763        type UnderlyingSolTuple<'a> = (
3764            alloy::sol_types::sol_data::Uint<64>,
3765            alloy::sol_types::sol_data::Uint<64>,
3766            BN254::ScalarField,
3767        );
3768        #[doc(hidden)]
3769        type UnderlyingRustTuple<'a> = (
3770            u64,
3771            u64,
3772            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
3773        );
3774        #[cfg(test)]
3775        #[allow(dead_code, unreachable_patterns)]
3776        fn _type_assertion(
3777            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3778        ) {
3779            match _t {
3780                alloy_sol_types::private::AssertTypeEq::<
3781                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3782                >(_) => {}
3783            }
3784        }
3785        #[automatically_derived]
3786        #[doc(hidden)]
3787        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
3788            fn from(value: LightClientState) -> Self {
3789                (value.viewNum, value.blockHeight, value.blockCommRoot)
3790            }
3791        }
3792        #[automatically_derived]
3793        #[doc(hidden)]
3794        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
3795            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3796                Self {
3797                    viewNum: tuple.0,
3798                    blockHeight: tuple.1,
3799                    blockCommRoot: tuple.2,
3800                }
3801            }
3802        }
3803        #[automatically_derived]
3804        impl alloy_sol_types::SolValue for LightClientState {
3805            type SolType = Self;
3806        }
3807        #[automatically_derived]
3808        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
3809            #[inline]
3810            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
3811                (
3812                    <alloy::sol_types::sol_data::Uint<
3813                        64,
3814                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
3815                    <alloy::sol_types::sol_data::Uint<
3816                        64,
3817                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
3818                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
3819                        &self.blockCommRoot,
3820                    ),
3821                )
3822            }
3823            #[inline]
3824            fn stv_abi_encoded_size(&self) -> usize {
3825                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
3826                    return size;
3827                }
3828                let tuple = <UnderlyingRustTuple<
3829                    '_,
3830                > as ::core::convert::From<Self>>::from(self.clone());
3831                <UnderlyingSolTuple<
3832                    '_,
3833                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
3834            }
3835            #[inline]
3836            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
3837                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
3838            }
3839            #[inline]
3840            fn stv_abi_encode_packed_to(
3841                &self,
3842                out: &mut alloy_sol_types::private::Vec<u8>,
3843            ) {
3844                let tuple = <UnderlyingRustTuple<
3845                    '_,
3846                > as ::core::convert::From<Self>>::from(self.clone());
3847                <UnderlyingSolTuple<
3848                    '_,
3849                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
3850            }
3851            #[inline]
3852            fn stv_abi_packed_encoded_size(&self) -> usize {
3853                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
3854                    return size;
3855                }
3856                let tuple = <UnderlyingRustTuple<
3857                    '_,
3858                > as ::core::convert::From<Self>>::from(self.clone());
3859                <UnderlyingSolTuple<
3860                    '_,
3861                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
3862            }
3863        }
3864        #[automatically_derived]
3865        impl alloy_sol_types::SolType for LightClientState {
3866            type RustType = Self;
3867            type Token<'a> = <UnderlyingSolTuple<
3868                'a,
3869            > as alloy_sol_types::SolType>::Token<'a>;
3870            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
3871            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
3872                '_,
3873            > as alloy_sol_types::SolType>::ENCODED_SIZE;
3874            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
3875                '_,
3876            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
3877            #[inline]
3878            fn valid_token(token: &Self::Token<'_>) -> bool {
3879                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
3880            }
3881            #[inline]
3882            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
3883                let tuple = <UnderlyingSolTuple<
3884                    '_,
3885                > as alloy_sol_types::SolType>::detokenize(token);
3886                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
3887            }
3888        }
3889        #[automatically_derived]
3890        impl alloy_sol_types::SolStruct for LightClientState {
3891            const NAME: &'static str = "LightClientState";
3892            #[inline]
3893            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
3894                alloy_sol_types::private::Cow::Borrowed(
3895                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
3896                )
3897            }
3898            #[inline]
3899            fn eip712_components() -> alloy_sol_types::private::Vec<
3900                alloy_sol_types::private::Cow<'static, str>,
3901            > {
3902                alloy_sol_types::private::Vec::new()
3903            }
3904            #[inline]
3905            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
3906                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
3907            }
3908            #[inline]
3909            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
3910                [
3911                    <alloy::sol_types::sol_data::Uint<
3912                        64,
3913                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
3914                        .0,
3915                    <alloy::sol_types::sol_data::Uint<
3916                        64,
3917                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
3918                        .0,
3919                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
3920                            &self.blockCommRoot,
3921                        )
3922                        .0,
3923                ]
3924                    .concat()
3925            }
3926        }
3927        #[automatically_derived]
3928        impl alloy_sol_types::EventTopic for LightClientState {
3929            #[inline]
3930            fn topic_preimage_length(rust: &Self::RustType) -> usize {
3931                0usize
3932                    + <alloy::sol_types::sol_data::Uint<
3933                        64,
3934                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
3935                        &rust.viewNum,
3936                    )
3937                    + <alloy::sol_types::sol_data::Uint<
3938                        64,
3939                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
3940                        &rust.blockHeight,
3941                    )
3942                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
3943                        &rust.blockCommRoot,
3944                    )
3945            }
3946            #[inline]
3947            fn encode_topic_preimage(
3948                rust: &Self::RustType,
3949                out: &mut alloy_sol_types::private::Vec<u8>,
3950            ) {
3951                out.reserve(
3952                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
3953                );
3954                <alloy::sol_types::sol_data::Uint<
3955                    64,
3956                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3957                    &rust.viewNum,
3958                    out,
3959                );
3960                <alloy::sol_types::sol_data::Uint<
3961                    64,
3962                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3963                    &rust.blockHeight,
3964                    out,
3965                );
3966                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
3967                    &rust.blockCommRoot,
3968                    out,
3969                );
3970            }
3971            #[inline]
3972            fn encode_topic(
3973                rust: &Self::RustType,
3974            ) -> alloy_sol_types::abi::token::WordToken {
3975                let mut out = alloy_sol_types::private::Vec::new();
3976                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
3977                    rust,
3978                    &mut out,
3979                );
3980                alloy_sol_types::abi::token::WordToken(
3981                    alloy_sol_types::private::keccak256(out),
3982                )
3983            }
3984        }
3985    };
3986    #[derive(serde::Serialize, serde::Deserialize)]
3987    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3988    /**```solidity
3989struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
3990```*/
3991    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3992    #[derive(Clone)]
3993    pub struct StakeTableState {
3994        #[allow(missing_docs)]
3995        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
3996        #[allow(missing_docs)]
3997        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
3998        #[allow(missing_docs)]
3999        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
4000        #[allow(missing_docs)]
4001        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
4002    }
4003    #[allow(
4004        non_camel_case_types,
4005        non_snake_case,
4006        clippy::pub_underscore_fields,
4007        clippy::style
4008    )]
4009    const _: () = {
4010        use alloy::sol_types as alloy_sol_types;
4011        #[doc(hidden)]
4012        #[allow(dead_code)]
4013        type UnderlyingSolTuple<'a> = (
4014            alloy::sol_types::sol_data::Uint<256>,
4015            BN254::ScalarField,
4016            BN254::ScalarField,
4017            BN254::ScalarField,
4018        );
4019        #[doc(hidden)]
4020        type UnderlyingRustTuple<'a> = (
4021            alloy::sol_types::private::primitives::aliases::U256,
4022            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
4023            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
4024            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
4025        );
4026        #[cfg(test)]
4027        #[allow(dead_code, unreachable_patterns)]
4028        fn _type_assertion(
4029            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4030        ) {
4031            match _t {
4032                alloy_sol_types::private::AssertTypeEq::<
4033                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4034                >(_) => {}
4035            }
4036        }
4037        #[automatically_derived]
4038        #[doc(hidden)]
4039        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
4040            fn from(value: StakeTableState) -> Self {
4041                (
4042                    value.threshold,
4043                    value.blsKeyComm,
4044                    value.schnorrKeyComm,
4045                    value.amountComm,
4046                )
4047            }
4048        }
4049        #[automatically_derived]
4050        #[doc(hidden)]
4051        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
4052            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4053                Self {
4054                    threshold: tuple.0,
4055                    blsKeyComm: tuple.1,
4056                    schnorrKeyComm: tuple.2,
4057                    amountComm: tuple.3,
4058                }
4059            }
4060        }
4061        #[automatically_derived]
4062        impl alloy_sol_types::SolValue for StakeTableState {
4063            type SolType = Self;
4064        }
4065        #[automatically_derived]
4066        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
4067            #[inline]
4068            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
4069                (
4070                    <alloy::sol_types::sol_data::Uint<
4071                        256,
4072                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
4073                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
4074                        &self.blsKeyComm,
4075                    ),
4076                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
4077                        &self.schnorrKeyComm,
4078                    ),
4079                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
4080                        &self.amountComm,
4081                    ),
4082                )
4083            }
4084            #[inline]
4085            fn stv_abi_encoded_size(&self) -> usize {
4086                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
4087                    return size;
4088                }
4089                let tuple = <UnderlyingRustTuple<
4090                    '_,
4091                > as ::core::convert::From<Self>>::from(self.clone());
4092                <UnderlyingSolTuple<
4093                    '_,
4094                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
4095            }
4096            #[inline]
4097            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
4098                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
4099            }
4100            #[inline]
4101            fn stv_abi_encode_packed_to(
4102                &self,
4103                out: &mut alloy_sol_types::private::Vec<u8>,
4104            ) {
4105                let tuple = <UnderlyingRustTuple<
4106                    '_,
4107                > as ::core::convert::From<Self>>::from(self.clone());
4108                <UnderlyingSolTuple<
4109                    '_,
4110                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
4111            }
4112            #[inline]
4113            fn stv_abi_packed_encoded_size(&self) -> usize {
4114                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
4115                    return size;
4116                }
4117                let tuple = <UnderlyingRustTuple<
4118                    '_,
4119                > as ::core::convert::From<Self>>::from(self.clone());
4120                <UnderlyingSolTuple<
4121                    '_,
4122                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
4123            }
4124        }
4125        #[automatically_derived]
4126        impl alloy_sol_types::SolType for StakeTableState {
4127            type RustType = Self;
4128            type Token<'a> = <UnderlyingSolTuple<
4129                'a,
4130            > as alloy_sol_types::SolType>::Token<'a>;
4131            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
4132            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
4133                '_,
4134            > as alloy_sol_types::SolType>::ENCODED_SIZE;
4135            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
4136                '_,
4137            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
4138            #[inline]
4139            fn valid_token(token: &Self::Token<'_>) -> bool {
4140                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
4141            }
4142            #[inline]
4143            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
4144                let tuple = <UnderlyingSolTuple<
4145                    '_,
4146                > as alloy_sol_types::SolType>::detokenize(token);
4147                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
4148            }
4149        }
4150        #[automatically_derived]
4151        impl alloy_sol_types::SolStruct for StakeTableState {
4152            const NAME: &'static str = "StakeTableState";
4153            #[inline]
4154            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
4155                alloy_sol_types::private::Cow::Borrowed(
4156                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
4157                )
4158            }
4159            #[inline]
4160            fn eip712_components() -> alloy_sol_types::private::Vec<
4161                alloy_sol_types::private::Cow<'static, str>,
4162            > {
4163                alloy_sol_types::private::Vec::new()
4164            }
4165            #[inline]
4166            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
4167                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
4168            }
4169            #[inline]
4170            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
4171                [
4172                    <alloy::sol_types::sol_data::Uint<
4173                        256,
4174                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
4175                        .0,
4176                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
4177                            &self.blsKeyComm,
4178                        )
4179                        .0,
4180                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
4181                            &self.schnorrKeyComm,
4182                        )
4183                        .0,
4184                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
4185                            &self.amountComm,
4186                        )
4187                        .0,
4188                ]
4189                    .concat()
4190            }
4191        }
4192        #[automatically_derived]
4193        impl alloy_sol_types::EventTopic for StakeTableState {
4194            #[inline]
4195            fn topic_preimage_length(rust: &Self::RustType) -> usize {
4196                0usize
4197                    + <alloy::sol_types::sol_data::Uint<
4198                        256,
4199                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
4200                        &rust.threshold,
4201                    )
4202                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
4203                        &rust.blsKeyComm,
4204                    )
4205                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
4206                        &rust.schnorrKeyComm,
4207                    )
4208                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
4209                        &rust.amountComm,
4210                    )
4211            }
4212            #[inline]
4213            fn encode_topic_preimage(
4214                rust: &Self::RustType,
4215                out: &mut alloy_sol_types::private::Vec<u8>,
4216            ) {
4217                out.reserve(
4218                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
4219                );
4220                <alloy::sol_types::sol_data::Uint<
4221                    256,
4222                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
4223                    &rust.threshold,
4224                    out,
4225                );
4226                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
4227                    &rust.blsKeyComm,
4228                    out,
4229                );
4230                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
4231                    &rust.schnorrKeyComm,
4232                    out,
4233                );
4234                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
4235                    &rust.amountComm,
4236                    out,
4237                );
4238            }
4239            #[inline]
4240            fn encode_topic(
4241                rust: &Self::RustType,
4242            ) -> alloy_sol_types::abi::token::WordToken {
4243                let mut out = alloy_sol_types::private::Vec::new();
4244                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
4245                    rust,
4246                    &mut out,
4247                );
4248                alloy_sol_types::abi::token::WordToken(
4249                    alloy_sol_types::private::keccak256(out),
4250                )
4251            }
4252        }
4253    };
4254    #[derive(serde::Serialize, serde::Deserialize)]
4255    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4256    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
4257```solidity
4258error AddressEmptyCode(address target);
4259```*/
4260    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4261    #[derive(Clone)]
4262    pub struct AddressEmptyCode {
4263        #[allow(missing_docs)]
4264        pub target: alloy::sol_types::private::Address,
4265    }
4266    #[allow(
4267        non_camel_case_types,
4268        non_snake_case,
4269        clippy::pub_underscore_fields,
4270        clippy::style
4271    )]
4272    const _: () = {
4273        use alloy::sol_types as alloy_sol_types;
4274        #[doc(hidden)]
4275        #[allow(dead_code)]
4276        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4277        #[doc(hidden)]
4278        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4279        #[cfg(test)]
4280        #[allow(dead_code, unreachable_patterns)]
4281        fn _type_assertion(
4282            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4283        ) {
4284            match _t {
4285                alloy_sol_types::private::AssertTypeEq::<
4286                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4287                >(_) => {}
4288            }
4289        }
4290        #[automatically_derived]
4291        #[doc(hidden)]
4292        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
4293            fn from(value: AddressEmptyCode) -> Self {
4294                (value.target,)
4295            }
4296        }
4297        #[automatically_derived]
4298        #[doc(hidden)]
4299        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
4300            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4301                Self { target: tuple.0 }
4302            }
4303        }
4304        #[automatically_derived]
4305        impl alloy_sol_types::SolError for AddressEmptyCode {
4306            type Parameters<'a> = UnderlyingSolTuple<'a>;
4307            type Token<'a> = <Self::Parameters<
4308                'a,
4309            > as alloy_sol_types::SolType>::Token<'a>;
4310            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
4311            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
4312            #[inline]
4313            fn new<'a>(
4314                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4315            ) -> Self {
4316                tuple.into()
4317            }
4318            #[inline]
4319            fn tokenize(&self) -> Self::Token<'_> {
4320                (
4321                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4322                        &self.target,
4323                    ),
4324                )
4325            }
4326            #[inline]
4327            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4328                Self::abi_decode_raw_with_config(
4329                    data,
4330                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4331                )
4332            }
4333        }
4334    };
4335    #[derive(serde::Serialize, serde::Deserialize)]
4336    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4337    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
4338```solidity
4339error ERC1967InvalidImplementation(address implementation);
4340```*/
4341    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4342    #[derive(Clone)]
4343    pub struct ERC1967InvalidImplementation {
4344        #[allow(missing_docs)]
4345        pub implementation: alloy::sol_types::private::Address,
4346    }
4347    #[allow(
4348        non_camel_case_types,
4349        non_snake_case,
4350        clippy::pub_underscore_fields,
4351        clippy::style
4352    )]
4353    const _: () = {
4354        use alloy::sol_types as alloy_sol_types;
4355        #[doc(hidden)]
4356        #[allow(dead_code)]
4357        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4358        #[doc(hidden)]
4359        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4360        #[cfg(test)]
4361        #[allow(dead_code, unreachable_patterns)]
4362        fn _type_assertion(
4363            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4364        ) {
4365            match _t {
4366                alloy_sol_types::private::AssertTypeEq::<
4367                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4368                >(_) => {}
4369            }
4370        }
4371        #[automatically_derived]
4372        #[doc(hidden)]
4373        impl ::core::convert::From<ERC1967InvalidImplementation>
4374        for UnderlyingRustTuple<'_> {
4375            fn from(value: ERC1967InvalidImplementation) -> Self {
4376                (value.implementation,)
4377            }
4378        }
4379        #[automatically_derived]
4380        #[doc(hidden)]
4381        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4382        for ERC1967InvalidImplementation {
4383            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4384                Self { implementation: tuple.0 }
4385            }
4386        }
4387        #[automatically_derived]
4388        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
4389            type Parameters<'a> = UnderlyingSolTuple<'a>;
4390            type Token<'a> = <Self::Parameters<
4391                'a,
4392            > as alloy_sol_types::SolType>::Token<'a>;
4393            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
4394            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
4395            #[inline]
4396            fn new<'a>(
4397                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4398            ) -> Self {
4399                tuple.into()
4400            }
4401            #[inline]
4402            fn tokenize(&self) -> Self::Token<'_> {
4403                (
4404                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4405                        &self.implementation,
4406                    ),
4407                )
4408            }
4409            #[inline]
4410            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4411                Self::abi_decode_raw_with_config(
4412                    data,
4413                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4414                )
4415            }
4416        }
4417    };
4418    #[derive(serde::Serialize, serde::Deserialize)]
4419    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4420    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
4421```solidity
4422error ERC1967NonPayable();
4423```*/
4424    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4425    #[derive(Clone)]
4426    pub struct ERC1967NonPayable;
4427    #[allow(
4428        non_camel_case_types,
4429        non_snake_case,
4430        clippy::pub_underscore_fields,
4431        clippy::style
4432    )]
4433    const _: () = {
4434        use alloy::sol_types as alloy_sol_types;
4435        #[doc(hidden)]
4436        #[allow(dead_code)]
4437        type UnderlyingSolTuple<'a> = ();
4438        #[doc(hidden)]
4439        type UnderlyingRustTuple<'a> = ();
4440        #[cfg(test)]
4441        #[allow(dead_code, unreachable_patterns)]
4442        fn _type_assertion(
4443            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4444        ) {
4445            match _t {
4446                alloy_sol_types::private::AssertTypeEq::<
4447                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4448                >(_) => {}
4449            }
4450        }
4451        #[automatically_derived]
4452        #[doc(hidden)]
4453        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
4454            fn from(value: ERC1967NonPayable) -> Self {
4455                ()
4456            }
4457        }
4458        #[automatically_derived]
4459        #[doc(hidden)]
4460        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
4461            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4462                Self
4463            }
4464        }
4465        #[automatically_derived]
4466        impl alloy_sol_types::SolError for ERC1967NonPayable {
4467            type Parameters<'a> = UnderlyingSolTuple<'a>;
4468            type Token<'a> = <Self::Parameters<
4469                'a,
4470            > as alloy_sol_types::SolType>::Token<'a>;
4471            const SIGNATURE: &'static str = "ERC1967NonPayable()";
4472            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
4473            #[inline]
4474            fn new<'a>(
4475                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4476            ) -> Self {
4477                tuple.into()
4478            }
4479            #[inline]
4480            fn tokenize(&self) -> Self::Token<'_> {
4481                ()
4482            }
4483            #[inline]
4484            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4485                Self::abi_decode_raw_with_config(
4486                    data,
4487                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4488                )
4489            }
4490        }
4491    };
4492    #[derive(serde::Serialize, serde::Deserialize)]
4493    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4494    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
4495```solidity
4496error FailedInnerCall();
4497```*/
4498    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4499    #[derive(Clone)]
4500    pub struct FailedInnerCall;
4501    #[allow(
4502        non_camel_case_types,
4503        non_snake_case,
4504        clippy::pub_underscore_fields,
4505        clippy::style
4506    )]
4507    const _: () = {
4508        use alloy::sol_types as alloy_sol_types;
4509        #[doc(hidden)]
4510        #[allow(dead_code)]
4511        type UnderlyingSolTuple<'a> = ();
4512        #[doc(hidden)]
4513        type UnderlyingRustTuple<'a> = ();
4514        #[cfg(test)]
4515        #[allow(dead_code, unreachable_patterns)]
4516        fn _type_assertion(
4517            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4518        ) {
4519            match _t {
4520                alloy_sol_types::private::AssertTypeEq::<
4521                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4522                >(_) => {}
4523            }
4524        }
4525        #[automatically_derived]
4526        #[doc(hidden)]
4527        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
4528            fn from(value: FailedInnerCall) -> Self {
4529                ()
4530            }
4531        }
4532        #[automatically_derived]
4533        #[doc(hidden)]
4534        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
4535            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4536                Self
4537            }
4538        }
4539        #[automatically_derived]
4540        impl alloy_sol_types::SolError for FailedInnerCall {
4541            type Parameters<'a> = UnderlyingSolTuple<'a>;
4542            type Token<'a> = <Self::Parameters<
4543                'a,
4544            > as alloy_sol_types::SolType>::Token<'a>;
4545            const SIGNATURE: &'static str = "FailedInnerCall()";
4546            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
4547            #[inline]
4548            fn new<'a>(
4549                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4550            ) -> Self {
4551                tuple.into()
4552            }
4553            #[inline]
4554            fn tokenize(&self) -> Self::Token<'_> {
4555                ()
4556            }
4557            #[inline]
4558            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4559                Self::abi_decode_raw_with_config(
4560                    data,
4561                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4562                )
4563            }
4564        }
4565    };
4566    #[derive(serde::Serialize, serde::Deserialize)]
4567    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4568    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
4569```solidity
4570error InsufficientSnapshotHistory();
4571```*/
4572    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4573    #[derive(Clone)]
4574    pub struct InsufficientSnapshotHistory;
4575    #[allow(
4576        non_camel_case_types,
4577        non_snake_case,
4578        clippy::pub_underscore_fields,
4579        clippy::style
4580    )]
4581    const _: () = {
4582        use alloy::sol_types as alloy_sol_types;
4583        #[doc(hidden)]
4584        #[allow(dead_code)]
4585        type UnderlyingSolTuple<'a> = ();
4586        #[doc(hidden)]
4587        type UnderlyingRustTuple<'a> = ();
4588        #[cfg(test)]
4589        #[allow(dead_code, unreachable_patterns)]
4590        fn _type_assertion(
4591            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4592        ) {
4593            match _t {
4594                alloy_sol_types::private::AssertTypeEq::<
4595                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4596                >(_) => {}
4597            }
4598        }
4599        #[automatically_derived]
4600        #[doc(hidden)]
4601        impl ::core::convert::From<InsufficientSnapshotHistory>
4602        for UnderlyingRustTuple<'_> {
4603            fn from(value: InsufficientSnapshotHistory) -> Self {
4604                ()
4605            }
4606        }
4607        #[automatically_derived]
4608        #[doc(hidden)]
4609        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4610        for InsufficientSnapshotHistory {
4611            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4612                Self
4613            }
4614        }
4615        #[automatically_derived]
4616        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
4617            type Parameters<'a> = UnderlyingSolTuple<'a>;
4618            type Token<'a> = <Self::Parameters<
4619                'a,
4620            > as alloy_sol_types::SolType>::Token<'a>;
4621            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
4622            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
4623            #[inline]
4624            fn new<'a>(
4625                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4626            ) -> Self {
4627                tuple.into()
4628            }
4629            #[inline]
4630            fn tokenize(&self) -> Self::Token<'_> {
4631                ()
4632            }
4633            #[inline]
4634            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4635                Self::abi_decode_raw_with_config(
4636                    data,
4637                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4638                )
4639            }
4640        }
4641    };
4642    #[derive(serde::Serialize, serde::Deserialize)]
4643    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4644    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
4645```solidity
4646error InvalidAddress();
4647```*/
4648    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4649    #[derive(Clone)]
4650    pub struct InvalidAddress;
4651    #[allow(
4652        non_camel_case_types,
4653        non_snake_case,
4654        clippy::pub_underscore_fields,
4655        clippy::style
4656    )]
4657    const _: () = {
4658        use alloy::sol_types as alloy_sol_types;
4659        #[doc(hidden)]
4660        #[allow(dead_code)]
4661        type UnderlyingSolTuple<'a> = ();
4662        #[doc(hidden)]
4663        type UnderlyingRustTuple<'a> = ();
4664        #[cfg(test)]
4665        #[allow(dead_code, unreachable_patterns)]
4666        fn _type_assertion(
4667            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4668        ) {
4669            match _t {
4670                alloy_sol_types::private::AssertTypeEq::<
4671                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4672                >(_) => {}
4673            }
4674        }
4675        #[automatically_derived]
4676        #[doc(hidden)]
4677        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
4678            fn from(value: InvalidAddress) -> Self {
4679                ()
4680            }
4681        }
4682        #[automatically_derived]
4683        #[doc(hidden)]
4684        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
4685            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4686                Self
4687            }
4688        }
4689        #[automatically_derived]
4690        impl alloy_sol_types::SolError for InvalidAddress {
4691            type Parameters<'a> = UnderlyingSolTuple<'a>;
4692            type Token<'a> = <Self::Parameters<
4693                'a,
4694            > as alloy_sol_types::SolType>::Token<'a>;
4695            const SIGNATURE: &'static str = "InvalidAddress()";
4696            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
4697            #[inline]
4698            fn new<'a>(
4699                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4700            ) -> Self {
4701                tuple.into()
4702            }
4703            #[inline]
4704            fn tokenize(&self) -> Self::Token<'_> {
4705                ()
4706            }
4707            #[inline]
4708            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4709                Self::abi_decode_raw_with_config(
4710                    data,
4711                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4712                )
4713            }
4714        }
4715    };
4716    #[derive(serde::Serialize, serde::Deserialize)]
4717    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4718    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
4719```solidity
4720error InvalidArgs();
4721```*/
4722    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4723    #[derive(Clone)]
4724    pub struct InvalidArgs;
4725    #[allow(
4726        non_camel_case_types,
4727        non_snake_case,
4728        clippy::pub_underscore_fields,
4729        clippy::style
4730    )]
4731    const _: () = {
4732        use alloy::sol_types as alloy_sol_types;
4733        #[doc(hidden)]
4734        #[allow(dead_code)]
4735        type UnderlyingSolTuple<'a> = ();
4736        #[doc(hidden)]
4737        type UnderlyingRustTuple<'a> = ();
4738        #[cfg(test)]
4739        #[allow(dead_code, unreachable_patterns)]
4740        fn _type_assertion(
4741            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4742        ) {
4743            match _t {
4744                alloy_sol_types::private::AssertTypeEq::<
4745                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4746                >(_) => {}
4747            }
4748        }
4749        #[automatically_derived]
4750        #[doc(hidden)]
4751        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
4752            fn from(value: InvalidArgs) -> Self {
4753                ()
4754            }
4755        }
4756        #[automatically_derived]
4757        #[doc(hidden)]
4758        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
4759            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4760                Self
4761            }
4762        }
4763        #[automatically_derived]
4764        impl alloy_sol_types::SolError for InvalidArgs {
4765            type Parameters<'a> = UnderlyingSolTuple<'a>;
4766            type Token<'a> = <Self::Parameters<
4767                'a,
4768            > as alloy_sol_types::SolType>::Token<'a>;
4769            const SIGNATURE: &'static str = "InvalidArgs()";
4770            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
4771            #[inline]
4772            fn new<'a>(
4773                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4774            ) -> Self {
4775                tuple.into()
4776            }
4777            #[inline]
4778            fn tokenize(&self) -> Self::Token<'_> {
4779                ()
4780            }
4781            #[inline]
4782            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4783                Self::abi_decode_raw_with_config(
4784                    data,
4785                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4786                )
4787            }
4788        }
4789    };
4790    #[derive(serde::Serialize, serde::Deserialize)]
4791    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4792    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
4793```solidity
4794error InvalidHotShotBlockForCommitmentCheck();
4795```*/
4796    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4797    #[derive(Clone)]
4798    pub struct InvalidHotShotBlockForCommitmentCheck;
4799    #[allow(
4800        non_camel_case_types,
4801        non_snake_case,
4802        clippy::pub_underscore_fields,
4803        clippy::style
4804    )]
4805    const _: () = {
4806        use alloy::sol_types as alloy_sol_types;
4807        #[doc(hidden)]
4808        #[allow(dead_code)]
4809        type UnderlyingSolTuple<'a> = ();
4810        #[doc(hidden)]
4811        type UnderlyingRustTuple<'a> = ();
4812        #[cfg(test)]
4813        #[allow(dead_code, unreachable_patterns)]
4814        fn _type_assertion(
4815            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4816        ) {
4817            match _t {
4818                alloy_sol_types::private::AssertTypeEq::<
4819                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4820                >(_) => {}
4821            }
4822        }
4823        #[automatically_derived]
4824        #[doc(hidden)]
4825        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck>
4826        for UnderlyingRustTuple<'_> {
4827            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
4828                ()
4829            }
4830        }
4831        #[automatically_derived]
4832        #[doc(hidden)]
4833        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4834        for InvalidHotShotBlockForCommitmentCheck {
4835            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4836                Self
4837            }
4838        }
4839        #[automatically_derived]
4840        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
4841            type Parameters<'a> = UnderlyingSolTuple<'a>;
4842            type Token<'a> = <Self::Parameters<
4843                'a,
4844            > as alloy_sol_types::SolType>::Token<'a>;
4845            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
4846            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
4847            #[inline]
4848            fn new<'a>(
4849                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4850            ) -> Self {
4851                tuple.into()
4852            }
4853            #[inline]
4854            fn tokenize(&self) -> Self::Token<'_> {
4855                ()
4856            }
4857            #[inline]
4858            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4859                Self::abi_decode_raw_with_config(
4860                    data,
4861                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4862                )
4863            }
4864        }
4865    };
4866    #[derive(serde::Serialize, serde::Deserialize)]
4867    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4868    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
4869```solidity
4870error InvalidInitialization();
4871```*/
4872    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4873    #[derive(Clone)]
4874    pub struct InvalidInitialization;
4875    #[allow(
4876        non_camel_case_types,
4877        non_snake_case,
4878        clippy::pub_underscore_fields,
4879        clippy::style
4880    )]
4881    const _: () = {
4882        use alloy::sol_types as alloy_sol_types;
4883        #[doc(hidden)]
4884        #[allow(dead_code)]
4885        type UnderlyingSolTuple<'a> = ();
4886        #[doc(hidden)]
4887        type UnderlyingRustTuple<'a> = ();
4888        #[cfg(test)]
4889        #[allow(dead_code, unreachable_patterns)]
4890        fn _type_assertion(
4891            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4892        ) {
4893            match _t {
4894                alloy_sol_types::private::AssertTypeEq::<
4895                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4896                >(_) => {}
4897            }
4898        }
4899        #[automatically_derived]
4900        #[doc(hidden)]
4901        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
4902            fn from(value: InvalidInitialization) -> Self {
4903                ()
4904            }
4905        }
4906        #[automatically_derived]
4907        #[doc(hidden)]
4908        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
4909            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4910                Self
4911            }
4912        }
4913        #[automatically_derived]
4914        impl alloy_sol_types::SolError for InvalidInitialization {
4915            type Parameters<'a> = UnderlyingSolTuple<'a>;
4916            type Token<'a> = <Self::Parameters<
4917                'a,
4918            > as alloy_sol_types::SolType>::Token<'a>;
4919            const SIGNATURE: &'static str = "InvalidInitialization()";
4920            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
4921            #[inline]
4922            fn new<'a>(
4923                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4924            ) -> Self {
4925                tuple.into()
4926            }
4927            #[inline]
4928            fn tokenize(&self) -> Self::Token<'_> {
4929                ()
4930            }
4931            #[inline]
4932            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4933                Self::abi_decode_raw_with_config(
4934                    data,
4935                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4936                )
4937            }
4938        }
4939    };
4940    #[derive(serde::Serialize, serde::Deserialize)]
4941    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4942    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
4943```solidity
4944error InvalidMaxStateHistory();
4945```*/
4946    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4947    #[derive(Clone)]
4948    pub struct InvalidMaxStateHistory;
4949    #[allow(
4950        non_camel_case_types,
4951        non_snake_case,
4952        clippy::pub_underscore_fields,
4953        clippy::style
4954    )]
4955    const _: () = {
4956        use alloy::sol_types as alloy_sol_types;
4957        #[doc(hidden)]
4958        #[allow(dead_code)]
4959        type UnderlyingSolTuple<'a> = ();
4960        #[doc(hidden)]
4961        type UnderlyingRustTuple<'a> = ();
4962        #[cfg(test)]
4963        #[allow(dead_code, unreachable_patterns)]
4964        fn _type_assertion(
4965            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4966        ) {
4967            match _t {
4968                alloy_sol_types::private::AssertTypeEq::<
4969                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4970                >(_) => {}
4971            }
4972        }
4973        #[automatically_derived]
4974        #[doc(hidden)]
4975        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
4976            fn from(value: InvalidMaxStateHistory) -> Self {
4977                ()
4978            }
4979        }
4980        #[automatically_derived]
4981        #[doc(hidden)]
4982        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
4983            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4984                Self
4985            }
4986        }
4987        #[automatically_derived]
4988        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
4989            type Parameters<'a> = UnderlyingSolTuple<'a>;
4990            type Token<'a> = <Self::Parameters<
4991                'a,
4992            > as alloy_sol_types::SolType>::Token<'a>;
4993            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
4994            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
4995            #[inline]
4996            fn new<'a>(
4997                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4998            ) -> Self {
4999                tuple.into()
5000            }
5001            #[inline]
5002            fn tokenize(&self) -> Self::Token<'_> {
5003                ()
5004            }
5005            #[inline]
5006            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5007                Self::abi_decode_raw_with_config(
5008                    data,
5009                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5010                )
5011            }
5012        }
5013    };
5014    #[derive(serde::Serialize, serde::Deserialize)]
5015    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5016    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
5017```solidity
5018error InvalidProof();
5019```*/
5020    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5021    #[derive(Clone)]
5022    pub struct InvalidProof;
5023    #[allow(
5024        non_camel_case_types,
5025        non_snake_case,
5026        clippy::pub_underscore_fields,
5027        clippy::style
5028    )]
5029    const _: () = {
5030        use alloy::sol_types as alloy_sol_types;
5031        #[doc(hidden)]
5032        #[allow(dead_code)]
5033        type UnderlyingSolTuple<'a> = ();
5034        #[doc(hidden)]
5035        type UnderlyingRustTuple<'a> = ();
5036        #[cfg(test)]
5037        #[allow(dead_code, unreachable_patterns)]
5038        fn _type_assertion(
5039            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5040        ) {
5041            match _t {
5042                alloy_sol_types::private::AssertTypeEq::<
5043                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5044                >(_) => {}
5045            }
5046        }
5047        #[automatically_derived]
5048        #[doc(hidden)]
5049        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
5050            fn from(value: InvalidProof) -> Self {
5051                ()
5052            }
5053        }
5054        #[automatically_derived]
5055        #[doc(hidden)]
5056        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
5057            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5058                Self
5059            }
5060        }
5061        #[automatically_derived]
5062        impl alloy_sol_types::SolError for InvalidProof {
5063            type Parameters<'a> = UnderlyingSolTuple<'a>;
5064            type Token<'a> = <Self::Parameters<
5065                'a,
5066            > as alloy_sol_types::SolType>::Token<'a>;
5067            const SIGNATURE: &'static str = "InvalidProof()";
5068            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
5069            #[inline]
5070            fn new<'a>(
5071                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5072            ) -> Self {
5073                tuple.into()
5074            }
5075            #[inline]
5076            fn tokenize(&self) -> Self::Token<'_> {
5077                ()
5078            }
5079            #[inline]
5080            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5081                Self::abi_decode_raw_with_config(
5082                    data,
5083                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5084                )
5085            }
5086        }
5087    };
5088    #[derive(serde::Serialize, serde::Deserialize)]
5089    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5090    /**Custom error with signature `InvalidScalar()` and selector `0x05b05ccc`.
5091```solidity
5092error InvalidScalar();
5093```*/
5094    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5095    #[derive(Clone)]
5096    pub struct InvalidScalar;
5097    #[allow(
5098        non_camel_case_types,
5099        non_snake_case,
5100        clippy::pub_underscore_fields,
5101        clippy::style
5102    )]
5103    const _: () = {
5104        use alloy::sol_types as alloy_sol_types;
5105        #[doc(hidden)]
5106        #[allow(dead_code)]
5107        type UnderlyingSolTuple<'a> = ();
5108        #[doc(hidden)]
5109        type UnderlyingRustTuple<'a> = ();
5110        #[cfg(test)]
5111        #[allow(dead_code, unreachable_patterns)]
5112        fn _type_assertion(
5113            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5114        ) {
5115            match _t {
5116                alloy_sol_types::private::AssertTypeEq::<
5117                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5118                >(_) => {}
5119            }
5120        }
5121        #[automatically_derived]
5122        #[doc(hidden)]
5123        impl ::core::convert::From<InvalidScalar> for UnderlyingRustTuple<'_> {
5124            fn from(value: InvalidScalar) -> Self {
5125                ()
5126            }
5127        }
5128        #[automatically_derived]
5129        #[doc(hidden)]
5130        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidScalar {
5131            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5132                Self
5133            }
5134        }
5135        #[automatically_derived]
5136        impl alloy_sol_types::SolError for InvalidScalar {
5137            type Parameters<'a> = UnderlyingSolTuple<'a>;
5138            type Token<'a> = <Self::Parameters<
5139                'a,
5140            > as alloy_sol_types::SolType>::Token<'a>;
5141            const SIGNATURE: &'static str = "InvalidScalar()";
5142            const SELECTOR: [u8; 4] = [5u8, 176u8, 92u8, 204u8];
5143            #[inline]
5144            fn new<'a>(
5145                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5146            ) -> Self {
5147                tuple.into()
5148            }
5149            #[inline]
5150            fn tokenize(&self) -> Self::Token<'_> {
5151                ()
5152            }
5153            #[inline]
5154            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5155                Self::abi_decode_raw_with_config(
5156                    data,
5157                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5158                )
5159            }
5160        }
5161    };
5162    #[derive(serde::Serialize, serde::Deserialize)]
5163    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5164    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
5165```solidity
5166error NoChangeRequired();
5167```*/
5168    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5169    #[derive(Clone)]
5170    pub struct NoChangeRequired;
5171    #[allow(
5172        non_camel_case_types,
5173        non_snake_case,
5174        clippy::pub_underscore_fields,
5175        clippy::style
5176    )]
5177    const _: () = {
5178        use alloy::sol_types as alloy_sol_types;
5179        #[doc(hidden)]
5180        #[allow(dead_code)]
5181        type UnderlyingSolTuple<'a> = ();
5182        #[doc(hidden)]
5183        type UnderlyingRustTuple<'a> = ();
5184        #[cfg(test)]
5185        #[allow(dead_code, unreachable_patterns)]
5186        fn _type_assertion(
5187            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5188        ) {
5189            match _t {
5190                alloy_sol_types::private::AssertTypeEq::<
5191                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5192                >(_) => {}
5193            }
5194        }
5195        #[automatically_derived]
5196        #[doc(hidden)]
5197        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
5198            fn from(value: NoChangeRequired) -> Self {
5199                ()
5200            }
5201        }
5202        #[automatically_derived]
5203        #[doc(hidden)]
5204        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
5205            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5206                Self
5207            }
5208        }
5209        #[automatically_derived]
5210        impl alloy_sol_types::SolError for NoChangeRequired {
5211            type Parameters<'a> = UnderlyingSolTuple<'a>;
5212            type Token<'a> = <Self::Parameters<
5213                'a,
5214            > as alloy_sol_types::SolType>::Token<'a>;
5215            const SIGNATURE: &'static str = "NoChangeRequired()";
5216            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
5217            #[inline]
5218            fn new<'a>(
5219                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5220            ) -> Self {
5221                tuple.into()
5222            }
5223            #[inline]
5224            fn tokenize(&self) -> Self::Token<'_> {
5225                ()
5226            }
5227            #[inline]
5228            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5229                Self::abi_decode_raw_with_config(
5230                    data,
5231                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5232                )
5233            }
5234        }
5235    };
5236    #[derive(serde::Serialize, serde::Deserialize)]
5237    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5238    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
5239```solidity
5240error NotInitializing();
5241```*/
5242    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5243    #[derive(Clone)]
5244    pub struct NotInitializing;
5245    #[allow(
5246        non_camel_case_types,
5247        non_snake_case,
5248        clippy::pub_underscore_fields,
5249        clippy::style
5250    )]
5251    const _: () = {
5252        use alloy::sol_types as alloy_sol_types;
5253        #[doc(hidden)]
5254        #[allow(dead_code)]
5255        type UnderlyingSolTuple<'a> = ();
5256        #[doc(hidden)]
5257        type UnderlyingRustTuple<'a> = ();
5258        #[cfg(test)]
5259        #[allow(dead_code, unreachable_patterns)]
5260        fn _type_assertion(
5261            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5262        ) {
5263            match _t {
5264                alloy_sol_types::private::AssertTypeEq::<
5265                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5266                >(_) => {}
5267            }
5268        }
5269        #[automatically_derived]
5270        #[doc(hidden)]
5271        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
5272            fn from(value: NotInitializing) -> Self {
5273                ()
5274            }
5275        }
5276        #[automatically_derived]
5277        #[doc(hidden)]
5278        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
5279            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5280                Self
5281            }
5282        }
5283        #[automatically_derived]
5284        impl alloy_sol_types::SolError for NotInitializing {
5285            type Parameters<'a> = UnderlyingSolTuple<'a>;
5286            type Token<'a> = <Self::Parameters<
5287                'a,
5288            > as alloy_sol_types::SolType>::Token<'a>;
5289            const SIGNATURE: &'static str = "NotInitializing()";
5290            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
5291            #[inline]
5292            fn new<'a>(
5293                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5294            ) -> Self {
5295                tuple.into()
5296            }
5297            #[inline]
5298            fn tokenize(&self) -> Self::Token<'_> {
5299                ()
5300            }
5301            #[inline]
5302            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5303                Self::abi_decode_raw_with_config(
5304                    data,
5305                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5306                )
5307            }
5308        }
5309    };
5310    #[derive(serde::Serialize, serde::Deserialize)]
5311    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5312    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
5313```solidity
5314error OutdatedState();
5315```*/
5316    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5317    #[derive(Clone)]
5318    pub struct OutdatedState;
5319    #[allow(
5320        non_camel_case_types,
5321        non_snake_case,
5322        clippy::pub_underscore_fields,
5323        clippy::style
5324    )]
5325    const _: () = {
5326        use alloy::sol_types as alloy_sol_types;
5327        #[doc(hidden)]
5328        #[allow(dead_code)]
5329        type UnderlyingSolTuple<'a> = ();
5330        #[doc(hidden)]
5331        type UnderlyingRustTuple<'a> = ();
5332        #[cfg(test)]
5333        #[allow(dead_code, unreachable_patterns)]
5334        fn _type_assertion(
5335            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5336        ) {
5337            match _t {
5338                alloy_sol_types::private::AssertTypeEq::<
5339                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5340                >(_) => {}
5341            }
5342        }
5343        #[automatically_derived]
5344        #[doc(hidden)]
5345        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
5346            fn from(value: OutdatedState) -> Self {
5347                ()
5348            }
5349        }
5350        #[automatically_derived]
5351        #[doc(hidden)]
5352        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
5353            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5354                Self
5355            }
5356        }
5357        #[automatically_derived]
5358        impl alloy_sol_types::SolError for OutdatedState {
5359            type Parameters<'a> = UnderlyingSolTuple<'a>;
5360            type Token<'a> = <Self::Parameters<
5361                'a,
5362            > as alloy_sol_types::SolType>::Token<'a>;
5363            const SIGNATURE: &'static str = "OutdatedState()";
5364            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
5365            #[inline]
5366            fn new<'a>(
5367                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5368            ) -> Self {
5369                tuple.into()
5370            }
5371            #[inline]
5372            fn tokenize(&self) -> Self::Token<'_> {
5373                ()
5374            }
5375            #[inline]
5376            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5377                Self::abi_decode_raw_with_config(
5378                    data,
5379                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5380                )
5381            }
5382        }
5383    };
5384    #[derive(serde::Serialize, serde::Deserialize)]
5385    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5386    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
5387```solidity
5388error OwnableInvalidOwner(address owner);
5389```*/
5390    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5391    #[derive(Clone)]
5392    pub struct OwnableInvalidOwner {
5393        #[allow(missing_docs)]
5394        pub owner: alloy::sol_types::private::Address,
5395    }
5396    #[allow(
5397        non_camel_case_types,
5398        non_snake_case,
5399        clippy::pub_underscore_fields,
5400        clippy::style
5401    )]
5402    const _: () = {
5403        use alloy::sol_types as alloy_sol_types;
5404        #[doc(hidden)]
5405        #[allow(dead_code)]
5406        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5407        #[doc(hidden)]
5408        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5409        #[cfg(test)]
5410        #[allow(dead_code, unreachable_patterns)]
5411        fn _type_assertion(
5412            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5413        ) {
5414            match _t {
5415                alloy_sol_types::private::AssertTypeEq::<
5416                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5417                >(_) => {}
5418            }
5419        }
5420        #[automatically_derived]
5421        #[doc(hidden)]
5422        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
5423            fn from(value: OwnableInvalidOwner) -> Self {
5424                (value.owner,)
5425            }
5426        }
5427        #[automatically_derived]
5428        #[doc(hidden)]
5429        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
5430            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5431                Self { owner: tuple.0 }
5432            }
5433        }
5434        #[automatically_derived]
5435        impl alloy_sol_types::SolError for OwnableInvalidOwner {
5436            type Parameters<'a> = UnderlyingSolTuple<'a>;
5437            type Token<'a> = <Self::Parameters<
5438                'a,
5439            > as alloy_sol_types::SolType>::Token<'a>;
5440            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
5441            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
5442            #[inline]
5443            fn new<'a>(
5444                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5445            ) -> Self {
5446                tuple.into()
5447            }
5448            #[inline]
5449            fn tokenize(&self) -> Self::Token<'_> {
5450                (
5451                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5452                        &self.owner,
5453                    ),
5454                )
5455            }
5456            #[inline]
5457            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5458                Self::abi_decode_raw_with_config(
5459                    data,
5460                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5461                )
5462            }
5463        }
5464    };
5465    #[derive(serde::Serialize, serde::Deserialize)]
5466    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5467    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
5468```solidity
5469error OwnableUnauthorizedAccount(address account);
5470```*/
5471    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5472    #[derive(Clone)]
5473    pub struct OwnableUnauthorizedAccount {
5474        #[allow(missing_docs)]
5475        pub account: alloy::sol_types::private::Address,
5476    }
5477    #[allow(
5478        non_camel_case_types,
5479        non_snake_case,
5480        clippy::pub_underscore_fields,
5481        clippy::style
5482    )]
5483    const _: () = {
5484        use alloy::sol_types as alloy_sol_types;
5485        #[doc(hidden)]
5486        #[allow(dead_code)]
5487        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5488        #[doc(hidden)]
5489        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5490        #[cfg(test)]
5491        #[allow(dead_code, unreachable_patterns)]
5492        fn _type_assertion(
5493            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5494        ) {
5495            match _t {
5496                alloy_sol_types::private::AssertTypeEq::<
5497                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5498                >(_) => {}
5499            }
5500        }
5501        #[automatically_derived]
5502        #[doc(hidden)]
5503        impl ::core::convert::From<OwnableUnauthorizedAccount>
5504        for UnderlyingRustTuple<'_> {
5505            fn from(value: OwnableUnauthorizedAccount) -> Self {
5506                (value.account,)
5507            }
5508        }
5509        #[automatically_derived]
5510        #[doc(hidden)]
5511        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5512        for OwnableUnauthorizedAccount {
5513            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5514                Self { account: tuple.0 }
5515            }
5516        }
5517        #[automatically_derived]
5518        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
5519            type Parameters<'a> = UnderlyingSolTuple<'a>;
5520            type Token<'a> = <Self::Parameters<
5521                'a,
5522            > as alloy_sol_types::SolType>::Token<'a>;
5523            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
5524            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
5525            #[inline]
5526            fn new<'a>(
5527                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5528            ) -> Self {
5529                tuple.into()
5530            }
5531            #[inline]
5532            fn tokenize(&self) -> Self::Token<'_> {
5533                (
5534                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5535                        &self.account,
5536                    ),
5537                )
5538            }
5539            #[inline]
5540            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5541                Self::abi_decode_raw_with_config(
5542                    data,
5543                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5544                )
5545            }
5546        }
5547    };
5548    #[derive(serde::Serialize, serde::Deserialize)]
5549    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5550    /**Custom error with signature `OwnershipCannotBeRenounced()` and selector `0x2fab92ca`.
5551```solidity
5552error OwnershipCannotBeRenounced();
5553```*/
5554    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5555    #[derive(Clone)]
5556    pub struct OwnershipCannotBeRenounced;
5557    #[allow(
5558        non_camel_case_types,
5559        non_snake_case,
5560        clippy::pub_underscore_fields,
5561        clippy::style
5562    )]
5563    const _: () = {
5564        use alloy::sol_types as alloy_sol_types;
5565        #[doc(hidden)]
5566        #[allow(dead_code)]
5567        type UnderlyingSolTuple<'a> = ();
5568        #[doc(hidden)]
5569        type UnderlyingRustTuple<'a> = ();
5570        #[cfg(test)]
5571        #[allow(dead_code, unreachable_patterns)]
5572        fn _type_assertion(
5573            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5574        ) {
5575            match _t {
5576                alloy_sol_types::private::AssertTypeEq::<
5577                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5578                >(_) => {}
5579            }
5580        }
5581        #[automatically_derived]
5582        #[doc(hidden)]
5583        impl ::core::convert::From<OwnershipCannotBeRenounced>
5584        for UnderlyingRustTuple<'_> {
5585            fn from(value: OwnershipCannotBeRenounced) -> Self {
5586                ()
5587            }
5588        }
5589        #[automatically_derived]
5590        #[doc(hidden)]
5591        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5592        for OwnershipCannotBeRenounced {
5593            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5594                Self
5595            }
5596        }
5597        #[automatically_derived]
5598        impl alloy_sol_types::SolError for OwnershipCannotBeRenounced {
5599            type Parameters<'a> = UnderlyingSolTuple<'a>;
5600            type Token<'a> = <Self::Parameters<
5601                'a,
5602            > as alloy_sol_types::SolType>::Token<'a>;
5603            const SIGNATURE: &'static str = "OwnershipCannotBeRenounced()";
5604            const SELECTOR: [u8; 4] = [47u8, 171u8, 146u8, 202u8];
5605            #[inline]
5606            fn new<'a>(
5607                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5608            ) -> Self {
5609                tuple.into()
5610            }
5611            #[inline]
5612            fn tokenize(&self) -> Self::Token<'_> {
5613                ()
5614            }
5615            #[inline]
5616            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5617                Self::abi_decode_raw_with_config(
5618                    data,
5619                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5620                )
5621            }
5622        }
5623    };
5624    #[derive(serde::Serialize, serde::Deserialize)]
5625    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5626    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
5627```solidity
5628error ProverNotPermissioned();
5629```*/
5630    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5631    #[derive(Clone)]
5632    pub struct ProverNotPermissioned;
5633    #[allow(
5634        non_camel_case_types,
5635        non_snake_case,
5636        clippy::pub_underscore_fields,
5637        clippy::style
5638    )]
5639    const _: () = {
5640        use alloy::sol_types as alloy_sol_types;
5641        #[doc(hidden)]
5642        #[allow(dead_code)]
5643        type UnderlyingSolTuple<'a> = ();
5644        #[doc(hidden)]
5645        type UnderlyingRustTuple<'a> = ();
5646        #[cfg(test)]
5647        #[allow(dead_code, unreachable_patterns)]
5648        fn _type_assertion(
5649            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5650        ) {
5651            match _t {
5652                alloy_sol_types::private::AssertTypeEq::<
5653                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5654                >(_) => {}
5655            }
5656        }
5657        #[automatically_derived]
5658        #[doc(hidden)]
5659        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
5660            fn from(value: ProverNotPermissioned) -> Self {
5661                ()
5662            }
5663        }
5664        #[automatically_derived]
5665        #[doc(hidden)]
5666        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
5667            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5668                Self
5669            }
5670        }
5671        #[automatically_derived]
5672        impl alloy_sol_types::SolError for ProverNotPermissioned {
5673            type Parameters<'a> = UnderlyingSolTuple<'a>;
5674            type Token<'a> = <Self::Parameters<
5675                'a,
5676            > as alloy_sol_types::SolType>::Token<'a>;
5677            const SIGNATURE: &'static str = "ProverNotPermissioned()";
5678            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
5679            #[inline]
5680            fn new<'a>(
5681                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5682            ) -> Self {
5683                tuple.into()
5684            }
5685            #[inline]
5686            fn tokenize(&self) -> Self::Token<'_> {
5687                ()
5688            }
5689            #[inline]
5690            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5691                Self::abi_decode_raw_with_config(
5692                    data,
5693                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5694                )
5695            }
5696        }
5697    };
5698    #[derive(serde::Serialize, serde::Deserialize)]
5699    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5700    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
5701```solidity
5702error UUPSUnauthorizedCallContext();
5703```*/
5704    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5705    #[derive(Clone)]
5706    pub struct UUPSUnauthorizedCallContext;
5707    #[allow(
5708        non_camel_case_types,
5709        non_snake_case,
5710        clippy::pub_underscore_fields,
5711        clippy::style
5712    )]
5713    const _: () = {
5714        use alloy::sol_types as alloy_sol_types;
5715        #[doc(hidden)]
5716        #[allow(dead_code)]
5717        type UnderlyingSolTuple<'a> = ();
5718        #[doc(hidden)]
5719        type UnderlyingRustTuple<'a> = ();
5720        #[cfg(test)]
5721        #[allow(dead_code, unreachable_patterns)]
5722        fn _type_assertion(
5723            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5724        ) {
5725            match _t {
5726                alloy_sol_types::private::AssertTypeEq::<
5727                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5728                >(_) => {}
5729            }
5730        }
5731        #[automatically_derived]
5732        #[doc(hidden)]
5733        impl ::core::convert::From<UUPSUnauthorizedCallContext>
5734        for UnderlyingRustTuple<'_> {
5735            fn from(value: UUPSUnauthorizedCallContext) -> Self {
5736                ()
5737            }
5738        }
5739        #[automatically_derived]
5740        #[doc(hidden)]
5741        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5742        for UUPSUnauthorizedCallContext {
5743            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5744                Self
5745            }
5746        }
5747        #[automatically_derived]
5748        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
5749            type Parameters<'a> = UnderlyingSolTuple<'a>;
5750            type Token<'a> = <Self::Parameters<
5751                'a,
5752            > as alloy_sol_types::SolType>::Token<'a>;
5753            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
5754            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
5755            #[inline]
5756            fn new<'a>(
5757                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5758            ) -> Self {
5759                tuple.into()
5760            }
5761            #[inline]
5762            fn tokenize(&self) -> Self::Token<'_> {
5763                ()
5764            }
5765            #[inline]
5766            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5767                Self::abi_decode_raw_with_config(
5768                    data,
5769                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5770                )
5771            }
5772        }
5773    };
5774    #[derive(serde::Serialize, serde::Deserialize)]
5775    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5776    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
5777```solidity
5778error UUPSUnsupportedProxiableUUID(bytes32 slot);
5779```*/
5780    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5781    #[derive(Clone)]
5782    pub struct UUPSUnsupportedProxiableUUID {
5783        #[allow(missing_docs)]
5784        pub slot: alloy::sol_types::private::FixedBytes<32>,
5785    }
5786    #[allow(
5787        non_camel_case_types,
5788        non_snake_case,
5789        clippy::pub_underscore_fields,
5790        clippy::style
5791    )]
5792    const _: () = {
5793        use alloy::sol_types as alloy_sol_types;
5794        #[doc(hidden)]
5795        #[allow(dead_code)]
5796        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5797        #[doc(hidden)]
5798        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5799        #[cfg(test)]
5800        #[allow(dead_code, unreachable_patterns)]
5801        fn _type_assertion(
5802            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5803        ) {
5804            match _t {
5805                alloy_sol_types::private::AssertTypeEq::<
5806                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5807                >(_) => {}
5808            }
5809        }
5810        #[automatically_derived]
5811        #[doc(hidden)]
5812        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
5813        for UnderlyingRustTuple<'_> {
5814            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
5815                (value.slot,)
5816            }
5817        }
5818        #[automatically_derived]
5819        #[doc(hidden)]
5820        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5821        for UUPSUnsupportedProxiableUUID {
5822            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5823                Self { slot: tuple.0 }
5824            }
5825        }
5826        #[automatically_derived]
5827        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
5828            type Parameters<'a> = UnderlyingSolTuple<'a>;
5829            type Token<'a> = <Self::Parameters<
5830                'a,
5831            > as alloy_sol_types::SolType>::Token<'a>;
5832            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
5833            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
5834            #[inline]
5835            fn new<'a>(
5836                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5837            ) -> Self {
5838                tuple.into()
5839            }
5840            #[inline]
5841            fn tokenize(&self) -> Self::Token<'_> {
5842                (
5843                    <alloy::sol_types::sol_data::FixedBytes<
5844                        32,
5845                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
5846                )
5847            }
5848            #[inline]
5849            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5850                Self::abi_decode_raw_with_config(
5851                    data,
5852                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5853                )
5854            }
5855        }
5856    };
5857    #[derive(serde::Serialize, serde::Deserialize)]
5858    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5859    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
5860```solidity
5861error WrongStakeTableUsed();
5862```*/
5863    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5864    #[derive(Clone)]
5865    pub struct WrongStakeTableUsed;
5866    #[allow(
5867        non_camel_case_types,
5868        non_snake_case,
5869        clippy::pub_underscore_fields,
5870        clippy::style
5871    )]
5872    const _: () = {
5873        use alloy::sol_types as alloy_sol_types;
5874        #[doc(hidden)]
5875        #[allow(dead_code)]
5876        type UnderlyingSolTuple<'a> = ();
5877        #[doc(hidden)]
5878        type UnderlyingRustTuple<'a> = ();
5879        #[cfg(test)]
5880        #[allow(dead_code, unreachable_patterns)]
5881        fn _type_assertion(
5882            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5883        ) {
5884            match _t {
5885                alloy_sol_types::private::AssertTypeEq::<
5886                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5887                >(_) => {}
5888            }
5889        }
5890        #[automatically_derived]
5891        #[doc(hidden)]
5892        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
5893            fn from(value: WrongStakeTableUsed) -> Self {
5894                ()
5895            }
5896        }
5897        #[automatically_derived]
5898        #[doc(hidden)]
5899        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
5900            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5901                Self
5902            }
5903        }
5904        #[automatically_derived]
5905        impl alloy_sol_types::SolError for WrongStakeTableUsed {
5906            type Parameters<'a> = UnderlyingSolTuple<'a>;
5907            type Token<'a> = <Self::Parameters<
5908                'a,
5909            > as alloy_sol_types::SolType>::Token<'a>;
5910            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
5911            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
5912            #[inline]
5913            fn new<'a>(
5914                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5915            ) -> Self {
5916                tuple.into()
5917            }
5918            #[inline]
5919            fn tokenize(&self) -> Self::Token<'_> {
5920                ()
5921            }
5922            #[inline]
5923            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5924                Self::abi_decode_raw_with_config(
5925                    data,
5926                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5927                )
5928            }
5929        }
5930    };
5931    #[derive(serde::Serialize, serde::Deserialize)]
5932    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5933    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
5934```solidity
5935event Initialized(uint64 version);
5936```*/
5937    #[allow(
5938        non_camel_case_types,
5939        non_snake_case,
5940        clippy::pub_underscore_fields,
5941        clippy::style
5942    )]
5943    #[derive(Clone)]
5944    pub struct Initialized {
5945        #[allow(missing_docs)]
5946        pub version: u64,
5947    }
5948    #[allow(
5949        non_camel_case_types,
5950        non_snake_case,
5951        clippy::pub_underscore_fields,
5952        clippy::style
5953    )]
5954    const _: () = {
5955        use alloy::sol_types as alloy_sol_types;
5956        #[automatically_derived]
5957        impl alloy_sol_types::SolEvent for Initialized {
5958            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
5959            type DataToken<'a> = <Self::DataTuple<
5960                'a,
5961            > as alloy_sol_types::SolType>::Token<'a>;
5962            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5963            const SIGNATURE: &'static str = "Initialized(uint64)";
5964            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5965                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
5966                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
5967                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
5968            ]);
5969            const ANONYMOUS: bool = false;
5970            #[allow(unused_variables)]
5971            #[inline]
5972            fn new(
5973                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5974                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5975            ) -> Self {
5976                Self { version: data.0 }
5977            }
5978            #[inline]
5979            fn check_signature(
5980                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5981            ) -> alloy_sol_types::Result<()> {
5982                if topics.0 != Self::SIGNATURE_HASH {
5983                    return Err(
5984                        alloy_sol_types::Error::invalid_event_signature_hash(
5985                            Self::SIGNATURE,
5986                            topics.0,
5987                            Self::SIGNATURE_HASH,
5988                        ),
5989                    );
5990                }
5991                Ok(())
5992            }
5993            #[inline]
5994            fn tokenize_body(&self) -> Self::DataToken<'_> {
5995                (
5996                    <alloy::sol_types::sol_data::Uint<
5997                        64,
5998                    > as alloy_sol_types::SolType>::tokenize(&self.version),
5999                )
6000            }
6001            #[inline]
6002            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6003                (Self::SIGNATURE_HASH.into(),)
6004            }
6005            #[inline]
6006            fn encode_topics_raw(
6007                &self,
6008                out: &mut [alloy_sol_types::abi::token::WordToken],
6009            ) -> alloy_sol_types::Result<()> {
6010                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6011                    return Err(alloy_sol_types::Error::Overrun);
6012                }
6013                out[0usize] = alloy_sol_types::abi::token::WordToken(
6014                    Self::SIGNATURE_HASH,
6015                );
6016                Ok(())
6017            }
6018        }
6019        #[automatically_derived]
6020        impl alloy_sol_types::private::IntoLogData for Initialized {
6021            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6022                From::from(self)
6023            }
6024            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6025                From::from(&self)
6026            }
6027        }
6028        #[automatically_derived]
6029        impl From<&Initialized> for alloy_sol_types::private::LogData {
6030            #[inline]
6031            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
6032                alloy_sol_types::SolEvent::encode_log_data(this)
6033            }
6034        }
6035    };
6036    #[derive(serde::Serialize, serde::Deserialize)]
6037    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6038    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
6039```solidity
6040event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
6041```*/
6042    #[allow(
6043        non_camel_case_types,
6044        non_snake_case,
6045        clippy::pub_underscore_fields,
6046        clippy::style
6047    )]
6048    #[derive(Clone)]
6049    pub struct NewState {
6050        #[allow(missing_docs)]
6051        pub viewNum: u64,
6052        #[allow(missing_docs)]
6053        pub blockHeight: u64,
6054        #[allow(missing_docs)]
6055        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6056    }
6057    #[allow(
6058        non_camel_case_types,
6059        non_snake_case,
6060        clippy::pub_underscore_fields,
6061        clippy::style
6062    )]
6063    const _: () = {
6064        use alloy::sol_types as alloy_sol_types;
6065        #[automatically_derived]
6066        impl alloy_sol_types::SolEvent for NewState {
6067            type DataTuple<'a> = (BN254::ScalarField,);
6068            type DataToken<'a> = <Self::DataTuple<
6069                'a,
6070            > as alloy_sol_types::SolType>::Token<'a>;
6071            type TopicList = (
6072                alloy_sol_types::sol_data::FixedBytes<32>,
6073                alloy::sol_types::sol_data::Uint<64>,
6074                alloy::sol_types::sol_data::Uint<64>,
6075            );
6076            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
6077            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6078                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
6079                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
6080                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
6081            ]);
6082            const ANONYMOUS: bool = false;
6083            #[allow(unused_variables)]
6084            #[inline]
6085            fn new(
6086                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6087                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6088            ) -> Self {
6089                Self {
6090                    viewNum: topics.1,
6091                    blockHeight: topics.2,
6092                    blockCommRoot: data.0,
6093                }
6094            }
6095            #[inline]
6096            fn check_signature(
6097                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6098            ) -> alloy_sol_types::Result<()> {
6099                if topics.0 != Self::SIGNATURE_HASH {
6100                    return Err(
6101                        alloy_sol_types::Error::invalid_event_signature_hash(
6102                            Self::SIGNATURE,
6103                            topics.0,
6104                            Self::SIGNATURE_HASH,
6105                        ),
6106                    );
6107                }
6108                Ok(())
6109            }
6110            #[inline]
6111            fn tokenize_body(&self) -> Self::DataToken<'_> {
6112                (
6113                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
6114                        &self.blockCommRoot,
6115                    ),
6116                )
6117            }
6118            #[inline]
6119            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6120                (
6121                    Self::SIGNATURE_HASH.into(),
6122                    self.viewNum.clone(),
6123                    self.blockHeight.clone(),
6124                )
6125            }
6126            #[inline]
6127            fn encode_topics_raw(
6128                &self,
6129                out: &mut [alloy_sol_types::abi::token::WordToken],
6130            ) -> alloy_sol_types::Result<()> {
6131                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6132                    return Err(alloy_sol_types::Error::Overrun);
6133                }
6134                out[0usize] = alloy_sol_types::abi::token::WordToken(
6135                    Self::SIGNATURE_HASH,
6136                );
6137                out[1usize] = <alloy::sol_types::sol_data::Uint<
6138                    64,
6139                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
6140                out[2usize] = <alloy::sol_types::sol_data::Uint<
6141                    64,
6142                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
6143                Ok(())
6144            }
6145        }
6146        #[automatically_derived]
6147        impl alloy_sol_types::private::IntoLogData for NewState {
6148            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6149                From::from(self)
6150            }
6151            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6152                From::from(&self)
6153            }
6154        }
6155        #[automatically_derived]
6156        impl From<&NewState> for alloy_sol_types::private::LogData {
6157            #[inline]
6158            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
6159                alloy_sol_types::SolEvent::encode_log_data(this)
6160            }
6161        }
6162    };
6163    #[derive(serde::Serialize, serde::Deserialize)]
6164    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6165    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
6166```solidity
6167event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
6168```*/
6169    #[allow(
6170        non_camel_case_types,
6171        non_snake_case,
6172        clippy::pub_underscore_fields,
6173        clippy::style
6174    )]
6175    #[derive(Clone)]
6176    pub struct OwnershipTransferred {
6177        #[allow(missing_docs)]
6178        pub previousOwner: alloy::sol_types::private::Address,
6179        #[allow(missing_docs)]
6180        pub newOwner: alloy::sol_types::private::Address,
6181    }
6182    #[allow(
6183        non_camel_case_types,
6184        non_snake_case,
6185        clippy::pub_underscore_fields,
6186        clippy::style
6187    )]
6188    const _: () = {
6189        use alloy::sol_types as alloy_sol_types;
6190        #[automatically_derived]
6191        impl alloy_sol_types::SolEvent for OwnershipTransferred {
6192            type DataTuple<'a> = ();
6193            type DataToken<'a> = <Self::DataTuple<
6194                'a,
6195            > as alloy_sol_types::SolType>::Token<'a>;
6196            type TopicList = (
6197                alloy_sol_types::sol_data::FixedBytes<32>,
6198                alloy::sol_types::sol_data::Address,
6199                alloy::sol_types::sol_data::Address,
6200            );
6201            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
6202            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6203                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
6204                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
6205                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
6206            ]);
6207            const ANONYMOUS: bool = false;
6208            #[allow(unused_variables)]
6209            #[inline]
6210            fn new(
6211                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6212                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6213            ) -> Self {
6214                Self {
6215                    previousOwner: topics.1,
6216                    newOwner: topics.2,
6217                }
6218            }
6219            #[inline]
6220            fn check_signature(
6221                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6222            ) -> alloy_sol_types::Result<()> {
6223                if topics.0 != Self::SIGNATURE_HASH {
6224                    return Err(
6225                        alloy_sol_types::Error::invalid_event_signature_hash(
6226                            Self::SIGNATURE,
6227                            topics.0,
6228                            Self::SIGNATURE_HASH,
6229                        ),
6230                    );
6231                }
6232                Ok(())
6233            }
6234            #[inline]
6235            fn tokenize_body(&self) -> Self::DataToken<'_> {
6236                ()
6237            }
6238            #[inline]
6239            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6240                (
6241                    Self::SIGNATURE_HASH.into(),
6242                    self.previousOwner.clone(),
6243                    self.newOwner.clone(),
6244                )
6245            }
6246            #[inline]
6247            fn encode_topics_raw(
6248                &self,
6249                out: &mut [alloy_sol_types::abi::token::WordToken],
6250            ) -> alloy_sol_types::Result<()> {
6251                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6252                    return Err(alloy_sol_types::Error::Overrun);
6253                }
6254                out[0usize] = alloy_sol_types::abi::token::WordToken(
6255                    Self::SIGNATURE_HASH,
6256                );
6257                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6258                    &self.previousOwner,
6259                );
6260                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6261                    &self.newOwner,
6262                );
6263                Ok(())
6264            }
6265        }
6266        #[automatically_derived]
6267        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
6268            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6269                From::from(self)
6270            }
6271            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6272                From::from(&self)
6273            }
6274        }
6275        #[automatically_derived]
6276        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
6277            #[inline]
6278            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
6279                alloy_sol_types::SolEvent::encode_log_data(this)
6280            }
6281        }
6282    };
6283    #[derive(serde::Serialize, serde::Deserialize)]
6284    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6285    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
6286```solidity
6287event PermissionedProverNotRequired();
6288```*/
6289    #[allow(
6290        non_camel_case_types,
6291        non_snake_case,
6292        clippy::pub_underscore_fields,
6293        clippy::style
6294    )]
6295    #[derive(Clone)]
6296    pub struct PermissionedProverNotRequired;
6297    #[allow(
6298        non_camel_case_types,
6299        non_snake_case,
6300        clippy::pub_underscore_fields,
6301        clippy::style
6302    )]
6303    const _: () = {
6304        use alloy::sol_types as alloy_sol_types;
6305        #[automatically_derived]
6306        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
6307            type DataTuple<'a> = ();
6308            type DataToken<'a> = <Self::DataTuple<
6309                'a,
6310            > as alloy_sol_types::SolType>::Token<'a>;
6311            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6312            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
6313            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6314                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
6315                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
6316                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
6317            ]);
6318            const ANONYMOUS: bool = false;
6319            #[allow(unused_variables)]
6320            #[inline]
6321            fn new(
6322                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6323                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6324            ) -> Self {
6325                Self {}
6326            }
6327            #[inline]
6328            fn check_signature(
6329                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6330            ) -> alloy_sol_types::Result<()> {
6331                if topics.0 != Self::SIGNATURE_HASH {
6332                    return Err(
6333                        alloy_sol_types::Error::invalid_event_signature_hash(
6334                            Self::SIGNATURE,
6335                            topics.0,
6336                            Self::SIGNATURE_HASH,
6337                        ),
6338                    );
6339                }
6340                Ok(())
6341            }
6342            #[inline]
6343            fn tokenize_body(&self) -> Self::DataToken<'_> {
6344                ()
6345            }
6346            #[inline]
6347            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6348                (Self::SIGNATURE_HASH.into(),)
6349            }
6350            #[inline]
6351            fn encode_topics_raw(
6352                &self,
6353                out: &mut [alloy_sol_types::abi::token::WordToken],
6354            ) -> alloy_sol_types::Result<()> {
6355                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6356                    return Err(alloy_sol_types::Error::Overrun);
6357                }
6358                out[0usize] = alloy_sol_types::abi::token::WordToken(
6359                    Self::SIGNATURE_HASH,
6360                );
6361                Ok(())
6362            }
6363        }
6364        #[automatically_derived]
6365        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
6366            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6367                From::from(self)
6368            }
6369            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6370                From::from(&self)
6371            }
6372        }
6373        #[automatically_derived]
6374        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
6375            #[inline]
6376            fn from(
6377                this: &PermissionedProverNotRequired,
6378            ) -> alloy_sol_types::private::LogData {
6379                alloy_sol_types::SolEvent::encode_log_data(this)
6380            }
6381        }
6382    };
6383    #[derive(serde::Serialize, serde::Deserialize)]
6384    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6385    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
6386```solidity
6387event PermissionedProverRequired(address permissionedProver);
6388```*/
6389    #[allow(
6390        non_camel_case_types,
6391        non_snake_case,
6392        clippy::pub_underscore_fields,
6393        clippy::style
6394    )]
6395    #[derive(Clone)]
6396    pub struct PermissionedProverRequired {
6397        #[allow(missing_docs)]
6398        pub permissionedProver: alloy::sol_types::private::Address,
6399    }
6400    #[allow(
6401        non_camel_case_types,
6402        non_snake_case,
6403        clippy::pub_underscore_fields,
6404        clippy::style
6405    )]
6406    const _: () = {
6407        use alloy::sol_types as alloy_sol_types;
6408        #[automatically_derived]
6409        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
6410            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6411            type DataToken<'a> = <Self::DataTuple<
6412                'a,
6413            > as alloy_sol_types::SolType>::Token<'a>;
6414            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6415            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
6416            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6417                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
6418                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
6419                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
6420            ]);
6421            const ANONYMOUS: bool = false;
6422            #[allow(unused_variables)]
6423            #[inline]
6424            fn new(
6425                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6426                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6427            ) -> Self {
6428                Self { permissionedProver: data.0 }
6429            }
6430            #[inline]
6431            fn check_signature(
6432                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6433            ) -> alloy_sol_types::Result<()> {
6434                if topics.0 != Self::SIGNATURE_HASH {
6435                    return Err(
6436                        alloy_sol_types::Error::invalid_event_signature_hash(
6437                            Self::SIGNATURE,
6438                            topics.0,
6439                            Self::SIGNATURE_HASH,
6440                        ),
6441                    );
6442                }
6443                Ok(())
6444            }
6445            #[inline]
6446            fn tokenize_body(&self) -> Self::DataToken<'_> {
6447                (
6448                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6449                        &self.permissionedProver,
6450                    ),
6451                )
6452            }
6453            #[inline]
6454            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6455                (Self::SIGNATURE_HASH.into(),)
6456            }
6457            #[inline]
6458            fn encode_topics_raw(
6459                &self,
6460                out: &mut [alloy_sol_types::abi::token::WordToken],
6461            ) -> alloy_sol_types::Result<()> {
6462                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6463                    return Err(alloy_sol_types::Error::Overrun);
6464                }
6465                out[0usize] = alloy_sol_types::abi::token::WordToken(
6466                    Self::SIGNATURE_HASH,
6467                );
6468                Ok(())
6469            }
6470        }
6471        #[automatically_derived]
6472        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
6473            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6474                From::from(self)
6475            }
6476            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6477                From::from(&self)
6478            }
6479        }
6480        #[automatically_derived]
6481        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
6482            #[inline]
6483            fn from(
6484                this: &PermissionedProverRequired,
6485            ) -> alloy_sol_types::private::LogData {
6486                alloy_sol_types::SolEvent::encode_log_data(this)
6487            }
6488        }
6489    };
6490    #[derive(serde::Serialize, serde::Deserialize)]
6491    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6492    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
6493```solidity
6494event Upgrade(address implementation);
6495```*/
6496    #[allow(
6497        non_camel_case_types,
6498        non_snake_case,
6499        clippy::pub_underscore_fields,
6500        clippy::style
6501    )]
6502    #[derive(Clone)]
6503    pub struct Upgrade {
6504        #[allow(missing_docs)]
6505        pub implementation: alloy::sol_types::private::Address,
6506    }
6507    #[allow(
6508        non_camel_case_types,
6509        non_snake_case,
6510        clippy::pub_underscore_fields,
6511        clippy::style
6512    )]
6513    const _: () = {
6514        use alloy::sol_types as alloy_sol_types;
6515        #[automatically_derived]
6516        impl alloy_sol_types::SolEvent for Upgrade {
6517            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6518            type DataToken<'a> = <Self::DataTuple<
6519                'a,
6520            > as alloy_sol_types::SolType>::Token<'a>;
6521            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6522            const SIGNATURE: &'static str = "Upgrade(address)";
6523            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6524                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
6525                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
6526                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
6527            ]);
6528            const ANONYMOUS: bool = false;
6529            #[allow(unused_variables)]
6530            #[inline]
6531            fn new(
6532                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6533                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6534            ) -> Self {
6535                Self { implementation: data.0 }
6536            }
6537            #[inline]
6538            fn check_signature(
6539                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6540            ) -> alloy_sol_types::Result<()> {
6541                if topics.0 != Self::SIGNATURE_HASH {
6542                    return Err(
6543                        alloy_sol_types::Error::invalid_event_signature_hash(
6544                            Self::SIGNATURE,
6545                            topics.0,
6546                            Self::SIGNATURE_HASH,
6547                        ),
6548                    );
6549                }
6550                Ok(())
6551            }
6552            #[inline]
6553            fn tokenize_body(&self) -> Self::DataToken<'_> {
6554                (
6555                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6556                        &self.implementation,
6557                    ),
6558                )
6559            }
6560            #[inline]
6561            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6562                (Self::SIGNATURE_HASH.into(),)
6563            }
6564            #[inline]
6565            fn encode_topics_raw(
6566                &self,
6567                out: &mut [alloy_sol_types::abi::token::WordToken],
6568            ) -> alloy_sol_types::Result<()> {
6569                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6570                    return Err(alloy_sol_types::Error::Overrun);
6571                }
6572                out[0usize] = alloy_sol_types::abi::token::WordToken(
6573                    Self::SIGNATURE_HASH,
6574                );
6575                Ok(())
6576            }
6577        }
6578        #[automatically_derived]
6579        impl alloy_sol_types::private::IntoLogData for Upgrade {
6580            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6581                From::from(self)
6582            }
6583            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6584                From::from(&self)
6585            }
6586        }
6587        #[automatically_derived]
6588        impl From<&Upgrade> for alloy_sol_types::private::LogData {
6589            #[inline]
6590            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
6591                alloy_sol_types::SolEvent::encode_log_data(this)
6592            }
6593        }
6594    };
6595    #[derive(serde::Serialize, serde::Deserialize)]
6596    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6597    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
6598```solidity
6599event Upgraded(address indexed implementation);
6600```*/
6601    #[allow(
6602        non_camel_case_types,
6603        non_snake_case,
6604        clippy::pub_underscore_fields,
6605        clippy::style
6606    )]
6607    #[derive(Clone)]
6608    pub struct Upgraded {
6609        #[allow(missing_docs)]
6610        pub implementation: alloy::sol_types::private::Address,
6611    }
6612    #[allow(
6613        non_camel_case_types,
6614        non_snake_case,
6615        clippy::pub_underscore_fields,
6616        clippy::style
6617    )]
6618    const _: () = {
6619        use alloy::sol_types as alloy_sol_types;
6620        #[automatically_derived]
6621        impl alloy_sol_types::SolEvent for Upgraded {
6622            type DataTuple<'a> = ();
6623            type DataToken<'a> = <Self::DataTuple<
6624                'a,
6625            > as alloy_sol_types::SolType>::Token<'a>;
6626            type TopicList = (
6627                alloy_sol_types::sol_data::FixedBytes<32>,
6628                alloy::sol_types::sol_data::Address,
6629            );
6630            const SIGNATURE: &'static str = "Upgraded(address)";
6631            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6632                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
6633                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
6634                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
6635            ]);
6636            const ANONYMOUS: bool = false;
6637            #[allow(unused_variables)]
6638            #[inline]
6639            fn new(
6640                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6641                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6642            ) -> Self {
6643                Self { implementation: topics.1 }
6644            }
6645            #[inline]
6646            fn check_signature(
6647                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6648            ) -> alloy_sol_types::Result<()> {
6649                if topics.0 != Self::SIGNATURE_HASH {
6650                    return Err(
6651                        alloy_sol_types::Error::invalid_event_signature_hash(
6652                            Self::SIGNATURE,
6653                            topics.0,
6654                            Self::SIGNATURE_HASH,
6655                        ),
6656                    );
6657                }
6658                Ok(())
6659            }
6660            #[inline]
6661            fn tokenize_body(&self) -> Self::DataToken<'_> {
6662                ()
6663            }
6664            #[inline]
6665            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6666                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
6667            }
6668            #[inline]
6669            fn encode_topics_raw(
6670                &self,
6671                out: &mut [alloy_sol_types::abi::token::WordToken],
6672            ) -> alloy_sol_types::Result<()> {
6673                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6674                    return Err(alloy_sol_types::Error::Overrun);
6675                }
6676                out[0usize] = alloy_sol_types::abi::token::WordToken(
6677                    Self::SIGNATURE_HASH,
6678                );
6679                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6680                    &self.implementation,
6681                );
6682                Ok(())
6683            }
6684        }
6685        #[automatically_derived]
6686        impl alloy_sol_types::private::IntoLogData for Upgraded {
6687            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6688                From::from(self)
6689            }
6690            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6691                From::from(&self)
6692            }
6693        }
6694        #[automatically_derived]
6695        impl From<&Upgraded> for alloy_sol_types::private::LogData {
6696            #[inline]
6697            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
6698                alloy_sol_types::SolEvent::encode_log_data(this)
6699            }
6700        }
6701    };
6702    /**Constructor`.
6703```solidity
6704constructor();
6705```*/
6706    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6707    #[derive(Clone)]
6708    pub struct constructorCall {}
6709    const _: () = {
6710        use alloy::sol_types as alloy_sol_types;
6711        {
6712            #[doc(hidden)]
6713            #[allow(dead_code)]
6714            type UnderlyingSolTuple<'a> = ();
6715            #[doc(hidden)]
6716            type UnderlyingRustTuple<'a> = ();
6717            #[cfg(test)]
6718            #[allow(dead_code, unreachable_patterns)]
6719            fn _type_assertion(
6720                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6721            ) {
6722                match _t {
6723                    alloy_sol_types::private::AssertTypeEq::<
6724                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6725                    >(_) => {}
6726                }
6727            }
6728            #[automatically_derived]
6729            #[doc(hidden)]
6730            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
6731                fn from(value: constructorCall) -> Self {
6732                    ()
6733                }
6734            }
6735            #[automatically_derived]
6736            #[doc(hidden)]
6737            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
6738                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6739                    Self {}
6740                }
6741            }
6742        }
6743        #[automatically_derived]
6744        impl alloy_sol_types::SolConstructor for constructorCall {
6745            type Parameters<'a> = ();
6746            type Token<'a> = <Self::Parameters<
6747                'a,
6748            > as alloy_sol_types::SolType>::Token<'a>;
6749            #[inline]
6750            fn new<'a>(
6751                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6752            ) -> Self {
6753                tuple.into()
6754            }
6755            #[inline]
6756            fn tokenize(&self) -> Self::Token<'_> {
6757                ()
6758            }
6759        }
6760    };
6761    #[derive(serde::Serialize, serde::Deserialize)]
6762    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6763    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
6764```solidity
6765function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
6766```*/
6767    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6768    #[derive(Clone)]
6769    pub struct UPGRADE_INTERFACE_VERSIONCall;
6770    #[derive(serde::Serialize, serde::Deserialize)]
6771    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6772    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
6773    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6774    #[derive(Clone)]
6775    pub struct UPGRADE_INTERFACE_VERSIONReturn {
6776        #[allow(missing_docs)]
6777        pub _0: alloy::sol_types::private::String,
6778    }
6779    #[allow(
6780        non_camel_case_types,
6781        non_snake_case,
6782        clippy::pub_underscore_fields,
6783        clippy::style
6784    )]
6785    const _: () = {
6786        use alloy::sol_types as alloy_sol_types;
6787        {
6788            #[doc(hidden)]
6789            #[allow(dead_code)]
6790            type UnderlyingSolTuple<'a> = ();
6791            #[doc(hidden)]
6792            type UnderlyingRustTuple<'a> = ();
6793            #[cfg(test)]
6794            #[allow(dead_code, unreachable_patterns)]
6795            fn _type_assertion(
6796                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6797            ) {
6798                match _t {
6799                    alloy_sol_types::private::AssertTypeEq::<
6800                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6801                    >(_) => {}
6802                }
6803            }
6804            #[automatically_derived]
6805            #[doc(hidden)]
6806            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
6807            for UnderlyingRustTuple<'_> {
6808                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
6809                    ()
6810                }
6811            }
6812            #[automatically_derived]
6813            #[doc(hidden)]
6814            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6815            for UPGRADE_INTERFACE_VERSIONCall {
6816                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6817                    Self
6818                }
6819            }
6820        }
6821        {
6822            #[doc(hidden)]
6823            #[allow(dead_code)]
6824            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
6825            #[doc(hidden)]
6826            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
6827            #[cfg(test)]
6828            #[allow(dead_code, unreachable_patterns)]
6829            fn _type_assertion(
6830                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6831            ) {
6832                match _t {
6833                    alloy_sol_types::private::AssertTypeEq::<
6834                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6835                    >(_) => {}
6836                }
6837            }
6838            #[automatically_derived]
6839            #[doc(hidden)]
6840            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
6841            for UnderlyingRustTuple<'_> {
6842                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
6843                    (value._0,)
6844                }
6845            }
6846            #[automatically_derived]
6847            #[doc(hidden)]
6848            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6849            for UPGRADE_INTERFACE_VERSIONReturn {
6850                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6851                    Self { _0: tuple.0 }
6852                }
6853            }
6854        }
6855        #[automatically_derived]
6856        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
6857            type Parameters<'a> = ();
6858            type Token<'a> = <Self::Parameters<
6859                'a,
6860            > as alloy_sol_types::SolType>::Token<'a>;
6861            type Return = alloy::sol_types::private::String;
6862            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
6863            type ReturnToken<'a> = <Self::ReturnTuple<
6864                'a,
6865            > as alloy_sol_types::SolType>::Token<'a>;
6866            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
6867            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
6868            #[inline]
6869            fn new<'a>(
6870                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6871            ) -> Self {
6872                tuple.into()
6873            }
6874            #[inline]
6875            fn tokenize(&self) -> Self::Token<'_> {
6876                ()
6877            }
6878            #[inline]
6879            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6880                (
6881                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
6882                        ret,
6883                    ),
6884                )
6885            }
6886            #[inline]
6887            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6888                <Self::ReturnTuple<
6889                    '_,
6890                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6891                    .map(|r| {
6892                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
6893                        r._0
6894                    })
6895            }
6896            #[inline]
6897            fn abi_decode_returns_with_config(
6898                data: &[u8],
6899                config: alloy_sol_types::abi::AbiDecoderConfig,
6900            ) -> alloy_sol_types::Result<Self::Return> {
6901                <Self::ReturnTuple<
6902                    '_,
6903                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
6904                        data,
6905                        config,
6906                    )
6907                    .map(|r| {
6908                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
6909                        r._0
6910                    })
6911            }
6912            #[inline]
6913            fn abi_decode_returns_validate(
6914                data: &[u8],
6915            ) -> alloy_sol_types::Result<Self::Return> {
6916                Self::abi_decode_returns_with_config(
6917                    data,
6918                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6919                )
6920            }
6921        }
6922    };
6923    #[derive(serde::Serialize, serde::Deserialize)]
6924    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6925    /**Function with signature `_getVk()` and selector `0x12173c2c`.
6926```solidity
6927function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
6928```*/
6929    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6930    #[derive(Clone)]
6931    pub struct _getVkCall;
6932    #[derive(serde::Serialize, serde::Deserialize)]
6933    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6934    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
6935    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6936    #[derive(Clone)]
6937    pub struct _getVkReturn {
6938        #[allow(missing_docs)]
6939        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
6940    }
6941    #[allow(
6942        non_camel_case_types,
6943        non_snake_case,
6944        clippy::pub_underscore_fields,
6945        clippy::style
6946    )]
6947    const _: () = {
6948        use alloy::sol_types as alloy_sol_types;
6949        {
6950            #[doc(hidden)]
6951            #[allow(dead_code)]
6952            type UnderlyingSolTuple<'a> = ();
6953            #[doc(hidden)]
6954            type UnderlyingRustTuple<'a> = ();
6955            #[cfg(test)]
6956            #[allow(dead_code, unreachable_patterns)]
6957            fn _type_assertion(
6958                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6959            ) {
6960                match _t {
6961                    alloy_sol_types::private::AssertTypeEq::<
6962                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6963                    >(_) => {}
6964                }
6965            }
6966            #[automatically_derived]
6967            #[doc(hidden)]
6968            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
6969                fn from(value: _getVkCall) -> Self {
6970                    ()
6971                }
6972            }
6973            #[automatically_derived]
6974            #[doc(hidden)]
6975            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
6976                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6977                    Self
6978                }
6979            }
6980        }
6981        {
6982            #[doc(hidden)]
6983            #[allow(dead_code)]
6984            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
6985            #[doc(hidden)]
6986            type UnderlyingRustTuple<'a> = (
6987                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
6988            );
6989            #[cfg(test)]
6990            #[allow(dead_code, unreachable_patterns)]
6991            fn _type_assertion(
6992                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6993            ) {
6994                match _t {
6995                    alloy_sol_types::private::AssertTypeEq::<
6996                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6997                    >(_) => {}
6998                }
6999            }
7000            #[automatically_derived]
7001            #[doc(hidden)]
7002            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
7003                fn from(value: _getVkReturn) -> Self {
7004                    (value.vk,)
7005                }
7006            }
7007            #[automatically_derived]
7008            #[doc(hidden)]
7009            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
7010                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7011                    Self { vk: tuple.0 }
7012                }
7013            }
7014        }
7015        #[automatically_derived]
7016        impl alloy_sol_types::SolCall for _getVkCall {
7017            type Parameters<'a> = ();
7018            type Token<'a> = <Self::Parameters<
7019                'a,
7020            > as alloy_sol_types::SolType>::Token<'a>;
7021            type Return = <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType;
7022            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7023            type ReturnToken<'a> = <Self::ReturnTuple<
7024                'a,
7025            > as alloy_sol_types::SolType>::Token<'a>;
7026            const SIGNATURE: &'static str = "_getVk()";
7027            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
7028            #[inline]
7029            fn new<'a>(
7030                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7031            ) -> Self {
7032                tuple.into()
7033            }
7034            #[inline]
7035            fn tokenize(&self) -> Self::Token<'_> {
7036                ()
7037            }
7038            #[inline]
7039            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7040                (
7041                    <IPlonkVerifier::VerifyingKey as alloy_sol_types::SolType>::tokenize(
7042                        ret,
7043                    ),
7044                )
7045            }
7046            #[inline]
7047            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7048                <Self::ReturnTuple<
7049                    '_,
7050                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7051                    .map(|r| {
7052                        let r: _getVkReturn = r.into();
7053                        r.vk
7054                    })
7055            }
7056            #[inline]
7057            fn abi_decode_returns_with_config(
7058                data: &[u8],
7059                config: alloy_sol_types::abi::AbiDecoderConfig,
7060            ) -> alloy_sol_types::Result<Self::Return> {
7061                <Self::ReturnTuple<
7062                    '_,
7063                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
7064                        data,
7065                        config,
7066                    )
7067                    .map(|r| {
7068                        let r: _getVkReturn = r.into();
7069                        r.vk
7070                    })
7071            }
7072            #[inline]
7073            fn abi_decode_returns_validate(
7074                data: &[u8],
7075            ) -> alloy_sol_types::Result<Self::Return> {
7076                Self::abi_decode_returns_with_config(
7077                    data,
7078                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7079                )
7080            }
7081        }
7082    };
7083    #[derive(serde::Serialize, serde::Deserialize)]
7084    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7085    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
7086```solidity
7087function currentBlockNumber() external view returns (uint256);
7088```*/
7089    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7090    #[derive(Clone)]
7091    pub struct currentBlockNumberCall;
7092    #[derive(serde::Serialize, serde::Deserialize)]
7093    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7094    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
7095    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7096    #[derive(Clone)]
7097    pub struct currentBlockNumberReturn {
7098        #[allow(missing_docs)]
7099        pub _0: alloy::sol_types::private::primitives::aliases::U256,
7100    }
7101    #[allow(
7102        non_camel_case_types,
7103        non_snake_case,
7104        clippy::pub_underscore_fields,
7105        clippy::style
7106    )]
7107    const _: () = {
7108        use alloy::sol_types as alloy_sol_types;
7109        {
7110            #[doc(hidden)]
7111            #[allow(dead_code)]
7112            type UnderlyingSolTuple<'a> = ();
7113            #[doc(hidden)]
7114            type UnderlyingRustTuple<'a> = ();
7115            #[cfg(test)]
7116            #[allow(dead_code, unreachable_patterns)]
7117            fn _type_assertion(
7118                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7119            ) {
7120                match _t {
7121                    alloy_sol_types::private::AssertTypeEq::<
7122                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7123                    >(_) => {}
7124                }
7125            }
7126            #[automatically_derived]
7127            #[doc(hidden)]
7128            impl ::core::convert::From<currentBlockNumberCall>
7129            for UnderlyingRustTuple<'_> {
7130                fn from(value: currentBlockNumberCall) -> Self {
7131                    ()
7132                }
7133            }
7134            #[automatically_derived]
7135            #[doc(hidden)]
7136            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7137            for currentBlockNumberCall {
7138                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7139                    Self
7140                }
7141            }
7142        }
7143        {
7144            #[doc(hidden)]
7145            #[allow(dead_code)]
7146            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7147            #[doc(hidden)]
7148            type UnderlyingRustTuple<'a> = (
7149                alloy::sol_types::private::primitives::aliases::U256,
7150            );
7151            #[cfg(test)]
7152            #[allow(dead_code, unreachable_patterns)]
7153            fn _type_assertion(
7154                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7155            ) {
7156                match _t {
7157                    alloy_sol_types::private::AssertTypeEq::<
7158                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7159                    >(_) => {}
7160                }
7161            }
7162            #[automatically_derived]
7163            #[doc(hidden)]
7164            impl ::core::convert::From<currentBlockNumberReturn>
7165            for UnderlyingRustTuple<'_> {
7166                fn from(value: currentBlockNumberReturn) -> Self {
7167                    (value._0,)
7168                }
7169            }
7170            #[automatically_derived]
7171            #[doc(hidden)]
7172            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7173            for currentBlockNumberReturn {
7174                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7175                    Self { _0: tuple.0 }
7176                }
7177            }
7178        }
7179        #[automatically_derived]
7180        impl alloy_sol_types::SolCall for currentBlockNumberCall {
7181            type Parameters<'a> = ();
7182            type Token<'a> = <Self::Parameters<
7183                'a,
7184            > as alloy_sol_types::SolType>::Token<'a>;
7185            type Return = alloy::sol_types::private::primitives::aliases::U256;
7186            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7187            type ReturnToken<'a> = <Self::ReturnTuple<
7188                'a,
7189            > as alloy_sol_types::SolType>::Token<'a>;
7190            const SIGNATURE: &'static str = "currentBlockNumber()";
7191            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
7192            #[inline]
7193            fn new<'a>(
7194                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7195            ) -> Self {
7196                tuple.into()
7197            }
7198            #[inline]
7199            fn tokenize(&self) -> Self::Token<'_> {
7200                ()
7201            }
7202            #[inline]
7203            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7204                (
7205                    <alloy::sol_types::sol_data::Uint<
7206                        256,
7207                    > as alloy_sol_types::SolType>::tokenize(ret),
7208                )
7209            }
7210            #[inline]
7211            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7212                <Self::ReturnTuple<
7213                    '_,
7214                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7215                    .map(|r| {
7216                        let r: currentBlockNumberReturn = r.into();
7217                        r._0
7218                    })
7219            }
7220            #[inline]
7221            fn abi_decode_returns_with_config(
7222                data: &[u8],
7223                config: alloy_sol_types::abi::AbiDecoderConfig,
7224            ) -> alloy_sol_types::Result<Self::Return> {
7225                <Self::ReturnTuple<
7226                    '_,
7227                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
7228                        data,
7229                        config,
7230                    )
7231                    .map(|r| {
7232                        let r: currentBlockNumberReturn = r.into();
7233                        r._0
7234                    })
7235            }
7236            #[inline]
7237            fn abi_decode_returns_validate(
7238                data: &[u8],
7239            ) -> alloy_sol_types::Result<Self::Return> {
7240                Self::abi_decode_returns_with_config(
7241                    data,
7242                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7243                )
7244            }
7245        }
7246    };
7247    #[derive(serde::Serialize, serde::Deserialize)]
7248    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7249    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
7250```solidity
7251function disablePermissionedProverMode() external;
7252```*/
7253    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7254    #[derive(Clone)]
7255    pub struct disablePermissionedProverModeCall;
7256    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
7257    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7258    #[derive(Clone)]
7259    pub struct disablePermissionedProverModeReturn {}
7260    #[allow(
7261        non_camel_case_types,
7262        non_snake_case,
7263        clippy::pub_underscore_fields,
7264        clippy::style
7265    )]
7266    const _: () = {
7267        use alloy::sol_types as alloy_sol_types;
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<disablePermissionedProverModeCall>
7288            for UnderlyingRustTuple<'_> {
7289                fn from(value: disablePermissionedProverModeCall) -> Self {
7290                    ()
7291                }
7292            }
7293            #[automatically_derived]
7294            #[doc(hidden)]
7295            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7296            for disablePermissionedProverModeCall {
7297                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7298                    Self
7299                }
7300            }
7301        }
7302        {
7303            #[doc(hidden)]
7304            #[allow(dead_code)]
7305            type UnderlyingSolTuple<'a> = ();
7306            #[doc(hidden)]
7307            type UnderlyingRustTuple<'a> = ();
7308            #[cfg(test)]
7309            #[allow(dead_code, unreachable_patterns)]
7310            fn _type_assertion(
7311                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7312            ) {
7313                match _t {
7314                    alloy_sol_types::private::AssertTypeEq::<
7315                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7316                    >(_) => {}
7317                }
7318            }
7319            #[automatically_derived]
7320            #[doc(hidden)]
7321            impl ::core::convert::From<disablePermissionedProverModeReturn>
7322            for UnderlyingRustTuple<'_> {
7323                fn from(value: disablePermissionedProverModeReturn) -> Self {
7324                    ()
7325                }
7326            }
7327            #[automatically_derived]
7328            #[doc(hidden)]
7329            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7330            for disablePermissionedProverModeReturn {
7331                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7332                    Self {}
7333                }
7334            }
7335        }
7336        impl disablePermissionedProverModeReturn {
7337            fn _tokenize(
7338                &self,
7339            ) -> <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::ReturnToken<
7340                '_,
7341            > {
7342                ()
7343            }
7344        }
7345        #[automatically_derived]
7346        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
7347            type Parameters<'a> = ();
7348            type Token<'a> = <Self::Parameters<
7349                'a,
7350            > as alloy_sol_types::SolType>::Token<'a>;
7351            type Return = disablePermissionedProverModeReturn;
7352            type ReturnTuple<'a> = ();
7353            type ReturnToken<'a> = <Self::ReturnTuple<
7354                'a,
7355            > as alloy_sol_types::SolType>::Token<'a>;
7356            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
7357            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
7358            #[inline]
7359            fn new<'a>(
7360                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7361            ) -> Self {
7362                tuple.into()
7363            }
7364            #[inline]
7365            fn tokenize(&self) -> Self::Token<'_> {
7366                ()
7367            }
7368            #[inline]
7369            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7370                disablePermissionedProverModeReturn::_tokenize(ret)
7371            }
7372            #[inline]
7373            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7374                <Self::ReturnTuple<
7375                    '_,
7376                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7377                    .map(Into::into)
7378            }
7379            #[inline]
7380            fn abi_decode_returns_with_config(
7381                data: &[u8],
7382                config: alloy_sol_types::abi::AbiDecoderConfig,
7383            ) -> alloy_sol_types::Result<Self::Return> {
7384                <Self::ReturnTuple<
7385                    '_,
7386                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
7387                        data,
7388                        config,
7389                    )
7390                    .map(Into::into)
7391            }
7392            #[inline]
7393            fn abi_decode_returns_validate(
7394                data: &[u8],
7395            ) -> alloy_sol_types::Result<Self::Return> {
7396                Self::abi_decode_returns_with_config(
7397                    data,
7398                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7399                )
7400            }
7401        }
7402    };
7403    #[derive(serde::Serialize, serde::Deserialize)]
7404    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7405    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
7406```solidity
7407function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
7408```*/
7409    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7410    #[derive(Clone)]
7411    pub struct finalizedStateCall;
7412    #[derive(serde::Serialize, serde::Deserialize)]
7413    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7414    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
7415    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7416    #[derive(Clone)]
7417    pub struct finalizedStateReturn {
7418        #[allow(missing_docs)]
7419        pub viewNum: u64,
7420        #[allow(missing_docs)]
7421        pub blockHeight: u64,
7422        #[allow(missing_docs)]
7423        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7424    }
7425    #[allow(
7426        non_camel_case_types,
7427        non_snake_case,
7428        clippy::pub_underscore_fields,
7429        clippy::style
7430    )]
7431    const _: () = {
7432        use alloy::sol_types as alloy_sol_types;
7433        {
7434            #[doc(hidden)]
7435            #[allow(dead_code)]
7436            type UnderlyingSolTuple<'a> = ();
7437            #[doc(hidden)]
7438            type UnderlyingRustTuple<'a> = ();
7439            #[cfg(test)]
7440            #[allow(dead_code, unreachable_patterns)]
7441            fn _type_assertion(
7442                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7443            ) {
7444                match _t {
7445                    alloy_sol_types::private::AssertTypeEq::<
7446                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7447                    >(_) => {}
7448                }
7449            }
7450            #[automatically_derived]
7451            #[doc(hidden)]
7452            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
7453                fn from(value: finalizedStateCall) -> Self {
7454                    ()
7455                }
7456            }
7457            #[automatically_derived]
7458            #[doc(hidden)]
7459            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
7460                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7461                    Self
7462                }
7463            }
7464        }
7465        {
7466            #[doc(hidden)]
7467            #[allow(dead_code)]
7468            type UnderlyingSolTuple<'a> = (
7469                alloy::sol_types::sol_data::Uint<64>,
7470                alloy::sol_types::sol_data::Uint<64>,
7471                BN254::ScalarField,
7472            );
7473            #[doc(hidden)]
7474            type UnderlyingRustTuple<'a> = (
7475                u64,
7476                u64,
7477                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7478            );
7479            #[cfg(test)]
7480            #[allow(dead_code, unreachable_patterns)]
7481            fn _type_assertion(
7482                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7483            ) {
7484                match _t {
7485                    alloy_sol_types::private::AssertTypeEq::<
7486                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7487                    >(_) => {}
7488                }
7489            }
7490            #[automatically_derived]
7491            #[doc(hidden)]
7492            impl ::core::convert::From<finalizedStateReturn>
7493            for UnderlyingRustTuple<'_> {
7494                fn from(value: finalizedStateReturn) -> Self {
7495                    (value.viewNum, value.blockHeight, value.blockCommRoot)
7496                }
7497            }
7498            #[automatically_derived]
7499            #[doc(hidden)]
7500            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7501            for finalizedStateReturn {
7502                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7503                    Self {
7504                        viewNum: tuple.0,
7505                        blockHeight: tuple.1,
7506                        blockCommRoot: tuple.2,
7507                    }
7508                }
7509            }
7510        }
7511        impl finalizedStateReturn {
7512            fn _tokenize(
7513                &self,
7514            ) -> <finalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7515                (
7516                    <alloy::sol_types::sol_data::Uint<
7517                        64,
7518                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
7519                    <alloy::sol_types::sol_data::Uint<
7520                        64,
7521                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
7522                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7523                        &self.blockCommRoot,
7524                    ),
7525                )
7526            }
7527        }
7528        #[automatically_derived]
7529        impl alloy_sol_types::SolCall for finalizedStateCall {
7530            type Parameters<'a> = ();
7531            type Token<'a> = <Self::Parameters<
7532                'a,
7533            > as alloy_sol_types::SolType>::Token<'a>;
7534            type Return = finalizedStateReturn;
7535            type ReturnTuple<'a> = (
7536                alloy::sol_types::sol_data::Uint<64>,
7537                alloy::sol_types::sol_data::Uint<64>,
7538                BN254::ScalarField,
7539            );
7540            type ReturnToken<'a> = <Self::ReturnTuple<
7541                'a,
7542            > as alloy_sol_types::SolType>::Token<'a>;
7543            const SIGNATURE: &'static str = "finalizedState()";
7544            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
7545            #[inline]
7546            fn new<'a>(
7547                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7548            ) -> Self {
7549                tuple.into()
7550            }
7551            #[inline]
7552            fn tokenize(&self) -> Self::Token<'_> {
7553                ()
7554            }
7555            #[inline]
7556            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7557                finalizedStateReturn::_tokenize(ret)
7558            }
7559            #[inline]
7560            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7561                <Self::ReturnTuple<
7562                    '_,
7563                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7564                    .map(Into::into)
7565            }
7566            #[inline]
7567            fn abi_decode_returns_with_config(
7568                data: &[u8],
7569                config: alloy_sol_types::abi::AbiDecoderConfig,
7570            ) -> alloy_sol_types::Result<Self::Return> {
7571                <Self::ReturnTuple<
7572                    '_,
7573                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
7574                        data,
7575                        config,
7576                    )
7577                    .map(Into::into)
7578            }
7579            #[inline]
7580            fn abi_decode_returns_validate(
7581                data: &[u8],
7582            ) -> alloy_sol_types::Result<Self::Return> {
7583                Self::abi_decode_returns_with_config(
7584                    data,
7585                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7586                )
7587            }
7588        }
7589    };
7590    #[derive(serde::Serialize, serde::Deserialize)]
7591    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7592    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
7593```solidity
7594function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
7595```*/
7596    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7597    #[derive(Clone)]
7598    pub struct genesisStakeTableStateCall;
7599    #[derive(serde::Serialize, serde::Deserialize)]
7600    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7601    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
7602    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7603    #[derive(Clone)]
7604    pub struct genesisStakeTableStateReturn {
7605        #[allow(missing_docs)]
7606        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
7607        #[allow(missing_docs)]
7608        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7609        #[allow(missing_docs)]
7610        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7611        #[allow(missing_docs)]
7612        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7613    }
7614    #[allow(
7615        non_camel_case_types,
7616        non_snake_case,
7617        clippy::pub_underscore_fields,
7618        clippy::style
7619    )]
7620    const _: () = {
7621        use alloy::sol_types as alloy_sol_types;
7622        {
7623            #[doc(hidden)]
7624            #[allow(dead_code)]
7625            type UnderlyingSolTuple<'a> = ();
7626            #[doc(hidden)]
7627            type UnderlyingRustTuple<'a> = ();
7628            #[cfg(test)]
7629            #[allow(dead_code, unreachable_patterns)]
7630            fn _type_assertion(
7631                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7632            ) {
7633                match _t {
7634                    alloy_sol_types::private::AssertTypeEq::<
7635                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7636                    >(_) => {}
7637                }
7638            }
7639            #[automatically_derived]
7640            #[doc(hidden)]
7641            impl ::core::convert::From<genesisStakeTableStateCall>
7642            for UnderlyingRustTuple<'_> {
7643                fn from(value: genesisStakeTableStateCall) -> Self {
7644                    ()
7645                }
7646            }
7647            #[automatically_derived]
7648            #[doc(hidden)]
7649            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7650            for genesisStakeTableStateCall {
7651                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7652                    Self
7653                }
7654            }
7655        }
7656        {
7657            #[doc(hidden)]
7658            #[allow(dead_code)]
7659            type UnderlyingSolTuple<'a> = (
7660                alloy::sol_types::sol_data::Uint<256>,
7661                BN254::ScalarField,
7662                BN254::ScalarField,
7663                BN254::ScalarField,
7664            );
7665            #[doc(hidden)]
7666            type UnderlyingRustTuple<'a> = (
7667                alloy::sol_types::private::primitives::aliases::U256,
7668                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7669                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7670                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7671            );
7672            #[cfg(test)]
7673            #[allow(dead_code, unreachable_patterns)]
7674            fn _type_assertion(
7675                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7676            ) {
7677                match _t {
7678                    alloy_sol_types::private::AssertTypeEq::<
7679                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7680                    >(_) => {}
7681                }
7682            }
7683            #[automatically_derived]
7684            #[doc(hidden)]
7685            impl ::core::convert::From<genesisStakeTableStateReturn>
7686            for UnderlyingRustTuple<'_> {
7687                fn from(value: genesisStakeTableStateReturn) -> Self {
7688                    (
7689                        value.threshold,
7690                        value.blsKeyComm,
7691                        value.schnorrKeyComm,
7692                        value.amountComm,
7693                    )
7694                }
7695            }
7696            #[automatically_derived]
7697            #[doc(hidden)]
7698            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7699            for genesisStakeTableStateReturn {
7700                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7701                    Self {
7702                        threshold: tuple.0,
7703                        blsKeyComm: tuple.1,
7704                        schnorrKeyComm: tuple.2,
7705                        amountComm: tuple.3,
7706                    }
7707                }
7708            }
7709        }
7710        impl genesisStakeTableStateReturn {
7711            fn _tokenize(
7712                &self,
7713            ) -> <genesisStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
7714                '_,
7715            > {
7716                (
7717                    <alloy::sol_types::sol_data::Uint<
7718                        256,
7719                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
7720                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7721                        &self.blsKeyComm,
7722                    ),
7723                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7724                        &self.schnorrKeyComm,
7725                    ),
7726                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7727                        &self.amountComm,
7728                    ),
7729                )
7730            }
7731        }
7732        #[automatically_derived]
7733        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
7734            type Parameters<'a> = ();
7735            type Token<'a> = <Self::Parameters<
7736                'a,
7737            > as alloy_sol_types::SolType>::Token<'a>;
7738            type Return = genesisStakeTableStateReturn;
7739            type ReturnTuple<'a> = (
7740                alloy::sol_types::sol_data::Uint<256>,
7741                BN254::ScalarField,
7742                BN254::ScalarField,
7743                BN254::ScalarField,
7744            );
7745            type ReturnToken<'a> = <Self::ReturnTuple<
7746                'a,
7747            > as alloy_sol_types::SolType>::Token<'a>;
7748            const SIGNATURE: &'static str = "genesisStakeTableState()";
7749            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
7750            #[inline]
7751            fn new<'a>(
7752                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7753            ) -> Self {
7754                tuple.into()
7755            }
7756            #[inline]
7757            fn tokenize(&self) -> Self::Token<'_> {
7758                ()
7759            }
7760            #[inline]
7761            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7762                genesisStakeTableStateReturn::_tokenize(ret)
7763            }
7764            #[inline]
7765            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7766                <Self::ReturnTuple<
7767                    '_,
7768                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7769                    .map(Into::into)
7770            }
7771            #[inline]
7772            fn abi_decode_returns_with_config(
7773                data: &[u8],
7774                config: alloy_sol_types::abi::AbiDecoderConfig,
7775            ) -> alloy_sol_types::Result<Self::Return> {
7776                <Self::ReturnTuple<
7777                    '_,
7778                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
7779                        data,
7780                        config,
7781                    )
7782                    .map(Into::into)
7783            }
7784            #[inline]
7785            fn abi_decode_returns_validate(
7786                data: &[u8],
7787            ) -> alloy_sol_types::Result<Self::Return> {
7788                Self::abi_decode_returns_with_config(
7789                    data,
7790                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7791                )
7792            }
7793        }
7794    };
7795    #[derive(serde::Serialize, serde::Deserialize)]
7796    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7797    /**Function with signature `genesisState()` and selector `0xd24d933d`.
7798```solidity
7799function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
7800```*/
7801    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7802    #[derive(Clone)]
7803    pub struct genesisStateCall;
7804    #[derive(serde::Serialize, serde::Deserialize)]
7805    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7806    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
7807    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7808    #[derive(Clone)]
7809    pub struct genesisStateReturn {
7810        #[allow(missing_docs)]
7811        pub viewNum: u64,
7812        #[allow(missing_docs)]
7813        pub blockHeight: u64,
7814        #[allow(missing_docs)]
7815        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7816    }
7817    #[allow(
7818        non_camel_case_types,
7819        non_snake_case,
7820        clippy::pub_underscore_fields,
7821        clippy::style
7822    )]
7823    const _: () = {
7824        use alloy::sol_types as alloy_sol_types;
7825        {
7826            #[doc(hidden)]
7827            #[allow(dead_code)]
7828            type UnderlyingSolTuple<'a> = ();
7829            #[doc(hidden)]
7830            type UnderlyingRustTuple<'a> = ();
7831            #[cfg(test)]
7832            #[allow(dead_code, unreachable_patterns)]
7833            fn _type_assertion(
7834                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7835            ) {
7836                match _t {
7837                    alloy_sol_types::private::AssertTypeEq::<
7838                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7839                    >(_) => {}
7840                }
7841            }
7842            #[automatically_derived]
7843            #[doc(hidden)]
7844            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
7845                fn from(value: genesisStateCall) -> Self {
7846                    ()
7847                }
7848            }
7849            #[automatically_derived]
7850            #[doc(hidden)]
7851            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
7852                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7853                    Self
7854                }
7855            }
7856        }
7857        {
7858            #[doc(hidden)]
7859            #[allow(dead_code)]
7860            type UnderlyingSolTuple<'a> = (
7861                alloy::sol_types::sol_data::Uint<64>,
7862                alloy::sol_types::sol_data::Uint<64>,
7863                BN254::ScalarField,
7864            );
7865            #[doc(hidden)]
7866            type UnderlyingRustTuple<'a> = (
7867                u64,
7868                u64,
7869                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7870            );
7871            #[cfg(test)]
7872            #[allow(dead_code, unreachable_patterns)]
7873            fn _type_assertion(
7874                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7875            ) {
7876                match _t {
7877                    alloy_sol_types::private::AssertTypeEq::<
7878                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7879                    >(_) => {}
7880                }
7881            }
7882            #[automatically_derived]
7883            #[doc(hidden)]
7884            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
7885                fn from(value: genesisStateReturn) -> Self {
7886                    (value.viewNum, value.blockHeight, value.blockCommRoot)
7887                }
7888            }
7889            #[automatically_derived]
7890            #[doc(hidden)]
7891            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
7892                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7893                    Self {
7894                        viewNum: tuple.0,
7895                        blockHeight: tuple.1,
7896                        blockCommRoot: tuple.2,
7897                    }
7898                }
7899            }
7900        }
7901        impl genesisStateReturn {
7902            fn _tokenize(
7903                &self,
7904            ) -> <genesisStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7905                (
7906                    <alloy::sol_types::sol_data::Uint<
7907                        64,
7908                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
7909                    <alloy::sol_types::sol_data::Uint<
7910                        64,
7911                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
7912                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7913                        &self.blockCommRoot,
7914                    ),
7915                )
7916            }
7917        }
7918        #[automatically_derived]
7919        impl alloy_sol_types::SolCall for genesisStateCall {
7920            type Parameters<'a> = ();
7921            type Token<'a> = <Self::Parameters<
7922                'a,
7923            > as alloy_sol_types::SolType>::Token<'a>;
7924            type Return = genesisStateReturn;
7925            type ReturnTuple<'a> = (
7926                alloy::sol_types::sol_data::Uint<64>,
7927                alloy::sol_types::sol_data::Uint<64>,
7928                BN254::ScalarField,
7929            );
7930            type ReturnToken<'a> = <Self::ReturnTuple<
7931                'a,
7932            > as alloy_sol_types::SolType>::Token<'a>;
7933            const SIGNATURE: &'static str = "genesisState()";
7934            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
7935            #[inline]
7936            fn new<'a>(
7937                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7938            ) -> Self {
7939                tuple.into()
7940            }
7941            #[inline]
7942            fn tokenize(&self) -> Self::Token<'_> {
7943                ()
7944            }
7945            #[inline]
7946            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7947                genesisStateReturn::_tokenize(ret)
7948            }
7949            #[inline]
7950            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7951                <Self::ReturnTuple<
7952                    '_,
7953                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7954                    .map(Into::into)
7955            }
7956            #[inline]
7957            fn abi_decode_returns_with_config(
7958                data: &[u8],
7959                config: alloy_sol_types::abi::AbiDecoderConfig,
7960            ) -> alloy_sol_types::Result<Self::Return> {
7961                <Self::ReturnTuple<
7962                    '_,
7963                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
7964                        data,
7965                        config,
7966                    )
7967                    .map(Into::into)
7968            }
7969            #[inline]
7970            fn abi_decode_returns_validate(
7971                data: &[u8],
7972            ) -> alloy_sol_types::Result<Self::Return> {
7973                Self::abi_decode_returns_with_config(
7974                    data,
7975                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7976                )
7977            }
7978        }
7979    };
7980    #[derive(serde::Serialize, serde::Deserialize)]
7981    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7982    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
7983```solidity
7984function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
7985```*/
7986    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7987    #[derive(Clone)]
7988    pub struct getHotShotCommitmentCall {
7989        #[allow(missing_docs)]
7990        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
7991    }
7992    #[derive(serde::Serialize, serde::Deserialize)]
7993    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7994    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
7995    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7996    #[derive(Clone)]
7997    pub struct getHotShotCommitmentReturn {
7998        #[allow(missing_docs)]
7999        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8000        #[allow(missing_docs)]
8001        pub hotshotBlockHeight: u64,
8002    }
8003    #[allow(
8004        non_camel_case_types,
8005        non_snake_case,
8006        clippy::pub_underscore_fields,
8007        clippy::style
8008    )]
8009    const _: () = {
8010        use alloy::sol_types as alloy_sol_types;
8011        {
8012            #[doc(hidden)]
8013            #[allow(dead_code)]
8014            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8015            #[doc(hidden)]
8016            type UnderlyingRustTuple<'a> = (
8017                alloy::sol_types::private::primitives::aliases::U256,
8018            );
8019            #[cfg(test)]
8020            #[allow(dead_code, unreachable_patterns)]
8021            fn _type_assertion(
8022                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8023            ) {
8024                match _t {
8025                    alloy_sol_types::private::AssertTypeEq::<
8026                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8027                    >(_) => {}
8028                }
8029            }
8030            #[automatically_derived]
8031            #[doc(hidden)]
8032            impl ::core::convert::From<getHotShotCommitmentCall>
8033            for UnderlyingRustTuple<'_> {
8034                fn from(value: getHotShotCommitmentCall) -> Self {
8035                    (value.hotShotBlockHeight,)
8036                }
8037            }
8038            #[automatically_derived]
8039            #[doc(hidden)]
8040            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8041            for getHotShotCommitmentCall {
8042                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8043                    Self {
8044                        hotShotBlockHeight: tuple.0,
8045                    }
8046                }
8047            }
8048        }
8049        {
8050            #[doc(hidden)]
8051            #[allow(dead_code)]
8052            type UnderlyingSolTuple<'a> = (
8053                BN254::ScalarField,
8054                alloy::sol_types::sol_data::Uint<64>,
8055            );
8056            #[doc(hidden)]
8057            type UnderlyingRustTuple<'a> = (
8058                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8059                u64,
8060            );
8061            #[cfg(test)]
8062            #[allow(dead_code, unreachable_patterns)]
8063            fn _type_assertion(
8064                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8065            ) {
8066                match _t {
8067                    alloy_sol_types::private::AssertTypeEq::<
8068                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8069                    >(_) => {}
8070                }
8071            }
8072            #[automatically_derived]
8073            #[doc(hidden)]
8074            impl ::core::convert::From<getHotShotCommitmentReturn>
8075            for UnderlyingRustTuple<'_> {
8076                fn from(value: getHotShotCommitmentReturn) -> Self {
8077                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
8078                }
8079            }
8080            #[automatically_derived]
8081            #[doc(hidden)]
8082            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8083            for getHotShotCommitmentReturn {
8084                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8085                    Self {
8086                        hotShotBlockCommRoot: tuple.0,
8087                        hotshotBlockHeight: tuple.1,
8088                    }
8089                }
8090            }
8091        }
8092        impl getHotShotCommitmentReturn {
8093            fn _tokenize(
8094                &self,
8095            ) -> <getHotShotCommitmentCall as alloy_sol_types::SolCall>::ReturnToken<
8096                '_,
8097            > {
8098                (
8099                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
8100                        &self.hotShotBlockCommRoot,
8101                    ),
8102                    <alloy::sol_types::sol_data::Uint<
8103                        64,
8104                    > as alloy_sol_types::SolType>::tokenize(&self.hotshotBlockHeight),
8105                )
8106            }
8107        }
8108        #[automatically_derived]
8109        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
8110            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8111            type Token<'a> = <Self::Parameters<
8112                'a,
8113            > as alloy_sol_types::SolType>::Token<'a>;
8114            type Return = getHotShotCommitmentReturn;
8115            type ReturnTuple<'a> = (
8116                BN254::ScalarField,
8117                alloy::sol_types::sol_data::Uint<64>,
8118            );
8119            type ReturnToken<'a> = <Self::ReturnTuple<
8120                'a,
8121            > as alloy_sol_types::SolType>::Token<'a>;
8122            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
8123            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
8124            #[inline]
8125            fn new<'a>(
8126                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8127            ) -> Self {
8128                tuple.into()
8129            }
8130            #[inline]
8131            fn tokenize(&self) -> Self::Token<'_> {
8132                (
8133                    <alloy::sol_types::sol_data::Uint<
8134                        256,
8135                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
8136                )
8137            }
8138            #[inline]
8139            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8140                getHotShotCommitmentReturn::_tokenize(ret)
8141            }
8142            #[inline]
8143            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8144                <Self::ReturnTuple<
8145                    '_,
8146                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8147                    .map(Into::into)
8148            }
8149            #[inline]
8150            fn abi_decode_returns_with_config(
8151                data: &[u8],
8152                config: alloy_sol_types::abi::AbiDecoderConfig,
8153            ) -> alloy_sol_types::Result<Self::Return> {
8154                <Self::ReturnTuple<
8155                    '_,
8156                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8157                        data,
8158                        config,
8159                    )
8160                    .map(Into::into)
8161            }
8162            #[inline]
8163            fn abi_decode_returns_validate(
8164                data: &[u8],
8165            ) -> alloy_sol_types::Result<Self::Return> {
8166                Self::abi_decode_returns_with_config(
8167                    data,
8168                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8169                )
8170            }
8171        }
8172    };
8173    #[derive(serde::Serialize, serde::Deserialize)]
8174    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8175    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
8176```solidity
8177function getStateHistoryCount() external view returns (uint256);
8178```*/
8179    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8180    #[derive(Clone)]
8181    pub struct getStateHistoryCountCall;
8182    #[derive(serde::Serialize, serde::Deserialize)]
8183    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8184    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
8185    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8186    #[derive(Clone)]
8187    pub struct getStateHistoryCountReturn {
8188        #[allow(missing_docs)]
8189        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8190    }
8191    #[allow(
8192        non_camel_case_types,
8193        non_snake_case,
8194        clippy::pub_underscore_fields,
8195        clippy::style
8196    )]
8197    const _: () = {
8198        use alloy::sol_types as alloy_sol_types;
8199        {
8200            #[doc(hidden)]
8201            #[allow(dead_code)]
8202            type UnderlyingSolTuple<'a> = ();
8203            #[doc(hidden)]
8204            type UnderlyingRustTuple<'a> = ();
8205            #[cfg(test)]
8206            #[allow(dead_code, unreachable_patterns)]
8207            fn _type_assertion(
8208                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8209            ) {
8210                match _t {
8211                    alloy_sol_types::private::AssertTypeEq::<
8212                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8213                    >(_) => {}
8214                }
8215            }
8216            #[automatically_derived]
8217            #[doc(hidden)]
8218            impl ::core::convert::From<getStateHistoryCountCall>
8219            for UnderlyingRustTuple<'_> {
8220                fn from(value: getStateHistoryCountCall) -> Self {
8221                    ()
8222                }
8223            }
8224            #[automatically_derived]
8225            #[doc(hidden)]
8226            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8227            for getStateHistoryCountCall {
8228                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8229                    Self
8230                }
8231            }
8232        }
8233        {
8234            #[doc(hidden)]
8235            #[allow(dead_code)]
8236            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8237            #[doc(hidden)]
8238            type UnderlyingRustTuple<'a> = (
8239                alloy::sol_types::private::primitives::aliases::U256,
8240            );
8241            #[cfg(test)]
8242            #[allow(dead_code, unreachable_patterns)]
8243            fn _type_assertion(
8244                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8245            ) {
8246                match _t {
8247                    alloy_sol_types::private::AssertTypeEq::<
8248                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8249                    >(_) => {}
8250                }
8251            }
8252            #[automatically_derived]
8253            #[doc(hidden)]
8254            impl ::core::convert::From<getStateHistoryCountReturn>
8255            for UnderlyingRustTuple<'_> {
8256                fn from(value: getStateHistoryCountReturn) -> Self {
8257                    (value._0,)
8258                }
8259            }
8260            #[automatically_derived]
8261            #[doc(hidden)]
8262            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8263            for getStateHistoryCountReturn {
8264                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8265                    Self { _0: tuple.0 }
8266                }
8267            }
8268        }
8269        #[automatically_derived]
8270        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
8271            type Parameters<'a> = ();
8272            type Token<'a> = <Self::Parameters<
8273                'a,
8274            > as alloy_sol_types::SolType>::Token<'a>;
8275            type Return = alloy::sol_types::private::primitives::aliases::U256;
8276            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8277            type ReturnToken<'a> = <Self::ReturnTuple<
8278                'a,
8279            > as alloy_sol_types::SolType>::Token<'a>;
8280            const SIGNATURE: &'static str = "getStateHistoryCount()";
8281            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
8282            #[inline]
8283            fn new<'a>(
8284                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8285            ) -> Self {
8286                tuple.into()
8287            }
8288            #[inline]
8289            fn tokenize(&self) -> Self::Token<'_> {
8290                ()
8291            }
8292            #[inline]
8293            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8294                (
8295                    <alloy::sol_types::sol_data::Uint<
8296                        256,
8297                    > as alloy_sol_types::SolType>::tokenize(ret),
8298                )
8299            }
8300            #[inline]
8301            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8302                <Self::ReturnTuple<
8303                    '_,
8304                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8305                    .map(|r| {
8306                        let r: getStateHistoryCountReturn = r.into();
8307                        r._0
8308                    })
8309            }
8310            #[inline]
8311            fn abi_decode_returns_with_config(
8312                data: &[u8],
8313                config: alloy_sol_types::abi::AbiDecoderConfig,
8314            ) -> alloy_sol_types::Result<Self::Return> {
8315                <Self::ReturnTuple<
8316                    '_,
8317                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8318                        data,
8319                        config,
8320                    )
8321                    .map(|r| {
8322                        let r: getStateHistoryCountReturn = r.into();
8323                        r._0
8324                    })
8325            }
8326            #[inline]
8327            fn abi_decode_returns_validate(
8328                data: &[u8],
8329            ) -> alloy_sol_types::Result<Self::Return> {
8330                Self::abi_decode_returns_with_config(
8331                    data,
8332                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8333                )
8334            }
8335        }
8336    };
8337    #[derive(serde::Serialize, serde::Deserialize)]
8338    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8339    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
8340```solidity
8341function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
8342```*/
8343    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8344    #[derive(Clone)]
8345    pub struct getVersionCall;
8346    #[derive(serde::Serialize, serde::Deserialize)]
8347    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8348    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
8349    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8350    #[derive(Clone)]
8351    pub struct getVersionReturn {
8352        #[allow(missing_docs)]
8353        pub majorVersion: u8,
8354        #[allow(missing_docs)]
8355        pub minorVersion: u8,
8356        #[allow(missing_docs)]
8357        pub patchVersion: u8,
8358    }
8359    #[allow(
8360        non_camel_case_types,
8361        non_snake_case,
8362        clippy::pub_underscore_fields,
8363        clippy::style
8364    )]
8365    const _: () = {
8366        use alloy::sol_types as alloy_sol_types;
8367        {
8368            #[doc(hidden)]
8369            #[allow(dead_code)]
8370            type UnderlyingSolTuple<'a> = ();
8371            #[doc(hidden)]
8372            type UnderlyingRustTuple<'a> = ();
8373            #[cfg(test)]
8374            #[allow(dead_code, unreachable_patterns)]
8375            fn _type_assertion(
8376                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8377            ) {
8378                match _t {
8379                    alloy_sol_types::private::AssertTypeEq::<
8380                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8381                    >(_) => {}
8382                }
8383            }
8384            #[automatically_derived]
8385            #[doc(hidden)]
8386            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
8387                fn from(value: getVersionCall) -> Self {
8388                    ()
8389                }
8390            }
8391            #[automatically_derived]
8392            #[doc(hidden)]
8393            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
8394                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8395                    Self
8396                }
8397            }
8398        }
8399        {
8400            #[doc(hidden)]
8401            #[allow(dead_code)]
8402            type UnderlyingSolTuple<'a> = (
8403                alloy::sol_types::sol_data::Uint<8>,
8404                alloy::sol_types::sol_data::Uint<8>,
8405                alloy::sol_types::sol_data::Uint<8>,
8406            );
8407            #[doc(hidden)]
8408            type UnderlyingRustTuple<'a> = (u8, u8, u8);
8409            #[cfg(test)]
8410            #[allow(dead_code, unreachable_patterns)]
8411            fn _type_assertion(
8412                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8413            ) {
8414                match _t {
8415                    alloy_sol_types::private::AssertTypeEq::<
8416                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8417                    >(_) => {}
8418                }
8419            }
8420            #[automatically_derived]
8421            #[doc(hidden)]
8422            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
8423                fn from(value: getVersionReturn) -> Self {
8424                    (value.majorVersion, value.minorVersion, value.patchVersion)
8425                }
8426            }
8427            #[automatically_derived]
8428            #[doc(hidden)]
8429            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
8430                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8431                    Self {
8432                        majorVersion: tuple.0,
8433                        minorVersion: tuple.1,
8434                        patchVersion: tuple.2,
8435                    }
8436                }
8437            }
8438        }
8439        impl getVersionReturn {
8440            fn _tokenize(
8441                &self,
8442            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8443                (
8444                    <alloy::sol_types::sol_data::Uint<
8445                        8,
8446                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
8447                    <alloy::sol_types::sol_data::Uint<
8448                        8,
8449                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
8450                    <alloy::sol_types::sol_data::Uint<
8451                        8,
8452                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
8453                )
8454            }
8455        }
8456        #[automatically_derived]
8457        impl alloy_sol_types::SolCall for getVersionCall {
8458            type Parameters<'a> = ();
8459            type Token<'a> = <Self::Parameters<
8460                'a,
8461            > as alloy_sol_types::SolType>::Token<'a>;
8462            type Return = getVersionReturn;
8463            type ReturnTuple<'a> = (
8464                alloy::sol_types::sol_data::Uint<8>,
8465                alloy::sol_types::sol_data::Uint<8>,
8466                alloy::sol_types::sol_data::Uint<8>,
8467            );
8468            type ReturnToken<'a> = <Self::ReturnTuple<
8469                'a,
8470            > as alloy_sol_types::SolType>::Token<'a>;
8471            const SIGNATURE: &'static str = "getVersion()";
8472            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
8473            #[inline]
8474            fn new<'a>(
8475                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8476            ) -> Self {
8477                tuple.into()
8478            }
8479            #[inline]
8480            fn tokenize(&self) -> Self::Token<'_> {
8481                ()
8482            }
8483            #[inline]
8484            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8485                getVersionReturn::_tokenize(ret)
8486            }
8487            #[inline]
8488            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8489                <Self::ReturnTuple<
8490                    '_,
8491                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8492                    .map(Into::into)
8493            }
8494            #[inline]
8495            fn abi_decode_returns_with_config(
8496                data: &[u8],
8497                config: alloy_sol_types::abi::AbiDecoderConfig,
8498            ) -> alloy_sol_types::Result<Self::Return> {
8499                <Self::ReturnTuple<
8500                    '_,
8501                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8502                        data,
8503                        config,
8504                    )
8505                    .map(Into::into)
8506            }
8507            #[inline]
8508            fn abi_decode_returns_validate(
8509                data: &[u8],
8510            ) -> alloy_sol_types::Result<Self::Return> {
8511                Self::abi_decode_returns_with_config(
8512                    data,
8513                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8514                )
8515            }
8516        }
8517    };
8518    #[derive(serde::Serialize, serde::Deserialize)]
8519    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8520    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
8521```solidity
8522function initialize(LightClientState memory _genesis, StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
8523```*/
8524    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8525    #[derive(Clone)]
8526    pub struct initializeCall {
8527        #[allow(missing_docs)]
8528        pub _genesis: <LightClientState as alloy::sol_types::SolType>::RustType,
8529        #[allow(missing_docs)]
8530        pub _genesisStakeTableState: <StakeTableState as alloy::sol_types::SolType>::RustType,
8531        #[allow(missing_docs)]
8532        pub _stateHistoryRetentionPeriod: u32,
8533        #[allow(missing_docs)]
8534        pub owner: alloy::sol_types::private::Address,
8535    }
8536    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
8537    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8538    #[derive(Clone)]
8539    pub struct initializeReturn {}
8540    #[allow(
8541        non_camel_case_types,
8542        non_snake_case,
8543        clippy::pub_underscore_fields,
8544        clippy::style
8545    )]
8546    const _: () = {
8547        use alloy::sol_types as alloy_sol_types;
8548        {
8549            #[doc(hidden)]
8550            #[allow(dead_code)]
8551            type UnderlyingSolTuple<'a> = (
8552                LightClientState,
8553                StakeTableState,
8554                alloy::sol_types::sol_data::Uint<32>,
8555                alloy::sol_types::sol_data::Address,
8556            );
8557            #[doc(hidden)]
8558            type UnderlyingRustTuple<'a> = (
8559                <LightClientState as alloy::sol_types::SolType>::RustType,
8560                <StakeTableState as alloy::sol_types::SolType>::RustType,
8561                u32,
8562                alloy::sol_types::private::Address,
8563            );
8564            #[cfg(test)]
8565            #[allow(dead_code, unreachable_patterns)]
8566            fn _type_assertion(
8567                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8568            ) {
8569                match _t {
8570                    alloy_sol_types::private::AssertTypeEq::<
8571                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8572                    >(_) => {}
8573                }
8574            }
8575            #[automatically_derived]
8576            #[doc(hidden)]
8577            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
8578                fn from(value: initializeCall) -> Self {
8579                    (
8580                        value._genesis,
8581                        value._genesisStakeTableState,
8582                        value._stateHistoryRetentionPeriod,
8583                        value.owner,
8584                    )
8585                }
8586            }
8587            #[automatically_derived]
8588            #[doc(hidden)]
8589            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
8590                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8591                    Self {
8592                        _genesis: tuple.0,
8593                        _genesisStakeTableState: tuple.1,
8594                        _stateHistoryRetentionPeriod: tuple.2,
8595                        owner: tuple.3,
8596                    }
8597                }
8598            }
8599        }
8600        {
8601            #[doc(hidden)]
8602            #[allow(dead_code)]
8603            type UnderlyingSolTuple<'a> = ();
8604            #[doc(hidden)]
8605            type UnderlyingRustTuple<'a> = ();
8606            #[cfg(test)]
8607            #[allow(dead_code, unreachable_patterns)]
8608            fn _type_assertion(
8609                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8610            ) {
8611                match _t {
8612                    alloy_sol_types::private::AssertTypeEq::<
8613                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8614                    >(_) => {}
8615                }
8616            }
8617            #[automatically_derived]
8618            #[doc(hidden)]
8619            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
8620                fn from(value: initializeReturn) -> Self {
8621                    ()
8622                }
8623            }
8624            #[automatically_derived]
8625            #[doc(hidden)]
8626            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
8627                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8628                    Self {}
8629                }
8630            }
8631        }
8632        impl initializeReturn {
8633            fn _tokenize(
8634                &self,
8635            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8636                ()
8637            }
8638        }
8639        #[automatically_derived]
8640        impl alloy_sol_types::SolCall for initializeCall {
8641            type Parameters<'a> = (
8642                LightClientState,
8643                StakeTableState,
8644                alloy::sol_types::sol_data::Uint<32>,
8645                alloy::sol_types::sol_data::Address,
8646            );
8647            type Token<'a> = <Self::Parameters<
8648                'a,
8649            > as alloy_sol_types::SolType>::Token<'a>;
8650            type Return = initializeReturn;
8651            type ReturnTuple<'a> = ();
8652            type ReturnToken<'a> = <Self::ReturnTuple<
8653                'a,
8654            > as alloy_sol_types::SolType>::Token<'a>;
8655            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
8656            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
8657            #[inline]
8658            fn new<'a>(
8659                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8660            ) -> Self {
8661                tuple.into()
8662            }
8663            #[inline]
8664            fn tokenize(&self) -> Self::Token<'_> {
8665                (
8666                    <LightClientState as alloy_sol_types::SolType>::tokenize(
8667                        &self._genesis,
8668                    ),
8669                    <StakeTableState as alloy_sol_types::SolType>::tokenize(
8670                        &self._genesisStakeTableState,
8671                    ),
8672                    <alloy::sol_types::sol_data::Uint<
8673                        32,
8674                    > as alloy_sol_types::SolType>::tokenize(
8675                        &self._stateHistoryRetentionPeriod,
8676                    ),
8677                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8678                        &self.owner,
8679                    ),
8680                )
8681            }
8682            #[inline]
8683            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8684                initializeReturn::_tokenize(ret)
8685            }
8686            #[inline]
8687            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8688                <Self::ReturnTuple<
8689                    '_,
8690                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8691                    .map(Into::into)
8692            }
8693            #[inline]
8694            fn abi_decode_returns_with_config(
8695                data: &[u8],
8696                config: alloy_sol_types::abi::AbiDecoderConfig,
8697            ) -> alloy_sol_types::Result<Self::Return> {
8698                <Self::ReturnTuple<
8699                    '_,
8700                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8701                        data,
8702                        config,
8703                    )
8704                    .map(Into::into)
8705            }
8706            #[inline]
8707            fn abi_decode_returns_validate(
8708                data: &[u8],
8709            ) -> alloy_sol_types::Result<Self::Return> {
8710                Self::abi_decode_returns_with_config(
8711                    data,
8712                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8713                )
8714            }
8715        }
8716    };
8717    #[derive(serde::Serialize, serde::Deserialize)]
8718    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8719    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
8720```solidity
8721function isPermissionedProverEnabled() external view returns (bool);
8722```*/
8723    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8724    #[derive(Clone)]
8725    pub struct isPermissionedProverEnabledCall;
8726    #[derive(serde::Serialize, serde::Deserialize)]
8727    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8728    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
8729    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8730    #[derive(Clone)]
8731    pub struct isPermissionedProverEnabledReturn {
8732        #[allow(missing_docs)]
8733        pub _0: bool,
8734    }
8735    #[allow(
8736        non_camel_case_types,
8737        non_snake_case,
8738        clippy::pub_underscore_fields,
8739        clippy::style
8740    )]
8741    const _: () = {
8742        use alloy::sol_types as alloy_sol_types;
8743        {
8744            #[doc(hidden)]
8745            #[allow(dead_code)]
8746            type UnderlyingSolTuple<'a> = ();
8747            #[doc(hidden)]
8748            type UnderlyingRustTuple<'a> = ();
8749            #[cfg(test)]
8750            #[allow(dead_code, unreachable_patterns)]
8751            fn _type_assertion(
8752                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8753            ) {
8754                match _t {
8755                    alloy_sol_types::private::AssertTypeEq::<
8756                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8757                    >(_) => {}
8758                }
8759            }
8760            #[automatically_derived]
8761            #[doc(hidden)]
8762            impl ::core::convert::From<isPermissionedProverEnabledCall>
8763            for UnderlyingRustTuple<'_> {
8764                fn from(value: isPermissionedProverEnabledCall) -> Self {
8765                    ()
8766                }
8767            }
8768            #[automatically_derived]
8769            #[doc(hidden)]
8770            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8771            for isPermissionedProverEnabledCall {
8772                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8773                    Self
8774                }
8775            }
8776        }
8777        {
8778            #[doc(hidden)]
8779            #[allow(dead_code)]
8780            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8781            #[doc(hidden)]
8782            type UnderlyingRustTuple<'a> = (bool,);
8783            #[cfg(test)]
8784            #[allow(dead_code, unreachable_patterns)]
8785            fn _type_assertion(
8786                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8787            ) {
8788                match _t {
8789                    alloy_sol_types::private::AssertTypeEq::<
8790                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8791                    >(_) => {}
8792                }
8793            }
8794            #[automatically_derived]
8795            #[doc(hidden)]
8796            impl ::core::convert::From<isPermissionedProverEnabledReturn>
8797            for UnderlyingRustTuple<'_> {
8798                fn from(value: isPermissionedProverEnabledReturn) -> Self {
8799                    (value._0,)
8800                }
8801            }
8802            #[automatically_derived]
8803            #[doc(hidden)]
8804            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8805            for isPermissionedProverEnabledReturn {
8806                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8807                    Self { _0: tuple.0 }
8808                }
8809            }
8810        }
8811        #[automatically_derived]
8812        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
8813            type Parameters<'a> = ();
8814            type Token<'a> = <Self::Parameters<
8815                'a,
8816            > as alloy_sol_types::SolType>::Token<'a>;
8817            type Return = bool;
8818            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8819            type ReturnToken<'a> = <Self::ReturnTuple<
8820                'a,
8821            > as alloy_sol_types::SolType>::Token<'a>;
8822            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
8823            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
8824            #[inline]
8825            fn new<'a>(
8826                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8827            ) -> Self {
8828                tuple.into()
8829            }
8830            #[inline]
8831            fn tokenize(&self) -> Self::Token<'_> {
8832                ()
8833            }
8834            #[inline]
8835            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8836                (
8837                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
8838                        ret,
8839                    ),
8840                )
8841            }
8842            #[inline]
8843            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8844                <Self::ReturnTuple<
8845                    '_,
8846                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8847                    .map(|r| {
8848                        let r: isPermissionedProverEnabledReturn = r.into();
8849                        r._0
8850                    })
8851            }
8852            #[inline]
8853            fn abi_decode_returns_with_config(
8854                data: &[u8],
8855                config: alloy_sol_types::abi::AbiDecoderConfig,
8856            ) -> alloy_sol_types::Result<Self::Return> {
8857                <Self::ReturnTuple<
8858                    '_,
8859                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8860                        data,
8861                        config,
8862                    )
8863                    .map(|r| {
8864                        let r: isPermissionedProverEnabledReturn = r.into();
8865                        r._0
8866                    })
8867            }
8868            #[inline]
8869            fn abi_decode_returns_validate(
8870                data: &[u8],
8871            ) -> alloy_sol_types::Result<Self::Return> {
8872                Self::abi_decode_returns_with_config(
8873                    data,
8874                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8875                )
8876            }
8877        }
8878    };
8879    #[derive(serde::Serialize, serde::Deserialize)]
8880    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8881    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
8882```solidity
8883function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
8884```*/
8885    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8886    #[derive(Clone)]
8887    pub struct lagOverEscapeHatchThresholdCall {
8888        #[allow(missing_docs)]
8889        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
8890        #[allow(missing_docs)]
8891        pub blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
8892    }
8893    #[derive(serde::Serialize, serde::Deserialize)]
8894    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8895    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
8896    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8897    #[derive(Clone)]
8898    pub struct lagOverEscapeHatchThresholdReturn {
8899        #[allow(missing_docs)]
8900        pub _0: bool,
8901    }
8902    #[allow(
8903        non_camel_case_types,
8904        non_snake_case,
8905        clippy::pub_underscore_fields,
8906        clippy::style
8907    )]
8908    const _: () = {
8909        use alloy::sol_types as alloy_sol_types;
8910        {
8911            #[doc(hidden)]
8912            #[allow(dead_code)]
8913            type UnderlyingSolTuple<'a> = (
8914                alloy::sol_types::sol_data::Uint<256>,
8915                alloy::sol_types::sol_data::Uint<256>,
8916            );
8917            #[doc(hidden)]
8918            type UnderlyingRustTuple<'a> = (
8919                alloy::sol_types::private::primitives::aliases::U256,
8920                alloy::sol_types::private::primitives::aliases::U256,
8921            );
8922            #[cfg(test)]
8923            #[allow(dead_code, unreachable_patterns)]
8924            fn _type_assertion(
8925                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8926            ) {
8927                match _t {
8928                    alloy_sol_types::private::AssertTypeEq::<
8929                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8930                    >(_) => {}
8931                }
8932            }
8933            #[automatically_derived]
8934            #[doc(hidden)]
8935            impl ::core::convert::From<lagOverEscapeHatchThresholdCall>
8936            for UnderlyingRustTuple<'_> {
8937                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
8938                    (value.blockNumber, value.blockThreshold)
8939                }
8940            }
8941            #[automatically_derived]
8942            #[doc(hidden)]
8943            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8944            for lagOverEscapeHatchThresholdCall {
8945                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8946                    Self {
8947                        blockNumber: tuple.0,
8948                        blockThreshold: tuple.1,
8949                    }
8950                }
8951            }
8952        }
8953        {
8954            #[doc(hidden)]
8955            #[allow(dead_code)]
8956            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8957            #[doc(hidden)]
8958            type UnderlyingRustTuple<'a> = (bool,);
8959            #[cfg(test)]
8960            #[allow(dead_code, unreachable_patterns)]
8961            fn _type_assertion(
8962                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8963            ) {
8964                match _t {
8965                    alloy_sol_types::private::AssertTypeEq::<
8966                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8967                    >(_) => {}
8968                }
8969            }
8970            #[automatically_derived]
8971            #[doc(hidden)]
8972            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn>
8973            for UnderlyingRustTuple<'_> {
8974                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
8975                    (value._0,)
8976                }
8977            }
8978            #[automatically_derived]
8979            #[doc(hidden)]
8980            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8981            for lagOverEscapeHatchThresholdReturn {
8982                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8983                    Self { _0: tuple.0 }
8984                }
8985            }
8986        }
8987        #[automatically_derived]
8988        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
8989            type Parameters<'a> = (
8990                alloy::sol_types::sol_data::Uint<256>,
8991                alloy::sol_types::sol_data::Uint<256>,
8992            );
8993            type Token<'a> = <Self::Parameters<
8994                'a,
8995            > as alloy_sol_types::SolType>::Token<'a>;
8996            type Return = bool;
8997            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8998            type ReturnToken<'a> = <Self::ReturnTuple<
8999                'a,
9000            > as alloy_sol_types::SolType>::Token<'a>;
9001            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
9002            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
9003            #[inline]
9004            fn new<'a>(
9005                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9006            ) -> Self {
9007                tuple.into()
9008            }
9009            #[inline]
9010            fn tokenize(&self) -> Self::Token<'_> {
9011                (
9012                    <alloy::sol_types::sol_data::Uint<
9013                        256,
9014                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
9015                    <alloy::sol_types::sol_data::Uint<
9016                        256,
9017                    > as alloy_sol_types::SolType>::tokenize(&self.blockThreshold),
9018                )
9019            }
9020            #[inline]
9021            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9022                (
9023                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
9024                        ret,
9025                    ),
9026                )
9027            }
9028            #[inline]
9029            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9030                <Self::ReturnTuple<
9031                    '_,
9032                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9033                    .map(|r| {
9034                        let r: lagOverEscapeHatchThresholdReturn = r.into();
9035                        r._0
9036                    })
9037            }
9038            #[inline]
9039            fn abi_decode_returns_with_config(
9040                data: &[u8],
9041                config: alloy_sol_types::abi::AbiDecoderConfig,
9042            ) -> alloy_sol_types::Result<Self::Return> {
9043                <Self::ReturnTuple<
9044                    '_,
9045                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9046                        data,
9047                        config,
9048                    )
9049                    .map(|r| {
9050                        let r: lagOverEscapeHatchThresholdReturn = r.into();
9051                        r._0
9052                    })
9053            }
9054            #[inline]
9055            fn abi_decode_returns_validate(
9056                data: &[u8],
9057            ) -> alloy_sol_types::Result<Self::Return> {
9058                Self::abi_decode_returns_with_config(
9059                    data,
9060                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9061                )
9062            }
9063        }
9064    };
9065    #[derive(serde::Serialize, serde::Deserialize)]
9066    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9067    /**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`.
9068```solidity
9069function newFinalizedState(LightClientState memory newState, IPlonkVerifier.PlonkProof memory proof) external;
9070```*/
9071    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9072    #[derive(Clone)]
9073    pub struct newFinalizedStateCall {
9074        #[allow(missing_docs)]
9075        pub newState: <LightClientState as alloy::sol_types::SolType>::RustType,
9076        #[allow(missing_docs)]
9077        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
9078    }
9079    ///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.
9080    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9081    #[derive(Clone)]
9082    pub struct newFinalizedStateReturn {}
9083    #[allow(
9084        non_camel_case_types,
9085        non_snake_case,
9086        clippy::pub_underscore_fields,
9087        clippy::style
9088    )]
9089    const _: () = {
9090        use alloy::sol_types as alloy_sol_types;
9091        {
9092            #[doc(hidden)]
9093            #[allow(dead_code)]
9094            type UnderlyingSolTuple<'a> = (LightClientState, IPlonkVerifier::PlonkProof);
9095            #[doc(hidden)]
9096            type UnderlyingRustTuple<'a> = (
9097                <LightClientState as alloy::sol_types::SolType>::RustType,
9098                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
9099            );
9100            #[cfg(test)]
9101            #[allow(dead_code, unreachable_patterns)]
9102            fn _type_assertion(
9103                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9104            ) {
9105                match _t {
9106                    alloy_sol_types::private::AssertTypeEq::<
9107                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9108                    >(_) => {}
9109                }
9110            }
9111            #[automatically_derived]
9112            #[doc(hidden)]
9113            impl ::core::convert::From<newFinalizedStateCall>
9114            for UnderlyingRustTuple<'_> {
9115                fn from(value: newFinalizedStateCall) -> Self {
9116                    (value.newState, value.proof)
9117                }
9118            }
9119            #[automatically_derived]
9120            #[doc(hidden)]
9121            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9122            for newFinalizedStateCall {
9123                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9124                    Self {
9125                        newState: tuple.0,
9126                        proof: tuple.1,
9127                    }
9128                }
9129            }
9130        }
9131        {
9132            #[doc(hidden)]
9133            #[allow(dead_code)]
9134            type UnderlyingSolTuple<'a> = ();
9135            #[doc(hidden)]
9136            type UnderlyingRustTuple<'a> = ();
9137            #[cfg(test)]
9138            #[allow(dead_code, unreachable_patterns)]
9139            fn _type_assertion(
9140                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9141            ) {
9142                match _t {
9143                    alloy_sol_types::private::AssertTypeEq::<
9144                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9145                    >(_) => {}
9146                }
9147            }
9148            #[automatically_derived]
9149            #[doc(hidden)]
9150            impl ::core::convert::From<newFinalizedStateReturn>
9151            for UnderlyingRustTuple<'_> {
9152                fn from(value: newFinalizedStateReturn) -> Self {
9153                    ()
9154                }
9155            }
9156            #[automatically_derived]
9157            #[doc(hidden)]
9158            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9159            for newFinalizedStateReturn {
9160                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9161                    Self {}
9162                }
9163            }
9164        }
9165        impl newFinalizedStateReturn {
9166            fn _tokenize(
9167                &self,
9168            ) -> <newFinalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9169                ()
9170            }
9171        }
9172        #[automatically_derived]
9173        impl alloy_sol_types::SolCall for newFinalizedStateCall {
9174            type Parameters<'a> = (LightClientState, IPlonkVerifier::PlonkProof);
9175            type Token<'a> = <Self::Parameters<
9176                'a,
9177            > as alloy_sol_types::SolType>::Token<'a>;
9178            type Return = newFinalizedStateReturn;
9179            type ReturnTuple<'a> = ();
9180            type ReturnToken<'a> = <Self::ReturnTuple<
9181                'a,
9182            > as alloy_sol_types::SolType>::Token<'a>;
9183            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))";
9184            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
9185            #[inline]
9186            fn new<'a>(
9187                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9188            ) -> Self {
9189                tuple.into()
9190            }
9191            #[inline]
9192            fn tokenize(&self) -> Self::Token<'_> {
9193                (
9194                    <LightClientState as alloy_sol_types::SolType>::tokenize(
9195                        &self.newState,
9196                    ),
9197                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
9198                        &self.proof,
9199                    ),
9200                )
9201            }
9202            #[inline]
9203            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9204                newFinalizedStateReturn::_tokenize(ret)
9205            }
9206            #[inline]
9207            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9208                <Self::ReturnTuple<
9209                    '_,
9210                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9211                    .map(Into::into)
9212            }
9213            #[inline]
9214            fn abi_decode_returns_with_config(
9215                data: &[u8],
9216                config: alloy_sol_types::abi::AbiDecoderConfig,
9217            ) -> alloy_sol_types::Result<Self::Return> {
9218                <Self::ReturnTuple<
9219                    '_,
9220                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9221                        data,
9222                        config,
9223                    )
9224                    .map(Into::into)
9225            }
9226            #[inline]
9227            fn abi_decode_returns_validate(
9228                data: &[u8],
9229            ) -> alloy_sol_types::Result<Self::Return> {
9230                Self::abi_decode_returns_with_config(
9231                    data,
9232                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9233                )
9234            }
9235        }
9236    };
9237    #[derive(serde::Serialize, serde::Deserialize)]
9238    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9239    /**Function with signature `owner()` and selector `0x8da5cb5b`.
9240```solidity
9241function owner() external view returns (address);
9242```*/
9243    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9244    #[derive(Clone)]
9245    pub struct ownerCall;
9246    #[derive(serde::Serialize, serde::Deserialize)]
9247    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9248    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
9249    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9250    #[derive(Clone)]
9251    pub struct ownerReturn {
9252        #[allow(missing_docs)]
9253        pub _0: alloy::sol_types::private::Address,
9254    }
9255    #[allow(
9256        non_camel_case_types,
9257        non_snake_case,
9258        clippy::pub_underscore_fields,
9259        clippy::style
9260    )]
9261    const _: () = {
9262        use alloy::sol_types as alloy_sol_types;
9263        {
9264            #[doc(hidden)]
9265            #[allow(dead_code)]
9266            type UnderlyingSolTuple<'a> = ();
9267            #[doc(hidden)]
9268            type UnderlyingRustTuple<'a> = ();
9269            #[cfg(test)]
9270            #[allow(dead_code, unreachable_patterns)]
9271            fn _type_assertion(
9272                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9273            ) {
9274                match _t {
9275                    alloy_sol_types::private::AssertTypeEq::<
9276                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9277                    >(_) => {}
9278                }
9279            }
9280            #[automatically_derived]
9281            #[doc(hidden)]
9282            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
9283                fn from(value: ownerCall) -> Self {
9284                    ()
9285                }
9286            }
9287            #[automatically_derived]
9288            #[doc(hidden)]
9289            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
9290                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9291                    Self
9292                }
9293            }
9294        }
9295        {
9296            #[doc(hidden)]
9297            #[allow(dead_code)]
9298            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9299            #[doc(hidden)]
9300            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9301            #[cfg(test)]
9302            #[allow(dead_code, unreachable_patterns)]
9303            fn _type_assertion(
9304                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9305            ) {
9306                match _t {
9307                    alloy_sol_types::private::AssertTypeEq::<
9308                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9309                    >(_) => {}
9310                }
9311            }
9312            #[automatically_derived]
9313            #[doc(hidden)]
9314            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
9315                fn from(value: ownerReturn) -> Self {
9316                    (value._0,)
9317                }
9318            }
9319            #[automatically_derived]
9320            #[doc(hidden)]
9321            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
9322                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9323                    Self { _0: tuple.0 }
9324                }
9325            }
9326        }
9327        #[automatically_derived]
9328        impl alloy_sol_types::SolCall for ownerCall {
9329            type Parameters<'a> = ();
9330            type Token<'a> = <Self::Parameters<
9331                'a,
9332            > as alloy_sol_types::SolType>::Token<'a>;
9333            type Return = alloy::sol_types::private::Address;
9334            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
9335            type ReturnToken<'a> = <Self::ReturnTuple<
9336                'a,
9337            > as alloy_sol_types::SolType>::Token<'a>;
9338            const SIGNATURE: &'static str = "owner()";
9339            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
9340            #[inline]
9341            fn new<'a>(
9342                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9343            ) -> Self {
9344                tuple.into()
9345            }
9346            #[inline]
9347            fn tokenize(&self) -> Self::Token<'_> {
9348                ()
9349            }
9350            #[inline]
9351            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9352                (
9353                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9354                        ret,
9355                    ),
9356                )
9357            }
9358            #[inline]
9359            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9360                <Self::ReturnTuple<
9361                    '_,
9362                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9363                    .map(|r| {
9364                        let r: ownerReturn = r.into();
9365                        r._0
9366                    })
9367            }
9368            #[inline]
9369            fn abi_decode_returns_with_config(
9370                data: &[u8],
9371                config: alloy_sol_types::abi::AbiDecoderConfig,
9372            ) -> alloy_sol_types::Result<Self::Return> {
9373                <Self::ReturnTuple<
9374                    '_,
9375                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9376                        data,
9377                        config,
9378                    )
9379                    .map(|r| {
9380                        let r: ownerReturn = r.into();
9381                        r._0
9382                    })
9383            }
9384            #[inline]
9385            fn abi_decode_returns_validate(
9386                data: &[u8],
9387            ) -> alloy_sol_types::Result<Self::Return> {
9388                Self::abi_decode_returns_with_config(
9389                    data,
9390                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9391                )
9392            }
9393        }
9394    };
9395    #[derive(serde::Serialize, serde::Deserialize)]
9396    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9397    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
9398```solidity
9399function permissionedProver() external view returns (address);
9400```*/
9401    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9402    #[derive(Clone)]
9403    pub struct permissionedProverCall;
9404    #[derive(serde::Serialize, serde::Deserialize)]
9405    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9406    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
9407    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9408    #[derive(Clone)]
9409    pub struct permissionedProverReturn {
9410        #[allow(missing_docs)]
9411        pub _0: alloy::sol_types::private::Address,
9412    }
9413    #[allow(
9414        non_camel_case_types,
9415        non_snake_case,
9416        clippy::pub_underscore_fields,
9417        clippy::style
9418    )]
9419    const _: () = {
9420        use alloy::sol_types as alloy_sol_types;
9421        {
9422            #[doc(hidden)]
9423            #[allow(dead_code)]
9424            type UnderlyingSolTuple<'a> = ();
9425            #[doc(hidden)]
9426            type UnderlyingRustTuple<'a> = ();
9427            #[cfg(test)]
9428            #[allow(dead_code, unreachable_patterns)]
9429            fn _type_assertion(
9430                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9431            ) {
9432                match _t {
9433                    alloy_sol_types::private::AssertTypeEq::<
9434                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9435                    >(_) => {}
9436                }
9437            }
9438            #[automatically_derived]
9439            #[doc(hidden)]
9440            impl ::core::convert::From<permissionedProverCall>
9441            for UnderlyingRustTuple<'_> {
9442                fn from(value: permissionedProverCall) -> Self {
9443                    ()
9444                }
9445            }
9446            #[automatically_derived]
9447            #[doc(hidden)]
9448            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9449            for permissionedProverCall {
9450                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9451                    Self
9452                }
9453            }
9454        }
9455        {
9456            #[doc(hidden)]
9457            #[allow(dead_code)]
9458            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9459            #[doc(hidden)]
9460            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9461            #[cfg(test)]
9462            #[allow(dead_code, unreachable_patterns)]
9463            fn _type_assertion(
9464                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9465            ) {
9466                match _t {
9467                    alloy_sol_types::private::AssertTypeEq::<
9468                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9469                    >(_) => {}
9470                }
9471            }
9472            #[automatically_derived]
9473            #[doc(hidden)]
9474            impl ::core::convert::From<permissionedProverReturn>
9475            for UnderlyingRustTuple<'_> {
9476                fn from(value: permissionedProverReturn) -> Self {
9477                    (value._0,)
9478                }
9479            }
9480            #[automatically_derived]
9481            #[doc(hidden)]
9482            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9483            for permissionedProverReturn {
9484                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9485                    Self { _0: tuple.0 }
9486                }
9487            }
9488        }
9489        #[automatically_derived]
9490        impl alloy_sol_types::SolCall for permissionedProverCall {
9491            type Parameters<'a> = ();
9492            type Token<'a> = <Self::Parameters<
9493                'a,
9494            > as alloy_sol_types::SolType>::Token<'a>;
9495            type Return = alloy::sol_types::private::Address;
9496            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
9497            type ReturnToken<'a> = <Self::ReturnTuple<
9498                'a,
9499            > as alloy_sol_types::SolType>::Token<'a>;
9500            const SIGNATURE: &'static str = "permissionedProver()";
9501            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
9502            #[inline]
9503            fn new<'a>(
9504                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9505            ) -> Self {
9506                tuple.into()
9507            }
9508            #[inline]
9509            fn tokenize(&self) -> Self::Token<'_> {
9510                ()
9511            }
9512            #[inline]
9513            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9514                (
9515                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9516                        ret,
9517                    ),
9518                )
9519            }
9520            #[inline]
9521            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9522                <Self::ReturnTuple<
9523                    '_,
9524                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9525                    .map(|r| {
9526                        let r: permissionedProverReturn = r.into();
9527                        r._0
9528                    })
9529            }
9530            #[inline]
9531            fn abi_decode_returns_with_config(
9532                data: &[u8],
9533                config: alloy_sol_types::abi::AbiDecoderConfig,
9534            ) -> alloy_sol_types::Result<Self::Return> {
9535                <Self::ReturnTuple<
9536                    '_,
9537                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9538                        data,
9539                        config,
9540                    )
9541                    .map(|r| {
9542                        let r: permissionedProverReturn = r.into();
9543                        r._0
9544                    })
9545            }
9546            #[inline]
9547            fn abi_decode_returns_validate(
9548                data: &[u8],
9549            ) -> alloy_sol_types::Result<Self::Return> {
9550                Self::abi_decode_returns_with_config(
9551                    data,
9552                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9553                )
9554            }
9555        }
9556    };
9557    #[derive(serde::Serialize, serde::Deserialize)]
9558    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9559    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
9560```solidity
9561function proxiableUUID() external view returns (bytes32);
9562```*/
9563    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9564    #[derive(Clone)]
9565    pub struct proxiableUUIDCall;
9566    #[derive(serde::Serialize, serde::Deserialize)]
9567    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9568    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
9569    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9570    #[derive(Clone)]
9571    pub struct proxiableUUIDReturn {
9572        #[allow(missing_docs)]
9573        pub _0: alloy::sol_types::private::FixedBytes<32>,
9574    }
9575    #[allow(
9576        non_camel_case_types,
9577        non_snake_case,
9578        clippy::pub_underscore_fields,
9579        clippy::style
9580    )]
9581    const _: () = {
9582        use alloy::sol_types as alloy_sol_types;
9583        {
9584            #[doc(hidden)]
9585            #[allow(dead_code)]
9586            type UnderlyingSolTuple<'a> = ();
9587            #[doc(hidden)]
9588            type UnderlyingRustTuple<'a> = ();
9589            #[cfg(test)]
9590            #[allow(dead_code, unreachable_patterns)]
9591            fn _type_assertion(
9592                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9593            ) {
9594                match _t {
9595                    alloy_sol_types::private::AssertTypeEq::<
9596                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9597                    >(_) => {}
9598                }
9599            }
9600            #[automatically_derived]
9601            #[doc(hidden)]
9602            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
9603                fn from(value: proxiableUUIDCall) -> Self {
9604                    ()
9605                }
9606            }
9607            #[automatically_derived]
9608            #[doc(hidden)]
9609            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
9610                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9611                    Self
9612                }
9613            }
9614        }
9615        {
9616            #[doc(hidden)]
9617            #[allow(dead_code)]
9618            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9619            #[doc(hidden)]
9620            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
9621            #[cfg(test)]
9622            #[allow(dead_code, unreachable_patterns)]
9623            fn _type_assertion(
9624                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9625            ) {
9626                match _t {
9627                    alloy_sol_types::private::AssertTypeEq::<
9628                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9629                    >(_) => {}
9630                }
9631            }
9632            #[automatically_derived]
9633            #[doc(hidden)]
9634            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
9635                fn from(value: proxiableUUIDReturn) -> Self {
9636                    (value._0,)
9637                }
9638            }
9639            #[automatically_derived]
9640            #[doc(hidden)]
9641            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
9642                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9643                    Self { _0: tuple.0 }
9644                }
9645            }
9646        }
9647        #[automatically_derived]
9648        impl alloy_sol_types::SolCall for proxiableUUIDCall {
9649            type Parameters<'a> = ();
9650            type Token<'a> = <Self::Parameters<
9651                'a,
9652            > as alloy_sol_types::SolType>::Token<'a>;
9653            type Return = alloy::sol_types::private::FixedBytes<32>;
9654            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9655            type ReturnToken<'a> = <Self::ReturnTuple<
9656                'a,
9657            > as alloy_sol_types::SolType>::Token<'a>;
9658            const SIGNATURE: &'static str = "proxiableUUID()";
9659            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
9660            #[inline]
9661            fn new<'a>(
9662                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9663            ) -> Self {
9664                tuple.into()
9665            }
9666            #[inline]
9667            fn tokenize(&self) -> Self::Token<'_> {
9668                ()
9669            }
9670            #[inline]
9671            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9672                (
9673                    <alloy::sol_types::sol_data::FixedBytes<
9674                        32,
9675                    > as alloy_sol_types::SolType>::tokenize(ret),
9676                )
9677            }
9678            #[inline]
9679            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9680                <Self::ReturnTuple<
9681                    '_,
9682                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9683                    .map(|r| {
9684                        let r: proxiableUUIDReturn = r.into();
9685                        r._0
9686                    })
9687            }
9688            #[inline]
9689            fn abi_decode_returns_with_config(
9690                data: &[u8],
9691                config: alloy_sol_types::abi::AbiDecoderConfig,
9692            ) -> alloy_sol_types::Result<Self::Return> {
9693                <Self::ReturnTuple<
9694                    '_,
9695                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9696                        data,
9697                        config,
9698                    )
9699                    .map(|r| {
9700                        let r: proxiableUUIDReturn = r.into();
9701                        r._0
9702                    })
9703            }
9704            #[inline]
9705            fn abi_decode_returns_validate(
9706                data: &[u8],
9707            ) -> alloy_sol_types::Result<Self::Return> {
9708                Self::abi_decode_returns_with_config(
9709                    data,
9710                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9711                )
9712            }
9713        }
9714    };
9715    #[derive(serde::Serialize, serde::Deserialize)]
9716    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9717    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
9718```solidity
9719function renounceOwnership() external;
9720```*/
9721    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9722    #[derive(Clone)]
9723    pub struct renounceOwnershipCall;
9724    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
9725    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9726    #[derive(Clone)]
9727    pub struct renounceOwnershipReturn {}
9728    #[allow(
9729        non_camel_case_types,
9730        non_snake_case,
9731        clippy::pub_underscore_fields,
9732        clippy::style
9733    )]
9734    const _: () = {
9735        use alloy::sol_types as alloy_sol_types;
9736        {
9737            #[doc(hidden)]
9738            #[allow(dead_code)]
9739            type UnderlyingSolTuple<'a> = ();
9740            #[doc(hidden)]
9741            type UnderlyingRustTuple<'a> = ();
9742            #[cfg(test)]
9743            #[allow(dead_code, unreachable_patterns)]
9744            fn _type_assertion(
9745                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9746            ) {
9747                match _t {
9748                    alloy_sol_types::private::AssertTypeEq::<
9749                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9750                    >(_) => {}
9751                }
9752            }
9753            #[automatically_derived]
9754            #[doc(hidden)]
9755            impl ::core::convert::From<renounceOwnershipCall>
9756            for UnderlyingRustTuple<'_> {
9757                fn from(value: renounceOwnershipCall) -> Self {
9758                    ()
9759                }
9760            }
9761            #[automatically_derived]
9762            #[doc(hidden)]
9763            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9764            for renounceOwnershipCall {
9765                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9766                    Self
9767                }
9768            }
9769        }
9770        {
9771            #[doc(hidden)]
9772            #[allow(dead_code)]
9773            type UnderlyingSolTuple<'a> = ();
9774            #[doc(hidden)]
9775            type UnderlyingRustTuple<'a> = ();
9776            #[cfg(test)]
9777            #[allow(dead_code, unreachable_patterns)]
9778            fn _type_assertion(
9779                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9780            ) {
9781                match _t {
9782                    alloy_sol_types::private::AssertTypeEq::<
9783                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9784                    >(_) => {}
9785                }
9786            }
9787            #[automatically_derived]
9788            #[doc(hidden)]
9789            impl ::core::convert::From<renounceOwnershipReturn>
9790            for UnderlyingRustTuple<'_> {
9791                fn from(value: renounceOwnershipReturn) -> Self {
9792                    ()
9793                }
9794            }
9795            #[automatically_derived]
9796            #[doc(hidden)]
9797            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9798            for renounceOwnershipReturn {
9799                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9800                    Self {}
9801                }
9802            }
9803        }
9804        impl renounceOwnershipReturn {
9805            fn _tokenize(
9806                &self,
9807            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9808                ()
9809            }
9810        }
9811        #[automatically_derived]
9812        impl alloy_sol_types::SolCall for renounceOwnershipCall {
9813            type Parameters<'a> = ();
9814            type Token<'a> = <Self::Parameters<
9815                'a,
9816            > as alloy_sol_types::SolType>::Token<'a>;
9817            type Return = renounceOwnershipReturn;
9818            type ReturnTuple<'a> = ();
9819            type ReturnToken<'a> = <Self::ReturnTuple<
9820                'a,
9821            > as alloy_sol_types::SolType>::Token<'a>;
9822            const SIGNATURE: &'static str = "renounceOwnership()";
9823            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
9824            #[inline]
9825            fn new<'a>(
9826                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9827            ) -> Self {
9828                tuple.into()
9829            }
9830            #[inline]
9831            fn tokenize(&self) -> Self::Token<'_> {
9832                ()
9833            }
9834            #[inline]
9835            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9836                renounceOwnershipReturn::_tokenize(ret)
9837            }
9838            #[inline]
9839            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9840                <Self::ReturnTuple<
9841                    '_,
9842                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9843                    .map(Into::into)
9844            }
9845            #[inline]
9846            fn abi_decode_returns_with_config(
9847                data: &[u8],
9848                config: alloy_sol_types::abi::AbiDecoderConfig,
9849            ) -> alloy_sol_types::Result<Self::Return> {
9850                <Self::ReturnTuple<
9851                    '_,
9852                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9853                        data,
9854                        config,
9855                    )
9856                    .map(Into::into)
9857            }
9858            #[inline]
9859            fn abi_decode_returns_validate(
9860                data: &[u8],
9861            ) -> alloy_sol_types::Result<Self::Return> {
9862                Self::abi_decode_returns_with_config(
9863                    data,
9864                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9865                )
9866            }
9867        }
9868    };
9869    #[derive(serde::Serialize, serde::Deserialize)]
9870    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9871    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
9872```solidity
9873function setPermissionedProver(address prover) external;
9874```*/
9875    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9876    #[derive(Clone)]
9877    pub struct setPermissionedProverCall {
9878        #[allow(missing_docs)]
9879        pub prover: alloy::sol_types::private::Address,
9880    }
9881    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
9882    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9883    #[derive(Clone)]
9884    pub struct setPermissionedProverReturn {}
9885    #[allow(
9886        non_camel_case_types,
9887        non_snake_case,
9888        clippy::pub_underscore_fields,
9889        clippy::style
9890    )]
9891    const _: () = {
9892        use alloy::sol_types as alloy_sol_types;
9893        {
9894            #[doc(hidden)]
9895            #[allow(dead_code)]
9896            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9897            #[doc(hidden)]
9898            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9899            #[cfg(test)]
9900            #[allow(dead_code, unreachable_patterns)]
9901            fn _type_assertion(
9902                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9903            ) {
9904                match _t {
9905                    alloy_sol_types::private::AssertTypeEq::<
9906                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9907                    >(_) => {}
9908                }
9909            }
9910            #[automatically_derived]
9911            #[doc(hidden)]
9912            impl ::core::convert::From<setPermissionedProverCall>
9913            for UnderlyingRustTuple<'_> {
9914                fn from(value: setPermissionedProverCall) -> Self {
9915                    (value.prover,)
9916                }
9917            }
9918            #[automatically_derived]
9919            #[doc(hidden)]
9920            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9921            for setPermissionedProverCall {
9922                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9923                    Self { prover: tuple.0 }
9924                }
9925            }
9926        }
9927        {
9928            #[doc(hidden)]
9929            #[allow(dead_code)]
9930            type UnderlyingSolTuple<'a> = ();
9931            #[doc(hidden)]
9932            type UnderlyingRustTuple<'a> = ();
9933            #[cfg(test)]
9934            #[allow(dead_code, unreachable_patterns)]
9935            fn _type_assertion(
9936                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9937            ) {
9938                match _t {
9939                    alloy_sol_types::private::AssertTypeEq::<
9940                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9941                    >(_) => {}
9942                }
9943            }
9944            #[automatically_derived]
9945            #[doc(hidden)]
9946            impl ::core::convert::From<setPermissionedProverReturn>
9947            for UnderlyingRustTuple<'_> {
9948                fn from(value: setPermissionedProverReturn) -> Self {
9949                    ()
9950                }
9951            }
9952            #[automatically_derived]
9953            #[doc(hidden)]
9954            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9955            for setPermissionedProverReturn {
9956                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9957                    Self {}
9958                }
9959            }
9960        }
9961        impl setPermissionedProverReturn {
9962            fn _tokenize(
9963                &self,
9964            ) -> <setPermissionedProverCall as alloy_sol_types::SolCall>::ReturnToken<
9965                '_,
9966            > {
9967                ()
9968            }
9969        }
9970        #[automatically_derived]
9971        impl alloy_sol_types::SolCall for setPermissionedProverCall {
9972            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
9973            type Token<'a> = <Self::Parameters<
9974                'a,
9975            > as alloy_sol_types::SolType>::Token<'a>;
9976            type Return = setPermissionedProverReturn;
9977            type ReturnTuple<'a> = ();
9978            type ReturnToken<'a> = <Self::ReturnTuple<
9979                'a,
9980            > as alloy_sol_types::SolType>::Token<'a>;
9981            const SIGNATURE: &'static str = "setPermissionedProver(address)";
9982            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
9983            #[inline]
9984            fn new<'a>(
9985                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9986            ) -> Self {
9987                tuple.into()
9988            }
9989            #[inline]
9990            fn tokenize(&self) -> Self::Token<'_> {
9991                (
9992                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9993                        &self.prover,
9994                    ),
9995                )
9996            }
9997            #[inline]
9998            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9999                setPermissionedProverReturn::_tokenize(ret)
10000            }
10001            #[inline]
10002            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10003                <Self::ReturnTuple<
10004                    '_,
10005                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10006                    .map(Into::into)
10007            }
10008            #[inline]
10009            fn abi_decode_returns_with_config(
10010                data: &[u8],
10011                config: alloy_sol_types::abi::AbiDecoderConfig,
10012            ) -> alloy_sol_types::Result<Self::Return> {
10013                <Self::ReturnTuple<
10014                    '_,
10015                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
10016                        data,
10017                        config,
10018                    )
10019                    .map(Into::into)
10020            }
10021            #[inline]
10022            fn abi_decode_returns_validate(
10023                data: &[u8],
10024            ) -> alloy_sol_types::Result<Self::Return> {
10025                Self::abi_decode_returns_with_config(
10026                    data,
10027                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10028                )
10029            }
10030        }
10031    };
10032    #[derive(serde::Serialize, serde::Deserialize)]
10033    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10034    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
10035```solidity
10036function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
10037```*/
10038    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10039    #[derive(Clone)]
10040    pub struct setstateHistoryRetentionPeriodCall {
10041        #[allow(missing_docs)]
10042        pub historySeconds: u32,
10043    }
10044    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
10045    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10046    #[derive(Clone)]
10047    pub struct setstateHistoryRetentionPeriodReturn {}
10048    #[allow(
10049        non_camel_case_types,
10050        non_snake_case,
10051        clippy::pub_underscore_fields,
10052        clippy::style
10053    )]
10054    const _: () = {
10055        use alloy::sol_types as alloy_sol_types;
10056        {
10057            #[doc(hidden)]
10058            #[allow(dead_code)]
10059            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
10060            #[doc(hidden)]
10061            type UnderlyingRustTuple<'a> = (u32,);
10062            #[cfg(test)]
10063            #[allow(dead_code, unreachable_patterns)]
10064            fn _type_assertion(
10065                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10066            ) {
10067                match _t {
10068                    alloy_sol_types::private::AssertTypeEq::<
10069                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10070                    >(_) => {}
10071                }
10072            }
10073            #[automatically_derived]
10074            #[doc(hidden)]
10075            impl ::core::convert::From<setstateHistoryRetentionPeriodCall>
10076            for UnderlyingRustTuple<'_> {
10077                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
10078                    (value.historySeconds,)
10079                }
10080            }
10081            #[automatically_derived]
10082            #[doc(hidden)]
10083            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10084            for setstateHistoryRetentionPeriodCall {
10085                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10086                    Self { historySeconds: tuple.0 }
10087                }
10088            }
10089        }
10090        {
10091            #[doc(hidden)]
10092            #[allow(dead_code)]
10093            type UnderlyingSolTuple<'a> = ();
10094            #[doc(hidden)]
10095            type UnderlyingRustTuple<'a> = ();
10096            #[cfg(test)]
10097            #[allow(dead_code, unreachable_patterns)]
10098            fn _type_assertion(
10099                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10100            ) {
10101                match _t {
10102                    alloy_sol_types::private::AssertTypeEq::<
10103                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10104                    >(_) => {}
10105                }
10106            }
10107            #[automatically_derived]
10108            #[doc(hidden)]
10109            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn>
10110            for UnderlyingRustTuple<'_> {
10111                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
10112                    ()
10113                }
10114            }
10115            #[automatically_derived]
10116            #[doc(hidden)]
10117            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10118            for setstateHistoryRetentionPeriodReturn {
10119                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10120                    Self {}
10121                }
10122            }
10123        }
10124        impl setstateHistoryRetentionPeriodReturn {
10125            fn _tokenize(
10126                &self,
10127            ) -> <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
10128                '_,
10129            > {
10130                ()
10131            }
10132        }
10133        #[automatically_derived]
10134        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
10135            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
10136            type Token<'a> = <Self::Parameters<
10137                'a,
10138            > as alloy_sol_types::SolType>::Token<'a>;
10139            type Return = setstateHistoryRetentionPeriodReturn;
10140            type ReturnTuple<'a> = ();
10141            type ReturnToken<'a> = <Self::ReturnTuple<
10142                'a,
10143            > as alloy_sol_types::SolType>::Token<'a>;
10144            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
10145            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
10146            #[inline]
10147            fn new<'a>(
10148                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10149            ) -> Self {
10150                tuple.into()
10151            }
10152            #[inline]
10153            fn tokenize(&self) -> Self::Token<'_> {
10154                (
10155                    <alloy::sol_types::sol_data::Uint<
10156                        32,
10157                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
10158                )
10159            }
10160            #[inline]
10161            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10162                setstateHistoryRetentionPeriodReturn::_tokenize(ret)
10163            }
10164            #[inline]
10165            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10166                <Self::ReturnTuple<
10167                    '_,
10168                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10169                    .map(Into::into)
10170            }
10171            #[inline]
10172            fn abi_decode_returns_with_config(
10173                data: &[u8],
10174                config: alloy_sol_types::abi::AbiDecoderConfig,
10175            ) -> alloy_sol_types::Result<Self::Return> {
10176                <Self::ReturnTuple<
10177                    '_,
10178                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
10179                        data,
10180                        config,
10181                    )
10182                    .map(Into::into)
10183            }
10184            #[inline]
10185            fn abi_decode_returns_validate(
10186                data: &[u8],
10187            ) -> alloy_sol_types::Result<Self::Return> {
10188                Self::abi_decode_returns_with_config(
10189                    data,
10190                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10191                )
10192            }
10193        }
10194    };
10195    #[derive(serde::Serialize, serde::Deserialize)]
10196    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10197    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
10198```solidity
10199function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
10200```*/
10201    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10202    #[derive(Clone)]
10203    pub struct stateHistoryCommitmentsCall(
10204        pub alloy::sol_types::private::primitives::aliases::U256,
10205    );
10206    #[derive(serde::Serialize, serde::Deserialize)]
10207    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10208    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
10209    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10210    #[derive(Clone)]
10211    pub struct stateHistoryCommitmentsReturn {
10212        #[allow(missing_docs)]
10213        pub l1BlockHeight: u64,
10214        #[allow(missing_docs)]
10215        pub l1BlockTimestamp: u64,
10216        #[allow(missing_docs)]
10217        pub hotShotBlockHeight: u64,
10218        #[allow(missing_docs)]
10219        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10220    }
10221    #[allow(
10222        non_camel_case_types,
10223        non_snake_case,
10224        clippy::pub_underscore_fields,
10225        clippy::style
10226    )]
10227    const _: () = {
10228        use alloy::sol_types as alloy_sol_types;
10229        {
10230            #[doc(hidden)]
10231            #[allow(dead_code)]
10232            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10233            #[doc(hidden)]
10234            type UnderlyingRustTuple<'a> = (
10235                alloy::sol_types::private::primitives::aliases::U256,
10236            );
10237            #[cfg(test)]
10238            #[allow(dead_code, unreachable_patterns)]
10239            fn _type_assertion(
10240                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10241            ) {
10242                match _t {
10243                    alloy_sol_types::private::AssertTypeEq::<
10244                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10245                    >(_) => {}
10246                }
10247            }
10248            #[automatically_derived]
10249            #[doc(hidden)]
10250            impl ::core::convert::From<stateHistoryCommitmentsCall>
10251            for UnderlyingRustTuple<'_> {
10252                fn from(value: stateHistoryCommitmentsCall) -> Self {
10253                    (value.0,)
10254                }
10255            }
10256            #[automatically_derived]
10257            #[doc(hidden)]
10258            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10259            for stateHistoryCommitmentsCall {
10260                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10261                    Self(tuple.0)
10262                }
10263            }
10264        }
10265        {
10266            #[doc(hidden)]
10267            #[allow(dead_code)]
10268            type UnderlyingSolTuple<'a> = (
10269                alloy::sol_types::sol_data::Uint<64>,
10270                alloy::sol_types::sol_data::Uint<64>,
10271                alloy::sol_types::sol_data::Uint<64>,
10272                BN254::ScalarField,
10273            );
10274            #[doc(hidden)]
10275            type UnderlyingRustTuple<'a> = (
10276                u64,
10277                u64,
10278                u64,
10279                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10280            );
10281            #[cfg(test)]
10282            #[allow(dead_code, unreachable_patterns)]
10283            fn _type_assertion(
10284                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10285            ) {
10286                match _t {
10287                    alloy_sol_types::private::AssertTypeEq::<
10288                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10289                    >(_) => {}
10290                }
10291            }
10292            #[automatically_derived]
10293            #[doc(hidden)]
10294            impl ::core::convert::From<stateHistoryCommitmentsReturn>
10295            for UnderlyingRustTuple<'_> {
10296                fn from(value: stateHistoryCommitmentsReturn) -> Self {
10297                    (
10298                        value.l1BlockHeight,
10299                        value.l1BlockTimestamp,
10300                        value.hotShotBlockHeight,
10301                        value.hotShotBlockCommRoot,
10302                    )
10303                }
10304            }
10305            #[automatically_derived]
10306            #[doc(hidden)]
10307            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10308            for stateHistoryCommitmentsReturn {
10309                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10310                    Self {
10311                        l1BlockHeight: tuple.0,
10312                        l1BlockTimestamp: tuple.1,
10313                        hotShotBlockHeight: tuple.2,
10314                        hotShotBlockCommRoot: tuple.3,
10315                    }
10316                }
10317            }
10318        }
10319        impl stateHistoryCommitmentsReturn {
10320            fn _tokenize(
10321                &self,
10322            ) -> <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::ReturnToken<
10323                '_,
10324            > {
10325                (
10326                    <alloy::sol_types::sol_data::Uint<
10327                        64,
10328                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
10329                    <alloy::sol_types::sol_data::Uint<
10330                        64,
10331                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
10332                    <alloy::sol_types::sol_data::Uint<
10333                        64,
10334                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
10335                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
10336                        &self.hotShotBlockCommRoot,
10337                    ),
10338                )
10339            }
10340        }
10341        #[automatically_derived]
10342        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
10343            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10344            type Token<'a> = <Self::Parameters<
10345                'a,
10346            > as alloy_sol_types::SolType>::Token<'a>;
10347            type Return = stateHistoryCommitmentsReturn;
10348            type ReturnTuple<'a> = (
10349                alloy::sol_types::sol_data::Uint<64>,
10350                alloy::sol_types::sol_data::Uint<64>,
10351                alloy::sol_types::sol_data::Uint<64>,
10352                BN254::ScalarField,
10353            );
10354            type ReturnToken<'a> = <Self::ReturnTuple<
10355                'a,
10356            > as alloy_sol_types::SolType>::Token<'a>;
10357            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
10358            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
10359            #[inline]
10360            fn new<'a>(
10361                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10362            ) -> Self {
10363                tuple.into()
10364            }
10365            #[inline]
10366            fn tokenize(&self) -> Self::Token<'_> {
10367                (
10368                    <alloy::sol_types::sol_data::Uint<
10369                        256,
10370                    > as alloy_sol_types::SolType>::tokenize(&self.0),
10371                )
10372            }
10373            #[inline]
10374            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10375                stateHistoryCommitmentsReturn::_tokenize(ret)
10376            }
10377            #[inline]
10378            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10379                <Self::ReturnTuple<
10380                    '_,
10381                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10382                    .map(Into::into)
10383            }
10384            #[inline]
10385            fn abi_decode_returns_with_config(
10386                data: &[u8],
10387                config: alloy_sol_types::abi::AbiDecoderConfig,
10388            ) -> alloy_sol_types::Result<Self::Return> {
10389                <Self::ReturnTuple<
10390                    '_,
10391                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
10392                        data,
10393                        config,
10394                    )
10395                    .map(Into::into)
10396            }
10397            #[inline]
10398            fn abi_decode_returns_validate(
10399                data: &[u8],
10400            ) -> alloy_sol_types::Result<Self::Return> {
10401                Self::abi_decode_returns_with_config(
10402                    data,
10403                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10404                )
10405            }
10406        }
10407    };
10408    #[derive(serde::Serialize, serde::Deserialize)]
10409    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10410    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
10411```solidity
10412function stateHistoryFirstIndex() external view returns (uint64);
10413```*/
10414    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10415    #[derive(Clone)]
10416    pub struct stateHistoryFirstIndexCall;
10417    #[derive(serde::Serialize, serde::Deserialize)]
10418    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10419    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
10420    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10421    #[derive(Clone)]
10422    pub struct stateHistoryFirstIndexReturn {
10423        #[allow(missing_docs)]
10424        pub _0: u64,
10425    }
10426    #[allow(
10427        non_camel_case_types,
10428        non_snake_case,
10429        clippy::pub_underscore_fields,
10430        clippy::style
10431    )]
10432    const _: () = {
10433        use alloy::sol_types as alloy_sol_types;
10434        {
10435            #[doc(hidden)]
10436            #[allow(dead_code)]
10437            type UnderlyingSolTuple<'a> = ();
10438            #[doc(hidden)]
10439            type UnderlyingRustTuple<'a> = ();
10440            #[cfg(test)]
10441            #[allow(dead_code, unreachable_patterns)]
10442            fn _type_assertion(
10443                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10444            ) {
10445                match _t {
10446                    alloy_sol_types::private::AssertTypeEq::<
10447                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10448                    >(_) => {}
10449                }
10450            }
10451            #[automatically_derived]
10452            #[doc(hidden)]
10453            impl ::core::convert::From<stateHistoryFirstIndexCall>
10454            for UnderlyingRustTuple<'_> {
10455                fn from(value: stateHistoryFirstIndexCall) -> Self {
10456                    ()
10457                }
10458            }
10459            #[automatically_derived]
10460            #[doc(hidden)]
10461            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10462            for stateHistoryFirstIndexCall {
10463                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10464                    Self
10465                }
10466            }
10467        }
10468        {
10469            #[doc(hidden)]
10470            #[allow(dead_code)]
10471            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10472            #[doc(hidden)]
10473            type UnderlyingRustTuple<'a> = (u64,);
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<stateHistoryFirstIndexReturn>
10488            for UnderlyingRustTuple<'_> {
10489                fn from(value: stateHistoryFirstIndexReturn) -> Self {
10490                    (value._0,)
10491                }
10492            }
10493            #[automatically_derived]
10494            #[doc(hidden)]
10495            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10496            for stateHistoryFirstIndexReturn {
10497                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10498                    Self { _0: tuple.0 }
10499                }
10500            }
10501        }
10502        #[automatically_derived]
10503        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
10504            type Parameters<'a> = ();
10505            type Token<'a> = <Self::Parameters<
10506                'a,
10507            > as alloy_sol_types::SolType>::Token<'a>;
10508            type Return = u64;
10509            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10510            type ReturnToken<'a> = <Self::ReturnTuple<
10511                'a,
10512            > as alloy_sol_types::SolType>::Token<'a>;
10513            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
10514            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
10515            #[inline]
10516            fn new<'a>(
10517                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10518            ) -> Self {
10519                tuple.into()
10520            }
10521            #[inline]
10522            fn tokenize(&self) -> Self::Token<'_> {
10523                ()
10524            }
10525            #[inline]
10526            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10527                (
10528                    <alloy::sol_types::sol_data::Uint<
10529                        64,
10530                    > as alloy_sol_types::SolType>::tokenize(ret),
10531                )
10532            }
10533            #[inline]
10534            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10535                <Self::ReturnTuple<
10536                    '_,
10537                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10538                    .map(|r| {
10539                        let r: stateHistoryFirstIndexReturn = r.into();
10540                        r._0
10541                    })
10542            }
10543            #[inline]
10544            fn abi_decode_returns_with_config(
10545                data: &[u8],
10546                config: alloy_sol_types::abi::AbiDecoderConfig,
10547            ) -> alloy_sol_types::Result<Self::Return> {
10548                <Self::ReturnTuple<
10549                    '_,
10550                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
10551                        data,
10552                        config,
10553                    )
10554                    .map(|r| {
10555                        let r: stateHistoryFirstIndexReturn = r.into();
10556                        r._0
10557                    })
10558            }
10559            #[inline]
10560            fn abi_decode_returns_validate(
10561                data: &[u8],
10562            ) -> alloy_sol_types::Result<Self::Return> {
10563                Self::abi_decode_returns_with_config(
10564                    data,
10565                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10566                )
10567            }
10568        }
10569    };
10570    #[derive(serde::Serialize, serde::Deserialize)]
10571    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10572    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
10573```solidity
10574function stateHistoryRetentionPeriod() external view returns (uint32);
10575```*/
10576    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10577    #[derive(Clone)]
10578    pub struct stateHistoryRetentionPeriodCall;
10579    #[derive(serde::Serialize, serde::Deserialize)]
10580    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10581    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
10582    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10583    #[derive(Clone)]
10584    pub struct stateHistoryRetentionPeriodReturn {
10585        #[allow(missing_docs)]
10586        pub _0: u32,
10587    }
10588    #[allow(
10589        non_camel_case_types,
10590        non_snake_case,
10591        clippy::pub_underscore_fields,
10592        clippy::style
10593    )]
10594    const _: () = {
10595        use alloy::sol_types as alloy_sol_types;
10596        {
10597            #[doc(hidden)]
10598            #[allow(dead_code)]
10599            type UnderlyingSolTuple<'a> = ();
10600            #[doc(hidden)]
10601            type UnderlyingRustTuple<'a> = ();
10602            #[cfg(test)]
10603            #[allow(dead_code, unreachable_patterns)]
10604            fn _type_assertion(
10605                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10606            ) {
10607                match _t {
10608                    alloy_sol_types::private::AssertTypeEq::<
10609                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10610                    >(_) => {}
10611                }
10612            }
10613            #[automatically_derived]
10614            #[doc(hidden)]
10615            impl ::core::convert::From<stateHistoryRetentionPeriodCall>
10616            for UnderlyingRustTuple<'_> {
10617                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
10618                    ()
10619                }
10620            }
10621            #[automatically_derived]
10622            #[doc(hidden)]
10623            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10624            for stateHistoryRetentionPeriodCall {
10625                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10626                    Self
10627                }
10628            }
10629        }
10630        {
10631            #[doc(hidden)]
10632            #[allow(dead_code)]
10633            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
10634            #[doc(hidden)]
10635            type UnderlyingRustTuple<'a> = (u32,);
10636            #[cfg(test)]
10637            #[allow(dead_code, unreachable_patterns)]
10638            fn _type_assertion(
10639                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10640            ) {
10641                match _t {
10642                    alloy_sol_types::private::AssertTypeEq::<
10643                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10644                    >(_) => {}
10645                }
10646            }
10647            #[automatically_derived]
10648            #[doc(hidden)]
10649            impl ::core::convert::From<stateHistoryRetentionPeriodReturn>
10650            for UnderlyingRustTuple<'_> {
10651                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
10652                    (value._0,)
10653                }
10654            }
10655            #[automatically_derived]
10656            #[doc(hidden)]
10657            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10658            for stateHistoryRetentionPeriodReturn {
10659                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10660                    Self { _0: tuple.0 }
10661                }
10662            }
10663        }
10664        #[automatically_derived]
10665        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
10666            type Parameters<'a> = ();
10667            type Token<'a> = <Self::Parameters<
10668                'a,
10669            > as alloy_sol_types::SolType>::Token<'a>;
10670            type Return = u32;
10671            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
10672            type ReturnToken<'a> = <Self::ReturnTuple<
10673                'a,
10674            > as alloy_sol_types::SolType>::Token<'a>;
10675            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
10676            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
10677            #[inline]
10678            fn new<'a>(
10679                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10680            ) -> Self {
10681                tuple.into()
10682            }
10683            #[inline]
10684            fn tokenize(&self) -> Self::Token<'_> {
10685                ()
10686            }
10687            #[inline]
10688            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10689                (
10690                    <alloy::sol_types::sol_data::Uint<
10691                        32,
10692                    > as alloy_sol_types::SolType>::tokenize(ret),
10693                )
10694            }
10695            #[inline]
10696            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10697                <Self::ReturnTuple<
10698                    '_,
10699                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10700                    .map(|r| {
10701                        let r: stateHistoryRetentionPeriodReturn = r.into();
10702                        r._0
10703                    })
10704            }
10705            #[inline]
10706            fn abi_decode_returns_with_config(
10707                data: &[u8],
10708                config: alloy_sol_types::abi::AbiDecoderConfig,
10709            ) -> alloy_sol_types::Result<Self::Return> {
10710                <Self::ReturnTuple<
10711                    '_,
10712                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
10713                        data,
10714                        config,
10715                    )
10716                    .map(|r| {
10717                        let r: stateHistoryRetentionPeriodReturn = r.into();
10718                        r._0
10719                    })
10720            }
10721            #[inline]
10722            fn abi_decode_returns_validate(
10723                data: &[u8],
10724            ) -> alloy_sol_types::Result<Self::Return> {
10725                Self::abi_decode_returns_with_config(
10726                    data,
10727                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10728                )
10729            }
10730        }
10731    };
10732    #[derive(serde::Serialize, serde::Deserialize)]
10733    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10734    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
10735```solidity
10736function transferOwnership(address newOwner) external;
10737```*/
10738    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10739    #[derive(Clone)]
10740    pub struct transferOwnershipCall {
10741        #[allow(missing_docs)]
10742        pub newOwner: alloy::sol_types::private::Address,
10743    }
10744    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
10745    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10746    #[derive(Clone)]
10747    pub struct transferOwnershipReturn {}
10748    #[allow(
10749        non_camel_case_types,
10750        non_snake_case,
10751        clippy::pub_underscore_fields,
10752        clippy::style
10753    )]
10754    const _: () = {
10755        use alloy::sol_types as alloy_sol_types;
10756        {
10757            #[doc(hidden)]
10758            #[allow(dead_code)]
10759            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10760            #[doc(hidden)]
10761            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10762            #[cfg(test)]
10763            #[allow(dead_code, unreachable_patterns)]
10764            fn _type_assertion(
10765                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10766            ) {
10767                match _t {
10768                    alloy_sol_types::private::AssertTypeEq::<
10769                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10770                    >(_) => {}
10771                }
10772            }
10773            #[automatically_derived]
10774            #[doc(hidden)]
10775            impl ::core::convert::From<transferOwnershipCall>
10776            for UnderlyingRustTuple<'_> {
10777                fn from(value: transferOwnershipCall) -> Self {
10778                    (value.newOwner,)
10779                }
10780            }
10781            #[automatically_derived]
10782            #[doc(hidden)]
10783            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10784            for transferOwnershipCall {
10785                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10786                    Self { newOwner: tuple.0 }
10787                }
10788            }
10789        }
10790        {
10791            #[doc(hidden)]
10792            #[allow(dead_code)]
10793            type UnderlyingSolTuple<'a> = ();
10794            #[doc(hidden)]
10795            type UnderlyingRustTuple<'a> = ();
10796            #[cfg(test)]
10797            #[allow(dead_code, unreachable_patterns)]
10798            fn _type_assertion(
10799                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10800            ) {
10801                match _t {
10802                    alloy_sol_types::private::AssertTypeEq::<
10803                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10804                    >(_) => {}
10805                }
10806            }
10807            #[automatically_derived]
10808            #[doc(hidden)]
10809            impl ::core::convert::From<transferOwnershipReturn>
10810            for UnderlyingRustTuple<'_> {
10811                fn from(value: transferOwnershipReturn) -> Self {
10812                    ()
10813                }
10814            }
10815            #[automatically_derived]
10816            #[doc(hidden)]
10817            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10818            for transferOwnershipReturn {
10819                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10820                    Self {}
10821                }
10822            }
10823        }
10824        impl transferOwnershipReturn {
10825            fn _tokenize(
10826                &self,
10827            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10828                ()
10829            }
10830        }
10831        #[automatically_derived]
10832        impl alloy_sol_types::SolCall for transferOwnershipCall {
10833            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
10834            type Token<'a> = <Self::Parameters<
10835                'a,
10836            > as alloy_sol_types::SolType>::Token<'a>;
10837            type Return = transferOwnershipReturn;
10838            type ReturnTuple<'a> = ();
10839            type ReturnToken<'a> = <Self::ReturnTuple<
10840                'a,
10841            > as alloy_sol_types::SolType>::Token<'a>;
10842            const SIGNATURE: &'static str = "transferOwnership(address)";
10843            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
10844            #[inline]
10845            fn new<'a>(
10846                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10847            ) -> Self {
10848                tuple.into()
10849            }
10850            #[inline]
10851            fn tokenize(&self) -> Self::Token<'_> {
10852                (
10853                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10854                        &self.newOwner,
10855                    ),
10856                )
10857            }
10858            #[inline]
10859            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10860                transferOwnershipReturn::_tokenize(ret)
10861            }
10862            #[inline]
10863            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10864                <Self::ReturnTuple<
10865                    '_,
10866                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10867                    .map(Into::into)
10868            }
10869            #[inline]
10870            fn abi_decode_returns_with_config(
10871                data: &[u8],
10872                config: alloy_sol_types::abi::AbiDecoderConfig,
10873            ) -> alloy_sol_types::Result<Self::Return> {
10874                <Self::ReturnTuple<
10875                    '_,
10876                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
10877                        data,
10878                        config,
10879                    )
10880                    .map(Into::into)
10881            }
10882            #[inline]
10883            fn abi_decode_returns_validate(
10884                data: &[u8],
10885            ) -> alloy_sol_types::Result<Self::Return> {
10886                Self::abi_decode_returns_with_config(
10887                    data,
10888                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10889                )
10890            }
10891        }
10892    };
10893    #[derive(serde::Serialize, serde::Deserialize)]
10894    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10895    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
10896```solidity
10897function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
10898```*/
10899    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10900    #[derive(Clone)]
10901    pub struct upgradeToAndCallCall {
10902        #[allow(missing_docs)]
10903        pub newImplementation: alloy::sol_types::private::Address,
10904        #[allow(missing_docs)]
10905        pub data: alloy::sol_types::private::Bytes,
10906    }
10907    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
10908    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10909    #[derive(Clone)]
10910    pub struct upgradeToAndCallReturn {}
10911    #[allow(
10912        non_camel_case_types,
10913        non_snake_case,
10914        clippy::pub_underscore_fields,
10915        clippy::style
10916    )]
10917    const _: () = {
10918        use alloy::sol_types as alloy_sol_types;
10919        {
10920            #[doc(hidden)]
10921            #[allow(dead_code)]
10922            type UnderlyingSolTuple<'a> = (
10923                alloy::sol_types::sol_data::Address,
10924                alloy::sol_types::sol_data::Bytes,
10925            );
10926            #[doc(hidden)]
10927            type UnderlyingRustTuple<'a> = (
10928                alloy::sol_types::private::Address,
10929                alloy::sol_types::private::Bytes,
10930            );
10931            #[cfg(test)]
10932            #[allow(dead_code, unreachable_patterns)]
10933            fn _type_assertion(
10934                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10935            ) {
10936                match _t {
10937                    alloy_sol_types::private::AssertTypeEq::<
10938                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10939                    >(_) => {}
10940                }
10941            }
10942            #[automatically_derived]
10943            #[doc(hidden)]
10944            impl ::core::convert::From<upgradeToAndCallCall>
10945            for UnderlyingRustTuple<'_> {
10946                fn from(value: upgradeToAndCallCall) -> Self {
10947                    (value.newImplementation, value.data)
10948                }
10949            }
10950            #[automatically_derived]
10951            #[doc(hidden)]
10952            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10953            for upgradeToAndCallCall {
10954                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10955                    Self {
10956                        newImplementation: tuple.0,
10957                        data: tuple.1,
10958                    }
10959                }
10960            }
10961        }
10962        {
10963            #[doc(hidden)]
10964            #[allow(dead_code)]
10965            type UnderlyingSolTuple<'a> = ();
10966            #[doc(hidden)]
10967            type UnderlyingRustTuple<'a> = ();
10968            #[cfg(test)]
10969            #[allow(dead_code, unreachable_patterns)]
10970            fn _type_assertion(
10971                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10972            ) {
10973                match _t {
10974                    alloy_sol_types::private::AssertTypeEq::<
10975                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10976                    >(_) => {}
10977                }
10978            }
10979            #[automatically_derived]
10980            #[doc(hidden)]
10981            impl ::core::convert::From<upgradeToAndCallReturn>
10982            for UnderlyingRustTuple<'_> {
10983                fn from(value: upgradeToAndCallReturn) -> Self {
10984                    ()
10985                }
10986            }
10987            #[automatically_derived]
10988            #[doc(hidden)]
10989            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10990            for upgradeToAndCallReturn {
10991                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10992                    Self {}
10993                }
10994            }
10995        }
10996        impl upgradeToAndCallReturn {
10997            fn _tokenize(
10998                &self,
10999            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
11000                ()
11001            }
11002        }
11003        #[automatically_derived]
11004        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
11005            type Parameters<'a> = (
11006                alloy::sol_types::sol_data::Address,
11007                alloy::sol_types::sol_data::Bytes,
11008            );
11009            type Token<'a> = <Self::Parameters<
11010                'a,
11011            > as alloy_sol_types::SolType>::Token<'a>;
11012            type Return = upgradeToAndCallReturn;
11013            type ReturnTuple<'a> = ();
11014            type ReturnToken<'a> = <Self::ReturnTuple<
11015                'a,
11016            > as alloy_sol_types::SolType>::Token<'a>;
11017            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
11018            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
11019            #[inline]
11020            fn new<'a>(
11021                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11022            ) -> Self {
11023                tuple.into()
11024            }
11025            #[inline]
11026            fn tokenize(&self) -> Self::Token<'_> {
11027                (
11028                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11029                        &self.newImplementation,
11030                    ),
11031                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
11032                        &self.data,
11033                    ),
11034                )
11035            }
11036            #[inline]
11037            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11038                upgradeToAndCallReturn::_tokenize(ret)
11039            }
11040            #[inline]
11041            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11042                <Self::ReturnTuple<
11043                    '_,
11044                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11045                    .map(Into::into)
11046            }
11047            #[inline]
11048            fn abi_decode_returns_with_config(
11049                data: &[u8],
11050                config: alloy_sol_types::abi::AbiDecoderConfig,
11051            ) -> alloy_sol_types::Result<Self::Return> {
11052                <Self::ReturnTuple<
11053                    '_,
11054                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
11055                        data,
11056                        config,
11057                    )
11058                    .map(Into::into)
11059            }
11060            #[inline]
11061            fn abi_decode_returns_validate(
11062                data: &[u8],
11063            ) -> alloy_sol_types::Result<Self::Return> {
11064                Self::abi_decode_returns_with_config(
11065                    data,
11066                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11067                )
11068            }
11069        }
11070    };
11071    ///Container for all the [`LightClient`](self) function calls.
11072    #[derive(Clone)]
11073    #[derive(serde::Serialize, serde::Deserialize)]
11074    #[derive(Debug, PartialEq, Eq, Hash)]
11075    pub enum LightClientCalls {
11076        #[allow(missing_docs)]
11077        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
11078        #[allow(missing_docs)]
11079        _getVk(_getVkCall),
11080        #[allow(missing_docs)]
11081        currentBlockNumber(currentBlockNumberCall),
11082        #[allow(missing_docs)]
11083        disablePermissionedProverMode(disablePermissionedProverModeCall),
11084        #[allow(missing_docs)]
11085        finalizedState(finalizedStateCall),
11086        #[allow(missing_docs)]
11087        genesisStakeTableState(genesisStakeTableStateCall),
11088        #[allow(missing_docs)]
11089        genesisState(genesisStateCall),
11090        #[allow(missing_docs)]
11091        getHotShotCommitment(getHotShotCommitmentCall),
11092        #[allow(missing_docs)]
11093        getStateHistoryCount(getStateHistoryCountCall),
11094        #[allow(missing_docs)]
11095        getVersion(getVersionCall),
11096        #[allow(missing_docs)]
11097        initialize(initializeCall),
11098        #[allow(missing_docs)]
11099        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
11100        #[allow(missing_docs)]
11101        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
11102        #[allow(missing_docs)]
11103        newFinalizedState(newFinalizedStateCall),
11104        #[allow(missing_docs)]
11105        owner(ownerCall),
11106        #[allow(missing_docs)]
11107        permissionedProver(permissionedProverCall),
11108        #[allow(missing_docs)]
11109        proxiableUUID(proxiableUUIDCall),
11110        #[allow(missing_docs)]
11111        renounceOwnership(renounceOwnershipCall),
11112        #[allow(missing_docs)]
11113        setPermissionedProver(setPermissionedProverCall),
11114        #[allow(missing_docs)]
11115        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
11116        #[allow(missing_docs)]
11117        stateHistoryCommitments(stateHistoryCommitmentsCall),
11118        #[allow(missing_docs)]
11119        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
11120        #[allow(missing_docs)]
11121        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
11122        #[allow(missing_docs)]
11123        transferOwnership(transferOwnershipCall),
11124        #[allow(missing_docs)]
11125        upgradeToAndCall(upgradeToAndCallCall),
11126    }
11127    impl LightClientCalls {
11128        /// All the selectors of this enum.
11129        ///
11130        /// Note that the selectors might not be in the same order as the variants.
11131        /// No guarantees are made about the order of the selectors.
11132        ///
11133        /// Prefer using `SolInterface` methods instead.
11134        pub const SELECTORS: &'static [[u8; 4usize]] = &[
11135            [1u8, 63u8, 165u8, 252u8],
11136            [2u8, 181u8, 146u8, 243u8],
11137            [13u8, 142u8, 110u8, 44u8],
11138            [18u8, 23u8, 60u8, 44u8],
11139            [32u8, 99u8, 212u8, 247u8],
11140            [47u8, 121u8, 136u8, 157u8],
11141            [49u8, 61u8, 247u8, 177u8],
11142            [55u8, 142u8, 194u8, 59u8],
11143            [66u8, 109u8, 49u8, 148u8],
11144            [79u8, 30u8, 242u8, 134u8],
11145            [82u8, 209u8, 144u8, 45u8],
11146            [105u8, 204u8, 106u8, 4u8],
11147            [113u8, 80u8, 24u8, 166u8],
11148            [130u8, 110u8, 65u8, 252u8],
11149            [133u8, 132u8, 210u8, 63u8],
11150            [141u8, 165u8, 203u8, 91u8],
11151            [150u8, 193u8, 202u8, 97u8],
11152            [155u8, 170u8, 60u8, 201u8],
11153            [159u8, 219u8, 84u8, 167u8],
11154            [173u8, 60u8, 177u8, 204u8],
11155            [194u8, 59u8, 158u8, 158u8],
11156            [210u8, 77u8, 147u8, 61u8],
11157            [224u8, 48u8, 51u8, 1u8],
11158            [242u8, 253u8, 227u8, 139u8],
11159            [249u8, 229u8, 13u8, 25u8],
11160        ];
11161        /// The names of the variants in the same order as `SELECTORS`.
11162        pub const VARIANT_NAMES: &'static [&'static str] = &[
11163            ::core::stringify!(setPermissionedProver),
11164            ::core::stringify!(stateHistoryCommitments),
11165            ::core::stringify!(getVersion),
11166            ::core::stringify!(_getVk),
11167            ::core::stringify!(newFinalizedState),
11168            ::core::stringify!(stateHistoryFirstIndex),
11169            ::core::stringify!(permissionedProver),
11170            ::core::stringify!(currentBlockNumber),
11171            ::core::stringify!(genesisStakeTableState),
11172            ::core::stringify!(upgradeToAndCall),
11173            ::core::stringify!(proxiableUUID),
11174            ::core::stringify!(disablePermissionedProverMode),
11175            ::core::stringify!(renounceOwnership),
11176            ::core::stringify!(isPermissionedProverEnabled),
11177            ::core::stringify!(getHotShotCommitment),
11178            ::core::stringify!(owner),
11179            ::core::stringify!(setstateHistoryRetentionPeriod),
11180            ::core::stringify!(initialize),
11181            ::core::stringify!(finalizedState),
11182            ::core::stringify!(UPGRADE_INTERFACE_VERSION),
11183            ::core::stringify!(stateHistoryRetentionPeriod),
11184            ::core::stringify!(genesisState),
11185            ::core::stringify!(lagOverEscapeHatchThreshold),
11186            ::core::stringify!(transferOwnership),
11187            ::core::stringify!(getStateHistoryCount),
11188        ];
11189        /// The signatures in the same order as `SELECTORS`.
11190        pub const SIGNATURES: &'static [&'static str] = &[
11191            <setPermissionedProverCall as alloy_sol_types::SolCall>::SIGNATURE,
11192            <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SIGNATURE,
11193            <getVersionCall as alloy_sol_types::SolCall>::SIGNATURE,
11194            <_getVkCall as alloy_sol_types::SolCall>::SIGNATURE,
11195            <newFinalizedStateCall as alloy_sol_types::SolCall>::SIGNATURE,
11196            <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SIGNATURE,
11197            <permissionedProverCall as alloy_sol_types::SolCall>::SIGNATURE,
11198            <currentBlockNumberCall as alloy_sol_types::SolCall>::SIGNATURE,
11199            <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SIGNATURE,
11200            <upgradeToAndCallCall as alloy_sol_types::SolCall>::SIGNATURE,
11201            <proxiableUUIDCall as alloy_sol_types::SolCall>::SIGNATURE,
11202            <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SIGNATURE,
11203            <renounceOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
11204            <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SIGNATURE,
11205            <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SIGNATURE,
11206            <ownerCall as alloy_sol_types::SolCall>::SIGNATURE,
11207            <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
11208            <initializeCall as alloy_sol_types::SolCall>::SIGNATURE,
11209            <finalizedStateCall as alloy_sol_types::SolCall>::SIGNATURE,
11210            <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SIGNATURE,
11211            <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
11212            <genesisStateCall as alloy_sol_types::SolCall>::SIGNATURE,
11213            <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SIGNATURE,
11214            <transferOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
11215            <getStateHistoryCountCall as alloy_sol_types::SolCall>::SIGNATURE,
11216        ];
11217        /// Returns the signature for the given selector, if known.
11218        #[inline]
11219        pub fn signature_by_selector(
11220            selector: [u8; 4usize],
11221        ) -> ::core::option::Option<&'static str> {
11222            match Self::SELECTORS.binary_search(&selector) {
11223                ::core::result::Result::Ok(idx) => {
11224                    ::core::option::Option::Some(Self::SIGNATURES[idx])
11225                }
11226                ::core::result::Result::Err(_) => ::core::option::Option::None,
11227            }
11228        }
11229        /// Returns the enum variant name for the given selector, if known.
11230        #[inline]
11231        pub fn name_by_selector(
11232            selector: [u8; 4usize],
11233        ) -> ::core::option::Option<&'static str> {
11234            let sig = Self::signature_by_selector(selector)?;
11235            sig.split_once('(').map(|(name, _)| name)
11236        }
11237    }
11238    #[automatically_derived]
11239    impl alloy_sol_types::SolInterface for LightClientCalls {
11240        const NAME: &'static str = "LightClientCalls";
11241        const MIN_DATA_LENGTH: usize = 0usize;
11242        const COUNT: usize = 25usize;
11243        #[inline]
11244        fn selector(&self) -> [u8; 4] {
11245            match self {
11246                Self::UPGRADE_INTERFACE_VERSION(_) => {
11247                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
11248                }
11249                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
11250                Self::currentBlockNumber(_) => {
11251                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
11252                }
11253                Self::disablePermissionedProverMode(_) => {
11254                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
11255                }
11256                Self::finalizedState(_) => {
11257                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
11258                }
11259                Self::genesisStakeTableState(_) => {
11260                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
11261                }
11262                Self::genesisState(_) => {
11263                    <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR
11264                }
11265                Self::getHotShotCommitment(_) => {
11266                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
11267                }
11268                Self::getStateHistoryCount(_) => {
11269                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
11270                }
11271                Self::getVersion(_) => {
11272                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
11273                }
11274                Self::initialize(_) => {
11275                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
11276                }
11277                Self::isPermissionedProverEnabled(_) => {
11278                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
11279                }
11280                Self::lagOverEscapeHatchThreshold(_) => {
11281                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
11282                }
11283                Self::newFinalizedState(_) => {
11284                    <newFinalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
11285                }
11286                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
11287                Self::permissionedProver(_) => {
11288                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
11289                }
11290                Self::proxiableUUID(_) => {
11291                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
11292                }
11293                Self::renounceOwnership(_) => {
11294                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
11295                }
11296                Self::setPermissionedProver(_) => {
11297                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
11298                }
11299                Self::setstateHistoryRetentionPeriod(_) => {
11300                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
11301                }
11302                Self::stateHistoryCommitments(_) => {
11303                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
11304                }
11305                Self::stateHistoryFirstIndex(_) => {
11306                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
11307                }
11308                Self::stateHistoryRetentionPeriod(_) => {
11309                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
11310                }
11311                Self::transferOwnership(_) => {
11312                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
11313                }
11314                Self::upgradeToAndCall(_) => {
11315                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
11316                }
11317            }
11318        }
11319        #[inline]
11320        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
11321            Self::SELECTORS.get(i).copied()
11322        }
11323        #[inline]
11324        fn valid_selector(selector: [u8; 4]) -> bool {
11325            Self::SELECTORS.binary_search(&selector).is_ok()
11326        }
11327        #[inline]
11328        #[allow(non_snake_case)]
11329        fn abi_decode_raw(
11330            selector: [u8; 4],
11331            data: &[u8],
11332        ) -> alloy_sol_types::Result<Self> {
11333            Self::abi_decode_raw_with_config(
11334                selector,
11335                data,
11336                alloy_sol_types::abi::AbiDecoderConfig::default(),
11337            )
11338        }
11339        #[inline]
11340        #[allow(non_snake_case)]
11341        fn abi_decode_raw_with_config(
11342            selector: [u8; 4],
11343            data: &[u8],
11344            config: alloy_sol_types::abi::AbiDecoderConfig,
11345        ) -> alloy_sol_types::Result<Self> {
11346            static DECODE_SHIMS: &[fn(
11347                &[u8],
11348                alloy_sol_types::abi::AbiDecoderConfig,
11349            ) -> alloy_sol_types::Result<LightClientCalls>] = &[
11350                {
11351                    fn setPermissionedProver(
11352                        data: &[u8],
11353                        config: alloy_sol_types::abi::AbiDecoderConfig,
11354                    ) -> alloy_sol_types::Result<LightClientCalls> {
11355                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
11356                                data,
11357                                config,
11358                            )
11359                            .map(LightClientCalls::setPermissionedProver)
11360                    }
11361                    setPermissionedProver
11362                },
11363                {
11364                    fn stateHistoryCommitments(
11365                        data: &[u8],
11366                        config: alloy_sol_types::abi::AbiDecoderConfig,
11367                    ) -> alloy_sol_types::Result<LightClientCalls> {
11368                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
11369                                data,
11370                                config,
11371                            )
11372                            .map(LightClientCalls::stateHistoryCommitments)
11373                    }
11374                    stateHistoryCommitments
11375                },
11376                {
11377                    fn getVersion(
11378                        data: &[u8],
11379                        config: alloy_sol_types::abi::AbiDecoderConfig,
11380                    ) -> alloy_sol_types::Result<LightClientCalls> {
11381                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
11382                                data,
11383                                config,
11384                            )
11385                            .map(LightClientCalls::getVersion)
11386                    }
11387                    getVersion
11388                },
11389                {
11390                    fn _getVk(
11391                        data: &[u8],
11392                        config: alloy_sol_types::abi::AbiDecoderConfig,
11393                    ) -> alloy_sol_types::Result<LightClientCalls> {
11394                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
11395                                data,
11396                                config,
11397                            )
11398                            .map(LightClientCalls::_getVk)
11399                    }
11400                    _getVk
11401                },
11402                {
11403                    fn newFinalizedState(
11404                        data: &[u8],
11405                        config: alloy_sol_types::abi::AbiDecoderConfig,
11406                    ) -> alloy_sol_types::Result<LightClientCalls> {
11407                        <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
11408                                data,
11409                                config,
11410                            )
11411                            .map(LightClientCalls::newFinalizedState)
11412                    }
11413                    newFinalizedState
11414                },
11415                {
11416                    fn stateHistoryFirstIndex(
11417                        data: &[u8],
11418                        config: alloy_sol_types::abi::AbiDecoderConfig,
11419                    ) -> alloy_sol_types::Result<LightClientCalls> {
11420                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
11421                                data,
11422                                config,
11423                            )
11424                            .map(LightClientCalls::stateHistoryFirstIndex)
11425                    }
11426                    stateHistoryFirstIndex
11427                },
11428                {
11429                    fn permissionedProver(
11430                        data: &[u8],
11431                        config: alloy_sol_types::abi::AbiDecoderConfig,
11432                    ) -> alloy_sol_types::Result<LightClientCalls> {
11433                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
11434                                data,
11435                                config,
11436                            )
11437                            .map(LightClientCalls::permissionedProver)
11438                    }
11439                    permissionedProver
11440                },
11441                {
11442                    fn currentBlockNumber(
11443                        data: &[u8],
11444                        config: alloy_sol_types::abi::AbiDecoderConfig,
11445                    ) -> alloy_sol_types::Result<LightClientCalls> {
11446                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
11447                                data,
11448                                config,
11449                            )
11450                            .map(LightClientCalls::currentBlockNumber)
11451                    }
11452                    currentBlockNumber
11453                },
11454                {
11455                    fn genesisStakeTableState(
11456                        data: &[u8],
11457                        config: alloy_sol_types::abi::AbiDecoderConfig,
11458                    ) -> alloy_sol_types::Result<LightClientCalls> {
11459                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
11460                                data,
11461                                config,
11462                            )
11463                            .map(LightClientCalls::genesisStakeTableState)
11464                    }
11465                    genesisStakeTableState
11466                },
11467                {
11468                    fn upgradeToAndCall(
11469                        data: &[u8],
11470                        config: alloy_sol_types::abi::AbiDecoderConfig,
11471                    ) -> alloy_sol_types::Result<LightClientCalls> {
11472                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
11473                                data,
11474                                config,
11475                            )
11476                            .map(LightClientCalls::upgradeToAndCall)
11477                    }
11478                    upgradeToAndCall
11479                },
11480                {
11481                    fn proxiableUUID(
11482                        data: &[u8],
11483                        config: alloy_sol_types::abi::AbiDecoderConfig,
11484                    ) -> alloy_sol_types::Result<LightClientCalls> {
11485                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
11486                                data,
11487                                config,
11488                            )
11489                            .map(LightClientCalls::proxiableUUID)
11490                    }
11491                    proxiableUUID
11492                },
11493                {
11494                    fn disablePermissionedProverMode(
11495                        data: &[u8],
11496                        config: alloy_sol_types::abi::AbiDecoderConfig,
11497                    ) -> alloy_sol_types::Result<LightClientCalls> {
11498                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
11499                                data,
11500                                config,
11501                            )
11502                            .map(LightClientCalls::disablePermissionedProverMode)
11503                    }
11504                    disablePermissionedProverMode
11505                },
11506                {
11507                    fn renounceOwnership(
11508                        data: &[u8],
11509                        config: alloy_sol_types::abi::AbiDecoderConfig,
11510                    ) -> alloy_sol_types::Result<LightClientCalls> {
11511                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
11512                                data,
11513                                config,
11514                            )
11515                            .map(LightClientCalls::renounceOwnership)
11516                    }
11517                    renounceOwnership
11518                },
11519                {
11520                    fn isPermissionedProverEnabled(
11521                        data: &[u8],
11522                        config: alloy_sol_types::abi::AbiDecoderConfig,
11523                    ) -> alloy_sol_types::Result<LightClientCalls> {
11524                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
11525                                data,
11526                                config,
11527                            )
11528                            .map(LightClientCalls::isPermissionedProverEnabled)
11529                    }
11530                    isPermissionedProverEnabled
11531                },
11532                {
11533                    fn getHotShotCommitment(
11534                        data: &[u8],
11535                        config: alloy_sol_types::abi::AbiDecoderConfig,
11536                    ) -> alloy_sol_types::Result<LightClientCalls> {
11537                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
11538                                data,
11539                                config,
11540                            )
11541                            .map(LightClientCalls::getHotShotCommitment)
11542                    }
11543                    getHotShotCommitment
11544                },
11545                {
11546                    fn owner(
11547                        data: &[u8],
11548                        config: alloy_sol_types::abi::AbiDecoderConfig,
11549                    ) -> alloy_sol_types::Result<LightClientCalls> {
11550                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
11551                                data,
11552                                config,
11553                            )
11554                            .map(LightClientCalls::owner)
11555                    }
11556                    owner
11557                },
11558                {
11559                    fn setstateHistoryRetentionPeriod(
11560                        data: &[u8],
11561                        config: alloy_sol_types::abi::AbiDecoderConfig,
11562                    ) -> alloy_sol_types::Result<LightClientCalls> {
11563                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
11564                                data,
11565                                config,
11566                            )
11567                            .map(LightClientCalls::setstateHistoryRetentionPeriod)
11568                    }
11569                    setstateHistoryRetentionPeriod
11570                },
11571                {
11572                    fn initialize(
11573                        data: &[u8],
11574                        config: alloy_sol_types::abi::AbiDecoderConfig,
11575                    ) -> alloy_sol_types::Result<LightClientCalls> {
11576                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
11577                                data,
11578                                config,
11579                            )
11580                            .map(LightClientCalls::initialize)
11581                    }
11582                    initialize
11583                },
11584                {
11585                    fn finalizedState(
11586                        data: &[u8],
11587                        config: alloy_sol_types::abi::AbiDecoderConfig,
11588                    ) -> alloy_sol_types::Result<LightClientCalls> {
11589                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
11590                                data,
11591                                config,
11592                            )
11593                            .map(LightClientCalls::finalizedState)
11594                    }
11595                    finalizedState
11596                },
11597                {
11598                    fn UPGRADE_INTERFACE_VERSION(
11599                        data: &[u8],
11600                        config: alloy_sol_types::abi::AbiDecoderConfig,
11601                    ) -> alloy_sol_types::Result<LightClientCalls> {
11602                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
11603                                data,
11604                                config,
11605                            )
11606                            .map(LightClientCalls::UPGRADE_INTERFACE_VERSION)
11607                    }
11608                    UPGRADE_INTERFACE_VERSION
11609                },
11610                {
11611                    fn stateHistoryRetentionPeriod(
11612                        data: &[u8],
11613                        config: alloy_sol_types::abi::AbiDecoderConfig,
11614                    ) -> alloy_sol_types::Result<LightClientCalls> {
11615                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
11616                                data,
11617                                config,
11618                            )
11619                            .map(LightClientCalls::stateHistoryRetentionPeriod)
11620                    }
11621                    stateHistoryRetentionPeriod
11622                },
11623                {
11624                    fn genesisState(
11625                        data: &[u8],
11626                        config: alloy_sol_types::abi::AbiDecoderConfig,
11627                    ) -> alloy_sol_types::Result<LightClientCalls> {
11628                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
11629                                data,
11630                                config,
11631                            )
11632                            .map(LightClientCalls::genesisState)
11633                    }
11634                    genesisState
11635                },
11636                {
11637                    fn lagOverEscapeHatchThreshold(
11638                        data: &[u8],
11639                        config: alloy_sol_types::abi::AbiDecoderConfig,
11640                    ) -> alloy_sol_types::Result<LightClientCalls> {
11641                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
11642                                data,
11643                                config,
11644                            )
11645                            .map(LightClientCalls::lagOverEscapeHatchThreshold)
11646                    }
11647                    lagOverEscapeHatchThreshold
11648                },
11649                {
11650                    fn transferOwnership(
11651                        data: &[u8],
11652                        config: alloy_sol_types::abi::AbiDecoderConfig,
11653                    ) -> alloy_sol_types::Result<LightClientCalls> {
11654                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
11655                                data,
11656                                config,
11657                            )
11658                            .map(LightClientCalls::transferOwnership)
11659                    }
11660                    transferOwnership
11661                },
11662                {
11663                    fn getStateHistoryCount(
11664                        data: &[u8],
11665                        config: alloy_sol_types::abi::AbiDecoderConfig,
11666                    ) -> alloy_sol_types::Result<LightClientCalls> {
11667                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
11668                                data,
11669                                config,
11670                            )
11671                            .map(LightClientCalls::getStateHistoryCount)
11672                    }
11673                    getStateHistoryCount
11674                },
11675            ];
11676            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
11677                return Err(
11678                    alloy_sol_types::Error::unknown_selector(
11679                        <Self as alloy_sol_types::SolInterface>::NAME,
11680                        selector,
11681                    ),
11682                );
11683            };
11684            DECODE_SHIMS[idx](data, config)
11685        }
11686        #[inline]
11687        #[allow(non_snake_case)]
11688        fn abi_decode_raw_validate(
11689            selector: [u8; 4],
11690            data: &[u8],
11691        ) -> alloy_sol_types::Result<Self> {
11692            Self::abi_decode_raw_with_config(
11693                selector,
11694                data,
11695                alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11696            )
11697        }
11698        #[inline]
11699        fn abi_encoded_size(&self) -> usize {
11700            match self {
11701                Self::UPGRADE_INTERFACE_VERSION(inner) => {
11702                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
11703                        inner,
11704                    )
11705                }
11706                Self::_getVk(inner) => {
11707                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11708                }
11709                Self::currentBlockNumber(inner) => {
11710                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
11711                        inner,
11712                    )
11713                }
11714                Self::disablePermissionedProverMode(inner) => {
11715                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
11716                        inner,
11717                    )
11718                }
11719                Self::finalizedState(inner) => {
11720                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11721                        inner,
11722                    )
11723                }
11724                Self::genesisStakeTableState(inner) => {
11725                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11726                        inner,
11727                    )
11728                }
11729                Self::genesisState(inner) => {
11730                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11731                        inner,
11732                    )
11733                }
11734                Self::getHotShotCommitment(inner) => {
11735                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
11736                        inner,
11737                    )
11738                }
11739                Self::getStateHistoryCount(inner) => {
11740                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
11741                        inner,
11742                    )
11743                }
11744                Self::getVersion(inner) => {
11745                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11746                }
11747                Self::initialize(inner) => {
11748                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11749                }
11750                Self::isPermissionedProverEnabled(inner) => {
11751                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
11752                        inner,
11753                    )
11754                }
11755                Self::lagOverEscapeHatchThreshold(inner) => {
11756                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
11757                        inner,
11758                    )
11759                }
11760                Self::newFinalizedState(inner) => {
11761                    <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11762                        inner,
11763                    )
11764                }
11765                Self::owner(inner) => {
11766                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11767                }
11768                Self::permissionedProver(inner) => {
11769                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
11770                        inner,
11771                    )
11772                }
11773                Self::proxiableUUID(inner) => {
11774                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
11775                        inner,
11776                    )
11777                }
11778                Self::renounceOwnership(inner) => {
11779                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
11780                        inner,
11781                    )
11782                }
11783                Self::setPermissionedProver(inner) => {
11784                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
11785                        inner,
11786                    )
11787                }
11788                Self::setstateHistoryRetentionPeriod(inner) => {
11789                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
11790                        inner,
11791                    )
11792                }
11793                Self::stateHistoryCommitments(inner) => {
11794                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
11795                        inner,
11796                    )
11797                }
11798                Self::stateHistoryFirstIndex(inner) => {
11799                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
11800                        inner,
11801                    )
11802                }
11803                Self::stateHistoryRetentionPeriod(inner) => {
11804                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
11805                        inner,
11806                    )
11807                }
11808                Self::transferOwnership(inner) => {
11809                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
11810                        inner,
11811                    )
11812                }
11813                Self::upgradeToAndCall(inner) => {
11814                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
11815                        inner,
11816                    )
11817                }
11818            }
11819        }
11820        #[inline]
11821        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
11822            match self {
11823                Self::UPGRADE_INTERFACE_VERSION(inner) => {
11824                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
11825                        inner,
11826                        out,
11827                    )
11828                }
11829                Self::_getVk(inner) => {
11830                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
11831                }
11832                Self::currentBlockNumber(inner) => {
11833                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
11834                        inner,
11835                        out,
11836                    )
11837                }
11838                Self::disablePermissionedProverMode(inner) => {
11839                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
11840                        inner,
11841                        out,
11842                    )
11843                }
11844                Self::finalizedState(inner) => {
11845                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
11846                        inner,
11847                        out,
11848                    )
11849                }
11850                Self::genesisStakeTableState(inner) => {
11851                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
11852                        inner,
11853                        out,
11854                    )
11855                }
11856                Self::genesisState(inner) => {
11857                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
11858                        inner,
11859                        out,
11860                    )
11861                }
11862                Self::getHotShotCommitment(inner) => {
11863                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
11864                        inner,
11865                        out,
11866                    )
11867                }
11868                Self::getStateHistoryCount(inner) => {
11869                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
11870                        inner,
11871                        out,
11872                    )
11873                }
11874                Self::getVersion(inner) => {
11875                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
11876                        inner,
11877                        out,
11878                    )
11879                }
11880                Self::initialize(inner) => {
11881                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
11882                        inner,
11883                        out,
11884                    )
11885                }
11886                Self::isPermissionedProverEnabled(inner) => {
11887                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
11888                        inner,
11889                        out,
11890                    )
11891                }
11892                Self::lagOverEscapeHatchThreshold(inner) => {
11893                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
11894                        inner,
11895                        out,
11896                    )
11897                }
11898                Self::newFinalizedState(inner) => {
11899                    <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
11900                        inner,
11901                        out,
11902                    )
11903                }
11904                Self::owner(inner) => {
11905                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
11906                }
11907                Self::permissionedProver(inner) => {
11908                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
11909                        inner,
11910                        out,
11911                    )
11912                }
11913                Self::proxiableUUID(inner) => {
11914                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
11915                        inner,
11916                        out,
11917                    )
11918                }
11919                Self::renounceOwnership(inner) => {
11920                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
11921                        inner,
11922                        out,
11923                    )
11924                }
11925                Self::setPermissionedProver(inner) => {
11926                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
11927                        inner,
11928                        out,
11929                    )
11930                }
11931                Self::setstateHistoryRetentionPeriod(inner) => {
11932                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
11933                        inner,
11934                        out,
11935                    )
11936                }
11937                Self::stateHistoryCommitments(inner) => {
11938                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
11939                        inner,
11940                        out,
11941                    )
11942                }
11943                Self::stateHistoryFirstIndex(inner) => {
11944                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
11945                        inner,
11946                        out,
11947                    )
11948                }
11949                Self::stateHistoryRetentionPeriod(inner) => {
11950                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
11951                        inner,
11952                        out,
11953                    )
11954                }
11955                Self::transferOwnership(inner) => {
11956                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
11957                        inner,
11958                        out,
11959                    )
11960                }
11961                Self::upgradeToAndCall(inner) => {
11962                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
11963                        inner,
11964                        out,
11965                    )
11966                }
11967            }
11968        }
11969    }
11970    ///Container for all the [`LightClient`](self) custom errors.
11971    #[derive(Clone)]
11972    #[derive(serde::Serialize, serde::Deserialize)]
11973    #[derive(Debug, PartialEq, Eq, Hash)]
11974    pub enum LightClientErrors {
11975        #[allow(missing_docs)]
11976        AddressEmptyCode(AddressEmptyCode),
11977        #[allow(missing_docs)]
11978        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
11979        #[allow(missing_docs)]
11980        ERC1967NonPayable(ERC1967NonPayable),
11981        #[allow(missing_docs)]
11982        FailedInnerCall(FailedInnerCall),
11983        #[allow(missing_docs)]
11984        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
11985        #[allow(missing_docs)]
11986        InvalidAddress(InvalidAddress),
11987        #[allow(missing_docs)]
11988        InvalidArgs(InvalidArgs),
11989        #[allow(missing_docs)]
11990        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
11991        #[allow(missing_docs)]
11992        InvalidInitialization(InvalidInitialization),
11993        #[allow(missing_docs)]
11994        InvalidMaxStateHistory(InvalidMaxStateHistory),
11995        #[allow(missing_docs)]
11996        InvalidProof(InvalidProof),
11997        #[allow(missing_docs)]
11998        InvalidScalar(InvalidScalar),
11999        #[allow(missing_docs)]
12000        NoChangeRequired(NoChangeRequired),
12001        #[allow(missing_docs)]
12002        NotInitializing(NotInitializing),
12003        #[allow(missing_docs)]
12004        OutdatedState(OutdatedState),
12005        #[allow(missing_docs)]
12006        OwnableInvalidOwner(OwnableInvalidOwner),
12007        #[allow(missing_docs)]
12008        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
12009        #[allow(missing_docs)]
12010        OwnershipCannotBeRenounced(OwnershipCannotBeRenounced),
12011        #[allow(missing_docs)]
12012        ProverNotPermissioned(ProverNotPermissioned),
12013        #[allow(missing_docs)]
12014        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
12015        #[allow(missing_docs)]
12016        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
12017        #[allow(missing_docs)]
12018        WrongStakeTableUsed(WrongStakeTableUsed),
12019    }
12020    impl LightClientErrors {
12021        /// All the selectors of this enum.
12022        ///
12023        /// Note that the selectors might not be in the same order as the variants.
12024        /// No guarantees are made about the order of the selectors.
12025        ///
12026        /// Prefer using `SolInterface` methods instead.
12027        pub const SELECTORS: &'static [[u8; 4usize]] = &[
12028            [5u8, 28u8, 70u8, 239u8],
12029            [5u8, 176u8, 92u8, 204u8],
12030            [9u8, 189u8, 227u8, 57u8],
12031            [17u8, 140u8, 218u8, 167u8],
12032            [20u8, 37u8, 234u8, 66u8],
12033            [30u8, 79u8, 189u8, 247u8],
12034            [47u8, 171u8, 146u8, 202u8],
12035            [76u8, 156u8, 140u8, 227u8],
12036            [81u8, 97u8, 128u8, 137u8],
12037            [97u8, 90u8, 146u8, 100u8],
12038            [153u8, 150u8, 179u8, 21u8],
12039            [161u8, 186u8, 7u8, 238u8],
12040            [163u8, 166u8, 71u8, 128u8],
12041            [168u8, 99u8, 174u8, 201u8],
12042            [170u8, 29u8, 73u8, 164u8],
12043            [176u8, 180u8, 56u8, 119u8],
12044            [179u8, 152u8, 151u8, 159u8],
12045            [215u8, 230u8, 188u8, 248u8],
12046            [224u8, 124u8, 141u8, 186u8],
12047            [230u8, 196u8, 36u8, 123u8],
12048            [244u8, 160u8, 238u8, 224u8],
12049            [249u8, 46u8, 232u8, 169u8],
12050        ];
12051        /// The names of the variants in the same order as `SELECTORS`.
12052        pub const VARIANT_NAMES: &'static [&'static str] = &[
12053            ::core::stringify!(OutdatedState),
12054            ::core::stringify!(InvalidScalar),
12055            ::core::stringify!(InvalidProof),
12056            ::core::stringify!(OwnableUnauthorizedAccount),
12057            ::core::stringify!(FailedInnerCall),
12058            ::core::stringify!(OwnableInvalidOwner),
12059            ::core::stringify!(OwnershipCannotBeRenounced),
12060            ::core::stringify!(ERC1967InvalidImplementation),
12061            ::core::stringify!(WrongStakeTableUsed),
12062            ::core::stringify!(InvalidHotShotBlockForCommitmentCheck),
12063            ::core::stringify!(AddressEmptyCode),
12064            ::core::stringify!(InvalidArgs),
12065            ::core::stringify!(ProverNotPermissioned),
12066            ::core::stringify!(NoChangeRequired),
12067            ::core::stringify!(UUPSUnsupportedProxiableUUID),
12068            ::core::stringify!(InsufficientSnapshotHistory),
12069            ::core::stringify!(ERC1967NonPayable),
12070            ::core::stringify!(NotInitializing),
12071            ::core::stringify!(UUPSUnauthorizedCallContext),
12072            ::core::stringify!(InvalidAddress),
12073            ::core::stringify!(InvalidMaxStateHistory),
12074            ::core::stringify!(InvalidInitialization),
12075        ];
12076        /// The signatures in the same order as `SELECTORS`.
12077        pub const SIGNATURES: &'static [&'static str] = &[
12078            <OutdatedState as alloy_sol_types::SolError>::SIGNATURE,
12079            <InvalidScalar as alloy_sol_types::SolError>::SIGNATURE,
12080            <InvalidProof as alloy_sol_types::SolError>::SIGNATURE,
12081            <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SIGNATURE,
12082            <FailedInnerCall as alloy_sol_types::SolError>::SIGNATURE,
12083            <OwnableInvalidOwner as alloy_sol_types::SolError>::SIGNATURE,
12084            <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SIGNATURE,
12085            <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SIGNATURE,
12086            <WrongStakeTableUsed as alloy_sol_types::SolError>::SIGNATURE,
12087            <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SIGNATURE,
12088            <AddressEmptyCode as alloy_sol_types::SolError>::SIGNATURE,
12089            <InvalidArgs as alloy_sol_types::SolError>::SIGNATURE,
12090            <ProverNotPermissioned as alloy_sol_types::SolError>::SIGNATURE,
12091            <NoChangeRequired as alloy_sol_types::SolError>::SIGNATURE,
12092            <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SIGNATURE,
12093            <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SIGNATURE,
12094            <ERC1967NonPayable as alloy_sol_types::SolError>::SIGNATURE,
12095            <NotInitializing as alloy_sol_types::SolError>::SIGNATURE,
12096            <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SIGNATURE,
12097            <InvalidAddress as alloy_sol_types::SolError>::SIGNATURE,
12098            <InvalidMaxStateHistory as alloy_sol_types::SolError>::SIGNATURE,
12099            <InvalidInitialization as alloy_sol_types::SolError>::SIGNATURE,
12100        ];
12101        /// Returns the signature for the given selector, if known.
12102        #[inline]
12103        pub fn signature_by_selector(
12104            selector: [u8; 4usize],
12105        ) -> ::core::option::Option<&'static str> {
12106            match Self::SELECTORS.binary_search(&selector) {
12107                ::core::result::Result::Ok(idx) => {
12108                    ::core::option::Option::Some(Self::SIGNATURES[idx])
12109                }
12110                ::core::result::Result::Err(_) => ::core::option::Option::None,
12111            }
12112        }
12113        /// Returns the enum variant name for the given selector, if known.
12114        #[inline]
12115        pub fn name_by_selector(
12116            selector: [u8; 4usize],
12117        ) -> ::core::option::Option<&'static str> {
12118            let sig = Self::signature_by_selector(selector)?;
12119            sig.split_once('(').map(|(name, _)| name)
12120        }
12121    }
12122    #[automatically_derived]
12123    impl alloy_sol_types::SolInterface for LightClientErrors {
12124        const NAME: &'static str = "LightClientErrors";
12125        const MIN_DATA_LENGTH: usize = 0usize;
12126        const COUNT: usize = 22usize;
12127        #[inline]
12128        fn selector(&self) -> [u8; 4] {
12129            match self {
12130                Self::AddressEmptyCode(_) => {
12131                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
12132                }
12133                Self::ERC1967InvalidImplementation(_) => {
12134                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
12135                }
12136                Self::ERC1967NonPayable(_) => {
12137                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
12138                }
12139                Self::FailedInnerCall(_) => {
12140                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
12141                }
12142                Self::InsufficientSnapshotHistory(_) => {
12143                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
12144                }
12145                Self::InvalidAddress(_) => {
12146                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
12147                }
12148                Self::InvalidArgs(_) => {
12149                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
12150                }
12151                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
12152                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
12153                }
12154                Self::InvalidInitialization(_) => {
12155                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
12156                }
12157                Self::InvalidMaxStateHistory(_) => {
12158                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
12159                }
12160                Self::InvalidProof(_) => {
12161                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
12162                }
12163                Self::InvalidScalar(_) => {
12164                    <InvalidScalar as alloy_sol_types::SolError>::SELECTOR
12165                }
12166                Self::NoChangeRequired(_) => {
12167                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
12168                }
12169                Self::NotInitializing(_) => {
12170                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
12171                }
12172                Self::OutdatedState(_) => {
12173                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
12174                }
12175                Self::OwnableInvalidOwner(_) => {
12176                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
12177                }
12178                Self::OwnableUnauthorizedAccount(_) => {
12179                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
12180                }
12181                Self::OwnershipCannotBeRenounced(_) => {
12182                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
12183                }
12184                Self::ProverNotPermissioned(_) => {
12185                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
12186                }
12187                Self::UUPSUnauthorizedCallContext(_) => {
12188                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
12189                }
12190                Self::UUPSUnsupportedProxiableUUID(_) => {
12191                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
12192                }
12193                Self::WrongStakeTableUsed(_) => {
12194                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
12195                }
12196            }
12197        }
12198        #[inline]
12199        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
12200            Self::SELECTORS.get(i).copied()
12201        }
12202        #[inline]
12203        fn valid_selector(selector: [u8; 4]) -> bool {
12204            Self::SELECTORS.binary_search(&selector).is_ok()
12205        }
12206        #[inline]
12207        #[allow(non_snake_case)]
12208        fn abi_decode_raw(
12209            selector: [u8; 4],
12210            data: &[u8],
12211        ) -> alloy_sol_types::Result<Self> {
12212            Self::abi_decode_raw_with_config(
12213                selector,
12214                data,
12215                alloy_sol_types::abi::AbiDecoderConfig::default(),
12216            )
12217        }
12218        #[inline]
12219        #[allow(non_snake_case)]
12220        fn abi_decode_raw_with_config(
12221            selector: [u8; 4],
12222            data: &[u8],
12223            config: alloy_sol_types::abi::AbiDecoderConfig,
12224        ) -> alloy_sol_types::Result<Self> {
12225            static DECODE_SHIMS: &[fn(
12226                &[u8],
12227                alloy_sol_types::abi::AbiDecoderConfig,
12228            ) -> alloy_sol_types::Result<LightClientErrors>] = &[
12229                {
12230                    fn OutdatedState(
12231                        data: &[u8],
12232                        config: alloy_sol_types::abi::AbiDecoderConfig,
12233                    ) -> alloy_sol_types::Result<LightClientErrors> {
12234                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw_with_config(
12235                                data,
12236                                config,
12237                            )
12238                            .map(LightClientErrors::OutdatedState)
12239                    }
12240                    OutdatedState
12241                },
12242                {
12243                    fn InvalidScalar(
12244                        data: &[u8],
12245                        config: alloy_sol_types::abi::AbiDecoderConfig,
12246                    ) -> alloy_sol_types::Result<LightClientErrors> {
12247                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw_with_config(
12248                                data,
12249                                config,
12250                            )
12251                            .map(LightClientErrors::InvalidScalar)
12252                    }
12253                    InvalidScalar
12254                },
12255                {
12256                    fn InvalidProof(
12257                        data: &[u8],
12258                        config: alloy_sol_types::abi::AbiDecoderConfig,
12259                    ) -> alloy_sol_types::Result<LightClientErrors> {
12260                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw_with_config(
12261                                data,
12262                                config,
12263                            )
12264                            .map(LightClientErrors::InvalidProof)
12265                    }
12266                    InvalidProof
12267                },
12268                {
12269                    fn OwnableUnauthorizedAccount(
12270                        data: &[u8],
12271                        config: alloy_sol_types::abi::AbiDecoderConfig,
12272                    ) -> alloy_sol_types::Result<LightClientErrors> {
12273                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_with_config(
12274                                data,
12275                                config,
12276                            )
12277                            .map(LightClientErrors::OwnableUnauthorizedAccount)
12278                    }
12279                    OwnableUnauthorizedAccount
12280                },
12281                {
12282                    fn FailedInnerCall(
12283                        data: &[u8],
12284                        config: alloy_sol_types::abi::AbiDecoderConfig,
12285                    ) -> alloy_sol_types::Result<LightClientErrors> {
12286                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_with_config(
12287                                data,
12288                                config,
12289                            )
12290                            .map(LightClientErrors::FailedInnerCall)
12291                    }
12292                    FailedInnerCall
12293                },
12294                {
12295                    fn OwnableInvalidOwner(
12296                        data: &[u8],
12297                        config: alloy_sol_types::abi::AbiDecoderConfig,
12298                    ) -> alloy_sol_types::Result<LightClientErrors> {
12299                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_with_config(
12300                                data,
12301                                config,
12302                            )
12303                            .map(LightClientErrors::OwnableInvalidOwner)
12304                    }
12305                    OwnableInvalidOwner
12306                },
12307                {
12308                    fn OwnershipCannotBeRenounced(
12309                        data: &[u8],
12310                        config: alloy_sol_types::abi::AbiDecoderConfig,
12311                    ) -> alloy_sol_types::Result<LightClientErrors> {
12312                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_with_config(
12313                                data,
12314                                config,
12315                            )
12316                            .map(LightClientErrors::OwnershipCannotBeRenounced)
12317                    }
12318                    OwnershipCannotBeRenounced
12319                },
12320                {
12321                    fn ERC1967InvalidImplementation(
12322                        data: &[u8],
12323                        config: alloy_sol_types::abi::AbiDecoderConfig,
12324                    ) -> alloy_sol_types::Result<LightClientErrors> {
12325                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_with_config(
12326                                data,
12327                                config,
12328                            )
12329                            .map(LightClientErrors::ERC1967InvalidImplementation)
12330                    }
12331                    ERC1967InvalidImplementation
12332                },
12333                {
12334                    fn WrongStakeTableUsed(
12335                        data: &[u8],
12336                        config: alloy_sol_types::abi::AbiDecoderConfig,
12337                    ) -> alloy_sol_types::Result<LightClientErrors> {
12338                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw_with_config(
12339                                data,
12340                                config,
12341                            )
12342                            .map(LightClientErrors::WrongStakeTableUsed)
12343                    }
12344                    WrongStakeTableUsed
12345                },
12346                {
12347                    fn InvalidHotShotBlockForCommitmentCheck(
12348                        data: &[u8],
12349                        config: alloy_sol_types::abi::AbiDecoderConfig,
12350                    ) -> alloy_sol_types::Result<LightClientErrors> {
12351                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw_with_config(
12352                                data,
12353                                config,
12354                            )
12355                            .map(
12356                                LightClientErrors::InvalidHotShotBlockForCommitmentCheck,
12357                            )
12358                    }
12359                    InvalidHotShotBlockForCommitmentCheck
12360                },
12361                {
12362                    fn AddressEmptyCode(
12363                        data: &[u8],
12364                        config: alloy_sol_types::abi::AbiDecoderConfig,
12365                    ) -> alloy_sol_types::Result<LightClientErrors> {
12366                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_with_config(
12367                                data,
12368                                config,
12369                            )
12370                            .map(LightClientErrors::AddressEmptyCode)
12371                    }
12372                    AddressEmptyCode
12373                },
12374                {
12375                    fn InvalidArgs(
12376                        data: &[u8],
12377                        config: alloy_sol_types::abi::AbiDecoderConfig,
12378                    ) -> alloy_sol_types::Result<LightClientErrors> {
12379                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw_with_config(
12380                                data,
12381                                config,
12382                            )
12383                            .map(LightClientErrors::InvalidArgs)
12384                    }
12385                    InvalidArgs
12386                },
12387                {
12388                    fn ProverNotPermissioned(
12389                        data: &[u8],
12390                        config: alloy_sol_types::abi::AbiDecoderConfig,
12391                    ) -> alloy_sol_types::Result<LightClientErrors> {
12392                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw_with_config(
12393                                data,
12394                                config,
12395                            )
12396                            .map(LightClientErrors::ProverNotPermissioned)
12397                    }
12398                    ProverNotPermissioned
12399                },
12400                {
12401                    fn NoChangeRequired(
12402                        data: &[u8],
12403                        config: alloy_sol_types::abi::AbiDecoderConfig,
12404                    ) -> alloy_sol_types::Result<LightClientErrors> {
12405                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw_with_config(
12406                                data,
12407                                config,
12408                            )
12409                            .map(LightClientErrors::NoChangeRequired)
12410                    }
12411                    NoChangeRequired
12412                },
12413                {
12414                    fn UUPSUnsupportedProxiableUUID(
12415                        data: &[u8],
12416                        config: alloy_sol_types::abi::AbiDecoderConfig,
12417                    ) -> alloy_sol_types::Result<LightClientErrors> {
12418                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_with_config(
12419                                data,
12420                                config,
12421                            )
12422                            .map(LightClientErrors::UUPSUnsupportedProxiableUUID)
12423                    }
12424                    UUPSUnsupportedProxiableUUID
12425                },
12426                {
12427                    fn InsufficientSnapshotHistory(
12428                        data: &[u8],
12429                        config: alloy_sol_types::abi::AbiDecoderConfig,
12430                    ) -> alloy_sol_types::Result<LightClientErrors> {
12431                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw_with_config(
12432                                data,
12433                                config,
12434                            )
12435                            .map(LightClientErrors::InsufficientSnapshotHistory)
12436                    }
12437                    InsufficientSnapshotHistory
12438                },
12439                {
12440                    fn ERC1967NonPayable(
12441                        data: &[u8],
12442                        config: alloy_sol_types::abi::AbiDecoderConfig,
12443                    ) -> alloy_sol_types::Result<LightClientErrors> {
12444                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_with_config(
12445                                data,
12446                                config,
12447                            )
12448                            .map(LightClientErrors::ERC1967NonPayable)
12449                    }
12450                    ERC1967NonPayable
12451                },
12452                {
12453                    fn NotInitializing(
12454                        data: &[u8],
12455                        config: alloy_sol_types::abi::AbiDecoderConfig,
12456                    ) -> alloy_sol_types::Result<LightClientErrors> {
12457                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_with_config(
12458                                data,
12459                                config,
12460                            )
12461                            .map(LightClientErrors::NotInitializing)
12462                    }
12463                    NotInitializing
12464                },
12465                {
12466                    fn UUPSUnauthorizedCallContext(
12467                        data: &[u8],
12468                        config: alloy_sol_types::abi::AbiDecoderConfig,
12469                    ) -> alloy_sol_types::Result<LightClientErrors> {
12470                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_with_config(
12471                                data,
12472                                config,
12473                            )
12474                            .map(LightClientErrors::UUPSUnauthorizedCallContext)
12475                    }
12476                    UUPSUnauthorizedCallContext
12477                },
12478                {
12479                    fn InvalidAddress(
12480                        data: &[u8],
12481                        config: alloy_sol_types::abi::AbiDecoderConfig,
12482                    ) -> alloy_sol_types::Result<LightClientErrors> {
12483                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw_with_config(
12484                                data,
12485                                config,
12486                            )
12487                            .map(LightClientErrors::InvalidAddress)
12488                    }
12489                    InvalidAddress
12490                },
12491                {
12492                    fn InvalidMaxStateHistory(
12493                        data: &[u8],
12494                        config: alloy_sol_types::abi::AbiDecoderConfig,
12495                    ) -> alloy_sol_types::Result<LightClientErrors> {
12496                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw_with_config(
12497                                data,
12498                                config,
12499                            )
12500                            .map(LightClientErrors::InvalidMaxStateHistory)
12501                    }
12502                    InvalidMaxStateHistory
12503                },
12504                {
12505                    fn InvalidInitialization(
12506                        data: &[u8],
12507                        config: alloy_sol_types::abi::AbiDecoderConfig,
12508                    ) -> alloy_sol_types::Result<LightClientErrors> {
12509                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_with_config(
12510                                data,
12511                                config,
12512                            )
12513                            .map(LightClientErrors::InvalidInitialization)
12514                    }
12515                    InvalidInitialization
12516                },
12517            ];
12518            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
12519                return Err(
12520                    alloy_sol_types::Error::unknown_selector(
12521                        <Self as alloy_sol_types::SolInterface>::NAME,
12522                        selector,
12523                    ),
12524                );
12525            };
12526            DECODE_SHIMS[idx](data, config)
12527        }
12528        #[inline]
12529        #[allow(non_snake_case)]
12530        fn abi_decode_raw_validate(
12531            selector: [u8; 4],
12532            data: &[u8],
12533        ) -> alloy_sol_types::Result<Self> {
12534            Self::abi_decode_raw_with_config(
12535                selector,
12536                data,
12537                alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12538            )
12539        }
12540        #[inline]
12541        fn abi_encoded_size(&self) -> usize {
12542            match self {
12543                Self::AddressEmptyCode(inner) => {
12544                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
12545                        inner,
12546                    )
12547                }
12548                Self::ERC1967InvalidImplementation(inner) => {
12549                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
12550                        inner,
12551                    )
12552                }
12553                Self::ERC1967NonPayable(inner) => {
12554                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
12555                        inner,
12556                    )
12557                }
12558                Self::FailedInnerCall(inner) => {
12559                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
12560                        inner,
12561                    )
12562                }
12563                Self::InsufficientSnapshotHistory(inner) => {
12564                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
12565                        inner,
12566                    )
12567                }
12568                Self::InvalidAddress(inner) => {
12569                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
12570                        inner,
12571                    )
12572                }
12573                Self::InvalidArgs(inner) => {
12574                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
12575                }
12576                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
12577                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
12578                        inner,
12579                    )
12580                }
12581                Self::InvalidInitialization(inner) => {
12582                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
12583                        inner,
12584                    )
12585                }
12586                Self::InvalidMaxStateHistory(inner) => {
12587                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
12588                        inner,
12589                    )
12590                }
12591                Self::InvalidProof(inner) => {
12592                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
12593                }
12594                Self::InvalidScalar(inner) => {
12595                    <InvalidScalar as alloy_sol_types::SolError>::abi_encoded_size(inner)
12596                }
12597                Self::NoChangeRequired(inner) => {
12598                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
12599                        inner,
12600                    )
12601                }
12602                Self::NotInitializing(inner) => {
12603                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
12604                        inner,
12605                    )
12606                }
12607                Self::OutdatedState(inner) => {
12608                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
12609                }
12610                Self::OwnableInvalidOwner(inner) => {
12611                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
12612                        inner,
12613                    )
12614                }
12615                Self::OwnableUnauthorizedAccount(inner) => {
12616                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
12617                        inner,
12618                    )
12619                }
12620                Self::OwnershipCannotBeRenounced(inner) => {
12621                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
12622                        inner,
12623                    )
12624                }
12625                Self::ProverNotPermissioned(inner) => {
12626                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
12627                        inner,
12628                    )
12629                }
12630                Self::UUPSUnauthorizedCallContext(inner) => {
12631                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
12632                        inner,
12633                    )
12634                }
12635                Self::UUPSUnsupportedProxiableUUID(inner) => {
12636                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
12637                        inner,
12638                    )
12639                }
12640                Self::WrongStakeTableUsed(inner) => {
12641                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
12642                        inner,
12643                    )
12644                }
12645            }
12646        }
12647        #[inline]
12648        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
12649            match self {
12650                Self::AddressEmptyCode(inner) => {
12651                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
12652                        inner,
12653                        out,
12654                    )
12655                }
12656                Self::ERC1967InvalidImplementation(inner) => {
12657                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
12658                        inner,
12659                        out,
12660                    )
12661                }
12662                Self::ERC1967NonPayable(inner) => {
12663                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
12664                        inner,
12665                        out,
12666                    )
12667                }
12668                Self::FailedInnerCall(inner) => {
12669                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
12670                        inner,
12671                        out,
12672                    )
12673                }
12674                Self::InsufficientSnapshotHistory(inner) => {
12675                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
12676                        inner,
12677                        out,
12678                    )
12679                }
12680                Self::InvalidAddress(inner) => {
12681                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
12682                        inner,
12683                        out,
12684                    )
12685                }
12686                Self::InvalidArgs(inner) => {
12687                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
12688                        inner,
12689                        out,
12690                    )
12691                }
12692                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
12693                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
12694                        inner,
12695                        out,
12696                    )
12697                }
12698                Self::InvalidInitialization(inner) => {
12699                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
12700                        inner,
12701                        out,
12702                    )
12703                }
12704                Self::InvalidMaxStateHistory(inner) => {
12705                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
12706                        inner,
12707                        out,
12708                    )
12709                }
12710                Self::InvalidProof(inner) => {
12711                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
12712                        inner,
12713                        out,
12714                    )
12715                }
12716                Self::InvalidScalar(inner) => {
12717                    <InvalidScalar as alloy_sol_types::SolError>::abi_encode_raw(
12718                        inner,
12719                        out,
12720                    )
12721                }
12722                Self::NoChangeRequired(inner) => {
12723                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
12724                        inner,
12725                        out,
12726                    )
12727                }
12728                Self::NotInitializing(inner) => {
12729                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
12730                        inner,
12731                        out,
12732                    )
12733                }
12734                Self::OutdatedState(inner) => {
12735                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
12736                        inner,
12737                        out,
12738                    )
12739                }
12740                Self::OwnableInvalidOwner(inner) => {
12741                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
12742                        inner,
12743                        out,
12744                    )
12745                }
12746                Self::OwnableUnauthorizedAccount(inner) => {
12747                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
12748                        inner,
12749                        out,
12750                    )
12751                }
12752                Self::OwnershipCannotBeRenounced(inner) => {
12753                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
12754                        inner,
12755                        out,
12756                    )
12757                }
12758                Self::ProverNotPermissioned(inner) => {
12759                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
12760                        inner,
12761                        out,
12762                    )
12763                }
12764                Self::UUPSUnauthorizedCallContext(inner) => {
12765                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
12766                        inner,
12767                        out,
12768                    )
12769                }
12770                Self::UUPSUnsupportedProxiableUUID(inner) => {
12771                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
12772                        inner,
12773                        out,
12774                    )
12775                }
12776                Self::WrongStakeTableUsed(inner) => {
12777                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
12778                        inner,
12779                        out,
12780                    )
12781                }
12782            }
12783        }
12784    }
12785    #[automatically_derived]
12786    impl LightClientErrors {
12787        /**Creates a [`AddressEmptyCode`] error.
12788
12789```solidity
12790error AddressEmptyCode(address)
12791```*/
12792        #[inline]
12793        pub fn address_empty_code(target: alloy::sol_types::private::Address) -> Self {
12794            Self::AddressEmptyCode(AddressEmptyCode { target: target })
12795        }
12796        /**Creates a [`ERC1967InvalidImplementation`] error.
12797
12798```solidity
12799error ERC1967InvalidImplementation(address)
12800```*/
12801        #[inline]
12802        pub fn erc_1967_invalid_implementation(
12803            implementation: alloy::sol_types::private::Address,
12804        ) -> Self {
12805            Self::ERC1967InvalidImplementation(ERC1967InvalidImplementation {
12806                implementation: implementation,
12807            })
12808        }
12809        /**Creates a [`ERC1967NonPayable`] error.
12810
12811```solidity
12812error ERC1967NonPayable()
12813```*/
12814        #[inline]
12815        pub fn erc_1967_non_payable() -> Self {
12816            Self::ERC1967NonPayable(ERC1967NonPayable)
12817        }
12818        /**Creates a [`FailedInnerCall`] error.
12819
12820```solidity
12821error FailedInnerCall()
12822```*/
12823        #[inline]
12824        pub fn failed_inner_call() -> Self {
12825            Self::FailedInnerCall(FailedInnerCall)
12826        }
12827        /**Creates a [`InsufficientSnapshotHistory`] error.
12828
12829```solidity
12830error InsufficientSnapshotHistory()
12831```*/
12832        #[inline]
12833        pub fn insufficient_snapshot_history() -> Self {
12834            Self::InsufficientSnapshotHistory(InsufficientSnapshotHistory)
12835        }
12836        /**Creates a [`InvalidAddress`] error.
12837
12838```solidity
12839error InvalidAddress()
12840```*/
12841        #[inline]
12842        pub fn invalid_address() -> Self {
12843            Self::InvalidAddress(InvalidAddress)
12844        }
12845        /**Creates a [`InvalidArgs`] error.
12846
12847```solidity
12848error InvalidArgs()
12849```*/
12850        #[inline]
12851        pub fn invalid_args() -> Self {
12852            Self::InvalidArgs(InvalidArgs)
12853        }
12854        /**Creates a [`InvalidHotShotBlockForCommitmentCheck`] error.
12855
12856```solidity
12857error InvalidHotShotBlockForCommitmentCheck()
12858```*/
12859        #[inline]
12860        pub fn invalid_hot_shot_block_for_commitment_check() -> Self {
12861            Self::InvalidHotShotBlockForCommitmentCheck(
12862                InvalidHotShotBlockForCommitmentCheck,
12863            )
12864        }
12865        /**Creates a [`InvalidInitialization`] error.
12866
12867```solidity
12868error InvalidInitialization()
12869```*/
12870        #[inline]
12871        pub fn invalid_initialization() -> Self {
12872            Self::InvalidInitialization(InvalidInitialization)
12873        }
12874        /**Creates a [`InvalidMaxStateHistory`] error.
12875
12876```solidity
12877error InvalidMaxStateHistory()
12878```*/
12879        #[inline]
12880        pub fn invalid_max_state_history() -> Self {
12881            Self::InvalidMaxStateHistory(InvalidMaxStateHistory)
12882        }
12883        /**Creates a [`InvalidProof`] error.
12884
12885```solidity
12886error InvalidProof()
12887```*/
12888        #[inline]
12889        pub fn invalid_proof() -> Self {
12890            Self::InvalidProof(InvalidProof)
12891        }
12892        /**Creates a [`InvalidScalar`] error.
12893
12894```solidity
12895error InvalidScalar()
12896```*/
12897        #[inline]
12898        pub fn invalid_scalar() -> Self {
12899            Self::InvalidScalar(InvalidScalar)
12900        }
12901        /**Creates a [`NoChangeRequired`] error.
12902
12903```solidity
12904error NoChangeRequired()
12905```*/
12906        #[inline]
12907        pub fn no_change_required() -> Self {
12908            Self::NoChangeRequired(NoChangeRequired)
12909        }
12910        /**Creates a [`NotInitializing`] error.
12911
12912```solidity
12913error NotInitializing()
12914```*/
12915        #[inline]
12916        pub fn not_initializing() -> Self {
12917            Self::NotInitializing(NotInitializing)
12918        }
12919        /**Creates a [`OutdatedState`] error.
12920
12921```solidity
12922error OutdatedState()
12923```*/
12924        #[inline]
12925        pub fn outdated_state() -> Self {
12926            Self::OutdatedState(OutdatedState)
12927        }
12928        /**Creates a [`OwnableInvalidOwner`] error.
12929
12930```solidity
12931error OwnableInvalidOwner(address)
12932```*/
12933        #[inline]
12934        pub fn ownable_invalid_owner(owner: alloy::sol_types::private::Address) -> Self {
12935            Self::OwnableInvalidOwner(OwnableInvalidOwner {
12936                owner: owner,
12937            })
12938        }
12939        /**Creates a [`OwnableUnauthorizedAccount`] error.
12940
12941```solidity
12942error OwnableUnauthorizedAccount(address)
12943```*/
12944        #[inline]
12945        pub fn ownable_unauthorized_account(
12946            account: alloy::sol_types::private::Address,
12947        ) -> Self {
12948            Self::OwnableUnauthorizedAccount(OwnableUnauthorizedAccount {
12949                account: account,
12950            })
12951        }
12952        /**Creates a [`OwnershipCannotBeRenounced`] error.
12953
12954```solidity
12955error OwnershipCannotBeRenounced()
12956```*/
12957        #[inline]
12958        pub fn ownership_cannot_be_renounced() -> Self {
12959            Self::OwnershipCannotBeRenounced(OwnershipCannotBeRenounced)
12960        }
12961        /**Creates a [`ProverNotPermissioned`] error.
12962
12963```solidity
12964error ProverNotPermissioned()
12965```*/
12966        #[inline]
12967        pub fn prover_not_permissioned() -> Self {
12968            Self::ProverNotPermissioned(ProverNotPermissioned)
12969        }
12970        /**Creates a [`UUPSUnauthorizedCallContext`] error.
12971
12972```solidity
12973error UUPSUnauthorizedCallContext()
12974```*/
12975        #[inline]
12976        pub fn uups_unauthorized_call_context() -> Self {
12977            Self::UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext)
12978        }
12979        /**Creates a [`UUPSUnsupportedProxiableUUID`] error.
12980
12981```solidity
12982error UUPSUnsupportedProxiableUUID(bytes32)
12983```*/
12984        #[inline]
12985        pub fn uups_unsupported_proxiable_uuid(
12986            slot: alloy::sol_types::private::FixedBytes<32>,
12987        ) -> Self {
12988            Self::UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID {
12989                slot: slot,
12990            })
12991        }
12992        /**Creates a [`WrongStakeTableUsed`] error.
12993
12994```solidity
12995error WrongStakeTableUsed()
12996```*/
12997        #[inline]
12998        pub fn wrong_stake_table_used() -> Self {
12999            Self::WrongStakeTableUsed(WrongStakeTableUsed)
13000        }
13001    }
13002    ///Container for all the [`LightClient`](self) events.
13003    #[derive(Clone)]
13004    #[derive(serde::Serialize, serde::Deserialize)]
13005    #[derive(Debug, PartialEq, Eq, Hash)]
13006    pub enum LightClientEvents {
13007        #[allow(missing_docs)]
13008        Initialized(Initialized),
13009        #[allow(missing_docs)]
13010        NewState(NewState),
13011        #[allow(missing_docs)]
13012        OwnershipTransferred(OwnershipTransferred),
13013        #[allow(missing_docs)]
13014        PermissionedProverNotRequired(PermissionedProverNotRequired),
13015        #[allow(missing_docs)]
13016        PermissionedProverRequired(PermissionedProverRequired),
13017        #[allow(missing_docs)]
13018        Upgrade(Upgrade),
13019        #[allow(missing_docs)]
13020        Upgraded(Upgraded),
13021    }
13022    impl LightClientEvents {
13023        /// All the selectors of this enum.
13024        ///
13025        /// Note that the selectors might not be in the same order as the variants.
13026        /// No guarantees are made about the order of the selectors.
13027        ///
13028        /// Prefer using `SolInterface` methods instead.
13029        pub const SELECTORS: &'static [[u8; 32usize]] = &[
13030            [
13031                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
13032                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
13033                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
13034            ],
13035            [
13036                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
13037                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
13038                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
13039            ],
13040            [
13041                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
13042                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
13043                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
13044            ],
13045            [
13046                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
13047                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
13048                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
13049            ],
13050            [
13051                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
13052                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
13053                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
13054            ],
13055            [
13056                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
13057                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
13058                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
13059            ],
13060            [
13061                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
13062                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
13063                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
13064            ],
13065        ];
13066        /// The names of the variants in the same order as `SELECTORS`.
13067        pub const VARIANT_NAMES: &'static [&'static str] = &[
13068            ::core::stringify!(PermissionedProverRequired),
13069            ::core::stringify!(OwnershipTransferred),
13070            ::core::stringify!(PermissionedProverNotRequired),
13071            ::core::stringify!(NewState),
13072            ::core::stringify!(Upgraded),
13073            ::core::stringify!(Initialized),
13074            ::core::stringify!(Upgrade),
13075        ];
13076        /// The signatures in the same order as `SELECTORS`.
13077        pub const SIGNATURES: &'static [&'static str] = &[
13078            <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE,
13079            <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE,
13080            <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE,
13081            <NewState as alloy_sol_types::SolEvent>::SIGNATURE,
13082            <Upgraded as alloy_sol_types::SolEvent>::SIGNATURE,
13083            <Initialized as alloy_sol_types::SolEvent>::SIGNATURE,
13084            <Upgrade as alloy_sol_types::SolEvent>::SIGNATURE,
13085        ];
13086        /// Returns the signature for the given selector, if known.
13087        #[inline]
13088        pub fn signature_by_selector(
13089            selector: [u8; 32usize],
13090        ) -> ::core::option::Option<&'static str> {
13091            match Self::SELECTORS.binary_search(&selector) {
13092                ::core::result::Result::Ok(idx) => {
13093                    ::core::option::Option::Some(Self::SIGNATURES[idx])
13094                }
13095                ::core::result::Result::Err(_) => ::core::option::Option::None,
13096            }
13097        }
13098        /// Returns the enum variant name for the given selector, if known.
13099        #[inline]
13100        pub fn name_by_selector(
13101            selector: [u8; 32usize],
13102        ) -> ::core::option::Option<&'static str> {
13103            let sig = Self::signature_by_selector(selector)?;
13104            sig.split_once('(').map(|(name, _)| name)
13105        }
13106    }
13107    #[automatically_derived]
13108    impl alloy_sol_types::SolEventInterface for LightClientEvents {
13109        const NAME: &'static str = "LightClientEvents";
13110        const COUNT: usize = 7usize;
13111        fn decode_raw_log(
13112            topics: &[alloy_sol_types::Word],
13113            data: &[u8],
13114        ) -> alloy_sol_types::Result<Self> {
13115            <Self as alloy_sol_types::SolEventInterface>::decode_raw_log_with_config(
13116                topics,
13117                data,
13118                alloy_sol_types::abi::AbiDecoderConfig::default(),
13119            )
13120        }
13121        fn decode_raw_log_with_config(
13122            topics: &[alloy_sol_types::Word],
13123            data: &[u8],
13124            config: alloy_sol_types::abi::AbiDecoderConfig,
13125        ) -> alloy_sol_types::Result<Self> {
13126            match topics.first().copied() {
13127                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
13128                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
13129                            topics,
13130                            data,
13131                            config,
13132                        )
13133                        .map(Self::Initialized)
13134                }
13135                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
13136                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
13137                            topics,
13138                            data,
13139                            config,
13140                        )
13141                        .map(Self::NewState)
13142                }
13143                Some(
13144                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
13145                ) => {
13146                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
13147                            topics,
13148                            data,
13149                            config,
13150                        )
13151                        .map(Self::OwnershipTransferred)
13152                }
13153                Some(
13154                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
13155                ) => {
13156                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
13157                            topics,
13158                            data,
13159                            config,
13160                        )
13161                        .map(Self::PermissionedProverNotRequired)
13162                }
13163                Some(
13164                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
13165                ) => {
13166                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
13167                            topics,
13168                            data,
13169                            config,
13170                        )
13171                        .map(Self::PermissionedProverRequired)
13172                }
13173                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
13174                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
13175                            topics,
13176                            data,
13177                            config,
13178                        )
13179                        .map(Self::Upgrade)
13180                }
13181                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
13182                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
13183                            topics,
13184                            data,
13185                            config,
13186                        )
13187                        .map(Self::Upgraded)
13188                }
13189                _ => {
13190                    if topics
13191                        .len()
13192                        .checked_mul(alloy_sol_types::Word::len_bytes())
13193                        .and_then(|len| len.checked_add(data.len()))
13194                        .is_none_or(|len| len > config.get_memory_limit())
13195                    {
13196                        return alloy_sol_types::private::Err(
13197                            alloy_sol_types::Error::MemoryLimitExceeded(
13198                                config.get_memory_limit(),
13199                            ),
13200                        );
13201                    }
13202                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
13203                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
13204                        log: alloy_sol_types::private::Box::new(
13205                            alloy_sol_types::private::LogData::new_unchecked(
13206                                topics.to_vec(),
13207                                data.to_vec().into(),
13208                            ),
13209                        ),
13210                    })
13211                }
13212            }
13213        }
13214    }
13215    #[automatically_derived]
13216    impl alloy_sol_types::private::IntoLogData for LightClientEvents {
13217        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
13218            match self {
13219                Self::Initialized(inner) => {
13220                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
13221                }
13222                Self::NewState(inner) => {
13223                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
13224                }
13225                Self::OwnershipTransferred(inner) => {
13226                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
13227                }
13228                Self::PermissionedProverNotRequired(inner) => {
13229                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
13230                }
13231                Self::PermissionedProverRequired(inner) => {
13232                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
13233                }
13234                Self::Upgrade(inner) => {
13235                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
13236                }
13237                Self::Upgraded(inner) => {
13238                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
13239                }
13240            }
13241        }
13242        fn into_log_data(self) -> alloy_sol_types::private::LogData {
13243            match self {
13244                Self::Initialized(inner) => {
13245                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
13246                }
13247                Self::NewState(inner) => {
13248                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
13249                }
13250                Self::OwnershipTransferred(inner) => {
13251                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
13252                }
13253                Self::PermissionedProverNotRequired(inner) => {
13254                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
13255                }
13256                Self::PermissionedProverRequired(inner) => {
13257                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
13258                }
13259                Self::Upgrade(inner) => {
13260                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
13261                }
13262                Self::Upgraded(inner) => {
13263                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
13264                }
13265            }
13266        }
13267    }
13268    #[automatically_derived]
13269    impl LightClientEvents {
13270        /**Creates a [`Initialized`] event.
13271
13272```solidity
13273event Initialized(uint64)
13274```*/
13275        #[inline]
13276        pub fn initialized(version: u64) -> Self {
13277            Self::Initialized(Initialized { version: version })
13278        }
13279        /**Creates a [`NewState`] event.
13280
13281```solidity
13282event NewState(uint64,uint64,uint256)
13283```*/
13284        #[inline]
13285        pub fn new_state(
13286            view_num: u64,
13287            block_height: u64,
13288            block_comm_root: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13289        ) -> Self {
13290            Self::NewState(NewState {
13291                viewNum: view_num,
13292                blockHeight: block_height,
13293                blockCommRoot: block_comm_root,
13294            })
13295        }
13296        /**Creates a [`OwnershipTransferred`] event.
13297
13298```solidity
13299event OwnershipTransferred(address,address)
13300```*/
13301        #[inline]
13302        pub fn ownership_transferred(
13303            previous_owner: alloy::sol_types::private::Address,
13304            new_owner: alloy::sol_types::private::Address,
13305        ) -> Self {
13306            Self::OwnershipTransferred(OwnershipTransferred {
13307                previousOwner: previous_owner,
13308                newOwner: new_owner,
13309            })
13310        }
13311        /**Creates a [`PermissionedProverNotRequired`] event.
13312
13313```solidity
13314event PermissionedProverNotRequired()
13315```*/
13316        #[inline]
13317        pub fn permissioned_prover_not_required() -> Self {
13318            Self::PermissionedProverNotRequired(PermissionedProverNotRequired)
13319        }
13320        /**Creates a [`PermissionedProverRequired`] event.
13321
13322```solidity
13323event PermissionedProverRequired(address)
13324```*/
13325        #[inline]
13326        pub fn permissioned_prover_required(
13327            permissioned_prover: alloy::sol_types::private::Address,
13328        ) -> Self {
13329            Self::PermissionedProverRequired(PermissionedProverRequired {
13330                permissionedProver: permissioned_prover,
13331            })
13332        }
13333        /**Creates a [`Upgrade`] event.
13334
13335```solidity
13336event Upgrade(address)
13337```*/
13338        #[inline]
13339        pub fn upgrade(implementation: alloy::sol_types::private::Address) -> Self {
13340            Self::Upgrade(Upgrade {
13341                implementation: implementation,
13342            })
13343        }
13344        /**Creates a [`Upgraded`] event.
13345
13346```solidity
13347event Upgraded(address)
13348```*/
13349        #[inline]
13350        pub fn upgraded(implementation: alloy::sol_types::private::Address) -> Self {
13351            Self::Upgraded(Upgraded {
13352                implementation: implementation,
13353            })
13354        }
13355    }
13356    use alloy::contract as alloy_contract;
13357    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
13358
13359See the [wrapper's documentation](`LightClientInstance`) for more details.*/
13360    #[inline]
13361    pub const fn new<
13362        P: alloy_contract::private::Provider<N>,
13363        N: alloy_contract::private::Network,
13364    >(
13365        address: alloy_sol_types::private::Address,
13366        __provider: P,
13367    ) -> LightClientInstance<P, N> {
13368        LightClientInstance::<P, N>::new(address, __provider)
13369    }
13370    /**Deploys this contract using the given `provider` and constructor arguments, if any.
13371
13372Returns a new instance of the contract, if the deployment was successful.
13373
13374For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
13375    #[inline]
13376    pub fn deploy<
13377        P: alloy_contract::private::Provider<N>,
13378        N: alloy_contract::private::Network,
13379    >(
13380        __provider: P,
13381    ) -> impl ::core::future::Future<
13382        Output = alloy_contract::Result<LightClientInstance<P, N>>,
13383    > {
13384        LightClientInstance::<P, N>::deploy(__provider)
13385    }
13386    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
13387and constructor arguments, if any.
13388
13389This is a simple wrapper around creating a `RawCallBuilder` with the data set to
13390the bytecode concatenated with the constructor's ABI-encoded arguments.*/
13391    #[inline]
13392    pub fn deploy_builder<
13393        P: alloy_contract::private::Provider<N>,
13394        N: alloy_contract::private::Network,
13395    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
13396        LightClientInstance::<P, N>::deploy_builder(__provider)
13397    }
13398    /**A [`LightClient`](self) instance.
13399
13400Contains type-safe methods for interacting with an on-chain instance of the
13401[`LightClient`](self) contract located at a given `address`, using a given
13402provider `P`.
13403
13404If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
13405documentation on how to provide it), the `deploy` and `deploy_builder` methods can
13406be used to deploy a new instance of the contract.
13407
13408See the [module-level documentation](self) for all the available methods.*/
13409    #[derive(Clone)]
13410    pub struct LightClientInstance<P, N = alloy_contract::private::Ethereum> {
13411        address: alloy_sol_types::private::Address,
13412        provider: P,
13413        _network: ::core::marker::PhantomData<N>,
13414    }
13415    #[automatically_derived]
13416    impl<P, N> ::core::fmt::Debug for LightClientInstance<P, N> {
13417        #[inline]
13418        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
13419            f.debug_tuple("LightClientInstance").field(&self.address).finish()
13420        }
13421    }
13422    /// Instantiation and getters/setters.
13423    impl<
13424        P: alloy_contract::private::Provider<N>,
13425        N: alloy_contract::private::Network,
13426    > LightClientInstance<P, N> {
13427        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
13428
13429See the [wrapper's documentation](`LightClientInstance`) for more details.*/
13430        #[inline]
13431        pub const fn new(
13432            address: alloy_sol_types::private::Address,
13433            __provider: P,
13434        ) -> Self {
13435            Self {
13436                address,
13437                provider: __provider,
13438                _network: ::core::marker::PhantomData,
13439            }
13440        }
13441        /**Deploys this contract using the given `provider` and constructor arguments, if any.
13442
13443Returns a new instance of the contract, if the deployment was successful.
13444
13445For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
13446        #[inline]
13447        pub async fn deploy(
13448            __provider: P,
13449        ) -> alloy_contract::Result<LightClientInstance<P, N>> {
13450            let call_builder = Self::deploy_builder(__provider);
13451            let contract_address = call_builder.deploy().await?;
13452            Ok(Self::new(contract_address, call_builder.provider))
13453        }
13454        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
13455and constructor arguments, if any.
13456
13457This is a simple wrapper around creating a `RawCallBuilder` with the data set to
13458the bytecode concatenated with the constructor's ABI-encoded arguments.*/
13459        #[inline]
13460        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
13461            alloy_contract::RawCallBuilder::new_raw_deploy(
13462                __provider,
13463                ::core::clone::Clone::clone(&BYTECODE),
13464            )
13465        }
13466        /// Returns a reference to the address.
13467        #[inline]
13468        pub const fn address(&self) -> &alloy_sol_types::private::Address {
13469            &self.address
13470        }
13471        /// Sets the address.
13472        #[inline]
13473        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
13474            self.address = address;
13475        }
13476        /// Sets the address and returns `self`.
13477        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
13478            self.set_address(address);
13479            self
13480        }
13481        /// Returns a reference to the provider.
13482        #[inline]
13483        pub const fn provider(&self) -> &P {
13484            &self.provider
13485        }
13486    }
13487    impl<P: ::core::clone::Clone, N> LightClientInstance<&P, N> {
13488        /// Clones the provider and returns a new instance with the cloned provider.
13489        #[inline]
13490        pub fn with_cloned_provider(self) -> LightClientInstance<P, N> {
13491            LightClientInstance {
13492                address: self.address,
13493                provider: ::core::clone::Clone::clone(&self.provider),
13494                _network: ::core::marker::PhantomData,
13495            }
13496        }
13497    }
13498    /// Function calls.
13499    impl<
13500        P: alloy_contract::private::Provider<N>,
13501        N: alloy_contract::private::Network,
13502    > LightClientInstance<P, N> {
13503        /// Creates a new call builder using this contract instance's provider and address.
13504        ///
13505        /// Note that the call can be any function call, not just those defined in this
13506        /// contract. Prefer using the other methods for building type-safe contract calls.
13507        pub fn call_builder<C: alloy_sol_types::SolCall>(
13508            &self,
13509            call: &C,
13510        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
13511            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
13512        }
13513        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
13514        pub fn UPGRADE_INTERFACE_VERSION(
13515            &self,
13516        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
13517            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
13518        }
13519        ///Creates a new call builder for the [`_getVk`] function.
13520        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<&P, _getVkCall, N> {
13521            self.call_builder(&_getVkCall)
13522        }
13523        ///Creates a new call builder for the [`currentBlockNumber`] function.
13524        pub fn currentBlockNumber(
13525            &self,
13526        ) -> alloy_contract::SolCallBuilder<&P, currentBlockNumberCall, N> {
13527            self.call_builder(&currentBlockNumberCall)
13528        }
13529        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
13530        pub fn disablePermissionedProverMode(
13531            &self,
13532        ) -> alloy_contract::SolCallBuilder<&P, disablePermissionedProverModeCall, N> {
13533            self.call_builder(&disablePermissionedProverModeCall)
13534        }
13535        ///Creates a new call builder for the [`finalizedState`] function.
13536        pub fn finalizedState(
13537            &self,
13538        ) -> alloy_contract::SolCallBuilder<&P, finalizedStateCall, N> {
13539            self.call_builder(&finalizedStateCall)
13540        }
13541        ///Creates a new call builder for the [`genesisStakeTableState`] function.
13542        pub fn genesisStakeTableState(
13543            &self,
13544        ) -> alloy_contract::SolCallBuilder<&P, genesisStakeTableStateCall, N> {
13545            self.call_builder(&genesisStakeTableStateCall)
13546        }
13547        ///Creates a new call builder for the [`genesisState`] function.
13548        pub fn genesisState(
13549            &self,
13550        ) -> alloy_contract::SolCallBuilder<&P, genesisStateCall, N> {
13551            self.call_builder(&genesisStateCall)
13552        }
13553        ///Creates a new call builder for the [`getHotShotCommitment`] function.
13554        pub fn getHotShotCommitment(
13555            &self,
13556            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
13557        ) -> alloy_contract::SolCallBuilder<&P, getHotShotCommitmentCall, N> {
13558            self.call_builder(
13559                &getHotShotCommitmentCall {
13560                    hotShotBlockHeight,
13561                },
13562            )
13563        }
13564        ///Creates a new call builder for the [`getStateHistoryCount`] function.
13565        pub fn getStateHistoryCount(
13566            &self,
13567        ) -> alloy_contract::SolCallBuilder<&P, getStateHistoryCountCall, N> {
13568            self.call_builder(&getStateHistoryCountCall)
13569        }
13570        ///Creates a new call builder for the [`getVersion`] function.
13571        pub fn getVersion(
13572            &self,
13573        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
13574            self.call_builder(&getVersionCall)
13575        }
13576        ///Creates a new call builder for the [`initialize`] function.
13577        pub fn initialize(
13578            &self,
13579            _genesis: <LightClientState as alloy::sol_types::SolType>::RustType,
13580            _genesisStakeTableState: <StakeTableState as alloy::sol_types::SolType>::RustType,
13581            _stateHistoryRetentionPeriod: u32,
13582            owner: alloy::sol_types::private::Address,
13583        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
13584            self.call_builder(
13585                &initializeCall {
13586                    _genesis,
13587                    _genesisStakeTableState,
13588                    _stateHistoryRetentionPeriod,
13589                    owner,
13590                },
13591            )
13592        }
13593        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
13594        pub fn isPermissionedProverEnabled(
13595            &self,
13596        ) -> alloy_contract::SolCallBuilder<&P, isPermissionedProverEnabledCall, N> {
13597            self.call_builder(&isPermissionedProverEnabledCall)
13598        }
13599        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
13600        pub fn lagOverEscapeHatchThreshold(
13601            &self,
13602            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
13603            blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
13604        ) -> alloy_contract::SolCallBuilder<&P, lagOverEscapeHatchThresholdCall, N> {
13605            self.call_builder(
13606                &lagOverEscapeHatchThresholdCall {
13607                    blockNumber,
13608                    blockThreshold,
13609                },
13610            )
13611        }
13612        ///Creates a new call builder for the [`newFinalizedState`] function.
13613        pub fn newFinalizedState(
13614            &self,
13615            newState: <LightClientState as alloy::sol_types::SolType>::RustType,
13616            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
13617        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedStateCall, N> {
13618            self.call_builder(
13619                &newFinalizedStateCall {
13620                    newState,
13621                    proof,
13622                },
13623            )
13624        }
13625        ///Creates a new call builder for the [`owner`] function.
13626        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
13627            self.call_builder(&ownerCall)
13628        }
13629        ///Creates a new call builder for the [`permissionedProver`] function.
13630        pub fn permissionedProver(
13631            &self,
13632        ) -> alloy_contract::SolCallBuilder<&P, permissionedProverCall, N> {
13633            self.call_builder(&permissionedProverCall)
13634        }
13635        ///Creates a new call builder for the [`proxiableUUID`] function.
13636        pub fn proxiableUUID(
13637            &self,
13638        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
13639            self.call_builder(&proxiableUUIDCall)
13640        }
13641        ///Creates a new call builder for the [`renounceOwnership`] function.
13642        pub fn renounceOwnership(
13643            &self,
13644        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
13645            self.call_builder(&renounceOwnershipCall)
13646        }
13647        ///Creates a new call builder for the [`setPermissionedProver`] function.
13648        pub fn setPermissionedProver(
13649            &self,
13650            prover: alloy::sol_types::private::Address,
13651        ) -> alloy_contract::SolCallBuilder<&P, setPermissionedProverCall, N> {
13652            self.call_builder(
13653                &setPermissionedProverCall {
13654                    prover,
13655                },
13656            )
13657        }
13658        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
13659        pub fn setstateHistoryRetentionPeriod(
13660            &self,
13661            historySeconds: u32,
13662        ) -> alloy_contract::SolCallBuilder<&P, setstateHistoryRetentionPeriodCall, N> {
13663            self.call_builder(
13664                &setstateHistoryRetentionPeriodCall {
13665                    historySeconds,
13666                },
13667            )
13668        }
13669        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
13670        pub fn stateHistoryCommitments(
13671            &self,
13672            _0: alloy::sol_types::private::primitives::aliases::U256,
13673        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryCommitmentsCall, N> {
13674            self.call_builder(&stateHistoryCommitmentsCall(_0))
13675        }
13676        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
13677        pub fn stateHistoryFirstIndex(
13678            &self,
13679        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryFirstIndexCall, N> {
13680            self.call_builder(&stateHistoryFirstIndexCall)
13681        }
13682        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
13683        pub fn stateHistoryRetentionPeriod(
13684            &self,
13685        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryRetentionPeriodCall, N> {
13686            self.call_builder(&stateHistoryRetentionPeriodCall)
13687        }
13688        ///Creates a new call builder for the [`transferOwnership`] function.
13689        pub fn transferOwnership(
13690            &self,
13691            newOwner: alloy::sol_types::private::Address,
13692        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
13693            self.call_builder(&transferOwnershipCall { newOwner })
13694        }
13695        ///Creates a new call builder for the [`upgradeToAndCall`] function.
13696        pub fn upgradeToAndCall(
13697            &self,
13698            newImplementation: alloy::sol_types::private::Address,
13699            data: alloy::sol_types::private::Bytes,
13700        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
13701            self.call_builder(
13702                &upgradeToAndCallCall {
13703                    newImplementation,
13704                    data,
13705                },
13706            )
13707        }
13708    }
13709    /// Event filters.
13710    impl<
13711        P: alloy_contract::private::Provider<N>,
13712        N: alloy_contract::private::Network,
13713    > LightClientInstance<P, N> {
13714        /// Creates a new event filter using this contract instance's provider and address.
13715        ///
13716        /// Note that the type can be any event, not just those defined in this contract.
13717        /// Prefer using the other methods for building type-safe event filters.
13718        pub fn event_filter<E: alloy_sol_types::SolEvent>(
13719            &self,
13720        ) -> alloy_contract::Event<&P, E, N> {
13721            alloy_contract::Event::new_sol(&self.provider, &self.address)
13722        }
13723        ///Creates a new event filter for the [`Initialized`] event.
13724        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
13725            self.event_filter::<Initialized>()
13726        }
13727        ///Creates a new event filter for the [`NewState`] event.
13728        pub fn NewState_filter(&self) -> alloy_contract::Event<&P, NewState, N> {
13729            self.event_filter::<NewState>()
13730        }
13731        ///Creates a new event filter for the [`OwnershipTransferred`] event.
13732        pub fn OwnershipTransferred_filter(
13733            &self,
13734        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
13735            self.event_filter::<OwnershipTransferred>()
13736        }
13737        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
13738        pub fn PermissionedProverNotRequired_filter(
13739            &self,
13740        ) -> alloy_contract::Event<&P, PermissionedProverNotRequired, N> {
13741            self.event_filter::<PermissionedProverNotRequired>()
13742        }
13743        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
13744        pub fn PermissionedProverRequired_filter(
13745            &self,
13746        ) -> alloy_contract::Event<&P, PermissionedProverRequired, N> {
13747            self.event_filter::<PermissionedProverRequired>()
13748        }
13749        ///Creates a new event filter for the [`Upgrade`] event.
13750        pub fn Upgrade_filter(&self) -> alloy_contract::Event<&P, Upgrade, N> {
13751            self.event_filter::<Upgrade>()
13752        }
13753        ///Creates a new event filter for the [`Upgraded`] event.
13754        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
13755            self.event_filter::<Upgraded>()
13756        }
13757    }
13758}